{"version":3,"sources":["webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/node_modules/@syncfusion/ej2-popups/src/common/position.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/timezone/timezone.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/numerictextbox/numerictextbox.component.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/node_modules/@syncfusion/ej2-navigations/src/menu/menu.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/src/menu/items.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/src/menu/menu.component.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/base/css-constant.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/event-base.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/node_modules/@syncfusion/ej2-inputs/src/input/input.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/datetimepicker/datetimepicker.component.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/textbox/textbox.component.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-buttons/src/common/common.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/datepicker/datepicker.component.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/base/util.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","webpack:///./node_modules/@syncfusion/ej2-vue-dropdowns/src/multi-select/multiselect.component.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/@syncfusion/ej2-data/src/query.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/@syncfusion/ej2-notifications/src/skeleton/skeleton.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/recurrence-editor/date-generator.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/work-week.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/vertical-view.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/buttons.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/dialog.component.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/@syncfusion/ej2-navigations/node_modules/@syncfusion/ej2-buttons/src/button/button.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/input/input.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/freeze.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/freeze-column.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/command-column-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.js","webpack:///./node_modules/@syncfusion/ej2-data/src/manager.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/common/calendar-util.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/enum.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/constant.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/classes.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/common/constant.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/keyboard.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/view-source.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/interface.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/execute-command-callback.js","webpack:///./node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/ajax-settings.js","webpack:///./node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/contextMenu-settings.js","webpack:///./node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/details-view-settings.js","webpack:///./node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/navigation-pane-settings.js","webpack:///./node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/search-settings.js","webpack:///./node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/toolbar-settings.js","webpack:///./node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/upload-settings.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/items.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/toolbar-settings.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/iframe-settings.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/inline-mode.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/default-locale.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-attributes.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/full-screen.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/enter-key.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/util.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/rich-text-editor.js","webpack:///./node_modules/@syncfusion/ej2-vue-richtexteditor/src/rich-text-editor/richtexteditor.component.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/base/constant.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/scroll.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/touch.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/keyboard.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/data.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/timeline-view.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/inline-edit.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/form-validator.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/quick-popups.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-tooltip.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/recurrence-editor/recurrence-editor.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-window.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/virtual-scroll.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/renderer.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/work-hours.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/time-scale.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/quick-info-templates.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/header-rows.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/crud.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/actions/work-cells.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/field-options.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/fields.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/event-settings.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/group.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/resources.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/base/resource.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/models/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/base/schedule.js","webpack:///./node_modules/@syncfusion/ej2-vue-schedule/src/schedule/views.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-schedule/src/schedule/resources.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-schedule/src/schedule/headerrows.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-schedule/src/schedule/toolbaritems.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-schedule/src/schedule/schedule.component.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/position.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/column.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/loading-indicator.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/filter-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/textwrap-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/logger.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/constant.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/clipboard.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/utils.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/selection.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/enum.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/print.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/search-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/selection-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/data.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/summary.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/edit-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/sort-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/actions/crud-actions.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/models/infinite-scroll-settings.js","webpack:///./node_modules/@syncfusion/ej2-treegrid/src/treegrid/base/treegrid.js","webpack:///./node_modules/@syncfusion/ej2-vue-treegrid/src/treegrid/stacked-column.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-treegrid/src/treegrid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-treegrid/src/treegrid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-treegrid/src/treegrid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-treegrid/src/treegrid/treegrid.component.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/column.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/row.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/image.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/utils.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/decompressor-huffman-tree.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/checksum-calculator.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-reader.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/zip-archive.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/workbook.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/daterangepicker/daterangepicker.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/daterangepicker/presets.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-calendars/src/daterangepicker/daterangepicker.component.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/node_modules/@syncfusion/ej2-popups/src/popup/popup.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/check-box/checkbox.component.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/util.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/observer.js","webpack:///./node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack:///./node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/ajax.js","webpack:///./node_modules/@syncfusion/ej2-base/src/fetch.js","webpack:///./node_modules/@syncfusion/ej2-base/src/browser.js","webpack:///./node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack:///./node_modules/@syncfusion/ej2-base/src/dom.js","webpack:///./node_modules/@syncfusion/ej2-base/src/base.js","webpack:///./node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack:///./node_modules/@syncfusion/ej2-base/src/animation.js","webpack:///./node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack:///./node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack:///./node_modules/@syncfusion/ej2-base/src/child-property.js","webpack:///./node_modules/@syncfusion/ej2-base/src/component.js","webpack:///./node_modules/@syncfusion/ej2-base/src/draggable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/droppable.js","webpack:///./node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack:///./node_modules/@syncfusion/ej2-base/src/l10n.js","webpack:///./node_modules/@syncfusion/ej2-base/src/touch.js","webpack:///./node_modules/@syncfusion/ej2-base/src/template.js","webpack:///./node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack:///./node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/month.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/vue-router/dist/vue-router.esm.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/@syncfusion/ej2-lists/src/common/list-base.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/button/button.component.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/common/common.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/logger.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/month.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack:///./node_modules/core-js/internals/array-buffer-native.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/node_modules/@syncfusion/ej2-navigations/src/sidebar/sidebar.js","webpack:///./node_modules/@syncfusion/ej2-vue-navigations/src/sidebar/sidebar.component.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/day.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/tooltip/tooltip.component.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/stacked-column.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/grid.component.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-viewer-preferences.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","webpack:///./node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/week.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/vertical-view.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/popup/popup.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/view-base.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-buttons/src/common/common.js","webpack:///./node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-buttons/src/button/button.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-data/src/util.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/component-base.js","webpack:///./node_modules/@syncfusion/ej2-vue-base/src/template.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/src/drop-down-button/items.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-splitbuttons/src/drop-down-button/dropdownbutton.component.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/agenda-base.js","webpack:///./node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/agenda.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/@syncfusion/ej2-vue-dropdowns/src/drop-down-list/dropdownlist.component.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/button/button.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/footer-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/summary-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/aggregate.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/moment/locale/se.js"],"names":["wellKnownSymbol","TO_STRING_TAG","test","module","exports","String","global","factory","this","moment","uzLatn","defineLocale","months","split","monthsShort","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","week","dow","doy","ml","monthsParseExact","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","cv","output","affix","exec","dayOfMonthOrdinalParse","ordinal","plural","n","translate","number","withoutSuffix","key","isFuture","result","is","fo","elementRect","popupRect","element","parentDocument","fixedParent","calculateRelativeBasedPosition","anchor","fixedElement","anchorPos","left","top","tempAnchor","offsetParent","style","position","offsetLeft","offsetTop","scrollLeft","scrollTop","parentElement","calculatePosition","currentElement","positionX","positionY","targetValues","undefined","ownerDocument","pos","updatePosition","toLowerCase","setPosx","value","setPosy","posX","posY","getBoundingClientRect","getElementHCenter","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","getBodyScrollTop","documentElement","body","getBodyScrollLeft","bottom","height","popupWidth","classList","contains","width","right","ja","eras","since","offset","name","narrow","abbr","until","Infinity","eraYearOrdinalRegex","eraYearOrdinalParse","input","match","parseInt","l","ll","lll","llll","isPM","now","period","__extends","extendStatics","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","constructor","prototype","create","__decorate","decorators","target","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","TOUCHEND_HIDE_DELAY","TAPHOLD_THRESHOLD","SHOW_POINTER_TIP_GAP","HIDE_POINTER_TIP_GAP","MOUSE_TRAIL_GAP","POINTER_ADJUST","ROOT","RTL","DEVICE","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","HIDE_POPUP","POPUP_CONTAINER","Animation","_super","apply","effect","duration","delay","Tooltip","options","_this","call","mouseMoveEvent","mouseMoveTarget","containerElement","isBodyContainer","initialize","formatPosition","_a","_b","indexOf","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","createElement","className","tipClass","appendChild","tooltipEle","renderPopup","elePos","mouseTrail","getTooltipPosition","remove","popupObj","X","Y","enableRtl","open","openPopupHandler","bind","close","closePopupHandler","getScalingFactor","x","scalingFactors","elementsWithTransform","closest","computedStyle","window","getComputedStyle","transformValue","getPropertyValue","matrixValues","map","parseFloat","display","parentWithZoomStyle","zoom","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","reposition","findTarget","dataBind","needTemplateReposition","trigger","tooltipEventArgs","isReact","opensOn","clearTemplate","clear","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","Math","round","showTipPointer","clientHeight","clientWidth","offsetWidth","offsetHeight","offsetX","offsetY","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tooltipWidth","tooltipHeight","arrowInnerELe","tipPosExclude","tipPointerPosition","renderContent","tooltipContent","cssClass","getAttribute","setAttribute","removeAttribute","content","innerHTML","HTMLElement","enableHtmlSanitizer","setProperties","sanitize","enableHtmlParse","tempFunction","tempArr","id","root","templateFunction","renderReactTemplates","renderCloseIcon","isSticky","tipClose","add","touchStartEvent","onStickyClose","existingCloseIcon","querySelector","addDescribedBy","describedby","push","join","trim","removeDescribedBy","index","splice","orgdescribedby","tapHoldHandler","evt","clearTimeout","autoCloseTimer","targetHover","originalEvent","touchEndHandler","e","setTimeout","targetClick","hideTooltip","animation","closeDelay","targetList","slice","ctrlId","document","_i","targetList_1","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showAnimation","showTimer","hideTimer","openDelay","type","cancel","event","isInteracted","observeCallback","beforeRenderArgs","beforeRenderCallback","isHidden","attrs","role","styles","tooltipBeforeRender","tooltipAfterRender","stop","appendContainer","ctrlObj","container","tagName","isDevice","maxWidth","observedArgs","beforeOpenCallback","openAnimation_1","timingFunction","show","onMouseMove","wireMouseEvents","tooltip","viewContainerRef","checkCollision","horizontal","vertical","affectedPos","checkCollideTarget","pageXOffset","pageYOffset","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","toString","positionString","newPos","offsetType","hideAnimation","targetElement","hide","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","destroy","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","preventDefault","touches","pageX","pageY","colpos","keyDown","keyCode","touchEnd","scrollHandler","render","wireEvents","renderComplete","preRender","triggerList","getTriggerList","triggerList_1","wireFocusEvents","touchModule","tapHoldThreshold","tapHold","touchEndEvent","targetsList","targetList_2","unwireEvents","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","getModuleName","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","keys","prop","refresh","target_2","currentTarget","currentTarget_1","DATEWRAPPER","LIBRARY","CONTROL","POPUPWRAPPER","INPUTWRAPPER","POPUP","INPUTCONTAINER","INPUTFOCUS","INPUTROOT","ERROR","ACTIVE","OVERFLOW","DATEICON","ICONS","OPENDURATION","OFFSETVALUE","SELECTED","FOCUSEDDATE","NONEDIT","containerAttr","DatePicker","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isAngular","preventChange","isIconClicked","isDynamicValueChanged","moduleName","isFocused","isBlur","isKeyAction","datepickerOptions","bindEvents","floatLabelType","calculateWidth","inputElement","inputWrapper","buttons","getElementsByClassName","disabled","enabled","setTimeZone","serverTimezoneOffset","offsetValue","clientTimeZoneDiff","Date","getTimezoneOffset","serverTimezoneDiff","timeZoneDiff","isDayLightSaving","getTime","updateInput","firstOffset","getFullYear","secondOffset","max","setAllowEdit","allowEdit","readonly","updateIconState","checkInvalidValue","enableMask","notify","createInput","updateHtmlAttributeToWrapper","placeholder","updateInputValue","previousElementValue","previousDate","inputValueCopy","ariaAttrs","l10nLocale","globalize","locale","l10n","getConstant","fullScreenMode","updatedCssClassValues","replace","isBindClearAction","bindClearAction","properties","showClearButton","setWidth","tabIndex","addAttributes","isDynamic","formatOptions","isCalendar","disabledDates","isNaN","checkValue","strictMode","validateDate","minMaxUpdates","minMaxUpdate","dateValue","dateString","tempFormat","formatString","dateTimeFormat","calendarMode","formatDate","format","skeleton","min","changedArgs","errorClass","checkStringValue","val","returnDate","formatDateTime","culture","getDatePattern","checkDateValue","parseDate","valueDate","valueString","invalid","extISOString","basicISOString","bindInputEvent","inputHandler","dateIconHandler","mouseUpHandler","inputFocusHandler","inputBlurHandler","keyupHandler","keydownHandler","inputChangeHandler","clearButton","resetHandler","formElement","resetFormHandler","defaultKeyConfigs","keyConfigs","keyboardModules","eventName","keyAction","inputKeyActionHandle","code","unBindEvents","restoreValue","currentDate","stopPropagation","bindClearEvent","clearedArgs","popupUpdate","changeEvent","keyupEvent","createEvent","initEvent","dispatchEvent","preventEventBubbling","interopAdaptor","invokeMethodAsync","setValue","blur","focus","htmlAttributes","updatedClassValues","setStyle","charAt","updateHtmlAttributeToElement","updateCssClass","newCssClass","oldCssClass","setCssClass","popupWrapper","calendarKeyActionHandle","action","children","selectionStart","selectionEnd","focusArguments","model","openOnFocus","isPopupClicked","strictModeUpdate","changeTrigger","activeElement","blurArguments","calendarKeyboardModules","calendarElement","firstElementChild","documentHandler","depth","generateTodayVal","focusOut","clickedView","currentView","start","end","length_1","headerTitleElement","defaultAction","keyActionHandle","setActiveDescendant","previousDateTime","querySelectorAll","targetdate","navigateTo","dateOptions","date","pattern","charPattern","len","modifiedValue","toLocaleUpperCase","setFullYear","setHours","getHours","getMinutes","getSeconds","getMilliseconds","createCalendar","modelHeader","modal","relateTo","targetType","zIndex","collision","iconRight","marginRight","swipe","CalendarSwipeHandler","TouchStartHandler","resetCalendar","preventArgs","setAriaAttributes","targetExitViewport","direction","swipeDirection","touchStart","navigateNext","navigatePrevious","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","textContent","modelCloseIcon","modelCloseHandler","modelTodayButton","insertBefore","valueOf","navigatedEvent","navigatedArgs","selectCalendar","requiredModules","modules","args","member","prevent_1","outOfRange","mobilePopupWrapper","popup","appendTo","eventArgs","refreshPosition","openAnimation","setOverlayIndex","tableBodyElement","dlgOverlay","prevent_2","closeEventCallback","prevent","keyboardModule","outerHTML","focusIn","triggerEvent","view","removeAttributes","inputElementCopy","ensureInputAttribute","ngTag","insertAdjacentElement","attributes","cloneNode","validationAttribute","getDefaultKeyConfig","checkHtmlAttributes","hasAttribute","altUpArrow","altDownArrow","escape","enter","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","select","home","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","shiftTab","tab","nameAttribute","attribute","attr","checkFormat","skeletonString","dynamic","checkView","attributes_1","valueCopy","previousValCopy","renderDayCell","inputVal","dateIdString","isDisabledDate","setMilliseconds","setPlaceholder","setReadonly","setEnabled","setLocale","setEnableRtl","setClearButton","removeFloating","addFloating","day","month","year","second","dayOfTheWeek","utils","buildURL","InterceptorManager","dispatchRequest","mergeConfig","Axios","instanceConfig","defaults","interceptors","request","response","config","url","method","chain","promise","Promise","resolve","forEach","interceptor","unshift","fulfilled","rejected","then","shift","getUri","params","paramsSerializer","data","monthsShortDot","monthsParse","monthsRegex","esDo","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdaysParseExact","hours","w","ww","arMa","Timezone","timezoneData","getTimezoneData","timezone","localOffset","convertedDate","toLocaleString","timeZone","error","convert","fromOffset","toOffset","fromLocalOffset","toLocalOffset","removeLocalOffset","getLocalTimezoneName","Intl","DateTimeFormat","resolvedOptions","Value","Text","SPINICON","SPINUP","SPINDOWN","INCREMENT","DECREMENT","INTREGEXP","RegExp","DECIMALSEPARATOR","COMPONENT","NUMERIC_FOCUS","HIDDENELEMENT","wrapperAttributes","selectionTimeOut","NumericTextBox","isVue","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","ejInstance","cloneElement","angularTagName","formEle","attributeName","nodeName","nodeValue","filter","item","localeText","incrementTitle","decrementTitle","isValidState","inputStyle","inputName","cultureInfo","initCultureInfo","initCultureFunc","prevValue","updateHTMLAttrToElement","checkAttributes","inputEleValue","validateMinMax","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","hiddenInput","elementPrevValue","setNumber","instance","getNumberParser","minValue","maxValue","stepValue","currency","currencyCode","updatedCssClassValue","getNumericValidClassList","inputObj","updateHTMLAttrToWrapper","childNodes","updateDataAttribute","a","pro","newClass","oldClass","numericClassName","updatedClassValue","numericStyle","spinDown","appendSpan","spinUp","wireSpinBtnEvents","Number","MAX_VALUE","formattedValue","getNumberFormat","maximumFractionDigits","minimumFractionDigits","useGrouping","step","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","nextElementSibling","updateValue","setSpinButton","focusHandler","focusOutHandler","keyDownHandler","keyUpHandler","keyPressHandler","changeHandler","pasteHandler","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveEvent","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","inputValue","changeEventArgs","previousValue","isInteraction","beforeUpdate","numericRegex","preventHandler","iOS","navigator","platform","currentPos","prevPos","valArray","numericObject","ignoreKeyCode","charCodeAt","prevVal","setSelectionRange","lastIndexOf","substring","nextEle","cursorPosChanged","validateDecimalOnType","parseValue","numerictextboxObj","fireFox","userAgent","parsedValue","localChange","current","previous","nonZeroRegex","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","pow","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","formatNumber","elementValue","serverDecimalSeparator","EXPREGEXP","toFixed","decimalPart","result1","result2","cancelEvent","info","version","which","metaKey","ctrlKey","currentChar","fromCharCode","isAlterNumPadDecimalChar","text","fractionRule","mouseWheel","delta","rawEvent","wheelDelta","detail","focusEventArgs","formatValue_1","isIos","blurEventArgs","value_1","ele_1","focusEvent","getElementData","mouseUpClick","timeOut","setInterval","touchEvent","elementFromPoint","clientX","clientY","clearInterval","button","floatLabelTypeUpdate","increment","decrement","attrArray","getText","keyEntity","validateInputType","updateSpinButton","updateClearButton","propValue","modelProps","testProp","props","watch","emitProbs","modelProps_1","props_1","NumericTextBoxComponent","mixins","emits","provide","custom","ej2Instances","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","isVue3","templateCollection","created","_trigger","bindProperties","_setProperties","updated","slots","$slots","default","methods","templateNames","templateNames_1","tempName","elementCollection","elementCollection_1","ele","__vue__","$destroy","muteOnChange","referModels","vueInstance","$emit","eventProp","successHandler","requestType","propKey","$props","isLazyUpdate","NumericTextBoxPlugin","install","Vue","component","processRelativeTime","gomLatn","standalone","isFormat","DESCRIPTORS","fails","get","callback","arr","frCh","enAu","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","tr","minutes","da","tlPh","consts","GroupGuid","Adaptor","ds","from","sortBy","skip","group","take","search","count","where","aggregates","expand","dataSource","pvt","processResponse","query","xhr","JsonAdaptor","processQuery","dataManager","ret","page","json","countFlg","lazyLoad","keyCount","agg","queries","fn","field","lazyLoadData","lazyLoadGroup","isCountRequired","getAggregate","onDemandGroupInfo","fieldName","comparer","onPage","formGroupResult","req","onWhere","level","uid","childLevel","records","aggQuery","filterQueries","tmp","getValue","batchRequest","dm","changes","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","update","obj","validate","onAggregates","onSearch","fieldNames","getFieldList","j","getObject","searchKey","ignoreCase","ignoreAccent","onSortBy","fnCompare","sort","endsWith","fnSort","onGroup","size","pageSize","pageIndex","onRange","onTake","nos","onSkip","onSelect","tableName","keyField","UrlAdaptor","hierarchyFilters","temp","getQueryRequest","singles","filterQueryLists","sorts","groups","filters","searches","callAdaptorFunction","getFiltersFrom","toJson","res","keys_3","keys_1","isNull","fields","operator","getRequestQuery","reqParams","keys_2","JSON","stringify","parse","jsonDateReplacer","pvtData","contentType","convertToQueryString","request1","param","fromTable","distincts","selects","expands","headers","handleTimeZone","timeZoneHandling","parseJson","requests","groupDs","isExpand","isArray","formRemoteGroupedData","getAggregateResult","items","childLvl","lvl","getGroupedRecords","hasRecords","childGroupedRecords","concat","original","batchUrl","crudUrl","removeUrl","dataType","changed","added","deleted","table","getAddParams","beforeSend","insertUrl","keyColumn","updateUrl","fKey","pKey","predicats","or","pData","aggregateData","aggregate","isServerGrouping","groupQuery","addParams","Error","ODataAdaptor","accept","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","predicate","requiresCast","guid","returnValue","getField","replacer","encodeURIComponent","isGuid","odBiOperator","odUniOperator","odv4UniOperator","splittedStringValue","splittedValue","onComplexPredicate","predicates","onEachWhere","condition","isComplex","onEachSearch","throwError","onEachSort","reverse","onCount","settings","set","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","results","metaData","emptyAndBatch","processBatchResponse","versionCheck","fetchRequest","oDataCount","requiresFormat","keys_4","localTimeReplacer","convertObj","dateParse","toLocalTime","localTime","compareAndRemove","initialGuid","getGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","dateTime","toJSON","generateBodyContent","org","change","o","cIdx","jsonObj","exVal","changeGuid","isPlainObject","final","WebApiAdaptor","ODataV4Adaptor","isDate","onExpand","selected","expanded","exArr","splits","sel","exp","close_1","combineVal","expandQueryIndex","idx","ex","onDistinct","distinctFields","metaName","metaV4Name","dataUrl","dataCount","dataV4Count","_loop_1","location","host","_loop_2","_loop_3","state","datTime","Count","Items","WebMethodAdaptor","getData","RemoteSaveAdaptor","updateKey","newData","urlParams","CustomDataAdaptor","Function","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","GraphQLAdaptor","opt","schema","getVariables","getQuery","datamanager","urlQuery","str","vars","variables","resData","inserted","generateCrudData","bData","crudData","parsed","getMutation","adaptor","timeStamp","isCrudAction","isInsertAction","cacheAdaptor","guidId","localStorage","setItem","getItem","forDel","currentTime","requestTime","removeItem","generateKey","currentFilter","newQuery","clone","cachedItems","crossDomain","eu","th","CLS_ROOT","CLS_RTL","CLS_DISABLE","CLS_HSCROLLBAR","CLS_HSCROLLCON","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","OVERLAY_MAXWID","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","scroll","touchHandler","swipeHandler","scrollEle","createOverlay","createNavIcon","setScrollState","scrollStep","scrollDiv","innerEle","innerEle_1","overflowX","scrollItems","nav","overlay","elem","disable","navEles","el","rightOverlayEle","clsRight","rightEle","navItem","leftEle","firstChild","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","onKeyPress","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","onKeyUp","click","tabHoldHandler","addEventListener","repeatScroll","clickEventHandler","timeout","trgt","scrollDis","timeoutFun","isContinuous","rootEle","frameScrollRequest","distance","swipeEle","velocity","distanceX","animate","sin","cancelAnimationFrame","requestAnimationFrame","scrollUpdating","scrollVal","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","scrollWidth","ceil","disEle","CLS_VSCROLLBAR","CLS_VSCROLLCON","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","scrollBar","overflow","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","scrollDistance","deltaY","swipeElement","distanceY","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","scrollObj","maxHeight","destroyScroll","skipEle","menu","ENTER","ESCAPE","FOCUSED","HEADER","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","HOME","END","TAB","CARET","ITEM","DISABLED","HIDE","TEMPLATE_PROPERTY","FieldSettings","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","tempItem","showSubMenuOn","isMenu","ul","ejInst","clonedElement","refEle","wrapper","parentNode","renderItems","getWrapper","template","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","createJsonFromElement","child","removeChildElement","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","cmenuHandler","parent_1","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","delegateClickHandler","clickHandler","wireKeyboardEvent","rippleFn","selector","downarrow","uparrow","leftarrow","rightarrow","keyBoardHandler","closeMenu","keyHandler","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","childElementCount","fliIdx","fli","getLIByClass","getIdx","cli","isValidLI","navIdxLen","popups_1","allPopup","keyType","openMenu","aEle","parent","href","sli","isCMenu","changedTouches","canOpen","ulIndex","isIterated","isMenuVisible","item_1","items_1","wrapper_1","beforeCloseArgs","popups","getPopups","isClose","cnt","ul_1","liElem_1","getLI","parentItem","observedCloseArgs","popupEle","closeArgs","trgtliId","closedLi","trgtLi","popupId","isOpen","minHeight","unWireKeyboardEvent","toggleAnimation","pop","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","getIndex","isMenusClosed","sli_1","cliIdx","item_2","removeStateWrapper","portals","getMenuItemModel","getFields","separator","iconCss","li","lItem","elemId","uList","lastChild","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","timer","targetEvent","copyObject","srcElement","source","destination","liStyle","liIndent","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","actionOnScroll","triggerOpen","spanElem","tempTitle","title","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","menuType","observedOpenArgs","checkScrollOffset","animationOptions","animationSettings","easing","setPosition","eventArgs_1","collide","offWidth","blankIconList","iconLi","icon","cssProp","padding","margin","iconCssProps","iconSize","fontSize","offsetEle","offsetRight","px","toggleVisiblity","newTop","xCollision","isVisible","visibility","showIcon","hasField","listBaseOptions","itemNavigable","itemCreating","curData","isIE","tabindex","assign","itemCreated","span","templateID","createList","liTrgt","ulId","hdrWrapper","regex","isDifferentElem","isClosed","propName","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","isHeader","classname","getItemIndex","isUniqueId","isText","newItem","getItems","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","removeChild","this_1","unWireEvents","ul_2","ul_3","getChangedItemIndex","insertAfter","lastElementChild","wrapper1","ul1","lis","popStr","uls","targetSelctor","parent_2","isMenuOpen","pUlHeight","pElement","begin","progress","nIndex","isCallBack","enableItems","enable","skipItem","i_1","showItems","showHideItems","hideItems","ishide","validUl","removeItems","iitems","insertItems","isAfter","menuitem","removeProperty","refreshing","getElementById","itemId","parentId","VMENU","SCROLLABLE","HAMBURGER","Menu","tempItems","clearChanges","updateMenuItems","orientation","previousElementSibling","createMenuItems","pIdField","MenuItemsDirective","inject","class","getTag","MenuItemsPlugin","MenuItemDirective","MenuItemPlugin","MenuComponent","MenuPlugin","globalTimeOut","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_FLUENT_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT5_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","createSpinner","internalCreateElement","radius","makeElement","create_spinner_container","classNames","wrap","theme","getTheme","calculateRadius","setTheme","label","createLabel","inner_wrap","replaceContent","labelEle","createMaterialSpinner","uniqueID","random_generator","create_material_element","mat_calculate_attributes","createMaterial3Spinner","createBootstrap4Spinner","createBootstrap5Spinner","startMatAnimate","globalObject","timeOutVar","globalVariables","spinnerInfo","globalInfo","animateMaterial","createFabricSpinner","create_fabric_element","fb_calculate_attributes","createFluentSinner","createTailwindSpinner","createHighContrastSpinner","innerContainer","svg","createBootstrapSpinner","create_bootstrap_element","boot_calculate_attributes","svgBoot","createElementNS","viewBoxValue","trans","defaultRadius","bootCircle","rad","startArc","defineArcPoints","circleEle","generateSeries","series","formSeries","animateBootstrap","rotation","circle","boot_animate","isAnimate","inner","defaultSize","previousId","random","combine","floor","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","cls","svgMaterial","matCirclePath","spinnerContainer","spinnerInnerContainer","createCircle","easeAnimation","startTime","diameter","getSize","strokeSize","getStrokeSize","rotate","mat_animation","updatePath","path","getDashOffset","transformOrigin","drawArc","PI","timestamp","timecount","innerConainer","trgClass","centerX","centerY","endArc","defineCircle","defineArc","angle","radians","cos","showSpinner","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","find","spinCheck","svgEle","hideSpinner","translator","words","correctGrammaticalCase","wordKey","srCyrl","lastWeekDays","DEVICE_CLASS","MULTI_DRAG","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","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","INLINE_SUBJECT_CLASS","INLINE_APPOINTMENT_CLASS","SCROLL_HIDDEN","ALLDAY_APPOINTMENT_SCROLL","ALLDAY_APPOINTMENT_AUTO","EventBase","isDoubleTapped","processData","events","timeZonePropChanged","oldTimezone","activeView","startDate","endDate","eventFields","processed","generateID","resourceCollection","resourceBase","event_1","updateEventDateTime","processTimezoneChange","isPrinting","uiStateValues","isPreventTimezone","processTimezone","recurrenceRule","recurrenceID","crudModule","crudObj","recurrenceEvent","generateOccurrence","occurrence","app","eventsProcessed","Guid","generateGuid","recurrenceEvent_1","events_1","eventData","isBlock","filterEvents","blockData","blockData_1","eventObj","isAllDay","isDifferentDate","endTime","blockProcessed","getProcessedEvents","eventCollection","eventsData","eventCollection_1","event_2","timezonePropertyChange","processedData","timezoneConvert","startTimezone","endTimezone","startTz","endTz","tzModule","isReverse","filterBlockEvents","resourceData","eStart","eEnd","activeViewOptions","resources","getGroupIndexFromEvent","lastResourceLevel","blockEvents","blockEvents_1","eventObj_1","isDifferentTime","appointments","resourceTdData","dataModule","getStartEndQuery","executeLocal","filterEventsByResource","sortByTime","filterEventsByRange","filteredEvents","groupOrder","filteredCollection","every","appointmentsCollection","eventSettings","sortComparer","fieldMappings_1","d1","d2","customSorting","sortByDateTime","fieldMapping_1","object1","object2","d3","d4","d5","d6","sortFn","getSmallestMissingNumber","array","large","splitEventByDay","eventStartTime","eventEndTime","eventLength","isSpanned","splitEvent","dateRender","orgStart","orgEnd","ranges","cStart","slot","byDate","showWeekend","slotDates","slot_1","renderedDates","getRenderedDates","renderedDates_1","firstSlot","startIndex","endIndex","hasBreak","isLeft","isRight","cloneEventObject","dateInRange","availSlot","availSlot_1","slot_2","getSelectedEventElements","removeSelectedAppointmentClass","selectedElements","isAlreadySelected","elementSelector","focusElements","focusElements_1","addSelectedAppointments","getSelectedEvents","eventSelect","elementSelect","selectAppointments","isAlreadyAdded","getEventByGuid","selectedAppointments","getSelectedAppointments","cells","preventFocus","removeSelectedClass","focusElement","eventWindow","dialogObject","visible","activeEle","selectedCell","getSelectedCells","activeEventData","keyboardInteractionModule","activeCellsData","selectCells","selectWorkCellByTime","selectedObject","nearestTime","setMinutes","isAllDayAppointment","targetArea","getAllDayRow","getContentTable","queryString","getCellDetails","levelIndex","resource","levelName","idField","parentField","getIndexFromResourceId","fieldMapping","isFullDay","spannedEventPlacement","on","appointmentBorderRemove","removeEventListener","off","wireAppointmentEvents","isPreventCrud","isReadOnly","isReadonly","eventClick","isAdaptive","eventTouchClick","eventDoubleClick","resizeModule","wireResizeEvent","dragAndDropModule","wireDragEvent","renderResizeHandler","spanEvent","allowResizing","resizeEdge","resizeHandler","isTop","isBottom","quickPopup","selectArgs","selectEventArgs","eventClickArgs","quickPopupHide","allowInline","inlineArgs","eventDoubleClickArgs","openEditor","currentAction","openRecurrenceAlert","getEventById","v","getEventIDType","getEventMaxID","resourceId","eventId","idType","datas","appIds","maxId","reduce","isMultiple","eventObject","viewDate","isMaxCount","eventRule","maxCount","exception","recurrenceException","newTimezone","firstDay","firstDayOfWeek","dates","generatedDates","occurrenceCollection","dates_1","clonedObject","getDSTAdjustedTime","followingID","occurDate","eventOffset","getDSTDiff","schOffset","startOffset","occurOffset","getParentEvent","isParent","parentEvent","getFollowingEvent","collection","getEventCollections","followObj","follow","parentObj","childObj","followingCollection","followingEvent","getOccurrenceEvent","collections","fields_1","fieldValue","parentApp","isFollowingEvent","parentStart","childStart","isFollowing","fieldKey","getOccurrencesByID","parentObject","parentObject_1","event_3","getOccurrencesByRange","event_4","getDeletedOccurrences","recurrenceData","deletedOccurrences","exDateString_1","edited","this_2","exDate","childObject","time","applyResourceColor","alpha","alphaColor","color","g","getResourceColor","createBlockAppointmentElement","record","resIndex","isResourceEventTemplate","templateElement","eventSubject","subject","appointmentWrapper","eventTemplate","appointmentSubject","scheduleId","viewName","eventTemplateName","templateId","templateName","getAppointmentTemplate","setWrapperAttributes","getReadonlyAttribute","isBlockRange","isBlockAlert","event_5","dataCol","dataCol_1","getFilterEventsList","getSeriesEvents","deleteFutureEditEvents","futureEvents","deleteFutureEvent","deleteFutureEditEventList","delId","followingId","startTimeQuery","and","getEditedOccurrences","delEditedEvents","deleteRecurrenceEventList","deleteFutureEditEventList_1","event_6","delEventQuery","filteredDates","firstDate","lastDate","minDate","maxDate","isValidEvent","schedule","isHourRange","startHour","endHour","isSameRange","allDayExpandScroll","dateHeader","indentHeight","headerRows","tdEle","updateEventMinimumDuration","startEndHours","eventDuration","minimumEventDuration","tempEnd","tempStart","createEventWrapper","levels","colLevels","col","appointmentWrap","groupIndex","innerWrapper","getPageCoordinates","renderSpannedIcon","iconElement","iconLeft","iconTop","iconBottom","addCellHeight","eventHeight","eventGap","headerHeight","indHeight","isScrollUpdate","maxEventsPerRow","rowAutoHeight","rows","weekNumberRows","showWeekNumber","rows_1","row","enablePersistence","allowVirtualScrolling","appElements","appElements_1","clearEvents","ocLnc","toPositiveInteger","it","BYTES","RangeError","mt","Input","CLASSNAMES","DISABLE","INPUT","TEXTAREA","INPUTGROUP","FLOATINPUT","FLOATLINE","FLOATTEXT","FLOATTEXTCONTENT","CLEARICON","CLEARICONHIDE","LABELTOP","LABELBOTTOM","NOFLOATLABEL","INPUTCUSTOMTAG","FLOATCUSTOMTAG","containerAttributes","TEXTBOX_FOCUS","__eventHandlers","inputObject","createInputContainer","createFloatingInput","bindInitialEvent","setPropertyValue","createSpanElement","bindFocusEventHandler","getParentNode","bindBlurEventHandler","bindInputEventHandler","checkInputValue","blurHandler","unbindInitialEvent","focusHandler_1","blurHandler_1","inputHandler_1","inputParent","grandParent","_focusFn","_blurFn","getElementsByTagName","wireFloatingEvents","unwireFloatingEvents","inputEventHandler","validateLabel","blurEventHandler","customTag","floatLinelement","floatLabelElement","innerText","encodePlaceHolder","inputWrap","updateLabelState","inputFloatHandler","blurFloatHandler","unWireFloatLabelEvents","checkFloatLabelType","isNotFocused","createClearButton","initial","baseElement","wireClearBtnEvents","readOnly","clickHandlerEvent","inputHandlerEvent","focusHandlerEvent","blurHandlerEvent","unWireClearBtnEvents","tagClass","tag","spanEle","elements","elementWidth","isRtl","isEnable","inputContainer","disabledAttrs","considerWrapper","isClear","inputEle","iconEle","isPrependIcon","floatLine","floatText","labelSpanElement","setRipple","isRipple","_internalRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","_onMouseRipple","parentEle","createIconEle","iconClass","addIcon","icons","internalCreate","result_1","result_2","prependSpan","updateHTMLAttributesToElement","getInputValidClassList","inputClassName","updateHTMLAttributesToWrapper","isBlank","inputString","DateTimePickerComponent","addDate","createContent","removeDate","toggle","DateTimePickerPlugin","symbolMap","0","pluralForm","plurals","pluralize","u","string","f","arLy","preparse","postformat","thisArg","TypeError","word","num","forms","relativeTimeWithPlural","be","ka","$0","$1","$2","HIDE_CLEAR","TextBox","isHiddenInput","isForm","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","prevOnChange","isProtectedOnChange","multiline","textarea","autocomplete","apiAttributes","attrs_1","autoCompleteTxt","initialValue","setInitialValue","defaultValue","resetForm","animationHandler","resetValue","textboxObj","interaction","resetInputHandler","TextBoxComponent","TextBoxPlugin","ko","token","isUpper","Group","groupSettings","sortedColumns","serviceLocator","sortRequired","groupSortFocus","groupTextFocus","groupCancelFocus","isAppliedGroup","isAppliedUnGroup","isAppliedCaptionRowBorder","reorderingColumns","visualElement","helper","gObj","sender","allowReordering","column","getColumnByField","dragStart","drag","animateDropper","draggableType","dragStop","preventDrop","rearrangeGroup","getColumnByUid","columns","ungroupColumn","dragField","dropTarget","grouped","cols","dropField","dropIndex","dragIndex","flag","addColToGroupDrop","addLabel","removeColFromGroupDrop","drop","droppedElement","aria","setDropTarget","setGrabbed","getHeaderTable","allowGrouping","getColumnHeaderByUid","log","columnName","headerText","groupColumn","contentRefresh","getService","groupGenerator","dragLabel","updateModel","columnDrag","isEqualNode","getColumnHeaderByField","columnDragStart","dropArea","columnDrop","isDestroyed","enableAfterRender","onActionComplete","refreshSortIcons","initialEnd","onGroupAggregates","updateExpand","getColumns","focusableGroupedItems","getFocusableGroupedItems","isMacLike","allowSelection","getSelectedRowIndexes","dataRow","getDataRows","grpRow","rowIndex","expandCollapseRows","expandAll","collapseAll","applySortFromTarget","unGroupFromTarget","isEdit","getFocusedElement","focusModule","currentInfo","focusableGroupedHeaderItems","wireEvent","onFocusIn","onFocusOut","auxilaryclickHandler","unWireEvent","elementToFocus","addOrRemoveFocus","trgtEle","toogleGroupFromHeader","showToggleButton","gHeader","allowSorting","sortColumn","rowNodes","editSettings","showAddNewRow","indent","captionRow","getRowObjectFromUID","updateVirtualRows","enableLazyLoading","filterSettings","sortSettings","searchSettings","getContent","contentModule","enableVirtualization","lazyLoadRender","captionExpand","captionCollapse","setExpand","rowObjs","getRowsObject","startIdx","rowsState","cacheStartIdx","enableInfiniteScrolling","infiniteScrollSettings","enableCache","isDetailRow","parentUid","isDataRow","isCaptionRow","isAggregateRow","some","cell","isDataCell","lastCaptionRowBorder","isCollapse","borderCells","lastRow","rObj","getDataModule","generateQuery","aggregateQuery","rowObject","virtualInfo","prevInfo","requiresCount","renderModule","dataManagerSuccess","expandCollapse","updateVisibleExpandCollapseRows","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","updateGroupDropArea","showDropArea","rowRenderingMode","initializeGHeaderDrop","initializeGHeaderDrag","dragTarget","handler","arg1","showGroupedColumn","colName","enableColumnVirtualization","groupAddSortingQuery","isFromGroup","animator","groupedColumn","childDiv","headerCell","showUngroupButton","createSeparator","setActive","firstContentCellIndex","active","matrix","getTable","isRemove","showColumnMenu","localeObj","getGHeaderCell","oldProperties","headerModule","refreshUI","scrollModule","updateGroupedColumn","updateButtonVisibility","refreshHeader","freezeRefresh","gridElement","clearGrouping","header","gCols","editedData","mode","updateLazyLoadGroupAggregates","iterateGroupAggregates","rowData","generateRows","summaryRows","updateSummaryRows","destroyTemplate","dataUid","remoteResult","groupCaptionTemplates","getGroupAggregateTemplates","groupFooterTemplates","isRemote","updatedData","editedRow","groupedCols","groupLazyLoadRenderer","groupCache","getGroupCache","currentPageGroupCache","pageSettings","currentPage","groupField","groupKey","groupCaptionRowObject","getGroupCaptionRowObject","prevGroupField","prevGroupKey_1","updateLazyLoadGroupAggregatesRow","currentLevelCaptionRowObjects","pred","predicateList","destroyRefreshGroupCaptionFooterTemplate","catch","dataManagerFailure","state_1","refreshGroupCaptionFooterTemplate","removeMaskRow","updatedGroupCaptionData","updateLazyLoadGroupAggregatesCell","groupFooterRowObject","captionFooterRowObject","captionFooterTemplates","prevCaptionFooterData","updatedGroupCaptionDataAggregates","fieldData","groupCaptionIndex","parentCaptionRowObject","groupCaptionTemplate","aggregateRows","k","groupFooterTemplate","aggr","groupedRowReorder","fromRowObj","toRowObj","dragRow","getRowElementByUID","dropRow","dropArgs","fromIndex","nextSibling","groupReorderHandler","dragRowObject","dropRowObject","dragRowObjectData","dropRowObjectData","groupAggregateTemplate","dropParentRowObject","dragParentRowObject","dropRootParentRowObjects","dragRootParentRowObjects","groupColumns","updatedCurrentViewData","dragRowObjects","dropRowObjects","updatedDragCurrentViewData","object","updatedDropCurrentViewData","currentViewData","updatedRowObject","dragRootParentAggregateRowObject","dropRootParentAggregateRowObject","getGroupParentFooterAggregateRowObject","updatedRowObjChange","groupReorderRefreshHandler","rootParentRowObjects","updatedRowObjects","isDraggedRow","rowObjects","cache","virtualCacheRowObjects","vcRows","keyPresent","parentRowObject","isParentKeyPresent","nextParentObject","groupedData","vIndex","evaluateGroupAggregateValueChange","removeElem","vcIndex","infiniteScrollModule","resetInfiniteCache","parentRowObjects","parentFooterAggregates","gettingVirtualData","parentRowObjs","curViewRec","pK","draggedData_1","findIndex","initData","getCurrentViewRecords","getPrimaryKeyFieldNames","dragParentRowObjects","dropParentRowObjects","dropRootKey","dragRootKey","isInfiniteGroup","deletedCols","changeds","edit","mergeData","pKeyVal","hasVal","cItem","eData","aggrds","lastGroupKey","groups_1","predicate_1","addWhere","getPredicate","updatedGroupData","updateGroupInfo","_loop_4","childRow","closestParent","state_2","isFrozen","numberMap","ku","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isUndefined","getDefaultAdapter","adapter","XMLHttpRequest","process","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","merge","getTextNode","node","childnode","nodeType","createCheckBox","enableRipple","rippleSpan","isCenterRipple","frameSpan","checked","labelSpan","disableHtmlEncode","rippleMouseHandler","bs","DatePickerComponent","DatePickerPlugin","units","translateSeconds","translateSingular","special","lt","WEEK_LENGTH","DEFAULT_WEEKS","MS_PER_DAY","MS_PER_MINUTE","getElementHeightFromClass","elementClass","getElementHeight","getElementWidthFromClass","getElementWidth","getTranslateY","WebKitCSSMatrix","webkitTransform","m42","getTranslateX","m41","getWeekFirstDate","date1","getDay","setDate","getDate","getWeekLastDate","weekFirst","weekLast","getMonth","firstDateOfMonth","lastDateOfMonth","getWeekNumber","dayOfYear","getWeekMiddleDate","setTime","tzOffsetBefore","tzOffsetDiff","resetTime","getDateInMs","dateOffset","timezoneOffset","getDateCount","addDays","noOfDays","addMonths","noOfMonths","setMonth","getMaxDays","getStartEndHours","setSeconds","date2","getDaysCount","strTime","getDateFromString","pixelRatio","getScrollBarWidth","devicePixelRatio","screen","availWidth","divNode","cssText","ratio","resetScrollbarWidth","zoomPixelRatio","findIndexInData","field_1","includes","groupIDField","getOuterHeight","marginTop","marginBottom","removeChildren","elementChildren","elementChildren_1","elementChild","isDaylightSavingTime","jan","jul","getUniversalTime","seconds","milliseconds","UTC","isMobile","isIPadDevice","capitalizeFirstWord","transform","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","Uint8Array","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","Uint16Array","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","enumerable","configurable","compressedString","write","encode","getBytes","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","success","fillWindow","canFlush","compressSlow","flush","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","subarray","updateHash","hash","curMatch","chainLen","niceLen","scan","bestEnd","bestLength","limit","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","uint","Uint32Array","pendingBufferFlushBits","bitReverse","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","leafsCount","nodesCount","values","iIndex","constructHuffmanTree","buildLength","first","last","lastVal","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","normalizeComponent","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","vi","me","createFloatLabel","overAllWrapper","searchWrapper","encodePlaceholder","updateFloatLabelState","componentWrapper","placeholderText","placeholderElement","setPlaceHolder","floatLabelFocus","floatLabelBlur","spanElement","FOCUS","OVER_ALL_WRAPPER","ELEMENT_WRAPPER","ELEMENT_MOBILE_WRAPPER","HIDE_LIST","DELIMITER_VIEW","CHIP_WRAPPER","CHIP","CHIP_CONTENT","CHIP_CLOSE","CHIP_SELECTED","SEARCHBOX_WRAPPER","DELIMITER_VIEW_WRAPPER","ZERO_SIZE","REMAIN_WRAPPER","CLOSEICON_CLASS","DELIMITER_WRAPPER","POPUP_WRAPPER","INPUT_ELEMENT","RTL_CLASS","CLOSE_ICON_HIDE","MOBILE_CHIP","FOOTER","DISABLE_ICON","SPINNER_CLASS","HIDDEN_ELEMENT","dropdownIcon","iconAnimation","TOTAL_COUNT_WRAPPER","BOX_ELEMENT","FILTERPARENT","CUSTOM_WIDTH","FILTERINPUT","MultiSelect","option","clearIconWidth","previousFilterText","isValidKey","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","preventSetCurrentData","scrollFocusStatus","keyDownStatus","IsScrollerAtEnd","list","enableRTL","isGroupChecking","enableGroupCheckBox","enableSelectionOrder","allowCustomValue","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","htmlAttr","refreshPlaceHolder","defaultAttr","validateAttr","hiddenElement","updateReadonly","overAllClear","updateOldPropCssClass","onPopupShown","allowFiltering","proxy_1","onpopstate","hidePopup","history","pushState","animModel","focusAtFirstListItem","groupBy","updateListItems","mainList","showDropDownIcon","refreshPopup","updateAriaActiveDescendant","isFirstClick","updateVirtualReOrderList","loadTemplate","showSelectAll","isCheckBoxUpdate","getForQuery","resetList","UpdateSkeleton","liCollections","virtualItemCount","itemCount","totalItemCount","GetVirtualTrackHeight","virualElement","getTransformValues","listItems","mainListItems","findGroupStart","deselectHeader","refreshListItems","reOrderList","removeFocus","isPreventScrollAction","setScrollPosition","allowObjectBinding","valueEle","findListElement","ulElement","scrollBottom","focusedItem","addListFocus","focusAtLastListItem","isPopupOpen","getAriaAttributes","ariaAttributes","updateListARIA","disableStatus","ensureAriaDisabled","removelastSelection","selectedElem","chipCollectionWrapper","tempValues","customValue","getDataByValue","getFormattedValue","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","listData","refreshSelection","checkPlaceholderSize","removeSelectedChip","onActionFailure","targetInputElement","valuecheck","isCheckbox","isUpdated","virtualGroupDataSource","skeletonCount","updateSelectElementData","proxy","checkEle","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","checkForCustomValue","mainData","mainListCollection","remoteCustomValue","inputFocus","tempQuery","unwireListEvents","wireListEvents","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","beforePopupOpen","previousSibling","hideGroupItem","listEle","l10nUpdate","noData","ariaValue","checkSelectAll","checkMaxSelection","element1","temp1","getValidLi","liElement","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","virtualSelectAll","openClick","openOnClick","showPopup","keyUp","char","isWordCharacter","expandTextbox","showOverAllClear","isFiltered","remoteFilterAction","dataUpdater","filterQuery","filterAction","typeOfData","typeof","filterType","viewPortInfo","virtualFilterQuery","takeValue","getTakeValue","isReOrder","isSkip","isTake","queryElements","virtualItemStartIndex","isIncrementalRequest","incrementalEndIndex","outerHeight","listItemHeight","isDataFetched","isNoData","backCommand","previousStartIndex","virtualListInfo","getFilteringSkeletonCount","dataChecks","getValueByText","customData","dataItem_1","emptyObject_1","firstItem","virtualCustomData","tempData","virtualCustomSelectData","isCustomDataUpdated","virtualItemEndIndex","isRemoteSelection","getNgDirective","wrapperClick","keyboardEvent","isKeyBoardAction","onBlurHandler","eve","isDocClickFromCheck","addTagOnBlur","listLiElement","allowChipAddition","updateListSelection","updateDataList","updateDelimView","focused","removeChipFocus","refreshInputHight","paddingRight","downIconWidth","dropIcon","setPlaceholderSize","validateValues","newValue","oldValue","newVal","oldVal","initStatus","updateTempValue","selectedValueInfo","pageUpSelection","isVirtualKeyAction","previousItem","getIndexByValue","pageDownSelection","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","mobFilter","calcPopupWidth","resolveCollision","checkTextLength","popupKeyActions","updateAriaAttribute","filterInput","homeNavigation","isHome","updateVirtualItemIndex","updateSelectionList","selectedItem","getElementByValue","handleVirtualKeyboardActions","pageCount","activeIndex","arrowDown","arrowUp","getPageCount","isMouseScrollAction","isScrollChanged","onKeyDown","isPreventKeyAction","altKey","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","selectedLI","isInitialSelection","isUpwardScrolling","virtualListCount","lastElementValue","selectedLiOffsetTop","currentOffset","nextBottom","nextOffset","isScrollerCHanged","boxRange","fixedHeaderElement","currentElementValue","liCount","isVirtualScrolling","firstElementValue","isPageUpKeyAction","scrollTo","selectAllItem","selectAllCheckBox","addChipSelection","currentChip","moveByTop","filterInputClassName","currentFocuedListElement","updateCheck","isVirtualElement","elementIndex","listItems_1","liItem","checkElement","chipClick","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","currentValue","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","itemData","removeIndex","currentText","currentValue_1","hideElement","currentValue_2","scrollStop","removeChip","targetEle_1","isSelectAllTarget","isChecked","clearAllCallback","totalItemsCount","element2","objectToFind","addValue","isObjectInArray","getOverflowVal","updateWrapperText","getTextByValue","textValues","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","checkTemplate","encodeHtmlEntities","compiledString","chip","chipContent","valueTemplate","valueCompTemp","valueTemplateId","isStringTemplate","setClass","classes","isPreventChange","inputWidth","mouseIn","mouseOut","listOption","fieldProperty","listCurrentOptions","groupItemRole","checkboxFilter","filterParent","overAllHeight","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","footer","selectAllHeight","popupElement","searchBoxHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","offsets","popupContentElement","headercheck","headerTemplateId","onListMouseDown","footercheck","footerTemplateId","updateInitialData","currentData","selectData","currentPageNumber","sentinelInfo","previousEndIndex","getSkeletonCount","clearAll","selectAllItems","selectedElementID","checkAndResetCache","resetValueHandler","textVal","onInput","preventDefaultAction","updateData","updatingincrementalindex","incrementalStartIndex","updateIncrementalInfo","updateIncrementalView","incrementalLiCollections","index_1","initializeData","getLocaleName","delim","valueLength","hiddenElementContent","valueItem","listValue","isChipRemove","addValidInputClass","textArr","renderList","isEmptyData","noRecordsTemplate","removeListSelection","isCustomData","indexItem","noDataEle","addItem","replaceChild","updateActionCompleteData","updateAddItemList","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","itemTemplate","removeHover","temp_1","data_1","selectedItems","selectItems","hoveredItem","hover","mainlist","addListHover","ariaCheck","delimChar","onMouseClick","headerLi","visibleListElements","actualCount","virtualListHeight","liChecked","liUnchecked","groupValues","findGroupAttrtibutes","updateCheckBox","listElement","unChecked","groupHeader","checkBoxElement","onMouseOver","currentLi","onMouseLeave","onDocumentClick","spinnerElement","filterClear","wrapperType","wrapperData","tempIndex","wrapperleng","remaining","overAllContainer","actionFailureTemplate","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","paddingLeft","totalWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","groupTemplate","selectionLimit","focusedElement","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","index_2","count_1","value_5","virtualSelectAllData","value_2","value_3","value_4","updatedataValueItems","updateHiddenElement","virtualTrackElement","virtualContentElement","hiddenValue","wrapperText","isRemoveAll","setZIndex","updateDataSource","onLoadSelect","isDynamicDataChange","setUpdateInitial","updateVal","filterBarPlaceholder","dropDownIcon","reInitializePoup","removeScrollEvent","msProps","getPropObject","newProperty","oldProperty","dataSourceCount","checkvalue","executeQuery","itemIndex","isVirtualTrackHeight","mainLiLength","liLength","updatevirtualizationList","selectAll","spellcheck","opacity","updateVirtualizationProperties","getListHeight","checkInitialValue","listParent","listParentHeight","isData","optionsElement","valueCol","textCol","optionsLen","listItems_2","checkAutoFocus","MultiSelectComponent","MultiSelectPlugin","af","enhanceError","message","Query","subQuery","isChild","lookups","groupedColumns","setKey","using","execute","done","fail","always","cloned","subQuerySelector","distinct","tables","matchCase","Predicate","fnOperators","sortByForeignKey","order","sortByDesc","range","hierarchy","selectorFn","foreignKey","q","filtered","processOperator","combinePredicates","ornot","andnot","fromJson","fromJSONData","isAnd","preds","__CANCEL__","Data","dataState","isPending","resolver","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","toIndex","isQueryInvokedFromData","skipPage","isAutoCompleteCall","columnQueryMode","isPrimaryKey","selectQueryFields","searchQuery","sortQuery","virtualGroupPageQuery","pageQuery","types","fName","allowPaging","pagerModule","pagerObj","isAllPage","isManualRefresh","offline","isGrpFmt","enableGroupByFormat","formatGroupColumn","sortGrp","setSortDirection","isForeignColumn","getSortDirection","fcolumn","isForeignKey","sSettings","getSearchColumnFieldNames","needForeignKeySearch","getForeignKeyColumns","foreignKeyValue","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","foreignColumn","colType","foreignCols","defaultFltrCols","columns_1","gridColumn","grabColumnByFieldFromAllCols","excelPredicate","_c","_d","_e","foreignCols_1","column_1","grabColumnByUidFromAllCols","columnData","_f","_g","fPredicate","getKey","foreignKeyData","def","eventPromise","crud","saveChanges","ready","deferred_1","reject","getFormatter","formatVal","toView","pr","previousData","deff","endEdit","setState","getState","getForeignKeyDataState","setForeignKeyDataState","getStateEventArgument","adaptr","dataArgs","disablePageWiseAggregates","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","uz","applyMixin","mixin","vuexInit","_init","init","store","$store","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","emit","targetState","replaceState","subscribe","mutation","prepend","subscribeAction","deepCopy","hit","copy","forEachValue","isPromise","partial","arg","Module","rawModule","runtime","_children","_rawModule","rawState","prototypeAccessors","namespaced","addChild","getChild","hasChild","actions","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","defineProperties","ModuleCollection","rawRootModule","register","targetModule","newModule","getNamespace","namespace","this$1","rawChildModule","unregister","isRegistered","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","ref","dispatch","commit","payload","installModule","resetStoreVM","plugin","useDevtools","devtools","prototypeAccessors$1","genericSubscribe","subs","resetStore","hot","oldVm","_vm","wrappedGetters","computed","silent","$$state","enableStrictMode","_withCommit","_data","nextTick","rootState","isRoot","parentState","getNestedState","local","makeLocalContext","namespacedType","registerMutation","registerAction","getter","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","entry","rootGetters","err","rawGetter","$watch","deep","sync","_Vue","sub","before","all","after","cb","registerModule","preserveState","unregisterModule","delete","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","isValidMap","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","console","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","groupEnd","pad","repeat","times","OTHERMONTH","OTHERDECADE","CONTENTTABLE","YEAR","MONTH","DECADE","PREVICON","NEXTICON","PREVSPAN","NEXTSPAN","ICONCONTAINER","OVERLAY","WEEKEND","WEEKNUMBER","FOCUSEDCELL","OTHERMONTHROW","TODAY","TITLE","LINK","CELL","WEEKHEADER","ZOOMIN","BTN","FLAT","CSS","PRIMARY","DAYHEADERLONG","dayMilliSeconds","minutesMilliSeconds","CalendarBase","isDateSelected","isTodayClicked","previousDates","rangeValidation","calendarEleCopy","getFirstDayOfWeek","todayDisabled","todayDate","createHeader","spacebar","altRightArrow","altLeftArrow","ariaPrevAttrs","ariaNextAttrs","ariaTitleAttrs","tabIndexAttr","headerElement","iconContainer","previousIcon","nextIcon","adjustLongHeaderSize","contentElement","createContentHeader","createContentBody","showTodayButton","createContentFooter","addContentFocus","removeContentFocus","focusedDate","selectedDate","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","toUpperCase","daysCount","html","tableHeadElement","weekNumber","shortNames","shiftArray","days","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","minimum","maximum","today","todayButtonClick","keyConfig","navigateTitle","dateWireEvents","serverModuleName","isCustomDate","getViewNumber","renderDayCellArgs","multiSelection","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","addYears","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigateNextHandler","navigateHandler","triggerNavigate","minMaxDate","localDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","cellsCount","currentMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","dayCell","dayLink","isDisabled","isOutOfRange","argument","renderDayCellEvent","argsDate","localDateString","tempDateString","otherMnthBool","disabledCls","getDateVal","tempValue","copyValues","type_1","formatOptions_1","localDateString_1","tempDateString_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","localMonth","yearCell","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","timeOffset","abs","findLastDay","classNm","trEle","weekNumCell","numberCell","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","toGregorian","switchView","skipIndex","tempValueString","minFormatOption","minStringValue","minString","maxFormatOption","maxStringValue","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","focusedEle","selectedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","todayButtonEvent","stringVal","islamicPrevious","next","islamicNext","ld","gregorianFormat","islamicFormat","mainVal","tzOffset","setDateDecade","setDateYear","checkPresentDate","tempElement","selectedElement","checkPrevious","compare","modifier","findNextTD","rangeValue","tmpDate","inValue","toUTCString","Calendar","isMultiSelection","copyDate","previousValues","setEnable","form","formResetHandler","triggerChange","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","tempDates","setTodayDate","NaN","serializedParams","parts","toISOString","hashmarkIndex","SkeletonType","ShimmerEffect","cssClassName","TEXTSHAPE","CIRCLESHAPE","SQUARESHAPE","RECTANGLESHAPE","WAVEEFFECT","PULSEEFFECT","FADEEFFECT","VISIBLENONE","Skeleton","updateDimension","updateShape","updateEffect","updateVisibility","shapeCss","shape","removeCss","shimmerEffect","dropDownBaseClasses","rtl","fixedHead","grouping","virtualList","ITEMTEMPLATE_PROPERTY","DISPLAYTEMPLATE_PROPERTY","SPINNERTEMPLATE_PROPERTY","VALUETEMPLATE_PROPERTY","GROUPTEMPLATE_PROPERTY","HEADERTEMPLATE_PROPERTY","FOOTERTEMPLATE_PROPERTY","NORECORDSTEMPLATE_PROPERTY","ACTIONFAILURETEMPLATE_PROPERTY","HIDE_GROUPLIST","DropDownBase","addedNewItem","isAddNewItemTemplate","isRequesting","isVirtualizationEnabled","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","isRemoteDataUpdated","scrollPreStartIndex","isScrollActionTriggered","generatedDataObject","incrementalQueryString","incrementalPreQueryString","isObjectCustomValue","appendUncheckList","checkValueCase","isTextByValue","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","dataItem","ignoreDiacritics","textItem","typedText","templateCompiler","baseTemplate","actionFailure","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","noDataElement","liElem","componentLocale","difference","currentSkeletonCount","skeletonUpdated","retainSkeleton","listContainerHeight","heightDimension","translateY","styleText","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","enableRtlElements","bindEvent","jsonElement","setListData","renderItemsBySelect","invalidAttr","getJSONfromOption","optionGroup","updateFields","options_1","scrollTimer","isRequested","itemTemplateId","displayTemplateId","spinnerTemplateId","groupTemplateId","isActive","emptyDataRequest","initialRemoteRender","dataSource_2","updatePopupState","renderGroupTemplate","bindChildItems","localDataArgs","updateRemoteData","childNode","remainingItems","sortedData","updateListValues","raiseDataBound","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","createListItemFromJson","postRender","focusItem","filtering","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","createListItems","sortOrder","getSortedDataSource","groupDataSource","fieldValues","setFloatingHeader","setFixedHeader","isDownkey","liHeight","topIndex","isCount","groupListLength","loadedGroupList","updateGroupHeader","returnExactCount","updateGroupFixedHeader","oldUlElement","virtualUlElement","updateListElements","createVirtualContent","incrementalUlElement","incrementalListData","isRemovedUlelement","itemcheck","renderContentTemplate","listDataType","isNullData","borderWidth","defaultView","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","liWidth","firstLi","textField","getDataSource","addSorting","getIndexByValueFilter","setFields","isFiltering","updateSelection","oldProps","rippleModel","rippleFun","wrapperElement","newList","itemsCount","selectedItemValue","itemText","itemCheck","addItemTemplate","createTextNode","listGroupItem","tempLi","hidden","rowCell","gridHeader","gridContent","gridFooter","headerContent","movableContent","movableHeader","gridChkBox","addedRow","leftRight","frozenRight","frozenLeft","dataColIndex","ariaColIndex","dataRowIndex","ariaRowIndex","tbody","colGroup","initialFrozenColumnIndex","generateSummary","rule","localeObject","calendarType","cldrObj1","ruleObject","extractObjectFromRule","summary","EVERY","nameSpace1","nameSpace","interval","DAYS","WEEKS","ON","DAYINDEXOBJECT","MONTHS","getMonthSummary","YEARS","TIMES","UNTIL","monthDay","WEEKPOS","generate","excludeDate","startDayOfWeek","maximumCount","MAXOCCURRENCE","cacheDate","calendarUtil","getCalendarUtil","modifiedDate","tempExcludeDate","tz","parsedDate","getDateFromRecurrenceDateString","recExceptionCount","tempViewDate","maxOccurrence","setFirstDayOfWeek","DAYINDEX","dailyType","weeklyType","monthlyType","yearlyType","recDateString","substr","excludeDateHandler","zeroIndex","expectedCount","expectedDays","compareDates","validateRules","wkstIndex","weekState","weekCollection","wkst","dayIndex","startDateDiff","weekstartDate","weekendDate","compareTempDate","insertDataCollection","getStartDateForWeek","ruleType","validateMonthlyRuleType","monthlyDayTypeProcessforMonthFreq","monthlyDayTypeProcess","monthlyDateTypeProcessforMonthFreq","monthlyDateTypeProcess","typeValue","checkYearlyType","processWeekNo","processYearDay","startDay","firstWeekSpan","weekNo","stDate","getYearLastDate","weekNos","insertDateCollection","insertDatasIntoExistingCollection","dateCollection","yearDay","getLeapYearDaysCount","isLeapYear","getYearDaysCount","initializeRecRuleVariables","ruleData","monthCollection","mainDate","monthInit","currentMonthDate","getMonthStartDate","isSameYear","checkMonth","setValidDate","processDateCollectionForByMonthDay","beginDate","setNextValidDate","isLastMonth","getMonthDaysCount","recRuleVariables","isByMonth","validateProperDate","monthData","getMonthCollection","isHavingNumber","HASNUMBER","expectedDaysArray","SPLITNUMBERANDSTRING","isSameMonth","filterDateCollectionByIndex","insertDateCollectionBasedonBySetPos","dayCycleData","processWeekDays","initialDate","insertDateCollectionBasedonIndex","processDateCollectionforByDayWithInteger","newstr","getDayString","getRecurrenceCollection","recurrenceCollectionObject","expectedDaysArrays","arrPosition","getDateCollectionforBySetPosNull","recurrenceCollections","dayData","chDate","weekCount","firstOfMonth","lastOfMonth","numberOfDaysInMonth","firstWeekDay","used","weekIndex","validRules","REMOVENUMBERINSTRING","checkDayIndex","sortedExpectedDays","expectedDaysNumberSplit","expectedDaysArr","rules","rulesList","splitData","dayCycle","checkDate","expectedDate","checkYear","expectedyearDay","getYearDay","startDateCollection","diff","expectedMonth","getExpectedDays","SU","MO","TU","WE","TH","FR","SA","getRecurrenceStringFromDate","getUTCFullYear","roundDateValues","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","prevString","tempQueryString","matches","activeClass","prevElementId","incrementalSearch","selectedIndex","elementId","queryStringUpdated","isVirtual","strLength","indexUpdated","Search","searchType","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","filterValue","checkField_1","fieldValue_1","resetIncrementalSearchValues","isAxiosError","description","fileName","lineNumber","columnNumber","stack","enCa","WorkWeek","viewClass","getViewStartDate","getViewEndDate","VerticalView","isInverseTableSelect","baseCssClass","appointment","scrollUiUpdate","renderEvents","timeScale","renderAppointments","onContentScroll","removeNewEventElement","scrollLeftPanel","scrollTopPanel","setPersistence","onAdaptiveMove","onAdaptiveScroll","leftPanel","getLeftPanelElement","headerBarHeight","getHeaderBarHeight","timeCells","getScrollableElement","getDatesHeaderElement","scrollerHeight","setContentHeight","setColWidth","scrollBarWidth","cssProperties","rtlBorder","rtlPadding","isDateHeaderScroll","enableAllDayScroll","border","isPreventScrollUpdate","isInitial","scrollToWorkHour","highlightCurrentTime","retainScrollPosition","leftPanelElement","isTimelineView","getScrollXIndent","workHours","highlight","firstWorkHourCell","scrollToHour","scrollDate","getStartEndTime","conWrap","getTopFromDateTime","scrollToDate","generateColumnLevels","getDateSlots","renderDates","workDays","columnLevels","generateResourceLevels","hideNonWorkingDays","getNextPreviousDate","previousNextAction","getRenderDates","setCalendarDate","updateDateRange","isGroupAdaptive","resourceLevel","resStartHour","startHourField","resEndHour","endHourField","dateSlots","workStartHour","workEndHour","dateCol","renderDates_1","isCurrentDate","colSpan","isWorkHourRange","getStartHour","getEndHour","getCurrentTime","showTimeIndicator","currentDateIndex","getCurrentTimeIndicatorIndex","workCells","changeCurrentTimePosition","currentTimeIndicatorTimer","clearCurrentTimeIndicatorTimer","updateCurrentTimeIndicatorTimer","virtualScrollModule","expandedResources","renderedResources","getIndexOfDate","removeCurrentTimeIndicatorElements","timeIndicator","timeIndicator_1","indicator","firstRow","topInPx","timeCellsWrap","timeTrs","curTimeWrap","currentDateIndex_1","currentTimeEle","getTimeString","diffInMinutes","getWorkCellHeight","slotCount","getTdContent","cntEle","dateHeaderTemplate","dateHeaderTemplateName","getDateHeaderTemplate","getTimelineDate","getDayName","majorSlotTemplate","getMajorSlotTemplate","minorSlotTemplate","getMinorSlotTemplate","cellTemplate","cellTemplateName","getCellTemplate","renderHeader","renderLayout","setPanel","clsList","ignoreWhitespace","renderPanel","createTableLayout","renderResourceMobileLayout","dateTd","renderDatesHeader","indentTd","renderLeftIndent","workTd","scrollContainer","renderTimeCells","renderContentArea","resetColLevels","timesTd","renderVirtualTrack","nth","tbl","rowCount","ntr_1","getWeekNumberContent","createTd","renderHeaderIndentTemplate","ntr","appointmentExpandCollapse","lastLevel","createAllDayRow","createColGroup","tdData","td","ntd","wireCellEvents","thead","eventBase","isMinMaxDate","setResourceHeaderContent","elementType","workCellAction","cellMouseDown","cellClick","cellDblClick","getTimeSlotRows","addAutoHeightClass","renderContentTable","tBody","getContentRows","renderContentTableHeader","createContentTd","clsName","getContentTdClass","cellDate","isWorkHour","isWorkDay","args_1","tooltipTemplate","getContentAreaElement","getEndDateFromStartDate","msMajorInterval","msInterval","msStartHour","msEndHour","milliSeconds","dt","majorTickDivider","middle","getAdjustedDate","timeSlots","contentScrollableEle","scheduleTouchModule","resetValues","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","protocol","hostname","port","pathname","requestURL","isString","enGb","relativeTimeMr","mr","ne","zhMo","hm","12","13","40","tg","Column","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","valueFormatter","setFormatter","getFormatFunction","setParser","getParserFunction","commands","textAlign","commandsTemplate","templateFn","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","ddEditedData","foreignKeyField","a_1","xObj","yObj","z","fnDescending","fnAscending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","cs","ArrayBufferViewCore","toLength","toObject","aTypedArray","exportTypedArrayMethod","FORCED","Int8Array","arrayLike","src","SummaryModelGenerator","columnSelector","detailTemplate","childGrid","isRowDragable","buildSummaryData","getGeneratedRow","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","getIndentCount","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","cellType","sColumn","scolumn","dummy","single","setTemplate","disp","Summary","GroupSummaryModelGenerator","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","prev","cur","isEmpty","CaptionSummary","ta","kn","selectedHandler","minWidth","resizeWestWidth","RESIZE_HANDLER","FOCUSED_HANDLER","DIALOG_RESIZABLE","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","resizeStart","resize","resizeEnd","setLeft","previousWidth","createResize","resizeBegin","resizing","resizeComplete","getDOMElement","boundary","directions","setBorderResizeElm","calculateValues","borderBottom","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","onMouseUp","dialogResizeElement","coordinates","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","containerTop","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","top_1","rectValues","documentWidth","containerWidth","calculatedWidth","containerLeft","left_1","setMinHeight","minimumHeight","setMaxWidth","setMaxHeight","removeResize","handlers","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CONTENT","DLG_CLOSE_ICON","DLG_OVERLAY","DLG_TARGET","DLG_CONTAINER","SCROLL_DISABLED","DLG_PRIMARY_BUTTON","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_HIDE","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_REF_ELEMENT","DLG_USER_ACTION_CLOSED","DLG_CLOSE_ICON_CLOSED","DLG_ESCAPE_CLOSED","DLG_OVERLAYCLICK_CLOSED","DLG_DRAG","Dialog","needsID","initRender","enableResize","setResize","getMinHeight","initializeValue","dlgClosedBy","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","focusContent","checkPositionData","updatePersistData","dragObj","isNumberValue","isNumber","getEle","computedHeaderHeight","computedFooterHeight","footerEle","footerHeight","onResizeStart","dialogObj","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","isModal","wireWindowResizeEvent","unWireWindowResizeEvent","getFocusElement","buttonObj","btnObj","ftrTemplateContent","contentEle","shiftKey","focusableElements","isTagName","isContentEdit","closeOnEscape","primaryButtonEle","buttonIndex_1","firstPrimary","buttonModel","isPrimary","setCSSClass","initialRender","setzIndex","calculatezIndex","setTargetContent","setHeader","setContent","setButton","allowDragging","setAllowDragging","setIsModal","dlgContainer","refElement","resetResizeIcon","openEventArgs","unBindEvent","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","getTargetContainer","Element","setPopupPosition","targetValue","startsWith","dialogConHeight","resizeIcon","zIndexValue","handleContent","isDragScroll","abort","handle","dragEventArgs","dragElement","dragArea","buttonContent","buttonType","btn","footerBtn","buttonClickHandler","isFlat","headerEle","innerContentElement","toElement","templateProps","templateValue","sanitizeHelper","fromElements","dialogItem","beforeSanitize","beforeEvent","serializeValue","innerHeight","isContent","createDocumentFragment","createHeaderContent","showCloseIcon","closeIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","t","elementMatch","webkitMatchesSelector","msGetRegionContent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","zIndexElement","setPopupZindex","currentzIndex","windowResizeHandler","classArray","boundWindowResizeHandler","getDimension","dialogWidth","dialogHeight","isFullScreen","fullScreen","beforeOpenArgs","dialogOpen","closedBy","scrollingElement","getButtons","DialogUtility","alert","alertDialogObj","dialogElement","okButtonModel","createDialog","alertOptions","confirm","confirmDialogObj","okCancelButtonModel","confirmOptions","formOptions","setAlertButtonModel","setConfirmButtonModel","isDraggable","alertButtonModel","okButton","formButtonModel","cancelButtonModel","cancelButton","buttonPropModel","buttonProps","ButtonsDirective","ButtonsPlugin","DialogButtonDirective","DialogButtonPlugin","DialogComponent","DialogPlugin","arKw","arch","execPath","pid","env","argv","binding","cwd","chdir","dir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","AriaService","setOptions","setStateAndProperties","setSort","setBusy","isBusy","busy","isGrabbed","grabbed","isTarget","dropeffect","datarole","multiselectable","haspopup","colcount","rowcount","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","lastDigit","firstDigit","lb","IconPosition","BUTTON","ICONBTN","Button","removeRippleEffect","tempContent","setIconCss","controlStatus","iconPosition","isToggle","btnClickHandler","Inject","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","Item","Toolbar","resizeContext","orientationChangeContext","orientationChange","popupOpen","popupClose","btnItems","ej2_instances","tempId","destroyItems","ctrlTem","popObj","tbarAlign","tbarItemsCol","attrb","enableCollision","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","keyModule","keyActionHandler","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","keyCheck","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","clst","keyHandling","navChk","scrollChk","nodes","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","tbrItems","itemObj","isPopupElement","popupNav","popupClickHandler","isClickBinded","observers","clickedArgs","getToolbarPopupWidth","getElementOffsetY","eleStyles","renderControl","refreshOverflow","ariaAttr","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","marginLeft","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","createPopupIcon","innerNavDom","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupInit","tbarPopupHandler","toolEle","popupElePos","popIcon","scrollY","overflowHeight","tbEleData","popupOffset","inEle","pre","checkoffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","keyVal","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","regEx","tempStr","tempArray","toolbarTemplateID","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","tempDom","tooltipText","itemClick","showTextOn","sTxt","curEle","previousEle","multirowele","updateHideEleTabIndex","isElement","eleIndex","templateEle","registeredTemplate","registeredTemplates","registeredItem","rootNodes","closestItem","portalItem","containerInfo","tEle","changedProb","property","popupPriCheck","booleanCheck","itemCol","hideItem","innerItems_1","createError","az","getOwnPropertySymbols","Symbol","zhHk","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","targetContainer","fit","viewPortElement","axis","elemData","getTargetContainerWidth","getViewPortWidth","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","updateElementData","leftFlip","topFlip","setPopup","scaleX","scaleY","transformStyle","DOMMatrix","edge","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","windowWidth","innerWidth","documentReact","hr","Freeze","locator","instantiateRenderer","rowExpandCollapse","dataBoundArg","grid","dblClickHandler","frozenRightRows","movableRows","frozenrows","getRows","freeze","getFrozenLeftColumnsCount","getFrozenRightColumnsCount","detailrows","rData","queryselector","cRow","allowEditOnDblClick","startEdit","checkboxColumn","showCheckbox","freezeModule","CommandColumnRenderer","buttonElement","unbounDiv","childRefs","destroyButtons","isVirtualEdit","localizer","tempID","renderTemplates","command","renderButton","setAttributes","isFrozenGrid","buttonOption","onclick","commandType","CommandColumn","initiateRender","cellFac","addCellRenderer","commandClickHandler","commandColumn","columnModel","commandCols","idInString","typeInString","commandclickargs","editModule","closeEdit","commandDelIndex","clearSelection","selectRow","load","commandCol","DataManager","persistQuery","isInitialLoad","ignoreOnPersist","timeTillExpiration","cachingPageSize","enableCaching","jsonp","isCors","defaultQuery","setPersistData","isDataAvailable","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","keyword","allPredicates","predicateObj","nestedPredicates","nestedPredicate","setDefaultQuery","lookup","buildHierarchy","makeRequest","deffered","Deferred","isCustomDataAdaptor","getDeferedArgs","setImmediate","extendRequest","fnSuccess","fnFail","onSuccess","onFailure","isSelector","actual","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","isGraphQLAdaptor","fetchReqOption","virtualRecords","fetch_1","send","pResult","cResult","dofetchRequest","deff_1","fetch_2","successFunc","failureFunc","fetchDeffered","fetchFunc","fetch_3","clearPersistence","dropDownListClasses","base","device","backIcon","filterBarClearIcon","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","DropDownList","isListSearched","isTouched","valueTempElement","isDocumentClick","isFilterFocus","isNotSearchList","isTyped","isSelected","preventAutoFill","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","keyConfigure","down","up","space","unWireListEvents","floatLabelChange","floatElement","resetFocusElement","removeSelection","previousItemData","resetSelection","getItemData","allowCustom","onChangeEvent","setSelection","cloneElements","setHTMLAttributes","preventTabIndex","getElementByText","initValue","updateValues","setHiddenValue","isFilterLayout","focusOutAction","onFocus","dropDownClick","bindCommonEvent","mobileKeyActionHandler","unBindCommonEvent","charCode","searchKeyEvent","onServerIncrementalSearch","back","closePopup","setHover","updateIncrementalItemIndex","filterInputObj","preventAction","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","updateHomeEndAction","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","filterIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","selectedData","findLi","PageUpDownSelection","checkSelector","activeStateChange","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","activeItem","setValueTemplate","isFilterElement","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","dataValue","dataText","isCustomValue","foundIndex","detachChangeEvent","preItems","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","alreadySkipAdded","queryTakeValue","querySkipValue","queryElements_1","skipExists","takeExists","queryElements_2","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","clearIconElement","clearText","searchKeyModule","tempItemCount","checkVal","setInputValue","updateActionCompleteDataValues","isValueInList","addNewItem","valueToFind","checkField","newElement","value_6","isExist","actionCompleteDataUpdate","findEle","highlightedItem","searchBox","listitems","getOffsetValue","isEmptyList","outerWidth","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements","getScrollableParent","scrollParentElements_1","popupInstance","destroyPopup","popupStyles","borderTop","actionList","isElementInViewport","lastItem","listHeight","lastItemOffsetValue","paddingBottom","inputHeight","paddingTop","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements","scrollableParentElements_1","fixedHeader","preselectedIndex","setReadOnly","selectElement","onselect","stopImmediatePropagation","onchange","footerCompTemp","headerCompTemp","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","listLength_2","value_7","ddlProps","invokeRenderPopup","proxy_2","renderHightSearch","isSelectVal","toInteger","ga","transformData","isCancel","throwIfCancellationRequested","cancelToken","throwIfRequested","reason","ur","esUs","Gregorian","isMonthStart","getMonthEndDate","dateObj","monthValue","maxDay","Islamic","hDate","getHijriDate","gDate","daysInMonth","getDaysInMonth","finalGDate","finalHDate","hijriDate","updateDateObj","currentHijri","tempHijri","hDate1","IS_PURE","copyright","RenderType","ToolbarType","DialogType","tableclass","initialLoad","contentChanged","iframeMouseDown","toolbarRefresh","modelChanged","tableModulekeyUp","mouseUp","actionBegin","actionComplete","updatedToolbarStatus","updateToolbarItem","sourceCode","updateSource","mouseDown","sourceCodeMouseDown","editAreaClick","contentscroll","focusChange","selectRange","getSelectedHtml","paste","rtlMode","docClick","readOnlyMode","moduleDestroy","pasteClean","enterHandler","beforeDialogOpen","clearDialogObj","beforeDialogClose","dialogClose","xhtmlValidation","resizeInitialized","updateTbItemsStatus","showLinkDialog","closeLinkDialog","showImageDialog","showAudioDialog","showVideoDialog","closeImageDialog","closeAudioDialog","closeVideoDialog","showTableDialog","closeTableDialog","bindCssClass","emojiPicker","destroyTooltip","cleanupResizeElements","afterKeyDown","updateValueOnIdle","documentClickClosedBy","blockEmptyNodes","inlineEmptyNodes","onHandleFontsizeChange","CLS_RTE","CLS_DISABLED","CLS_SCRIPT_SHEET","CLS_STYLE_SHEET","CLS_TB_FLOAT","CLS_FULL_SCREEN","CLS_TB_ITEM","CLS_FOCUS","CLS_IMGBREAK","CLS_CLICKELEM","CLS_VID_CLICK_ELEM","CLS_AUDIOWRAP","CLS_VIDEOWRAP","CLS_IMGINLINE","CLS_AUDIOINLINE","CLS_VIDEOINLINE","CLS_ACTIVE","CLS_EXPAND_OPEN","CLS_RTE_ELEMENTS","CLS_RTE_READONLY","CLS_TABLE_SEL","CLS_RTE_HIDDEN","CLS_RTE_RES_HANDLE","CLS_RTE_IMAGE","CLS_IMG_FOCUS","CLS_AUD_FOCUS","CLS_VID_FOCUS","CLS_RTE_FIXED_TB_EXPAND","CLS_RTE_SOURCE_CODE_TXTAREA","Render","renderer","contentRenderer","getRenderer","Content","editorMode","getEditPanel","enterKey","formatter","editorManager","nodeSelection","setCursorPoint","getDocument","KEY_DOWN_HANDLER","MODEL_CHANGED","KeyboardEvents","isAltKey","isCtrlKey","isShiftKey","isMetaKey","curkeyCode","configCollection","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","configCache","keyData","getKeyCode","ViewSource","rendererFactory","onInitialEnd","updateSourceCode","observer","getSourceCode","getCssClass","previewKeyDown","previewElement","wireBaseKeyDown","unWireBaseKeyDown","toolbarSettings","getToolbarElement","firstActiveItem","callBack","targetItem","tbItems","baseToolbar","getBaseToolbarObject","updateValueData","iframeSettings","rteContent","getID","getPanel","getTextAreaValue","disableToolbarItem","enableToolbarItem","getToolbar","placeHolderWrapper","invokeChangeEvent","saveInterval","autoSaveOnIdle","codeViewTimeInterval","editHTML","enableUndo","addAudioVideoWrapper","getViewPanel","executeGroup","subCommand","ServiceLocator","services","RendererFactory","rendererMap","addRenderer","rName","ExecCommandCallBack","commandCallBack","formatPainterCopy","saveData","AjaxSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","columnArray","customAttributes","DetailsViewSettings","NavigationPaneSettings","SearchSettings","defaultToolbarItems","ToolbarSettings","ToolbarItem","UploadSettings","TableStyleItems","predefinedItems","fontFamily","fontColor","backgroundColor","numberFormatList","bulletFormatList","defaultEmojiIcons","Expand","ImageSettings","AudioSettings","VideoSettings","FileManagerSettings","getImageUrl","uploadUrl","file","folder","layout","autoUpload","minFileSize","maxFileSize","allowedExtensions","autoClose","TableSettings","QuickToolbarSettings","FormatPainterSettings","EmojiSettings","PasteCleanupSettings","FontFamily","FontSize","Format","FontColor","BackgroundColor","NumberFormatList","BulletFormatList","Resources","IFrameSettings","InlineMode","defaultLocale","rte","isFrame","iFrame","valueContainer","FullScreen","showFullScreen","quickToolbarModule","hideQuickToolbars","scrollableParent","evenArgs","beginEventArgs","enableFloating","inlineMode","toggleParentOverflow","toolbarModule","toolbarObj","removeFixedTBarClass","hideFullScreen","addFixedTBarClass","isAdd","EnterKeyAction","getRangeNode","getRange","startNode","startContainer","endNode","endContainer","isTableEnter","formatTags","curElement","blockElement","domNode","isBlockNode","shiftKey_1","actionBeginArgs","endOffset","deleteContents","focusElem","currentFocusElem","currentLastElem","shiftEnterKey","newElem","createInsertElement","nearBlockNode","blockParentNode","isMediaNode","isFocusedFirst","startNodeText","splitFirstText","removeBRElement","fireFoxEnterAtMiddle","isNearBlockLengthZero","nodeCutter","SplitNode","insertElem","finalFocusElem","audioVideoElem","isBRInserted","lastNode","brElm","audioModule","hideAudioQuickToolbar","videoModule","hideVideoQuickToolbar","startParentElem","isHeadingTag","insertElm","currentParent","currentNode","previousNode","currentParentLastChild","isLastNodeLength","isImageElement","focusBRElem","imageElement","lineBreakBRElem","insertBRElement","outerBRElem","insertFocusContent","isEmptyBrInserted","isFocusTextNode","insertNode","brElm2","previousBlockNode","blockNodes","nextBlockNode","inlineNode","isIDevice","getEditValue","rteObj","enableHtmlEncode","updateTextNode","decode","tempNode","resultElm","isPreviousInlineElem","previousParent","emptyBlockElem","allPNodes","emptyInlineElem","imageElm","getDefaultValue","currentVal","isEditableValueEmpty","DialogRenderer","dlgObj","beforeOpen","getDialogPosition","beforeClose","dialogEle","handleEnterKeyDown","outsideClickClosedBy","distanceFromVisibleTop","topHeight","__assign","RichTextEditor","quickToolbarSettings","showCharCount","fileManagerSettings","updateEnable","eventInitializer","isFocusOut","isRTE","defaultResetValue","isResizeInitialized","onFocusHandler","onResizeHandler","clickPoints","initializeServices","setContainer","originalElement","rteOuterWrapper","currentClassList","getSelection","txt","showEmojiPicker","executeCommand","commandName","internalValue","htmlPurifier","Clear","toFocus","tool","undo","getUndoRedoStack","currentInsertContentLength","tempElem","currentLength","selectionLength","totalLength","formatPainterSettings","formatPainterAction","execCommand","htmlEditorModule","tableSettings","imageValue","insertImageSettings","wrapTemp","controls","audioValue","insertVideoSettings","linkValue","addAnchorAriaLabel","sourceCodeModule","RTERender","enableXhtml","getXhtml","audioElm","audioWrapElem","contentEditable","audioInnerWrapElem","videoElm","videoWrapElem","cleanList","currentStartContainer","currentEndContainer","currentStartOffset","isSameContainer","closestLI","isDetached","currentRangeEndOffset","Node","TEXT_NODE","currentLast","setSelectionText","restrict","pointer","bool","removeNodeArray","notFormatPainterCopy","FormatPainterEscapeAction","formatPainterModule","previousAction","quickToolbarElem","getRenderedQuickToolbarElem","autoResize","currentRange","rangeCount","removeAllRanges","addRange","range_1","allowedKeys","formatPainterPaste","onKeyHandler","selfEncloseValidation","sanitizeHtml","triggerEditArea","touch","notifyMouseUp","touchData","prevClientX","prevClientY","showOnRightClick","closestTable","ensureModuleInjected","getInjectedModules","onCopy","onCut","onPaste","pasteArgs","pastedContentLength","clipboardData","pasteCleanupModule","warn","args_2","htmlValue","getAsFile","isWordPaste","clipboardAction","isRendered","timeInterval","destroyDependentModules","allClassName","removeHtmlAttributes","undoRedoManager","wrapperElm","getRangeAt","selectedHtml","cloneContents","showInlineToolbar","targetElm","getClientRects","showInlineQTBar","hideInlineToolbar","hideInlineQTBar","nVal","updatePanelValue","countModule","refreshToolbarOverflow","setHeight","updateRTL","frameSetting","iframe","files","scripts","removeSheets","setIframeSettings","renderCount","wireContextEvent","unWireContextEvent","srcList","getTextArea","updateReadOnly","editPanel","unbindEvents","print","printWind","printArgs","printingArgs","resizeTo","availHeight","actionArgs","fullScreenModule","muteToolbarUpdate","enableTBarItems","removeToolbarItem","removeTBarItems","enterKeyModule","styleSrc","scriptSrc","InjectSheet","scriptSheet","scriptEle","createScriptElement","styleEle","createStyleElement","rel","isPropertyChange","compiledTemplate","displayTempElem","appendElem","innerHtml","updateResizeFlag","getInsertImgMaxWidth","imgPadding","imgResizeBorder","editEle","eleStyle","editEleMaxWidth","getInsertVidMaxWidth","vidPadding","vidResizeBorder","heightValue","rteHeightPercent","heightPercent","rteHeight","tbHeight","getToolbarHeight","rzHandle","rzHeight","expandPopHeight","getExpandTBarPopHeight","finalHeight","getHtml","removeResizeElement","showSourceCode","getCharCount","htmlLength","htmlText","showDialog","InsertLink","InsertImage","InsertAudio","InsertVideo","InsertTable","closeDialog","tbObj","getBaseToolbar","getInlineBaseToolbar","isSpace","preventDefaultResize","preventImgResize","defaultResize","contentScrollHandler","cloneValue","currentFocus","getCurrentFocus","resetToolbarTabIndex","getUpdatedValue","tableModule","isValueChangeBlurhandler","updateIntervalValue","idleInterval","valueElementWrapper","removeSelectionClassStates","updateStatus","markdown","status_1","getUndoStatus","redo","rteElement","hideQuickToolbarChecker","inlineQTBar","trg","iframeElement","contentWindow","documentNode","wireScrollElementsEvents","contextHandler","unWireScrollElementsEvents","closestElem","onSelection","setAutoHeight","iframeElement_1","newRange","newHeight","contentDocument","scrollIntoView","arrayKey","editorKeyDown","onIframeMouseDown","toolbarItem","outline","quickToolbars","getQuickToolbarInstance","RichTextEditorComponent","RichTextEditorPlugin","tet","dv","tk","weekEndings","hu","zhCn","bitmap","writable","te","sv","ugCn","webpackPolyfill","deprecate","paths","msMy","cellDoubleClick","moreEventsClick","navigating","renderCell","eventRendered","dataBinding","dataBound","inlineClick","cellSelect","virtualScrollStart","virtualScrollStop","dataReady","eventsLoaded","contentReady","virtualScroll","uiUpdate","documentClick","eo","sd","relativeTimeWithMutation","specialMutationForYears","lastNumber","softMutation","mutationTable","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","br","weekdaysParse","mi","mk","last2Digits","has","NATIVE_WEAK_MAP","createNonEnumerableProperty","objectHas","sharedKey","hiddenKeys","WeakMap","enforce","getterFor","TYPE","wmget","wmhas","wmset","metadata","STATE","ErrorOption","HeaderRenderer","closeHeaderPopup","closestEle","closestPop","contentWrap","hideHeaderPopup","headerPopup","toolbarEle","renderToolbar","toolbarItems","getToolbarItems","clicked","toolbarClickHandler","prevNavEle","nextNavEle","updateAddIcon","updateActiveView","updateItems","getPopUpRelativeElement","setDayOfWeek","headerCalendar","setCalendarMinMaxDate","getCalendarView","setCalendarView","calendarView","viewIndex","textEle","dateRangeTemplate","getStartDate","getEndDate","dateRangeTemplateName","dateTemplate","getDateRangeTemplate","getDateRangeText","addEle","allowAdding","getCalendarMode","util","getItemModel","propItem","tbItem","enableAdaptiveUI","views","getItemObject","displayName","orientationClass","isItemInsidePopup","renderHeaderPopup","headerPopupEle","headerCalendarEle","isDisplayDate","displayDate","hasSelectedDate","calendarChange","setCalendarTimezone","calendarDate","changeDate","calculateViewIndex","isSameTime","strClass","changeView","isSelectedDate","numberOfWeeks","currentTime_1","toolbarPopUp","selectedTime","getHeaderElement","updateHeaderItems","classType","dateRangeEle","previousNextIconHandler","getCurrentViewDates","isCustomMonth","Scroll","setDimensions","getCssProperties","ScheduleTouch","touchObj","swipeSettings","swipeThresholdDistance","onTransitionEnd","touchLeftDirection","touchRightDirection","allowSwiping","timeStampStart","isScrollTriggered","nextPanel","prevWidth","previousPanel","swipeDate","offsetDist","swapPanels","transitionDuration","confirmSwipe","cancelSwipe","tapHoldEventPopup","nextPrevType","currentPanel","navArgs","translateX","refreshDataManager","KeyboardInteraction","selectedCells","downArrow","upArrow","rightArrow","leftArrow","shiftDownArrow","shiftUpArrow","shiftRightArrow","shiftLeftArrow","ctrlLeftArrow","ctrlRightArrow","altOne","altTwo","altThree","altFour","altFive","altSix","altSeven","altEight","altNine","backspace","ctrlShiftUpArrow","ctrlShiftDownArrow","ctrlShiftLeftArrow","ctrlShiftRightArrow","processDown","processUp","processLeft","processRight","processViewNavigation","processEnter","focusFirstCell","processTab","processDelete","processCtrlShiftNavigationArrows","processEscape","inlineModule","processFTwelve","getSelectedElements","onCellMouseDown","initialTarget","getClosestCell","onMouseSelection","onMoveUp","allDayRow","selectionEdges","boundaryValidation","yInBounds","xInBounds","isPreventAction","cellData","convertToEventData","showQuickPopup","isPopupShow","quickInfoOnSelectionEnd","cellArgs","resourceIcon","inlineCrudActions","getDateFromElement","getNavigateView","cellDetails","getCells","isInverseTable","tableEle","isTimelineYear","maxRow","maxColumn","inverseCells","sCells","focusCell","isVerticalYear","getWorkCellElements","targetCell","initialId_1","views_1","allowMultipleRow","removeInlineAppointmentElement","allowMultiRowSelection","isGroupYear","cellIndex","resourceSelectedCells","selectedCells_1","allowMultiCellSelection","allDayCells","getAllDayCells","resourceAllDayCells","allDayCells_1","addSelectedClass","selectAppointment","getAppointmentElements","nextAppEle","targetIndex","selectAppointmentElementFromWorkCell","appointmentElements_1","getUniqueAppointmentElements","filteredElements_1","selectedDate_1","selectedSeriesEvents","getAppointmentElementsByGuid","startCell","endCell","appointmentElements","self","getWorkCellFromAppointmentElement","viewCollections","isCalendarTarget","keyTarget","cancelUpDownAction","isGroup","selectedEventElements","moreEventWrapper","quickPopupWrapper","getQuickPopupElement","tableRows","getTableRows","curRowIndex","getVerticalUpDownCell","getHorizontalUpDownCell","getYearUpDownCell","isUp","workCell","hasRow","dateAttr","processLeftRight","sectionRowIndex","columnIndex","maxIndex","isCancelLeftRightAction","targetDate","isMonthEnd","calculateNextPrevDate","getTimelineYearTargetCell","changeTargetCell","getHorizontalLeftRightCell","curColIndex","maxColIndex","allDayRow_1","allDayRow_2","getVerticalLeftRightCell","currentCell","initialId","nextPrevDate","getFocusableElements","processTabOnPopup","firstEle","lastEle","appSelector","focusAppointment","virtual","averageRowHeight","virtualScrolling","isTimeline","resCellSelector","resourceCell","preventScroll","processTabOnResourceCells","allowDeleting","deleteClick","eventEle","onClosePopup","morePopup","tabElements","currentTabIndex","nextTabElement","resColWrap_1","resCells","resIdCollection_1","resId","groupId","includeFiltersInQuery","dateQuery","recurrenceQuery","EVENT_GAP","BLOCK_INDICATOR_WIDTH","BLOCK_INDICATOR_HEIGHT","TimelineEvent","cellTops","renderType","eventContainers","dayLength","getSlotDates","cellWidth","slotsPerDay","getOverlapEvents","appointmentsList","appointments_1","appointments_2","trimStartTime","trimEndTime","getSortComparerIndex","appIndex","renderedEvents","getOverlapSortComparerEvents","appLevel","Index","appointmentsCollection_1","renderResourceEvents","removeHeightProperty","moreIndicatorHeight","sourceEvent","renderEventsHandler","getStartTime","getEndTime","eventDates","cellTd","getCellTd","eventsPerRow","overlapCount","appHeight","diffInDays","isDayProcess","appWidth","getEventWidth","appLeft","appRight","getPosition","getRowTop","appTop","renderApp","enableIndicator","maxOrIndicator","cellHeight","appointmentElement","inlineValue","createAppointmentElement","createInlineAppointmentElement","conWidth","isWithoutScroll","renderEventElement","getFirstChild","updateCellHeight","adjustAppointments","moreIndicator","appPos","position_1","renderTimelineMoreIndicator","adjustToNearestTimeSlot","position_2","inputTime","parsedTime","minutesInMilliseconds","adjustedMinutesInMilliseconds","adjustedTime","isAlreadyAvail","startDateTime","slotStartTime","slotEndTime","getFilterEvents","appArea","withIndicator","renderedAppCount","moreIndicatorElement","getMoreIndicatorElement","renderElement","moreIndicatorClick","monthHeader","actualCellWidth","currentPercentage","apps","updateBlockElements","blockElement_1","blockIndicator","blockIndicator_1","getNextDay","getPreviousDay","actualEndTime","isSameDay","getSameDayEventsWidth","getSpannedEventsWidth","endWidth","startWidth","spannedWidth","endDay","getAppointmentLeft","slotTd","daySlot","gIndex","eventsList","getFilteredEvents","indicatorPos","wrapIndex","renderBlockIndicator","setMaxEventHeight","InlineEdit","inlineEdit","moreWrapper","cellEdit","eventEdit","saveObj","generateEventData","getEventDaysCount","createVerticalViewInline","createMonthViewInline","createTimelineViewInline","inlineSubject","subEle","subjectWrap","verticalEvent","initializeValues","allDayElement","allDayElements","allDayLevel","cellTop","renderAllDayEvents","renderNormalEvents","saveObject","monthEvent","monthCellSelector","monthModule","spannedEvents","spannedEvents_1","timelineView","inlineElement","setDefaultValueToObject","setResourceValues","addEvent","eventTarget","eventDetails","getEventDetails","saveEvent","inlineData","inlineAppointmentElement","inlineDetails","inline","inlineAppointment","EMAIL","URL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","required","infoElement","selectQuery","localyMessage","defaultMessages","email","dateIso","creditcard","digits","minLength","rangeLength","tel","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","rules_1","name_1","clearForm","getInputElement","validClass","elements_1","elements_2","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","ruleName","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","excludeKeys","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","isValid","ignore","removeErrorRules","showMessage","createErrorElement","errorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","formats","for","errorOption","Message","errorContainer","containerId","divElement","customPlacement","checkRequired","inputType","uNum","compareTo","Label","FieldValidator","renderFormValidator","formObj","errorPlacement","validationComplete","focusout","ignoreError","createTooltip","dlgContent","client","inputClient","div","arrow","destroyToolTip","EVENT_FIELD","QuickPopups","isMultipleEventSelect","fieldValidator","renderQuickPopup","renderMorePopup","renderQuickDialog","quickPopupOpen","quickPopupClose","moreEventPopup","morePopupOpen","morePopupClose","closeButton","closeClick","navigationClick","dialogButtonClick","editFollowingEvents","followingSeriesButton","quickDialog","beforeQuickDialogClose","iconName","clickEvent","quickDialogClass","followingEventButton","applyFormValidation","validation","editDeleteOnly","editFollowingEventsOnly","editDeleteSeries","showQuickDialog","openRecurrenceValidationAlert","dialogCancel","enableRecurrenceValidation","openDeleteAlert","openValidationError","popupType","popupArgs","createMoreEventList","moreEventContentEle","moreEventWrapperEle","eventText","getAnnouncementString","eventTitle","editAction","deleteAction","editIcon","editClick","deleteIcon","beforeQuickPopupOpen","isCellBlocked","tempObj","showQuickInfo","newEventClone","isSameTarget","subjectElement_1","destroyPopupButtons","quickCellPopup","getPopupHeader","getPopupContent","getPopupFooter","subjectElement","moreButton","detailsClick","saveButton","saveClick","isSameEventClick","editButton","isQuickTemplate","quickInfoTemplates","templateType","eventTooltip","updateTapHoldEventPopup","quickEventPopup","buttonClass","deleteButton","headerType","headerData","headerArgs","headerTemp","getQuickInfoTemplatesHeader","getFormattedString","replaceAll","templateWrapper","subjectText","contentTemplate","contentArgs","contentTemp","getQuickInfoTemplatesContent","argsData","resourceText","getResourceText","details","getRecurrenceSummary","getTimezone","locationDetails","descriptionDetails","resourceDetails","footerType","footerData","footerArgs","footerTemp","getQuickInfoTemplatesFooter","resourceValue","resourceCollection_1","id_1","resourceData_1","lastResource_1","resNames_1","lastResourceData_1","startDateDetails","getDateFormat","endDateDetails","startTimeDetail","endTimeDetail","spanLength","moreEventClick","dateElement","moreEventElements","tdDate","dialogEvent","subjectEle","updateMoreEventContent","moreElement","selectCell","cancelBtn","deleteEvent","isIgnoreOccurrence","eventSave","titleContent","zoneDetails","recurrenceEditor","getRecurrenceEditorInstance","ruleSummary","getRuleSummary","getDataFromTarget","cellsData","popupCloseArgs","isEventPopup","isVirtualScroll","isHorizontalScroll","conTable","leftCollide","targetRect","previousOffset","applyEventColor","colorField","colorEle","borderLeftColor","editElement","popupData","isCellPopup","formvalidator","getObjectFromFormData","navigateEle","popupWrap","tar","popupName","buttonCollections","buttonCollections_1","refreshQuickDialog","destroyQuickDialog","refreshQuickPopup","destroyQuickPopup","refreshMorePopup","destroyMorePopup","EventTooltip","tooltipObj","getTargets","beforeRender","onBeforeRender","onTooltipClose","targets","headerTooltipTemplate","enableTooltip","resCollection","getColumnLevels","contentContainer","getHeaderTooltipTemplate","eventStart","eventEnd","tooltipSubject","tooltipLocation","startMonthDate","startMonthYearDate","endMonthYearDate","tooltipDetails","tooltipTime","content_1","getEventTooltipTemplate","resetTemplates","LABEL","RIPPLE","WRAPPER","ATTRIBUTES","RadioButton","RadioButton_1","updateChange","radioGrp","getRadioGroup","angularValue","radioWrap","getLabel","getSelectedValue","initialCheckedValue","initWrapper","updateHtmlAttribute","setDisabled","setText","labelMouseDownHandler","labelMouseLeaveHandler","rippleElem","labelMouseUpHandler","labelPosition","formControlName","textLabel","rippleLabel","INPUTWARAPPER","INPUTWARAPPERSIDE","REPEATELEMENT","REPEATINTERVAL","INTERVALCLASS","DAYWRAPPER","WEEKWRAPPER","WEEKPOSITION","DAYPOSITION","YEAREXPANDERWRAPPER","YEAREXPANDERELEMENT","MONETHEXPANDERWRAPPER","MONETHEXPANDWRAPPER","MONTHEXPANDERELEMENT","MONTHEXPANDERCHECKBOXWRAPPER","FORMLEFT","FORMRIGHT","MONTHDAYWRAPPER","MONTHEXPANNDERELEM","MONTHPOS","MONTHWEEK","ENDON","MONTHEXPANDERLABEL","WEEKEXPANDERLABEL","ENDONLEFT","MONTHDAYELEMENT","ENDONELEMENT","ENDONDATE","UNTILDATE","ENDONCOUNTWRAPPER","ENDONCOUNT","HIDEWRAPPER","RTLCLASS","RECURRENCETABLE","REPEATCONTENT","REPEATCONTENTWRAPPER","NONE","DAILY","WEEKLY","MONTHLY","YEARLY","NEVER","COUNT","TEXTFIELD","VALUEFIELD","LAST","REPEAT","REPEATEVERY","RADIOLABEL","RULEUNTIL","RULEBYDAY","RULEBYMONTHDAY","RULEBYMONTH","RULEINTERVAL","RULECOUNT","RULESETPOS","RULEFREQ","RULEDAILY","RULEWEEKLY","RULEMONTHLY","RULEYEARLY","RULESUNDAY","RULEMONDAY","RULETUESDAY","RULEWEDNESDAY","RULETHURSDAY","RULEFRIDAY","RULESATURDAY","KEYSUNDAY","KEYMONDAY","KEYTUESDAY","KEYWEDNESDAY","KEYTHURSDAY","KEYFRIDAY","KEYSATURDAY","EQUAL","SEMICOLON","COMMA","FIRST","SECOND","THIRD","FOURTH","none","daily","weekly","monthly","yearly","valueData","neverClassList","weekClassList","monthClassList","yearClassList","dailyClassList","noEndClassList","endOnCountClassList","endOnDateClassList","RecurrenceEditor","never","third","fourth","repeatEvery","onDay","weeks","years","summaryTimes","summaryOn","summaryUntil","summaryRepeat","summaryDay","summaryWeek","summaryMonth","summaryYear","monthWeek","monthPosition","monthExpander","yearExpander","repeatInterval","renderStatus","dayButtons","monthButtons","startState","endOn","showFormElement","updateForm","freshOnEndForm","updateEndOnForm","selectMonthDay","updateUntilDate","onMonthDay","applyCustomClass","renderComponent","repeatType","endTypes","selectedType","getRecurrenceRule","setRecurrenceRule","triggerChangeEvent","resetDayButton","daySelection","rotateArray","rtlClass","untilDateObj","weekday","monthDate","monthWeekDays","monthWeekPos","getDayPosition","endType","renderDropdowns","getRepeatData","frequencies","resetFormValues","getEndData","getPopupWidth","renderDropDownList","dropDownData","onWeekDay","getMonthPosData","getDayData","getMonthData","setDefaultValue","formelement","formelement_1","recurreneElement","recurreneElement_1","renderDatePickers","dateFormat","getFormat","formatType","dayButtonRender","btns","btns_1","radioButtonRender","numericTextboxRender","recurrenceCount","positionCollection","textValue","monthpos","monthposValue","nameSpaceString","weekday_1","fullDay","labelId","getSelectedDaysData","getSelectedMonthData","getIntervalData","getEndOnCount","getYearMonthRuleData","updateWeekButton","updateMonthUI","updateUI","getUntilData","destroyComponents","resetFields","updateRuleUntilDate","untilDate","newUntilDate","getRecurrenceDates","endon","detachInputs","inputElements_1","removeClasses","REPEAT_CONTAINER_CLASS","REPEAT_BUTTON_ICON_CLASS","REPEAT_BUTTON_CLASS","REPEAT_DIALOG_CLASS","HIDE_STYLE_CLASS","EventWindow","eventWindowTime","renderEventWindow","dialogModel","getEventWindowContent","onBeforeOpen","onBeforeClose","editorHeaderTemplate","editorFooterTemplate","renderDialogButtons","addEventHandlers","preventEventSave","dialogButton","eventDelete","saveIcon","refreshRecurrenceEditor","createRecurrenceEditor","setRecurrenceEditor","editorTemplate","isEventData","cellClickAction","createAdaptiveHeaderElement","getDialogHeader","getDialogFooter","renderFormElements","onCellDetailsUpdate","onEventDetailsUpdate","setDialogContent","setDialogHeader","setDialogFooter","headerBackIcon","headerSaveIcon","temHeaderDiv","getEditorHeaderTemplate","temFooterDiv","getEditorFooterTemplate","allowKeyboardInteraction","isEnterKey","getSlotDuration","getInstance","deleteObj","callBackPromise","trimAllDay","refreshDateTimePicker","startObj","endObj","eventCrudData","processCrudActions","onsubmit","getDefaultEventWindowContent","formElements","formElements_1","getEditorTemplate","showDetails","parentDiv","createDivElement","titleLocationDiv","renderTextBox","startEndDateTimeDiv","renderDateTimePicker","onTimeChange","allDayTimezoneDiv","renderCheckBox","timezoneParentDiv","renderDropDown","repeatParentDiv","repeatDiv","repeatEditContainer","loadRecurrenceEditor","resourceParentDiv","renderResourceDetails","submit","renderRecurrenceEditor","updateMinMaxDateToEditor","createInputElement","dateTimeDiv","getFieldName","dateTimeInput","dateTimePicker","timeFormat","getFieldLabel","startEndElement","startEndElement_1","labelValue","resourceDiv","resourceInput","resourceTemplate","allowMultiple","listObj","onMultiselectResourceChange","dropDownList","onDropdownResourceChange","timezoneDiv","timezoneInput","onTimezoneChange","timezoneDataSource","byGroupID","getColumnName","resObject","createInstance","datasource","resourceModel","filterRes","filterDatasource","resObj","resValue","startTimezoneObj","endTimezoneObj","checkBoxDiv","checkBoxInput","checkBox","onChange","repeatStatus","textBoxDiv","textBoxInput","labelText","editorTitles","targetSelector","onAllDayChange","timezoneChangeStyle","onRepeatChange","renderRepeatDialog","repeatDialogObject","repeatSaveDialog","repeatCancelDialog","repeatOpenDialog","repeatRule","repeatStartDate","updateRepeatLabel","closeRepeatDialog","repeatTempRule","disableButton","RecurrenceRule","getValidationRule","subjectRule","locationRule","startTimeRule","endTimeRule","descriptionRule","getFormElements","keyNames","formElements_2","setValueToElement","setDefaultValueToElement","timezoneObj","attrName","isDropDowns","fieldSelector","classSelector","control","attrEle","allDayStatus","updateDateTime","timezoneValue","isDisable","untilObj","resetFormFields","localTimezoneName","found","formElement_1","dataCollection","getEventDataFromEditor","processEventValidation","Repeat","alertType","recurrenceValidation","isShowAlert","getResourceData","isResourceEventExpand","allowGroupEdit","getEventIdFromForm","resourceSaveEvent","eveId_1","editOccurrenceValidation","lastResourceData","formElement_2","getValueFromElement","alertMessage","recEditor","activeEvent","excludedEvents","seriesEvents","tempDiff","getRecurrenceIndex","recColl","recIndex","editData","recurColl","excludedDatas","recurColl_1","nextStartTime","nextEndTime","currentStartTime","currentEndTime","lastEndTime","previousStartTime","previousEndTime","eventList","addValues","lastResource","resCol","groupId_1","eventList_1","formElements_3","detachComponents","formElements_4","isIgnore","VirtualScroll","itemSize","bufferCount","renderedLength","getRenderedCount","setItemSize","containerSize","colCount","updateVirtualScrollHeight","lastResourceIndex","lastRenderIndex","updateVirtualTrackHeight","resourceCount","resWrap","eventWrap","setTranslate","lastCollIndex","renderedResCount","setTabIndex","dynamicData","triggerScrollEvent","refreshProcessedData","horizontalScrolling","firstTDIndex","upScroll","downScroll","updateContent","actionObj","navigationWrapper","timeValue","leftScroll","rightScroll","updateHorizontalContent","prevSetCollection","getBufferCollection","nextSetResIndex","lastIndex","nextSetCollection","getCollection","nextSetIndex","getResCollection","getByDateCollection","setRenderedDates","getByIdCollection","setStartEndIndex","colIndex","isResourceCell","resourceRows","contentRows","eventRows","getEventRows","colGroupEle_1","updateFocusedWorkCell","dateCol_1","dateCol_2","resColWrap","focusResCell","isDataRefresh","initializeLayout","templates","dayModule","weekModule","workWeekModule","yearModule","agendaModule","monthAgendaModule","timelineViewsModule","timelineMonthModule","timelineYearModule","firstView","updateLabelText","enableCompactView","updateHeader","currentTimezoneDate","getLabelText","WorkHours","TimeScale","QuickInfoTemplates","HeaderRows","Crud","isPreventEventRefresh","refreshEvents","resultData","isVirtualScrollAction","dynamicEvents","refreshData","editParams","isSpecificResourceEvents","crudData_1","offlineArgs","onlineArgs","isBlockEvent","addEvents","addArgs","eventData_1","crudArgs","updateEvents","processSave","processOccurrences","processFollowSeries","processEntireSeries","saveArgs","eventData_2","cloneEvent","deleteEvents","deleteArgs","occurrenceData","isDeletedRecords","eventData_3","occurrenceArgs","occurrenceEvents","childEvent","parentException","exceptionDate","excludeDateCheck","followData","eventData_4","updateFollowEvents","followArgs","followEvents","followData_1","processRecurrenceRule","seriesData","eventData_5","event_7","updateSeriesEvents","seriesArgs","fields_2","eventCollections","deletedEvents","originalParent","deleteData","eventData_6","fields_3","_loop_5","isDelete","parentEvent_1","isEdited","editedDate","eventData_7","editArgs","exceptionString","exceptionDateList","followEvent","newRecurrenceRule","ruleException","getUpdatedRecurrenceRule","splitRule","updatedRule","splitRule_1","ruleKey","event_8","WorkCellInteraction","onHover","navigateView","sameView","viewOptions","isWorkCell_1","clickArgs","hoverTarget","hoverArgs","FieldOptions","Field","EventSettings","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","LISTWRAP","IELISTWRAP","PARENTITEM","HOVER","LOAD","PROCESS","TEXTWRAP","TREEINPUT","EDITING","INTERACTION","DRAGITEM","DROPPABLE","DRAGGING","SIBLING","DROPIN","DROPNEXT","DROPOUT","NODROP","FULLROWWRAP","FULLROW","EXPANDED","NODECOLLAPSED","DROPCOUNT","CHECK","INDETERMINATE","CHECKBOXWRAP","CHECKBOXFRAME","CHECKBOXRIPPLE","RIPPLEELMENT","IMAGE","BIGGER","SMALL","CHILD","ITEM_ANIMATION_ACTIVE","PREVENTSELECT","treeAriaAttr","treeRole","itemRole","listRole","wrapperRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isRightClick","mouseDownStatus","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","f2","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","shiftSpace","ctrlSpace","listBaseOption","expandIconClass","expandIconPosition","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","selectedNodes","checkedNodes","expandedNodes","setDataBinding","setDisabledMode","setExpandOnType","wireEditingEvents","setDragAndDrop","allowDragAndDrop","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","templateComplier","nodeTemplate","iconModel","rippleIconFn","isEnabled","setMultiSelect","isOffline","treeData","isNumberTypeId","getType","setRootData","finalize","rootData","mapper","getActualProperties","parentID","getDataType","getGroupedData","rootItems","getChildNodes","isChildObject","isSorted","getSortedData","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultId","hasChildren","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","check","changeState","preElement","childCheckedElement","indeterminate","nodeId","nodeCheck","ariaChecked","checkedParent","checkedChild","subChildItems","checkboxEle","touchClass","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","dataId","renderNodeTemplate","nodeData","selectable","actionValue","cusQuery","grpItem","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","childElement","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","doCheckBoxAction","doCheck","updateFieldChecked","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","validateCheckNode","checkbox","currLi","nodeDetails","getNodeData","updateIndeterminate","subChild","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","innerChild","isPrevent","nodeCheckAction","getCheckEvent","ariaState","removeCheck","ensureStateChange","firstUl","firstNode","updateIdAttr","allowTextWrap","updateWrap","hasPid","doExpandAction","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","doSelectionAction","sUids","sNode","selectGivenNodes","preventContextMenu","rippleElement","rippleIcons","setFocusElement","checkWrapper","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","loaded","start_1","end_1","liEle_1","activeElement_1","animateHeight","expandedNode","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","collapse","collapsedNode","removeExpand","toRemove","parentLi","expandChild","eicon","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","getChildGroup","objlen","tempField","cIcons","curLi","multiSelect","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","getId","icon_1","inpEle","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","focusNode","getScrollParent","parentPos","isVisibleInViewport","txtWrap","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","hierChildId","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","fNode","prevNode","preNode","hoveredNode","fromDS","pNode","checkboxElement","nodeFields","reRenderNodes","editingHandler","oldInpEle","updateOldText","getEditEvent","inpWidth","style_1","wireInputEvents","editFields","inputFocusOut","newText","txtEle","crudOperation","appendNewText","isInput","updateText","getNode","getChildNodeObject","toBind","initializeDrag","destroyDrag","virtualEle","enableTailMode","enableAutoScroll","enableTapHold","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","nLen","cNode","cursor","dragData","getDragEvent","draggedNode","intDestroy","dragCancelAction","cursorAt","targetTouches","dragAction","removeVirtualEle","preventTargetExpand","dropRoot","dragParent","draggedParentNode","dropObj","out","over","dropAction","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","dragInstance","liArray","draggable","i_2","i_3","appendNode","i_4","draggedElement","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","generateIcon","generateUL","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","dropTar","parent_3","clonedNode","droppedNode","droppedNodeData","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","newId","currId","doGivenAction","toExpand","addGivenNodes","dropEle","updateMapper","refNode","dropIcon1","navigateUrl","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","slelen","enodes","nodelen","cnodes","names","getMapperProp","touchEditObj","tap","tapCount","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","matched","secondTap","firstTap","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","isRefreshChild","childValue","updateChildPosition","currID","dynamicState","newNode","matchedArr","nodesID","deleteSuccess","dmFailure","editSucess","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","onLoaded","addNodes","beginEdit","disableNodes","enableNodes","ensureVisible","parentsId","behavior","getAllCheckedNodes","getDisabledNodes","disabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","parentData","newliEle","newTextEle","newIcon","fullEle","removeNodes","updateNode","ResourceBase","leftPixel","resourceDateTree","renderResourceHeaderIndent","resColTd","resColDiv","headerIndentTemplate","hideResourceRows","trCount","ClassName","expandedField","trCollection","slicedCollection","createResourceColumn","resColl","resDiv","generateTreeData","countCalculation","setExpandedResources","setRenderedResources","isExpanded","rIndex","resRows","iconDiv","setMargin","onTreeIconClick","resourceHeaderTemplate","classCollection","parentCollection","wholeCollection","totalCount","trElement","eventElements","eventElements_1","updateVirtualContent","rowCollection","workCellCollection","headerRowCollection","clickedRes","clonedCollection","trElem","sIndex","virtualTrack","resTable","contentTable","eventTable","renderResourceHeader","resourceWrapper","renderResourceHeaderText","menuClick","renderResourceTree","popupOverlay","treeWrapper","resourceTree","treeViewObj","nodeClicked","resourceClick","resourceTreeCreated","treePopup","isTimeLine","treeCollection","resTreeColl","treeHandler","treeLevel","levelId","treeArgs","resourceName","resourceChild","tree","resourceTreeLevel","headerCollection","levelIcon","headerWrapper","headerCollection_1","treeNodes","selectResourceByIndex","triggerEvents","bindResourcesData","isSetModel","promises","resourceObj","getResourceModel","refreshLayout","workDaysField","cssClassField","renderElements","setResourceCollection","requiredResources","colorIndex","requiredResources_1","resourceColorField","innerDates","resTreeGroup","lastColumnDates","prevResource","prevResourceData","prevOrder","resTree","resWorkDays","generateCustomHours","resCssClass","slotData","resourceLevelIndex","generateHeaderLevels","dateSlots_1","dateSlot","headerDates","headerLevels","currentLevelChilds","currentLevelChilds_1","currentLevelChild","nextLevelChilds","nextLevelChilds_1","nextLevelChild","lastLevelResource","dateHeaderLevels","datesColumn","dateIndex","this_3","currentDateLevels","resTd_1","filterDates","currentLevel","filteredResource","existedResource","filteredTd","headerDates_1","dateColSpan","_h","firstRowTd","_j","headerDates_2","resGroup","length_2","_k","_l","resTd","setValues","colorFieldIndex","filterData","getResourceRenderDates","resourceDates","removeDuplicateDates","dateColl","groupEditIndex","groupEditIndex_1","length_3","length_4","addResource","_loop_6","addObj","removeResource","_loop_7","removeObj","resourceExpand","resourceScroll","scrollElement","offsetTarget","treeViewTemplates","resToolBarEle","Schedule","addClasses","allowMultiDrag","cssClass_1","cls_1","initializeDataModule","renderTableContainer","getActiveViewOptions","initializeResources","destroyEditorWindow","isLayoutOnly","initializeView","destroyHeaderModule","showHeaderBar","isTouch","destroyPopups","initializePopups","getViewIndex","checkIndex","setViewOptions","isModuleLoad","selectedView","prevIndex","isOptions","fieldViewName","cellHeaderTemplateName","cellHeaderTemplate","dayHeaderTemplateName","dayHeaderTemplate","monthHeaderTemplateName","monthHeaderTemplate","resourceHeaderTemplateName","headerIndentTemplateName","currentIndex","isYearView","scheduleOptions","firstMonthOfYear","monthsCount","internalTimeFormat","viewsData","setEditorTitles","initializeTemplates","cellHeaderTemplateFn","templateParser","dayHeaderTemplateFn","monthHeaderTemplateFn","cellTemplateFn","dateHeaderTemplateFn","dateRangeTemplateFn","majorSlotTemplateFn","minorSlotTemplateFn","appointmentTemplateFn","resourceHeaderTemplateFn","headerIndentTemplateFn","headerTooltipTemplateFn","eventTooltipTemplateFn","editorTemplateFn","editorHeaderTemplateFn","editorFooterTemplateFn","quickInfoTemplatesHeaderFn","quickInfoTemplatesContentFn","quickInfoTemplatesFooterFn","getDayNames","setCldrTimeFormat","getDateTime","setCalendarMode","previousView","navigationArgs","animateLayout","monthAgendaDate","getDefaultLocale","workWeek","agenda","weekAgenda","workWeekAgenda","monthAgenda","noEvents","emptyContainer","allDay","noTitle","deleteMultipleEvent","deleteSeries","editSeries","editEvent","addTitle","moreDetails","save","editContent","deleteContent","deleteMultipleContent","newEvent","recurrence","wrongPattern","seriesChangeAlert","sameDayAlert","occurenceAlert","editRecurrence","recurringEvent","repeats","startEndError","invalidDateError","blockAlert","ok","yes","no","timelineDay","timelineWeek","timelineWorkWeek","timelineMonth","timelineYear","editFollowingEvent","deleteTitle","editTitle","beginFrom","endAt","expandAllDaySection","collapseAllDaySection","searchTimezone","noRecords","onScheduleResize","isPreventScroll","cells_1","isAllDayCell","dateInMS","getTargetElement","getCellHeaderTemplate","getDayHeaderTemplate","getMonthHeaderTemplate","getResourceHeaderTemplate","getHeaderIndentTemplate","cssProps","eventClone","startEndTime","startEndDate","timeString","resetColWidth","constantText","recordSubject","recordLocation","startDateText","endDateText","announcementString","autoScrollDistance","scrollEdges","viewBoundaries","weekNumberDate","weekFirstDate","weekLastDate","weekMidDate","indentTemplate","isRefresh","isResource","isView","isLayout","isDataManager","setRtlClass","extendedPropertyChange","propertyChangeAction","allDayRowScrollUpdate","onEventSettingsPropertyChanged","onGroupSettingsPropertyChanged","setWorkHours","getWorkHourCells","resetWorkHours","workHourCells","viewStartHour","viewEndHour","tempStartIndex","tempEndIndex","tds","tdCol","firstTd","lastTd","endDateFromColSpan","getResourceCollections","setResourceCollections","resourceCol","isEventDataRefresh","changeCurrentView","getCurrentViewIndex","getResourcesByIndex","groupData","expandResource","collapseResource","scrollToResource","groupName","exportToICalendar","iCalendarExportModule","initializeCalendarExport","importICalendar","fileContent","iCalendarImportModule","initializeCalendarImport","generateEventOccurrences","exportToExcel","excelExportOptions","excelExportModule","initializeExcelExport","printOptions","printModule","getEvents","includeOccurrences","getBlockEvents","eventID","getCurrentViewEvents","isRemoteRefresh","refreshTemplates","refreshResourceHeader","isSlotAvailable","closeEditor","openQuickInfoPopup","selectEvent","occurence","closeQuickInfoPopup","closeTooltip","modules_1","ViewsDirective","ViewsPlugin","ViewDirective","ViewPlugin","ResourcesDirective","ResourcesPlugin","ResourceDirective","ResourcePlugin","HeaderRowsDirective","HeaderRowsPlugin","HeaderRowDirective","HeaderRowPlugin","ToolbarItemsDirective","ToolbarItemsPlugin","ToolbarItemDirective","ToolbarItemPlugin","ScheduleComponent","SchedulePlugin","clipboardModule","TreeGridColumn","LoadingIndicator","FilterSettings","TextWrapSettings","DOC_URL","BASE_DOC_URL","IsRowDDEnabled","Logger","cOp","generateMessage","gridurl","treeGridObj","dataStateChange","logType","treeLog","treeGrid","treeGridDetails","mapping_fields_missing","idMapping","childMapping","parentIdMapping","rowDataBound","queryCellInfo","beforeDataBound","rowSelecting","rowSelected","checkboxChange","rowDeselected","toolbarClick","resizeStop","expanding","collapsing","remoteExpand","localPagedExpandCollapse","pagingActions","printGridInit","contextMenuOpen","contextMenuClick","beforeCopy","beforePaste","crudAction","beginAdd","recordDoubleClick","cellSave","cellSaved","batchDelete","batchCancel","batchAdd","beforeBatchDelete","beforeBatchAdd","beforeBatchSave","batchSave","detailDataBound","rowDrag","rowDragStartHelper","rowDragStart","rowdraging","rowDropped","rowDeselecting","TreeClipboard","treeCopyContent","copiedUniqueIdCollection","treeGridParent","setCopyData","withHeader","copyContent","getCopyData","isSelect","currentRecords","clipBoardTextArea","selectionSettings","selectedIndexes","uniqueid","getSelectedRecords","copyHierarchyMode","parentContentData","childContentData","headerTextArray","getVisibleColumns","childRecords","hasChildRecords","isRemoteData","isCheckboxcolumn","isFilterChildHierarchy","hierarchyMode","getExpandStatus","childParent","parentRecord","getParentData","expandStateMapping","findChildrenRecords","isSummaryRow","extendArray","objArr","getPlainData","taskData","requireFilter","idFilter","ContextMenuItems","Selection","filteredList","searchingRecords","headerCheckbox","columnCheckbox","updateGridActions","checkboxSelection","selectCheckboxes","triggerChkChangeEvent","autoCheckHierarchy","checkBoxvalue","headerSelection","rowElement","getCheckedRecords","getCheckboxcolumnIndex","mappingUid","stackedHeader","headerCelllength","getHeaderContent","headercell","rowChkBox","renderColumnCheckbox","checkboxState","containerELe","divEle","rowIndexes","flatRecord","traverSelection","ischildItem","updateSelectedItems","updateParentSelection","filterModule","filteredResult","getFilteredChildRecords","filteredChildRecords","indeter","checkChildRecords","currentRecord","checkBoxRecord","hasFilteredChildRecords","multiFilterCheckState","filterResult","flatData","rec","checkedRecord","recordIndex","checkboxRecord","movableTr","frozenRows","getFrozenColumns","checkedIndex","checkBoxclass","childLength","getCheckedrecords","getCheckedRowIndexes","Print","printTreeGrid","printGrid","SelectionSettings","templateResult","columnTemplateResult","reactTemplateRender","RowModifier","pageSizeMode","enableCollapseAll","rowsObj","parentrec","dragStartData","draggedRecord","rowDragAndDropModule","lastRowBorder","lastVisualData","getVisibleRecords","thisRef_1","cellRender","cellElement","ispadfilter","filterLevel","totalIconsWidth","frozenColumns","getVirtualColIndexByUid","getColumnIndexByUid","treeColumnIndex","emptyExpandIcon","iconRequired","loadChildOnDemand","expandIcon","updateTreeCell","freezerightColumns","getFrozenRightColumns","freezeLeftColumns","getFrozenLeftColumns","movableColumns","getMovableColumns","summaryData","treeColumn","rowTemplate","thisRef_2","colindex","thisRef_3","columnUid","rowIdx","getNormalizedColumnIndex","cellRenderer","getCellFromIndex","refreshTD","treecell","DataManipulation","parentItems","taskIds","hierarchyData","storedIndex","isSortAction","dataResults","isSelfReference","updateParentRemoteData","beginSorting","collectExpandingRecs","dataProcessor","convertToFlatData","filterKey","hasChildMapping","qry","zerothLevelData","convertJSONData","selfData","mappingData","selfReferenceUpdate","createRecords","isGantt","referenceData","searchString","expandRecord","isExpandCollapse","childRecords_1","summaryQuery","summaryModule","calculateSummaryValue","rowDetails","childRecord","gridRows","childRows","parentRow","expandingTd","detailRowModule","fetchRemoteChildData","clonequries","expandDetail","filterqry","inx","remoteExpandedData","remoteCollapsedData","haveChild","resultChildData","parentUniqueID","gridQuery","totalRecordsCount","virtualArgs","remoteVirtualAction","notifyArgs","loadNext","nextInfo","parentRecords","treeGridData","dataObj","isExport","expresults","exportType","actionAddArgs","primaryKeyColumnName","batchChanges","getBatchChanges","isLocalData","updateAction","fltrQuery","srchQuery","filteredData","gridQuery_1","srtQry","srt","compFun","modifiedData","dragdIndex","dropdIndex","sortArgs","isSort","query_1","paging","printMode","actArgs","isPdfExport","isCollapsedStatePersist","actualResults","expandStatus","dataResult","PageSettings","AggregateColumn","intl","cultureName","getTemplate","setPropertiesSilent","AggregateRow","EditSettings","SortDescriptor","SortSettings","addRowIndex","addRowRecord","originalData","addAct","addAction","newRowPosition","updateParentRow","currentData_1","enableImmutableMode","removeChildRecords","currentViewRecords","primaryKeys","currentdata","internalProperty","isChildAll","editRowIndex","updateCurrentViewData","updatedParent","setRowData","getRowByIndex","getRowIndexByPrimaryKey","movableRow","InfiniteScrollSettings","TreeGrid","uniqueIDCollection","uniqueIDFilterCollection","indentOutdentAction","modifiedRecords","objectEqualityChecker","old","isEqual","TreeGrid_1","mergePersistTreeGridData","injectedModules","excelExport","excelExportProperties","isMultipleExport","workbook","Map","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","serverExcelExport","isExcel","exportTreeGrid","serverPdfExport","serverCsvExport","treegrid","treeGridModel","include","sorted","setHeaderText","treeGridInput","TreeGridLocale","initProperties","Above","Below","Child","AddRow","ExpandAll","CollapseAll","RowIndent","RowOutdent","sortByColumn","isMultiSort","sortModule","clearSorting","removeSortColumn","autoFitColumns","updateColumnModel","reorderColumns","fromFName","toFName","gridLocale","treeGridLocale","treeGridkeyActionHandler","parentTarget","summaryElement","expandCollapseRequest","getColumnByIndex","findnextRowElement","cellIndex_1","row_1","findPreviousRowElement","cIndex","summaryRowElement","infiniteScrollData","isExpandAll","isCollapseAll","ctrlDownArrow","ctrlUpArrow","mouseClickHandler","splitFrozenCount","toolbar","contextMenuItems","allowExcelExport","freezePresent","allowPdfExport","showColumnChooser","extendRequiredModules","IsRowDDInjected","isIndentEnabled","isCommandColumn","loggerModule","autoGenerateColumns","convertTreeData","loadGrid","rowDropSettings","targetID","addListener","gridContainer","gridRequiredModules","refreshToolbarItems","destroyTemplateFn","toolbarElement","indentID","outdentID","indentElement","outdentElement","afterGridRender","griddata","bindGridProperties","bindedDataSource","getGridColumns","pagerTemplate","enableVirtualMaskRow","loadingIndicator","enableAltRow","enableHover","enableAutoFill","rowHeight","gridLines","getGridToolbar","toolbarTemplate","textWrapSettings","selectedRowIndex","getContextMenu","columnMenuItems","getGridEditSettings","clipMode","templateInstance","isJsComponent","IsExpandCollapseClicked","checkboxOnly","bindGridEvents","isHeaderCheckboxClicked","selectionModule","selectedRowIndexes","updateRowSelection","excelQueryCellInfo","pdfQueryCellInfo","checkBoxChange","pdfExportComplete","excelExportComplete","excelHeaderQueryCellInfo","pdfHeaderQueryCellInfo","dataSourceChanged","cellDeselected","cellDeselecting","columnMenuOpen","columnMenuClick","cellSelected","headerCellInfo","beforePrint","printComplete","extendedGridDataBoundEvent","extendedGridEvents","extendedGridActionEvents","extendedGridEditEvents","bindGridDragEvents","bindCallBackEvents","visiblerow","isAddBorder","isPixelHeight","updateRowTemplate","updateAltRow","totalRows","persistSelection","refreshPersistSelection","callBackPromise_1","beforeDataBoundArgs","toolbarargs","cellSelecting","actualTarget","cellselectingArgs","begineditArgs","isExpandRefresh","isContextMenuOpen","contextitems","contextMenuModule","contextMenu","cellsaveArgs","prom","treeColumnRowTemplate","datacount","callBackPromise_2","updateTreeGridModel","ag","showChildSummary","selectedItem_1","selectedRecords","dropPosition","selectedRows","currentPageItem","frozenContent","rowDrop","showConfirmDialog","showDeleteConfirmDialog","allowNextRowEdit","dialog","isEmptyColumnModel","treeGridColumn","stackedColumn","gridColumnCollection","treeColumnTextAlign","treeColumnField","requireRefresh","properties_1","refreshColumns","allowMultiSorting","isDataSourceChanged","eventListener","renderTable","updateTreeColumnTextAlign","treeGridElement","hasTreeGridChild","removeListener","ignoreOnColumn","currentObject","objVal","ignoreInArrays","ignoreInColumn","isEditCollapse","isEllipsisTooltip","isPersistSelection","checkedTarget","checkedLen","totalRecords","getPager","isAddedRowByMethod","saveCell","updateCell","updateRow","editCell","enableToolbarItems","openColumnChooser","columnChooserModule","deleteRow","setCellValue","primaryKey","visibleRecords","sHeight","goToPage","pageNo","updateExternalMessage","Columns","getColumnFieldNames","getFooterContent","getFooterContentTable","showColumns","showBy","hideColumns","hideBy","getColumnHeaderByIndex","getColumnIndexByField","gridColumns","deepMerge","updateColumnsWidth","currentColumn","persist1","mergeColumns","storedColumn","persist2","dRows","getRowInfo","getUidByColumnField","indexes","rowInfo","collapseRow","expandRow","rowInfo_1","freezeRows","parentRec","getCollapseExpandRecords","pagerValuePresent","pagerdropdownModule","isExpandingEventTriggered","expandAllPrevent","expandRows","expandingArgs","expandCollapseAllChildren","updateExpandStateMapping","isExpandedEventTriggered","isCollapsingEventTriggered","collapseAllPrevent","collapseRows","collapsingArgs","collapseArgs","isCollapsedEventTriggered","getRowHeight","scrollBy","expandAtLevel","getRecordDetails","expandByKey","expandCollapseActionByKey","isPaging","puniqueID_1","collapseAtLevel","collapseAction","collapseByKey","primaryKeyField","expandCollapseAll","isExpandCollapseall","updateChildOnDemand","displayAction","localExpand","lastrowIdx","flatDataRecords","childDataBind","scrollHeightBeforeRefresh","collapseRemoteChild","freezeRightRows","rows_2","gridRowsObject","visibleRowCount","gridRow","rowsObject","rcell","movablerows","rightrows","collapsingTd","expandElement","eRows","updateRowAndCellElements","updateResultModel","returnResult","filterByColumn","filterOperator","actualFilterValue","actualOperator","clearFiltering","removeFilteredColsByField","isClearFilterBar","selectRows","getSelectedRows","getMovableCellFromIndex","getMovableDataRows","getMovableRowByIndex","getMovableRows","getFrozenRightRowByIndex","getFrozenRightRows","getFrozenRightDataRows","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","getMovableColumnsCount","getVisibleMovableCount","getVisibleFrozenRightCount","getVisibleFrozenLeftCount","getFrozenCount","getSelectedRowCellIndexes","baseModule","treeModule","fromIndexes","outdent","StackedColumnsDirective","StackedColumnsPlugin","StackedColumnDirective","StackedColumnPlugin","ColumnsDirective","ColumnsPlugin","ColumnDirective","ColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","TreeGridComponent","TreeGridPlugin","nb","kk","arTn","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","mCell","isIntersecting","intersectingCell","Width","Height","CellStyle","numFmtId","backColor","fontName","italic","bold","underline","strikeThrough","wrapText","hAlign","vAlign","numberFormat","borders","Borders","isGlobalStyle","Font","sz","strike","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","Border","mLine","mColor","lineStyle","Row","Rows","Image","Cell","Cells","Utils","bitConverterToInt32","bitConverterToInt16","bitConverterToUInt32","bitConverterToUInt16","bitConverterUintToInt32","bitConverterInt32ToUint","bitConverterInt32ToInt16","byteToString","byteIntToString","arrayCopy","sourceIndex","destinationIndex","dataToCopy","mergeArray","arrayOne","arrayTwo","mergedArray","encodedString","chr1","chr2","chr3","encode1","encode2","encode3","encode4","keyStr","resultIndex","DecompressorHuffmanTree","m_LengthTree","m_DistanceTree","prepareData","blCount","treeSize","MAX_BITLEN","treeFromData","revcode","subTree","treeLen","m_Tree","unpackSymbol","lookahead","symbol","peekBits","skipBits","subtree","bitlen","availableBits","ChecksumUpdate","checkSumUInt","DEF_CHECKSUM_BIT_OFFSET","DEF_CHECKSUM_ITERATIONSCOUNT","DEF_CHECKSUM_BASE","ChecksumGenerate","CompressedStreamReader","bNoWrap","defaultHuffmanDynamicTree","DEF_HEADER_METHOD_MASK","DEF_HEADER_INFO_MASK","DEF_HEADER_FLAGS_FCHECK","DEF_HEADER_FLAGS_FDICT","DEF_HEADER_FLAGS_FLEVEL","DEF_MAX_WINDOW_SIZE","DEF_HUFFMAN_REPEATE_MAX","DEF_HUFFMAN_END_BLOCK","DEF_HUFFMAN_LENGTH_MINIMUMCODE","DEF_HUFFMAN_LENGTH_MAXIMUMCODE","DEF_HUFFMAN_DISTANCE_MAXIMUMCODE","mCheckSum","tBuffer","mBufferedBits","mTempBuffer","mBlockBuffer","mbNoWrap","mWindowSize","mCurrentPosition","mDataLength","mbCanReadNextBlock","mbCanReadMoreData","mbCheckSumRead","DOMException","mInputStream","readZLibHeader","decodeBlockHeader","fillBuffer","bitMask","mBuffer","bytesRead","read","readInt16","readBits","bFinalBlock","blockType","mbReadingUncompressed","skipToBoundary","readInt16Inverted","lengthComplement","mUncompressedDataLength","mCurrentLengthTree","mCurrentDistanceTree","lengthTree","distanceTree","trees","decodeDynamicHeader","bLastSymbol","iLengthsCount","iDistancesCount","iCodeLengthsCount","iResultingCodeLengthsCount","arrResultingCodeLengths","arrDecoderCodeLengths","iCurrentCode","treeInternalDecoder","bNeedBreak","miRepSymbol","DEF_HUFFMAN_DYNTREE_REPEAT_BITS","DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS","readHuffman","free","dataRead","readdata","numDataRead","numReadMore","iRepeatLength","DEF_HUFFMAN_REPEAT_LENGTH_BASE","iRepeatExtraBits","DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION","extra","DEF_HUFFMAN_REPEAT_DISTANCE_BASE","iRepeatDistance","DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION","initialLength","inBlockPosition","oldDataLength","dataToRead","readPackedBytes","readInt32","DEF_REVERSE_BITS","Stream","inputStream","byteLength","readByte","toByteArray","CRC32TABLE","INT_SIZE","SHORT_SIZE","CentralDirectoryEndSignature","CentralDirSizeOffset","CentralHeaderSignature","BufferSize","ZipArchive","initCrc32Table","isMicrosoftBrowser","msSaveBlob","ZipArchiveItem","addDirectory","directoryName","base64String","zipByteArray","lCentralDirEndPosition","findValueFromEnd","iCentralDirSize","ReadInt32","lCentralDirPosition","readCentralDirectoryDataAndExtractItems","itemHelper","readCentralDirectoryData","readData","checkCrc","decompressData","unCompressedStream","zipArchive","saveInternal","saveAsBlob","blob","skipFileSave","zipData","dirLength","compressedObject","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","reader_1","FileReader","onload","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","nextIndex","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","writeFooter","Blob","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","bytes","modTime","modiDate","lStreamSize","arrBuffer","lLastPos","lCurrentPosition","uiCurValue","bFound","ReadInt16","ReadUInt16","ZipArchiveItemHelper","headerSignature","crc32","compressionMethod","originalSize","iFileNameLength","iExtraFieldLenth","iCommentLength","externalAttributes","localHeaderOffset","m_strItemName","readLocalHeader","readCompressedData","decompressDataOld","decompressedData","reader","compressedStream","iReadBytes","iNameLength","iExtraLength","headerVal","dataStream","iBytesLeft","iBytesToRead","itemName","decompressedStream","ValueFormatter","displayText","CsvHelper","csvStr","globalStyles","worksheets","parseWorksheet","parseRows","parseRow","parseCell","csv","parseCellValue","dataUrl_1","createObjectURL","dwlLink","download","revokeObjectURL","encodingType","encoding","encodeString","BlobHelper","append","part","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","cellStyle","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","category","company","manager","createdDate","tags","jsonSheet","sheet","mergeCells","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","toColumn","freezePanes","leftCell","columnsLength","rowsLength","rowId","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","parseGrouping","parseCells","outlineLevel","isCollapsed","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","rgbColors","processCellValue","cellValue","processedVal","startindex","processString","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","changeNumberFormats","returnFormat","getNumberPattern","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","font","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","image","parserImage","lastColumn","horizontalFlip","verticalFlip","blobSaveType","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","convertToPixels","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","img","byteStr","atob","ArrayBuffer","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","alignment","numFmtStyle_1","fontStyle","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","topRelation","wbRelation","contentTypeString","sheetsOverride","drawingIndex","xmlString","archiveItem","updatedMergedCellStyles","sCell","eCell","dateToTicks","ticksPerDay","daysToMonth365","daysToMonth366","timeToTicks","totalSeconds","ticks","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","ExcelExport","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isElementIdChanged","gridPool","grpFooterTemplates","footerTemplates","aggIndex","totalAggregates","isExporting","exportValueFormatter","exportProperties","isCsv","isBlb","workbk","isMultiEx","hierarchyExportMode","expandedRows","gridObject","processRecords","exportingSuccess","blobPromise","gridInstance","allPromise_1","getColumnData","processInnerRecords","groupedColLength","blankRows","colDepth","isExportPropertiesPresent","multipleExport","processExcelHeader","childGridLevel","processGridExport","globalResolve","checkAndExport","organisedRows","organiseRows","processExcelFooter","enableFilter","headerRowLen","initialIndex","excelRows","hierarchyPrintMode","getForeignKeyData","gColumns","getGridExportColumns","headerRow","getHeaders","groupIndent","processHeaderContent","lazyloadData","acc","curr","lazQuery","lazyLoadQuery","processRecordContent","capTemplate","returnType","excelRow","processRecordRows","processGroupedRows","processAggregates","formatCellValue","cArgs","captionText","getCaptionThemeStyle","captionModelGen","groupCaptionSummaryRows","fillAggregates","childLevels","lIndex","hIndex","tCell","col_1","getGridRowModel","templateRowHeight","gCell","valueAccessor","fkData","getFData","excelCellArgs","base64","setImage","getColumnStyle","processDetailTemplate","returnVal","createChildGrid","childGridObj","failureHandler","childGridCell","rowObj","templateData","detailCellIndex","detailIndent","columnHeader","processCell_1","getHeaderThemeStyle","getRecordThemeStyle","excelHAlign","excelVAlign","excelRotation","excelBorders","excelNumberFormat","excelType","processRow","currentRow","excelDetailCells","detailCell","excelImage","excelExportProps","gRow","intent","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryModel","groupSummaryRows","sRows","customIndex","columnsDetails","getAggreateValue","Sum","Average","Max","Min","TrueCount","FalseCount","Custom","aggregateStyle","gridCellStyle","dummyOutlineLevel","dummyGrouping","JSON1","JSON2","attrname","headerRotation","degree","spannedCells","parseStyles","currentCellIndex","gridCell","HeaderIndent","DetailHeader","spannedCell","headerTextAlign","excelHeaderCellArgs","updateThemeStyle","themestyle","caption","noRows","updatedCellIndex","footerRows","spannedCells_1","getConvertedWidth","DATERANGEWRAPPER","DATERANGEICON","LEFTCALENDER","RIGHTCALENDER","LEFTCONTAINER","RIGHTCONTAINER","STARTENDCONTAINER","STARTDATE","ENDDATE","STARTBUTTON","ENDBUTTON","RANGEHOVER","STARTLABEL","ENDLABEL","CALENDAR","RANGECONTAINER","RANGEHEADER","PRESETS","RANGEBORDER","FOCUSDATE","DAYSPAN","DATEDISABLED","ICONDISABLED","CALENDARCONTAINER","APPLY","CANCEL","CHANGEICON","LISTCLASS","NONEDITABLE","wrapperAttr","Presets","DateRangePicker","isCustomRange","isCustomWindow","presetsItem","previousEleValue","isKeyPopup","dateDisabled","isRangeIconClicked","isMaxDaysClicked","disabledDays","preventBlur","dateRangeOptions","startValue","endValue","setModelValue","setDataAttribute","keyInputConfigs","defaultConstant","startLabel","endLabel","customRange","applyText","cancelText","selectedDays","matchMedia","angularTag","checkInvalidRange","rangeArray","initProperty","navNextFunction","navNextMonth","navPrevFunction","navPrevMonth","deviceNavNextFunction","deviceNavNext","deviceNavPrevFunction","deviceNavPrevious","initStartDate","initEndDate","processPresets","setRangeAllowEdit","firstHiddenChild","secondHiddenChild","updateClearIconState","dateRangeStyle","cssNewClass","cssOldClass","presets","rangeIconHandler","inputKeyboardModule","updateHiddenInput","valueType","clearRange","previousStartValue","previousEndValue","startCopy","endCopy","applyButton","applyFunction","leftCalendar","calendarFocus","minDays","maxDays","adjustLongHeaderWidth","isPreset","createPresets","listRippleEffect","createControl","bindCalendarEvents","updateRange","rightCalendar","disabledDateRender","clearCalendarEvents","leftCalPrevIcon","leftCalNextIcon","rightCalPrevIcon","rightCalNextIcon","updateNavIcons","calendarIconEvent","deviceCalendarEvent","startButton","deviceHeaderClick","endButton","calendarIconRipple","leftKeyboardModule","keyInputHandler","rightKeyboardModule","bindCalendarCellEvents","removeFocusedDate","updateDeviceCalendar","deviceNavigation","deviceCalendar","removeClassDisabled","updateMinMaxDays","selectableDates","getStartEndDate","prevStartVal","prevEndVal","refreshControl","isEnd","inputStr","isDateDisabled","keyCalendarUpdate","isLeftCalendar","isRemoveFocus","leftCalCurrentDate","rightCalCurrentDate","updateCalendarElement","navInCalendar","leftLimit","rightLimit","tabKeyValidation","firstCellToFocus","focusAbleEle","focusEleID","currentFirstDay","focusDate","rightDateLimit","leftDateLimit","presetElement","yearDate","calendarNavigation","checkMinMaxDays","presetHeight","calendarPos","rightHeader","leftHeader","isRightMonth","isLeftMonth","isRightYear","isLeftYear","isRightDecade","isLeftDecade","tdCells","tdCells_1","disabledCell","hoverSelection","focusedDate_1","eleDate","tdCells_2","isDisabledCell","startDateValue","eleDateValue","isSameStartEnd","startVal","endVal","isSame","tdCells_3","eleDateValue_1","addSelectedAttributes","endDateValue","rangeArgs","removeTimeValueFromDate","otherMonthSelect","isStartDate","sameDate","tdCell","firstMonth","lastMonth","endEle","endEle_1","endEle_2","ele_2","removeSelectedAttributes","tdCells_4","tdCells_5","startMonth","startValueSelected","maxEle","tdCells_6","calendar_1","tdCells_7","disabledDayCnt","updateControl","customDate","createRangeHeader","labelContainer","endBtn","startBtn","changeIcon","disableInput","validateRangeStrict","validateMinMaxDays","validateRange","renderCalendar","isSameDecade","endYear","startMonthCurrentDate","selectNextMonth","selectNextYear","selectNextDecade","decyr","selectStartMonth","calendarContainer","prevIcon","leftTitle","leftContainer","rightContainer","leftNavTitle","rightTitle","rightNavTitle","controlContainer","headerContainer","modelHeaderIconWrapper","modelRangeCloseHandler","modelApplyButton","footerSection","applyBtn","cancelFunction","deviceHeaderUpdate","isValueChanged","closeEventArgs","popupKeyboardModule","popupKeyActionHandle","isClick","setListSelection","values_1","renderCustomPopup","applyPresetRange","modelValue","listTag","customElement","modelWrapper","modelTitleSpan","presetContent","iconRangeRight","cssFloat","touchRangeModule","dateRangeSwipeHandler","touchStartRangeHandler","btnKeyboardModule","presetKeyboardModule","presetKeyActionHandler","popupKeyBoardHandler","popupCloseHandler","touchRangeStart","rangeContainer","listMoveDown","listMoveUp","hvrItem","getHoverLI","actItem","getActiveLI","formatOption","startinvalue","endinvalue","startString","endString","startObject","endObject","invalidobject","getstringvalue","toLocaleDateString","stringValue","formatOpt","extISOStr","basISOString","virtualRenderCellArgs","virtualRenderCellEvent","isStartDisabled","isEndDisabled","createHiddenInput","navigate","getSelectedRange","mobileRangePopupWrap","refreshChange","enableInput","clearModelvalue","setMinMaxDays","getStartEndValue","openPopup","PresetsDirective","PresetsPlugin","PresetDirective","PresetPlugin","DateRangePickerComponent","DateRangePickerPlugin","setGlobal","inspectSource","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","O","unsafe","simple","noTargetGet","itCh","enNz","monthsShortWithDots","monthsShortWithoutDots","fy","getCloneProperties","isAsyncPrint","defered","isContentReady","actionBeginFunction","onEmpty","hierarchyPrint","isPrintGrid","removeColGroup","printGridObj","renderPrintGrid","injectedModues","setInjectedModules","printgrid","contentDiv","headerDiv","overflowY","waitingPop","printGridElement","moveTo","groupCaption","colGroups","contentColGroups","footerColGroups","hideColGroup","printGridProp","enIl","WRAPPERCLASS","POPUPDIMENSION","DAY","NAVIGATION","ICONANIMATION","HALFPOSITION","ANIMATIONDURATION","OFFSETVAL","EDITABLE","TimePickerBase","createdEl","timeCollections","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","openPopupEventArgs","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","getDateObject","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","defaultCulture","checkTimeFormat","checkInValue","isNavigate","isTextSelected","valueWithMinutes","prevDate","updatedCssClassesValue","isNullOrEmpty","getCldrDateTimeFormat","cldrTime","cldrFormat","isInvalid","valueExpression","valueExp","setCurrentDate","cldrDateTimeString","getCultureTimeObject","ariaAttribute","enableElement","propertyList","generateList","listWrapper","addSelection","getPopupHeight","containerStyle","setPopupWidth","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","initialTime","scrollTime","cldrTimeFormat","cldrDateFormat","cldrDate","getCultureDateObject","dateToNumeric","getExactDateTime","compareFormatChange","updatePlaceHolder","popupHandler","curPos","cursorDetails","focusSelection","isSeparator","objToString","createMask","previousState","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","valueProcess","minVal","maxVal","dateVal","strictOperation","clearHandler","inputEvent","raiseClearedEvent","getTextFormat","strArray","validateValue","newval","findNextElement","timeVal","selectNextItem","validLiElement","backward","isUpdate","getHoverItem","setActiveClass","formatStr","timeParse","getProperty","popupAlignment","timePopupElement","formatValues","DATEPICKERROOT","DATETIMEWRAPPER","HOUR","MINUTE","MILLISECOND","DATETIMEPOPUPWRAPPER","DateTimePicker","scrollInvoked","formatRegex","dateFormatString","dateTimeOptions","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","cldrDateTime","isDatePopupOpen","listCreation","dateObject","TimePopupFormat","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","timeModal","timeKeyActionHandle","unWireTimeListEvents","dateTimeCloseHandler","timeContent","setDimension","setTimeHover","removeTimeHover","nextElement","lineHeight","listContent","getFullDateTime","tempVal","combineDateTime","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","tempStartValue","tempMin","formatCount","formatValueSpecifier","formattext","tempEndValue","tempMax","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","millisecond","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","sw","PositionData","OPEN","Popup","orientationOnChange","getRelateToElement","scrollRefresh","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollParents","isElementVisible","rect","checkGetBoundingClientRect","win","windowView","scrollX","elementView","relateToElem","checkFixedParent","parentDisplay","getAnchorPosition","eleRect","anchorEle","anchorRect","callFlip","viewPortRect","horz","vert","relativeElement","fmDialogContainer","getZindexPartial","parentStyle","overflowRegex","parentZindex","childrenZindex","siblingsZindex","finalValue","currentZindexValue","CheckBoxComponent","CheckBoxPlugin","Cancel","expires","domain","secure","cookie","toGMTString","decodeURIComponent","requireObjectCoercible","sk","getDateParser","fromView","setCulture","instances","isBlazorPlatform","classFunction","arrayParam","unbind","intCrypto","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","postMessage","fromObj","isNullOrUndefined","deleteObject","containerObject","objCon","getEnumValue","enumObject","enumValue","temrObj","tempProp","deepmerge","extend","copied","arguments_1","obj1","isArrayChanged","blazorEventExtend","isBlazor","Event","getUniqueID","definedName","debounce","eventFunction","later","compareElementParent","printWindow","links","blinks","reference","formatUnit","xPath","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","inst","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","regExp","getSymbolMatch","matchKeys","matchKeys_1","constructRegex","convertValueParts","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","numericPair","numberParseRegex","symbolNumberSystem","symbolMatch","getNumberMapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","getBlazorCurrencySymbol","dateCorrection","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","mcjdn","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","weekdayKey","timeSetter","H","datePartMatcher","DateFormat","cldr","dependable","getDependables","numObject","isIslamic","islamicRegex","compareBlazorDateFormats","resPattern","getResultantPattern","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","numMapper","parserObject","patternMatch","patternMatch_1","monthIndex","designator","eText","era","intDateFormatter","dateParseRegex","dObject","getCurrentDateValue","matches_1","curval","curvalstr","processNumber","curstr","curlength","desig","dec","retu","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","splt","curPattern","ishour","errorText","percentSign","minusSign","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numberMapper","currencySymbol","getCurrencySymbol","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","fractionDigits","defaultCurrency","nData","replaceBlazorCurrency","getFormatData","groupSeparator","getGroupingDetails","minFrac","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","toExponential","customPivotFormat","groupNumbers","nlead","nend","tn","toPrecision","level1","sep","decimalSymbol","level2","prefix","lead","decimal","latnRegex","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","hour12","periodValur","tval","tzone","hpattern","parseTimeZoneRegx","iString","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","tKeys","century","tKeys_1","tValue","pDate","lDate","tzValue","retOptions","curObject","matchString","internalNumberParser","cultureOptions","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","exponent","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","cntxt","notExist","isHandlerPresent","indexLocation","errorHandler","blazor","blazorCallback","curObject_1","objs","isTrigger","obj_1","isJson","dateReviver","dPattern","offIntlEvents","eventsArr","curContext","detectFunction","randomId","boundedEvents_1","onIntlChange","rightToLeft","cldrData","Internationalization","getCulture","parseNumber","isExcelFormat","getActualDateTimeFormat","getActualNumberFormat","getWeekData","getNumericObject","numSystem","symbPattern","getDefaultDateObject","blazorCultureFormats","IntlBase","customRegex","fractionRegex","patternRegex","'","dateConverterMapper","defaultFirstDay","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","blazorCulture","iType","basicPatterns","tPattern","calendartype","blazorDefaultObject","defaultObject","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","getCurrency","formatSplit","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","loc","actualPattern","tLength","timeZonePattern","processSymbol","numrericObject","curCode","hasNegativePattern","defaultMinimum","fractionDigitsPattern","minimumIntegerPattern","groupingPattern","cPattern","minDigits","maxDigits","integer","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","nYear","nday","C","P","N","A","E","headerRegex","defaultType","Ajax","async","emitError","httpRequest","onreadystatechange","stateChange","onLoad","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","setRequestHeader","responseText","readyState","statusText","getResponseHeader","responseHeaders","getAllResponseHeaders","Fetch","contentTypes","Request","fetchResponse","fetch","responseType","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","language","getEvent","isPointer","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","regX","maxTouchPoints","uA","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","listener","bindTo","intDebounce","debounceListener","passive","copyData","SVG_REG","addClass","getClassList","classList_1","curClass","removeClass","canRemove","classList_2","classes_1","classArr","isEval","docFrag","executeScript","NodeList","eleArray","script","head","detach","iKey","needsVDOM","querySelectId","nodeList","charRegex","idList","splitId","setId","setStyleAttribute","msMatchesSelector","proxyToRaw","isColEName","Base","isComplexArraySetter","allowServerDataBinding","changedProperties","bulkChanges","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","prevDetection","serverDataBind","callChildDataBind","getOwnPropertyNames","newChanges","oldChanges","sfBlazor","moduleClass","getComponent","comp","compName","setProxyToRaw","toRaw","curKey","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","complexGetter","complexSetter","complexArrayGetter","defCollection","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","newValueParse","model_1","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","propertyName","curText","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","getModel","delayAnimation","animationId","frameId","animationMode","GlobalAnimationMode","Disable","applyAnimation","timerId","prevTimeStamp","startAnimation","avg","rippleEffect","rippleOptions","getRippleModel","rippleFlag","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","sqrt","removeRipple","rippleElements","accountURL","MODULE_SUFFIX","ModuleLoader","loadedModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","getNonInjectedModules","usedModules","removableModule","removableModule_1","mod","ChildProperty","isParentArray","updateTimeOut","changeTime_1","clearUpdate","curIndex","restrictServerDataBind","isSaveChanges","parentKey","complexKeys","isFinal","actionProperty","componentList","bypassKey","LicenseValidator","isValidated","isLicensed","errors","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","licKey","npxManager","npxLicKey","contentKey","URLKey","convertToChar","validateMsg","validateURL","getInfoFromKey","invalidPlatform","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","buffr","decryptedKey","licenseValidator","cArr","cArr_1","registerLicense","lastPageID","validateLicense","createLicenseOverlay","bannerTemplate","errorBackground","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","versionBasedStatePersistence","Component","isReactHybrid","moduleLoader","localObserver","detachUnloadEvent","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","mergePersistData","ignoredComponents","diagram","PdfViewer","richtexteditor","gantt","chart","accumulationchart","modulesRequired","componentName","isVDOM","triggerStateChange","currentContext","calls","isHistoryChanged","pageID","persistObj","objValue","iterateJsonProperties","ignoreList","newObj","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","mobileInitialize","removeTapholdTimer","tempScrollHeight","tempScrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","getCoordinates","initialPosition","relativeXPosition","relativeYPosition","intDragStart","isPreventSelect","isChangeTouch","intCordinate","styleProp","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","getHelperElement","dragTargetElement","helperElement","parentClientRect","getProperTargetElement","bindDragEvents","setDragArea","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","queryPositionInfo","docHeight","getDocumentWidthHeight","docWidth","checkTargetElement","hoverObject","triggerOutFunction","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","getPathElements","scrollParent","getScrollPosition","hasScroll","nodeEl","nodeEle","docScrollTop","helperClientHeight","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStopCalled","intDrop","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","oldEle","isdragscroll","dragEle","isOffsetParent","isVerticalScroll","isHorrizontalScroll","dropIns","getDropInstance","eleInst","eleInst_1","Droppable","mouseOver","area","isDrag","isDropArea","canDrop","coord","L10n","controlName","localeStrings","intLocale","intGetControlConstant","currentLocale","SwipeSettings","swipeRegex","Touch","touchAction","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","movedPoint","eScrollArgs","calcScrollPoints","scrollArg","startEvents","startX","startY","getVelocity","timeOutTap","swipeFn","tapThreshold","modeclear","isFirefox","endPoint","calcPoints","swipeArgs","eSwipeArgs","tDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","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","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","ignorePrefix","argName","evalExpResult","evalExp","condtion","fnCode","varCOunt","localKeys","isClass","singleSpace","insideBraces","outputString","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","splArrRegexp","SlashReplace","NameSpaceForspecialChar","addNS","NameSpaceArrObj","arrObjReg","double","nameSpaceNew","windowFunc","quotes","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","templateString","compiler","engineObj","blazorTemplateId","blazorId","updateBlazorTemplate","ejsIntrop","updateTemplate","resetBlazorTemplate","templateDiv","innerTemplates","setTemplateEngine","classObj","getTemplateEngine","initializeCSPTemplate","boundFunc","CSPTemplate","Engine","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","selectors","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","localName","yo","sl","numbersPast","numbersFuture","verbalNumber","fi","arSa","isAbsoluteURL","combineURLs","baseURL","requestedURL","bg","my","RowRenderer","isSpan","refreshRow","isChanged","refreshMergeCells","tempCells","rowArgs","chekBoxEnable","selIndex","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","getCellRenderer","DetailExpand","Filter","isReactChild","parentDetails","parentInstObj","requireTemplateRef","isTemplate","requestTypeAction","isRowSpanned","prevRowCells","uid_1","prevRowCell","rowSpanRange","resetrowSpanvalue","getFrozenLeftCount","movableCount","cellIdx","cellSpan","cellMerge","nextRowCell","emptyColspan","freezeCells","oldColspan","colspan","eventArg_1","isSelectable","disableRowSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","lazyLoadCssClass","wrapMode","vFTable","summarycell","lastSummaryCell","firstSummaryCell","thisRef","eventArg","isPartialSelection","selRowIndex","chkBox","isDetail","isAltRow","rowindex","dataUID","ariaSelected","gl","Month","dayNameFormat","monthDates","onScrollUIUpdate","onDataReady","onCellClick","scrollPosition","scrollToSelectedDate","levels_1","isCurrentMonth","getDayNameFormat","renderWeekNumberContent","contentArea","monthAgendaWrapper","renderAppointmentContainer","contentWrapper","contentWrapTable","createWeekNumberElement","createHeaderCell","getContentSlots","slotDatas","prepareSlots","renderDate","includeResource","colDates","out_j_1","colDate","resourcesTd","colDates_1","updateClassList","isOtherMonth","updateSelectedCellClass","trows","renderDateHeaderElement","announcementText","getMonthStart","useDisplayDate","monthStart","getMonthEnd","lastWeekOfMonth","monthEnd","updateCustomRange","isUpdateDateRange","monthNames","formatDateRange","functionToString","es","invalidDate","isError","View","_","routerView","$createElement","route","$route","_routerViewCache","inactive","_routerRoot","_inactive","$parent","routerViewDepth","components","registerRouteInstance","vm","prepatch","vnode","componentInstance","propsToPass","resolveProps","to","encodeReserveRE","encodeReserveReplacer","commaRE","resolveQuery","extraQuery","_parseQuery","parsedQuery","parseQuery","stringifyQuery","trailingSlashRE","createRoute","redirectedFrom","router","stringifyQuery$$1","meta","fullPath","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","isObjectEqual","aKeys","bKeys","aVal","bVal","isIncludedRoute","queryIncludes","toTypes","eventTypes","Link","exact","Boolean","exactActiveClass","$router","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","findAnchor","isStatic","aData","aAttrs","defaultPrevented","installed","isDef","registerInstance","callVal","_parentVnode","_router","defineReactive","destroyed","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","inBrowser","resolvePath","relative","firstChar","segments","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","escaped","capture","asterisk","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encodeAsterisk","opts","pretty","attachKeys","re","flags","sensitive","regexpToRegexp","arrayToRegexp","regexp","stringToRegexp","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","compileRouteRegex","redirect","beforeEnter","childMatchAs","alias","aliases","aliasRoute","normalizeLocation","_normalized","rawPath","parsedPath","basePath","createMatcher","addRoutes","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","positionStore","setupScroll","getStateKey","saveScrollPosition","setStateKey","handleScroll","isPop","scrollBehavior","$nextTick","shouldScroll","scrollToPosition","getElementPosition","docEl","docRect","elRect","isValidPosition","normalizePosition","normalizeOffset","supportsPushState","ua","Time","performance","_key","genKey","runQueue","queue","resolveAsyncComponents","hasAsync","pending","flatMapComponents","once","resolvedDef","isESModule","resolved","msg","flatten","hasSymbol","toStringTag","__esModule","called","History","normalizeBase","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","activated","deactivated","extractGuards","guards","guard","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","cbs","bindEnterGuard","poll","listen","onReady","errorCb","transitionTo","onComplete","confirmTransition","updateRoute","ensureURL","beforeHooks","iterator","postEnterCbs","enterGuards","resolveHooks","afterHooks","HTML5History","History$$1","expectScroll","initLocation","getLocation","go","fromRoute","getCurrentLocation","HashHistory","fallback","checkFallback","ensureSlash","setupListeners","supportsScroll","getHash","replaceHash","pushHash","getUrl","AbstractHistory","VueRouter","matcher","registerHook","createHref","setupHashListener","beforeEach","beforeResolve","afterEach","forward","getMatchedComponents","normalizedTo","use","RowModelGenerator","getInfiniteIndex","generateRow","ensureColumns","generateCell","RowDragIcon","tIndex","parentGid","refreshForeignKeyRow","getFrozenMode","generateCells","foreignKeyColumns","dummies","oIndex","refreshRows","isFunction","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsNominative","monthsSubjective","pl","ListBase","collapsible","iconWrapper","anchorWrap","navigable","getFieldValues","dataField","compileTemplate","defaultMappedFields","urlAttributes","imageAttributes","imageUrl","defaultAriaAttributes","defaultListBaseOptions","listClass","itemClass","processSubChild","isSingleLevel","curOpt","typeofData","createListFromArray","createListFromJson","getModuleClass","generateId","generateSingleLevelLI","generateLI","anchorElement","curItem","tooltipTextElement","imageElemnt","getSiblingLI","elementArray","isPrevious","siblingLI","liIndex","curFields","hdr","newtext","_id","jsonAr","childs","hasChildNodes","getAllAttributes","elementAttributes","liCollection","currentID","compiledElement","headerItems_1","subDS","subLi","innerElements","grpLI","elementID","anchorTag","isFullNavigation","anchorWrapper","uID","innerDiv","fa","CancelToken","executor","resolvePromise","ar","bn","postfix","zhTw","definePropertyModule","createPropertyDescriptor","CellType","ResponsiveDialogAction","ResponsiveToolbarAction","ru","mn","ky","bnBd","ro","cy","ButtonComponent","ButtonPlugin","wrapperInitialize","setHiddenInput","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","Attributes","HeaderRender","frzIdx","notfrzIdx","isFirstCol","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","isReactCompiler","ariaService","widthService","setVisible","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","createHeaderTable","setTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","panel","headerTable","getColGroup","colgroup","setColGroup","tHead","createTable","cellspacing","findHeaderRow","bodyCell","rowBody","len_1","updateColGroup","colHeader","rowRenderer","Header","getHeaderCells","RowDragHIcon","getColumnIndexesInView","len_2","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","lockColsCount","displayVal","clen","isAddNewRow","freezeReorder","appendContent","setWidthToColumns","updateDefaultCursor","gCells","isXaxis","firstHeaderCell","stackedHdr","droppableDestroy","droppable","toolbarLeft","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","getGui","fltrMenuEle","prepareHeader","hValueAccer","elementDesc","innerDIV","headerValueAccessor","checkAllWrap","buildAttributeFromCell","appendHtml","matchFlColumns","extendPrepareHeader","gridObj","headerTempID","isReactChild_1","titleElem","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","gCaptionTemp","tempValue_1","captionTemplate","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","emptyGrid","counter","headerRenderer","isLayoutRendered","emptyRow","setPadding","filterObjIndex","prevFilterObject","flIcon","checkboxPrevFilterObject","pageSizes","dataLength","prevPageMoving","refreshContentRows","detailTemplateID","refreshComplete","maskRow","indicatorType","isCaptionCollapse","showMaskRow","isFActon","isNeedForeignAction","deffered_1","validateGroupRecords","deferred","fbool","sendBulkRequest","dmSuccess","renderEmptyRow","spanCount","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","renderEmpty","dynamicColumnChange","updateColumnType","cFormat","fmtr","validationRules","isColTypeDef","isInfiniteDelete","isInfiniteEnd","prevCurrentView","totalDataRecordsCount","updatesOnInitialRender","immutableModeRendering","setRowElements","setRowObjects","preventAdjustColumns","setRowCount","setFirstFocusableTabIndex","dataRowCount","isEmptyCol","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","cellrender","GroupCaption","GroupCaptionEmpty","group0","groupN","curDm","curFilter","rPredicate","untouched","updatedGroup","itemGroup","updatedGroupItem","customAggregate","CellRendererFactory","cellRenderMap","ResponsiveDialogRenderer","sortedCols","sortPredicate","isCustomDialog","evtHandlers","closeCustomDialog","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","isFilter","filterClearBtn","getHeaderTitle","responsiveDialogRenderer","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","isColumnChooser","isColMenu","sortColumns","sortBtnParent","filteredCols","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","isSortApplied","resetSortButtons","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","closeCustomFilter","showResponsiveCustomColumnChooser","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","renderResponsiveDialog","setFilterModel","openDialog","createOptions","setTopToChildDialog","colMenu","outerDiv","customFilterDlg","getDialogOptions","adaptiveDlgTarget","dialogCreated","renderResponsiveHeader","sortField","closeResponsiveDialog","primaryKeyValue","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","clearBtn","removeCustomFilterElement","custommenu","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","customEle","registerAdaptiveService","isAdaptiveUI","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","getTableWidth","setMinwidthBycalculation","tWidth","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","tgridWidth","setWidthToTable","fWidth","headerCol","contentCol","editTableCol","refreshFrozenScrollbar","movableScrollbar","movableWidth","placeHolder","getSiblingsHeight","getHeightFromDirection","sibling","isWidUndefCount","isAutoResize","resizeSettings","ColumnChooserSettings","selectedRowCellIndexes","selectedColumnsIndexes","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isRowDragSelected","rmtHdrChkbxClicked","isCheckboxReset","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","hidePopUp","destroyAutoFillElements","isEditing","getCurrentBatchRecordChanges","selectedGroupedData","enableSimpleMultiRowSelection","addRowsToSelection","selectedRow","isRemoved","isAvailable","prevSelectedData","clearRowSelection","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","removed","checkboxMode","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","selectRowsByRange","getCollectionFromIndexes","selectedDataUpdate","selectableRowIndex","isSingleSel","prevRow","selectRowFn","selectableRowIndex_1","rowIndexes_1","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","clearRowCallBack","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","chkState","ensureCheckboxFieldSelection","updatePersistDelete","isPresent","setCheckAllState","getPrevIndexes","mouseButton","onClick","checkSelectAllClicked","clearCellSelection","clearColumnSelection","prevCIdxs","prevECIdxs","rowIndex_1","foreignKeyData_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","cancl_1","isSingleDeSel","rowDeselectObj","rowInString","rowidx","rowidxex","dataTxt","isHeaderCheckBxClick","isCellType","getColIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","stIndex","edIndex","cellSelectionMode","getLastColIndex","addAttribute","cellSelectedArgs","rowCellIndexes","cellSelectArgs","cellLen","addRowCellIndex","prvRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","getSelectedCellsElement","cLen","bdrElement","showHideBorders","mouseMoveHandler","stopTimer","gBRect","x1","y1","x2","y2","isCellDrag","startAFCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","mouseEvent","clientRect","timer1","timer2","isAutoFillSel","nextElement_1","findNextCell","positionAFBorders","mouseEvent_1","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","strCell","fixedCells","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","colIdx","preCell","nextCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastCell","isLastRow","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","sLeft","totalHeight","scrolloffSet","borderAFRightValue","bdrAFRight","bdrAFTop","leftRemove","topRemove","autofill","hideAFBorders","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","colLen","startCellIndex","trIdx","mUPTarget","closeRowCell","updateAutoFillPosition","lastCell","updateStartCellsIndex","rindex","isFrozenRow","isFrozenRight","colWidth","enableDrag","postion","clearSelAfterRefresh","isInfiniteScroll","pkValue","onCellFocused","columnPositionChanged","rowsRemoved","actionCompleteFunction","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","dataSuccess","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","rowObj_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","editChkBox","onDataBound","checkSelectAllAction","cRenderer","editForm","getVirtualRowIndex","stateStr","updateSelectedRowIndexes","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","checkToSelectAll","getRecord","dataLen","targetHeadCell","targetRowCell","isCheckBox","allowColumnSelection","popUpClickHandler","chkSelect","headerSelectionHandler","checkboxColumnIndexCheck","byKey","keyArgs","isJump","headerAction","hdrLength","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","writeText","ctrlPlusA","applySpaceSelection","innerColumn","getstackedColumns","firstIndex","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","isSelectedRowIndexUpdating","refreshSearch","onSearchComplete","cancelBeginEvent","ShowHide","isShowHide","resetColumnState","changedCol","getToggleFields","finalized","getKeyBy","batchActionPrevent","changedStateColumns","groupModule","visibleRows","showHideArgs","currentViewCols","emptyVcRows","addNewRowFocus","colsInCurrentView","col1","col2","isModeChg","startAdd","oneTimeReady","uiupdate","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","mHdrHeight","height_1","ensureOverflow","getThreshold","removePadding","hDiv","footerDiv","appName","setScrollLeft","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","headerScrollHandler","scrollTarget","isPreventScrollEvent","errorFreeze","errorFixed","widthVal","isDown","scrollDown","isFooter","cont","pointerType","pageXY","getPointXY","mHdr","mCont","getScrollbleParent","addStickyListener","eventElement","makeStickyHeader","resizeFrozenRowBorder","frzCols","enableStickyHeader","setLastRowCell","css","contentRect","groupHeaderEle","parentTop","colMenuEle","elemTop","setSticky","ccDlg","topStyle","RowDropSettings","ResizeSettings","GroupSettings","Grid","_this_1","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","tablesCount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","fixedColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","media","autoFitColumnsResize","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","isVirtualAdaptive","vRows","vGroupOffsets","rowUid","isAutoFitColumns","enableDeepCompare","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","mediaBindInstance","asyncTimeOut","isExportGrid","enableLogger","Grid_1","mergePersistGridData","setFrozenCount","enableInfiniteAggrgate","resizeCheck","isForeignKeyEnabled","columnMenu","mediaCol","filterOperators","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","wildCard","notNull","like","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Save","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","shiftRight","shiftLeft","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","ctrlPlusP","ctrlPlusC","ctrlShiftPlusH","searchModule","getMediaColumns","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","updateStackedFilter","refreshMaskRow","axisDirection","dialogHolder","maskRowCount","maskTemplate","getShimmerTemplate","maskSpan","contentHeight","maskTableHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","gridFooterContent","footerContentMaskTable","footerContent","translateMaskRow","maskElement","gridContentScrollHeight","maskTable","maskColgroup","createMaskRow","frzTd","valueX","maskTHead","maskTBody","rowCountElement","altRow","altNumber","rowsQuery","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","displayAsCheckBox","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","hideAtMedia","pushMediaColumn","updateFrozenColumnsWidth","mediaQueryUpdate","updateMediaColumns","mediaColumn","invokedFromMedia","showHider","refreshMediaCol","removeMediaListener","hasGridChild","toolTipObj","enableBoxSelection","checkCursor","requireGridRefresh","childGridParent","parentInstance","updateColumnObject","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","childGridObject","currentParentInstance","currentChildObject","restoreAdjustColumns","maintainSelection","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","applyTextWrap","removeTextWrap","case","pending_1","getPrototypeOf","deepWatch","pKeyField","gResult","enableVerticalRendering","fn_1","refreshFilter","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","frozenName","frozenCount","leftrightColumnWidth","inview","vLen","movable","isLeftRightFrozen","individualColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","gridPager","setGridPager","getFrozenRowByIndex","getRowElements","row_2","getAllDataRows","includeAdd","hdrTbody","addMovableRows","dataRows","generateDataRows","fRows","mrows","includAdd","isCollapseStateEnabled","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getAllFrozenRightDataRows","rowuID","pkName","fieldIdx","Idx","sRow","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","headerCellRenderer","filterElement","selectRowEle","fRowTr","setFrozenRowData","fTr","getMovableRowsObject","getFrozenRightRowsObject","getStackedColumns","columnNames","getRowTemplate","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedColumnsUid","isAutoWidth","autoCol_1","difference_1","autoWidth_1","tWidth_1","gWidth","isPercentageWidthGrid","refreshSplitFrozenColumn","splitStackedColumns","pushStackedColumns","stackedcol","stockCol","pushallcol","text1","isTrue","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","removeBorder","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","clearGridActions","fieldname","recalcIndentWidth","indentWidth","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","refreshDataSource","disableRowDD","disValue","startRowIndex","endRowIndex","tableWidth","percentageWidth","unit","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","setProperty","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","renderColumnChooser","valueFormatterService","sCols","sLen","parentKeyFieldValue","initForeignColumn","createGridPopUpElement","getTooltipStatus","headerDivTag","htable","ctable","prevElement","elemNames","innerElement","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","tapEvent","refreshFrozenPosition","dataBoundFunction","checkEdit","ariaOwns","keyPress","editFormValidate","isShowAddedRowValidate","storedColumns","localCol","tCol","this_4","presskey","addOutline","exportGrids","gridIds","exportMultipleExcelGrids","exportMultiplePdfGrids","currentGridId","currentGridInstance","exportPromise","exportedGridResults","groupExpandAll","groupCollapseAll","detailCollapseAll","detailExpandAll","propertyNames","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","pKvalue","getFilteredRecords","getUserAgent","getRowUid","rowEle","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","nonContentHeight","getNoncontentHeight","getSummaryValues","summaryCol","exportGrid","gridModel","gridInput","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","this_5","isRowExist","this_6","renderRowElement","modelData","addRowObject","getHeight","isInteger","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","isCustom","showCustomFilter","showCustomSort","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols","gridCols_1","WARNING","INFO","patchadaptor","detailLists","module_missing","injected","promise_enabled","primary_column_missing","selection_key_missing","actionfailure","formatError","formatErrorHandler","ajaxError","ajaxErrorHandler","locale_missing","lObj","limitation","check_datasource_columns","virtual_height","grid_remote_edit","grid_sort_comparer","resize_min_max","action_disabled_column","destColumn","exporting_begin","exporting_complete","foreign_key_failure","initial_action","frozen_rows_columns","column_type_missing","datasource_syntax_mismatch","jsonResult","responseURL","FRAME","RIPPLECHECK","RIPPLEINDETERMINATE","CheckBox","isMouseClick","clickTriggered","validCheck","isInitialize","updateVueArrayModel","labelWrap","formElem","fr","emptyObject","isUndef","isFalse","isPrimitive","_toString","isRegExp","isValidArrayIndex","toNumber","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","hasOwn","cached","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","polyfillBind","ctx","boundFn","_length","nativeBind","toArray","_from","noop","identity","genStaticKeys","staticKeys","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","looseIndexOf","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","productionTip","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","bailRE","_isServer","hasProto","inWeex","WXEnvironment","weexPlatform","UA","isIE9","isEdge","isIOS","isFF","nativeWatch","supportsPassive","isServerRendering","VUE_ENV","isNative","Ctor","_Set","ownKeys","Set","Dep","addSub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","VNode","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","arrayProto","arrayMethods","methodsToPatch","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","vmCount","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","setter","childOb","dependArray","del","toVal","fromVal","mergeDataOrFn","parentVal","childVal","instanceData","defaultData","mergeHook","dedupeHooks","hooks","mergeAssets","key$1","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","_base","extends","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","_props","isSameType","expectedTypes","handleError","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","callbacks","flushCallbacks","copies","MutationObserver","textNode","characterData","_resolve","seenObjects","traverse","_traverse","seen","isA","depId","normalizeEvent","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","extractPropsFromVNodeData","checkProp","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","renderSlot","bindObject","scopedSlotFn","$scopedSlots","resolveFilter","isKeyNotMatch","expect","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_o","_n","_s","_t","_q","_m","_v","_u","_p","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","updateChildComponent","_isMounted","callHook","queueActivatedComponent","activateChildComponent","deactivateChildComponent","hooksToMerge","createComponent","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","inlineTemplate","toMerge","_merged","mergeHook$1","f1","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","applyNS","registerDeepBindings","force","_vnode","parentVnode","_renderChildren","_parentListeners","currentRenderingInstance","renderMixin","_render","ensureCtor","errorComp","owner","owners","loading","loadingComp","timerLoading","timerTimeout","$on","forceRender","renderCompleted","$forceUpdate","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","$off","_target","onceHandler","oldListeners","eventsMixin","hookRE","$once","i$1","setActiveInstance","prevActiveInstance","initLifecycle","$children","$refs","_watcher","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","teardown","_watchers","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","_propKeys","isInInactiveTree","direct","activatedChildren","waiting","flushing","resetSchedulerState","currentFlushTimestamp","getNow","flushSchedulerQueue","watcher","run","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","expOrFn","isRenderWatcher","user","lazy","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initComputed","initWatch","propsOptions","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_uid","initInternalComponent","_self","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","modified","latest","sealed","sealedOptions","initUse","installedPlugins","_installedPlugins","initMixin$1","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","exclude","mounted","ref$1","builtInComponents","initGlobalAPI","configDef","observable","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","genClassForVnode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","math","isHTMLTag","isSVG","isPreTag","unknownElementCache","HTMLUnknownElement","isTextInputType","createElement$1","multiple","createComment","referenceNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","emptyNodeAt","createRmCb","childElm","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","transition","activate","ref$$1","ancestor","addVnodes","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","isRenderedModule","inVPre","childrenMatch","fullInvoke","isInitialPatch","isRealElement","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","updateClass","oldData","transitionClass","_transitionClasses","_prevClass","chr","index$1","expressionPos","expressionEndPos","klass","validDivisionCharRE","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","pushFilter","wrapFilter","baseWarn","pluckModuleFunction","addProp","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","native","nativeEvents","newHandler","getRawBindingAttr","rawAttrsMap","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","genComponentModel","baseValueExpression","assignment","genAssignmentCode","parseModel","eof","isStringStart","parseString","parseBracket","inBracket","stringQuote","target$1","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","_warn","genSelect","genCheckboxModel","genRadioModel","genDefaultModel","valueBinding","trueValueBinding","falseValueBinding","needCompositionGuard","normalizeEvents","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","svgContainer","updateDOMProps","_value","strCur","shouldUpdateValue","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","_vModifiers","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","directive","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","needReset","hasNoMatchingOption","actuallySetSelected","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","c$1","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","WebkitTransform","_moveCb","_hasMove","oldPos","dx","dy","platformComponents","defaultTagRE","regexEscapeRE","buildRegex","delimiters","parseText","tagRE","tokenValue","rawTokens","transformNode","classBinding","genData","klass$1","transformNode$1","styleBinding","genData$1","decoder","style$1","he","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","parseHTML","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","chars","parseEndTag","textEnd","commentEnd","shouldKeepComment","advance","conditionalEnd","doctypeMatch","endTagMatch","startTagMatch","parseStartTag","handleStartTag","rest","unarySlash","unary","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","warn$2","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE$1","decodeHTMLCached","emptySlotScopeToken","createASTElement","makeAttrsMap","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","trimEndingWhitespace","processElement","if","elseif","else","addIfCondition","block","forbidden","processIfConditions","slotScope","slotTarget","outputSourceRange","start$1","guardIESVGBug","isForbiddenTag","processPre","processRawAttrs","processFor","processIf","processOnce","end$1","isTextTag","processKey","processRef","processSlotContent","processSlotOutlet","processComponent","processAttrs","checkInFor","parseFor","inMatch","iteratorMatch","iterator1","iterator2","findPrevElement","ifConditions","slotTargetDynamic","slotBinding","getSlotName","slotBinding$1","dynamic$1","slotContainer","slotName","syncGen","hasBindings","parseModifiers","camel","argMatch","ieNSBug","ieNSPrefix","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","cloneASTElement","branch1","branch2","model$1","modules$1","isStaticKey","isPlatformReservedTag","directives$1","baseOptions","genStaticKeysCached","genStaticKeys$1","optimize","markStatic$1","markStaticRoots","static","l$1","staticInFor","staticRoot","isDirectChildOfTemplateFor","fnExpRE","fnInvokeRE","simplePathRE","esc","genGuard","modifierCode","ctrl","alt","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","keyModifier","genKeyFilter","genFilterCode","keyName","wrapListeners","bind$1","wrapData","baseDirectives","cloak","CodegenState","dataGenFns","maybeComponent","onceId","ast","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genSlot","genComponent","genData$2","genChildren","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","genDirectives","genProps","genScopedSlots","genInlineTemplate","needRuntime","hasRuntime","gen","inlineRenderFns","containsSlotChild","needsKey","generatedSlots","genScopedSlot","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","getNormalizationType","genNode","needsNormalization","genComment","genText","transformSpecialNewlines","bind$$1","staticProps","dynamicProps","createFunction","createCompileToFunctionFn","compiled","fnGenErrors","createCompilerCreator","baseCompile","finalOptions","tips","compileToFunctions","createCompiler","getShouldDecode","idToTemplate","getOuterHTML","MonthEvent","monthHeaderHeight","enableMaxHeight","removeEventWrapper","appElement","appElement_1","appointmentWrapper_1","totalCells_1","weekNumberCells","blockList","totalCells","cellDetail","processBlockEvents","eventsList_1","sDate","updateIndicatorIcon","blockSpannedList","isSameDate","isBlockIcon","blockSpannedList_1","blockEvent","spannedEvents_2","renderBlockEvents","isIcon","cloneData","actualStartTime","actualStartHour","actualEndHour","sourceRes","resources_1","isCloneElement","newRecord","appointmentDetails","getEventData","eventLocation","appointmentStartTime","appointmentEndTime","allDayString","appTime","appLocation","appendEventIcons","enableAppRender","getMoreIndicatorText","moreArgs","moreArgs_1","eventType","isAppointment","wrapperEle","arDz","CheckBoxFilterBase","isExecuteLocal","existingPredicate","foreignKeyQuery","filterState","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","dlg","searchHandler","searchBoxKeyUp","foreignKeyFilter","fColl","mPredicate","filterCollection","ejpredicate","fpred","foreignFilter","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","getLocalizedLabel","actualPredicate","filteredColumns","allowCaseSensitive","infiniteUnloadParentExistPred","getAndSetChkElem","sBox","hideSearchbox","inputargs","spinner","cBox","columnType","filterModel","btnClick","renderResponsiveFilter","dialogLabel","isResponsiveFilter","responsiveCnt","showMask","getAllData","isBlanks","filterTemplateCol","filterItemTemplate","clearFilter","fltrBtnHandler","searchInput","optr","ddlValue","isMenuNotEqual","fObj","caseSen","isNotEqual","itemsCnt","coll","infiniteFltrBtnHandler","generateNullValuePredicates","notifyFilterPrevEvent","addCurrSelection","existingPredicate_1","initiateFilter","isClearFilter","dummyDefaults","parentCurrentViewDataCount","infiniteSearchPred","arg2","arg3","arg4","arg5","arg6","firstVal","foreignQuery","predicte","parentTotalDataCount","addDistinct","filterChoiceCount","filterargs","filterObj","emptyValPredicte","generatePredicate","colData","fullData","makeInfiniteScrollRequest","filterEvent","processSearch","getPredicateFromCols","isGrid","customQuery","queryGenerate","processDataOperation","filteredColumn","parentFilteredLocalRecords","defObj","infiniteScrollMouseKeyDownHandler","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","listDiv","maskItemHeight","maskList","wrapperElem","removeMask","borderStyle","borderColor","maskLists","maskParent","infiniteRemoveElements","infiniteAppendElements","infiniteQuery","existQuery","allPromise","runArray","executeQueryOperations","args1","getDistinct","processDataSource","filterColumn","updateResult","createFilterItems","updateAllCBoxes","updateInfiniteManualSelectPred","updateIndeterminatenBtn","predmdl","focusNextOrPrev","prevElem","cBoxes","cBoxes_1","createCheckbox","dummyData","checkboxUid","nullCounter","selectAllValue","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","updateInfiniteUnLoadedCheckboxExistPred","getCheckedState","addCurrSelectionParent","updatePredArr","ejValue","currentFilterValue","enableCaseSensitivity","foreignDataObj","operate","updateDateFilter","getCaseValue","bm","CellRenderer","fData","literals_1","invokeFormatter","refreshCell","newTD","cloneAttributes","arialabelText","localeStr","fromFormatter","rowID","isCheckBoxType","DataView","gomDeva","weekdaysCaseReplace","nounCase","nominative","accusative","genitive","processHoursFunction","uk","DOCKER","TRASITION","DEFAULTBACKDROP","RIGHT","LEFT","OVER","PUSH","SLIDE","VISIBILITY","DISPLAY","MAINCONTENTANIMATION","DISABLEANIMATION","CONTEXT","SIDEBARABSOLUTE","Sidebar","setZindex","enableDock","setDock","firstRender","setMediaQuery","checkType","setType","setCloseOnDocumentClick","sidebarEleCopy","siblingElement","closeOnDocumentClick","documentclickHandler","dockSize","classELement","transitionEnd","destroyBackDrop","showBackdrop","defaultBackdropDiv","closeArguments","observedcloseArgs","setAnimation","setTimeOut","openArguments","observedopenArgs","createBackDrop","changeArguments","targetString","mediaQuery","enableGestureHandler","setEnableGestures","enableGestures","mainContentEle","sidebarEle","SidebarComponent","SidebarPlugin","lo","deAt","de","settle","cookies","buildFullPath","parseHeaders","isURLSameOrigin","requestData","requestHeaders","auth","username","password","unescape","Authorization","btoa","responseData","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","onDownloadProgress","tzmLatn","jv","esMx","shared","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","enSg","nn","relativeTimeWithSingular","relativeSeconds","lv","Day","deCh","TooltipComponent","TooltipPlugin","GridComponent","GridPlugin","PREFERRED_STRING","tzm","hookCallback","setHookCallback","hasOwnProp","isObjectEmpty","createUTC","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","fun","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","func","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","DATE","WEEK","WEEKDAY","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","createUTCDate","setUTCFullYear","firstWeekOffset","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","localWeekday","weekOffset","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","oldLocale","_abbr","require","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","W","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","quarters","quarter","isoWeek","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","chunk","cloneWithOffset","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","hasAlignedHourOffset","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isBefore","createAdder","dur","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","keepOffset","toDate","inspect","datetime","suffix","zone","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","PdfWriter","streamWriter","pdfDocument","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","pair","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","containsKey","retutnValue","InternalEnum","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","isNew","objInfo","ObjectInfo","Registered","lookFor","oi","getReference","wasNew","trySetReference","setReference","pdfObject","isSaving","objectCollectionIndex","pdfReference","StreamWriter","bufferBlob","bufferText","enc","setBomByte","includeBom","arrayUnicode","uint8","arrayUtf8","utf8","bufferArray","writeLine","PdfDocumentBase","isStreamCopied","objects","pdfCrossTable","currentSavingObject","pdfCatalog","viewerPreferences","setMainObjectCollection","setCrossTable","cTable","setCatalog","catalog","filename","SW","encoding_1","SW_1","docSave","PdfName","stringStartMark","isSaving6","position6","normalizeValue","status6","index6","crossTable","newName","replacements","Operators","forTest","whiteSpace","slash","newLine","endStream","xref","trailer","startxref","beginText","endText","beginPath","appendLineSegment","stroke","fill","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closePath","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPath","clipPathEvenOdd","endPath","setGraphicsState","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","mediaBox","decodeParms","type1","baseFont","subtype","contents","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","link","annot","uri","annots","ca","CA","xyz","dest","BM","flatedecode","bBox","cIDFontType2","cIDToGIDMap","dw","fontDescriptor","cIDSystemInfo","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","avgWidth","fontFile2","xHeight","stemH","registry","supplement","type0","identityH","toUnicode","descendantFonts","background","shading","antiAlias","function","shadingType","coords","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","centerWindow","displayTitle","fitWindow","hideMenuBar","hideToolBar","hideWindowUI","pageMode","pageLayout","duplex","printScaling","PdfDictionary","dictionary","position7","primitiveItems","archive","encrypt","dictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","newDict","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","sectionBeginSave","bRaiseEvent","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveAnnotationEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","rValue","intValue","newNumber","floatToString","returnString","PdfArray","startMark","endMark","position9","clonedObject9","isFont","internalElements","tempNumberArray","pdfNumber","status9","isSaving9","index9","markedChange","newArray","fromRectangle","bounds","tempElements","markChanged","removeAt","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","dataStream2","bCompress2","clearStream","internalStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","getCompressedString","addFilter","filterName","rh","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","SourceType","ForceEncoding","ObjectType","PdfString","bHex","position1","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","builder","Ascii","pdfEncode","stringMark","escapeSymbols","CrossTable","newString","toUnicodeArray","bAddPrefix","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","returnObject3","PdfReferenceHolder","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","PdfPageMode","PdfPageLayout","DuplexMode","PageScalingMode","PdfBoolean","currentPosition","objectStatus","saving","boolToStr","PdfViewerPreferences","_dictionaryProperties","_centerWindow","_fitWindow","_displayTitle","_splitWindow","_hideMenuBar","_hideToolBar","_hideWindowUI","_pageMode","UseNone","_pageLayout","SinglePage","_dictionary","_duplex","None","_catalog","_mapPageMode","_mapDuplexMode","_mapPageLayout","_pageScaling","AppDefault","Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","UseOutlines","UseThumbs","UseOC","UseAttachments","OneColumn","TwoColumnLeft","TwoColumnRight","TwoPageLeft","TwoPageRight","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","PdfCatalog","sections","tempDictionaryProperties","_viewerPreferences","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","prevXRef","saveSections","saveTrailer","saveTheEndess","objectCollection","objectNum","prepareSubsection","saveSubsection","Free","generation","isFree","addOffsetLength","addGenNumberLength","refString","generateFileVersion","iVersion","bNew","getSubReference","objnumber","nextObjNumber","tempkey","tempvalue","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","dereference","RegisteredObject","tempOffset","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","pointf","sizef","Rectangle","topLeft","PdfPageSize","letter","note","legal","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","rotateAngle","RotateAngle0","pageOrientation","Portrait","pageOrigin","isRotation","setSize","updateSize","Landscape","getActualSize","LineType","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","wordSpacing","showNextLineText","setColorSpace","temparg1","temparg2","op","opcode","updateY","writeComment","setColorAndSpace","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","setColourWithPattern","colours","patternName","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","grayColor","gray","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","brush","getResources","currentColorSpace","resetChanges","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Dash","Dot","DashDot","DashDotDot","pen","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","lineWidth","getPattern","dashOffset","dashPattern","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","textAlignment","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","clip","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","getCharsCount","numSymbols","readLine","text2","peekLine","line","readWord","peekWord","peek","readToEnd","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","arg7","clientSize","doLayout","rectSize","pageHeight","rectangle","lineResult","lines","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineType","FirstParagraphLine","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","WordOnly","textRemainder","wordWrap","Character","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","wrapType","PdfStringLayoutResult","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfFont","Regular","metrics","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","charactersFitted","linesFilled","layoutArea","temparg3","layouter","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","whitespacesCount","charSizeMultiplier","syncObject","PdfTransformationMatrix","radDegFactor","transformationMatrix","scale","multiply","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","Matrix","metrixElements","tempMatrix","dispose","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","ReferenceError","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","restore","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","location_1","getBrush","defaultFont","getPageFromGraphics","PdfAutomaticFieldInfo","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","dataView","getBuffer","writeFromBase64String","enc1","enc2","enc3","enc4","readNextTwoBytes","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","capacity","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","i1","i2","i3","i4","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","tableDirectory","tableKey","readString","lowestPosition","fixOffsets","minOffset","tableKeys","fontTag","ttcIdentificationNumber","tableInfo","formatSelector","readUInt16","recordsCount","nameRecords","recordSize","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","xMin","yMin","xMax","yMax","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","readBytes","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","advanceWidth","lsb","glyphWidth","readCmapTable","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Unknown","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","macintosh","addGlyph","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","firstCode","entryCount","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","isSymbol","factor","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","unknown","getString","getDefaultGlyph","readLocaTable","bShort","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","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","fontProgram","convertString","getCharWidth","codeWidth","isUnicode","sFraction","low","written","PdfFontMetrics","getAscent","getDescent","getLineGap","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","widths","swt","UnicodeTrueTypeFont","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","charWidth","internalBuffer","ttfMetrics","fontDictionary","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","formatName","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","isItalic","ForceBold","isCaseChange","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","st","doShape","ligature","ArabicShape","present","shapeCount","getShapeCount","Shapes","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","R","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","B","S","WS","charTypes","getCharacterCode","doVisualOrder","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","tt","rt","RtlRenderer","openBracket","closeBracket","wordSpace","customLayout","splitLayout","system","customSplitLayout","getGlyphIndex","glyphs","fontInternal","textDirection","bidi","layouted","addChars","reversedLine","ImageFormat","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","box","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","initializeCoordinates","addType","addSubType","PdfBorderOverlapStyle","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","mbitsPerComponent","mStream","mHeight","mWidth","mImageData","checkIfJpeg","Jpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageStream","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","marker","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","PdfResources","baseDictionary","getNames","primitive","sName","generateName","pdfNames","fonts","requireProcedureSet","procedureSetName","procSets","removeFont","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","PdfTilingBrush","mStroking","mLocation","mDictionaryProperties","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","resources1","name1","PdfGraphics","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","clipBounds","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","drawLine","stateControl","drawRectangle","xOffset","yOffset","layer","drawPathHelper","drawRoundedRectangle","arc","_pathPoints","_pathTypes","startFigure","_addArc","CloseSubpath","_drawPath","Alternate","startAngle","sweepAngle","points","_getBezierArcPoints","_addArcPoints","Bezier3","pointType","_addPoint","Start","_getLastPoint","Line","lastPoint","e1","fragAngle","numFragments","xcen","ycen","rx","ry","halfAng","kappa","pointList","theta0","theta1","cos0","cos1","sin0","sin1","Winding","isPen","isBrush","isEvenOdd","drawImage","physicalDimension","name_2","setResources","getLineBounds","lineIndex","layoutRectangle","lineCount","vShift","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","textSize","layoutedRectangle","Center","Right","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","subScript","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","nextPage","getPages","setClip","tm","getTextRenderingMode","textHeight","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","blocks","rightAlign","RightToLeft","drawUnicodeBlocks","breakUnicodeLine","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","strikeout","linePen","createUnderlineStikeoutPen","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","Left","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","TransparencyData","name_3","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","textRenderingMode","doRestoreState","popState","drawPath","pathPoints","pathTypes","fillMode","buildUpPath","constructArcPath","getBezierPoints","checkFlags","pathTypesValuesMask","startAng","getBezierArc","pt","numX1","numY1","numX2","numY2","fragAngle1","pointsList","thetaValue0","thetaValue1","transparencyObject","PdfGraphicsState","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","oPage","sc","origin","clipRect","getActualBounds","PdfCollection","PdfPageLayerCollection","parentLayerCount","optionalContent","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","PdfPageBase","defLayerIndex","pageDictionary","pdfSection","layers","defaultLayerIndex","returnlayer","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","annotation","doAdd","setPage","layoutResult","lastPosition","setColor","PdfPage","annotationCollection","defaultLayer","annotations","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","hasBackTemplates","containsTemplates","backLayer","drawTemplates","hasFrontTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","onPageAdded","document_1","getLeftIndentWidth","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","parentSettings","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","PdfSectionCollection","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","representative","removeGroup","PdfStandardFontMetricsFactory","getMetrics","Helvetica","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","fixedWidth","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","PdfStandardFont","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","PdfDocument","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","isCacheEnabled","checkPagesPresence","PdfBorders","defaultBorderPenLeft","dashStyle","defaultBorderPenRight","defaultBorderPenTop","defaultBorderPenBottom","leftPen","rightPen","topPen","bottomPen","PdfPaddings","hasLeftPad","hasRightPad","hasTopPad","hasBottomPad","leftPad","rightPad","bottomPad","topPad","PdfHorizontalOverflowType","PdfGridStyleBase","gridBackgroundBrush","gridTextBrush","gridTextPen","gridFont","gridBackgroundImage","PdfGridStyle","gridBorderOverlapStyle","Overlap","bAllowHorizontalOverflow","gridHorizontalOverflowType","gridCellSpacing","gridCellPadding","PdfGridCellStyle","gridCellBorders","PdfGridRowStyle","gridRowBackgroundBrush","setBackgroundBrush","getCell","backgroundBrush","gridRowTextBrush","setTextBrush","textBrush","gridRowTextPen","setTextPen","textPen","gridRowFont","gridRowBorder","setBorder","setParent","gridRowBackgroundImage","setBackgroundImage","ElementLayouter","layoutElement","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","break","boundsSet","layoutType","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","newBound","TextLayouter","currentBounds","pageResult","TextPageLayoutResult","remainder","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","stringResult","textFinished","doesntFit","FitElement","getTextPageBounds","shiftedRect","verticalShift","remainderText","lastLineTextBounds","PdfTextElement","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","previousPosition","calculateResultBounds","lineSize","maximumWidth","startPosition","PdfAnnotation","textFont","pdfDictionary","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfAction","PdfUriAction","uniformResourceIdentifier","PdfUriAnnotation","pdfUriAction","uriAction","PdfTextWebLink","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","calculateBounds","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfGridLayouter","gridInitialWidth","gridSize","parentCellIndex","tempWidth","childheight","hasRowSpanSpan","isRearranged","pageBounds","listOfNavigatePages","columnRanges","currentLocation","breakRow","slr","isPaginate","gridLayoutFormat","currentPageBounds","currentGraphics","FitColumnsToPage","getRow","startLocation","hType","horizontalOverflowType","allowHorizontalOverflow","measureColumnsWidth","determineColumnDrawRanges","isRowHeightSet","startColumn","endColumn","cellWidths","availableWidth","getColumn","subWidths","endArgs","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","currentRowIndex","drawHeader","getHeader","isCellMergeContinue","headerResult","drawRow","repeatRowIndex","isFinish","OnePage","getNextPageformat","repeatRow","rowResult","splitChildRowIndex","isrowFinish","ParentCell","isGridSplit","tempResult","raisePageLayouted","allowRowBreakAcrossPages","cellPadding","rowBreakHeight","isRowBreaksNextPage","rowBreakHeightValue","noOfPageCount","repeatHeader","j_1","headerRepeat","j_2","tempResult1","checkIsFisished","i_5","NestedGridLayoutResult","recalHeight","ReCalculateHeight","pageGraphics","location_2","totalwidth","i_6","columnWidth","columnSpan","drawCellBorders","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","FinishedDrawingCell","pageindex","CheckIfDefaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","raiseBeginCellDraw","PdfGridBeginCellDrawEventArgs","onBeginCellDraw","raiseAfterCellDraw","cellstyle","raiseEndCellDraw","PdfGridEndCellDrawEventArgs","onEndCellDraw","repeatFlag","PdfGridLayoutResult","measureHeight","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","rowHeightWithSpan","rowSpanExists","maxSpan","currRowIndex","LayoutFormat","FitPage","drawRowWithBreak","repeatRowNumber","isFit","rowMergeComplete","Paginate","isFitToCell","skipcell","location_4","cancelSpans","rowOverflowIndex","cellSpacing","isCustomWidth","calculateHeight","gridHeight","gridColumnWidth","cellstyle1","_rowHeight","rowBreakPageHeightCellIndex","PdfGridLayoutFormat","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","PdfCancelEventArgs","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","startRow","RowLayoutResult","layoutedBounds","bIsFinished","PdfGridCell","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","gridRowSpan","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","objectValue","isSingleGrid","columnSpanExists","isComplete","measureWidth","getTextFont","webLink","drawCellBackground","getBackgroundBrush","backgroundImage","getBackgroundImage","adjustContentLayoutArea","returnBounds","cancelSubsequentSpans","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","rowFontSplit","layoutRect","setSpan","checkSpan","childGridResult","imageBounds","borderOverlapStyle","Inside","Square","currentColIndex","compWidth","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","PdfGrid","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridHeaders","gridStyle","ispageWidth","ischildGrid","measure","parentCell","hasChanged","gridLocation","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","columnCount","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","childGridColWidth","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","pdfTemplate","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","convertSign","getSimpleDockBounds","getTemplateDockBounds","PdfNumbersConvertor","intArabic","numberStyle","Numeric","LowerLatin","arabicToLetter","LowerRoman","arabicToRoman","UpperLatin","UpperRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","calculateStyle","iStyle","equalFont","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","PdfExport","hideColumnInclude","customDataSource","isGrouping","headerOnPages","drawPosition","xPosition","yPosition","pdfPageSettings","exportWithData","processExport","headerPageNumbers","gridDrawPosition","drawPos","processSectionExportProperties","blankSpace","getPageSize","gridTheme","processExportProperties","headerThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","getFontFamily","getFontStyle","penBrushColor","hexToRgb","borderCaption","getBorderStyle","getGridPdfFont","isTrueType","headerSize","headerStyle","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordStyle","fontFamily_3","dataSourceItems","captionSummaryModel","isGroupedFooter","eCols","rowNumber","applyTextAndSpan","pdfCell","getHorizontalAlignment","getVerticalAlignment","evtArgs","setCellBorder","setCellFont","setHeaderBrush","setHyperLink","recuHeader","spanCnt","cidx","newSpanCnt","fromBottom","drawPageTemplate","fromTop","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","textPenColor","penColor","setContentFormat","documentHeader","textBrushColor","brushColor","compositeField","pageNumber","getPageNumberStyle","pageNumberType","getPenFromContent","penSize","getDashStyle","isCaption","isAggregate","sRows_1","leastCaptionSummaryIndex","aggIdx","getTemplateFunction","getSummaryWithoutTemplate","setRecordThemeStyle","borderRecord","cellLength","spanCell","gridRow_1","startIndexVal","border_1","headerFont_1","headerBrush_1","pdfTextAlignment","pdfVerticalAlignment","pdfTextPenColor","pdfBorder","pdfParagraphIndent","pdfCellPadding","textLink","verticalAlign","hex","bigint","ignoreDuplicateOf","Week","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","groupedFrozenRow","rowModelGen","focusCheck","enableHeaderFocus","validator","passiveFocus","firstHeaderCellIndex","skipAction","onBlur","setLastContentCellTabIndex","focusableToolbarItems","getFocusableToolbarItems","beforeArgs","byClick","clearOutline","handleFilterNavigation","inputSelector","buttonSelector","pagerElement","focusablePagerElements","getFocusablePagerElements","allowToPaging","checkPagerHasFocus","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","getDropDownPage","changePagerFocus","setPagerFocus","checkFirstPagerFocus","skipOn","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","swapInfo","jump","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","previousCellIndex","focusOutFromHeader","addBatchRow","clearIndicator","setPagerContainerFocus","cellColIndex","cellCol","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentTable","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","inputTarget","addNewRow","filterCell","firstEditCell","lastEditCell","focusVirtualElement","virtualData","isKeyFocus","setFocusedElement","addFocus","getFocusInfo","cellElem","focusHeader","resetFocus","getInfo","focusedColumnUid","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","matrixcs","hdrLen","isScroll","lastRowHeaderIdx","refreshAddNewRowMatrix","handlerInstance","cellPosition","gridPosition","passiveHandler","showAddNewRowFocus","restoreFocus","filterfocus","restoreFocusWithAction","internalCellFocus","headrIdx","findNextCellFocus","addedrow","forgetPrevious","toFrozen","getFocusable","allow","emptyTable","inValid","vector","incrementNumber","columnsCount","rowColumns","currentColumnCount","keyActions","indexesByKey","navigators","getCurrentFromAction","editNextRow","isLastCellPrimaryKey","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","commandCellQuery","isDirty","nextRowFocusValidate","previousRowFocusValidate","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","isCellWidth","getGridSeletion","current1","checkFilterColumn","getHeaderType","SearchBox","searchFocus","searchBlur","FormData","pipe","URLSearchParams","product","assignValue","stripBOM","SHARED","VerticalEvent","renderedAllDayEvents","overlapEvents","moreEvents","overlapList","allDayEvents","animationUiUpdate","wrapperElements","isDragging","wrapperElements_1","setAllDayRowHeight","appendEvent","getResourceList","dateCount","getStartCount","filterEvents_1","dayCount","spannedData","isSpannedEvent","isWorkDayAvailable","blockTop","blockHeight","getTopValue","getDayIndex","isRender","allDayRowTop","renderedDate","filterEvents_2","getOverlapIndex","filterEvents_3","resources_2","renderedIndex","firstColumn","currentResources","resourceIndex","timeStr","appointmentTime","appointmentLocation","recurrenceIcon","createMoreIndicator","currentDay","countWrapper","innerCountWrap","countCell","moreCount","currentDates","isDateRange","isAlreadyRendered","allDayDifference_1","allDayIndex_1","widthAdjustment","appointmentElement_1","wIndex_1","eventWrapper_1","allDayRowHeight","addOrRemoveClass","adjustOverlapElements","iconHeight","getEventLeft","tempLeft","date_1","appointmentList_1","appointment_1","recordStart_1","recordEnd_1","filterList","record_1","length1","length2","eleGuid","moreEventCount","getEventHeight","eventWrapper","sq","EXISTS","columnSelecting","columnSelected","columnDeselecting","columnDeselected","recordClick","beforeOpenAdaptiveDialog","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","commandClick","exportGroupCaption","inBoundModelChanged","colGroupRefresh","headerRefreshed","sortComplete","searchComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","refreshAggregates","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","columnWidthChanged","rowsAdded","columnDragStop","headerDrop","dataSourceModified","dblclick","bulkSave","autoCol","tooltipDestroy","preventBatch","addDeleteAction","doubleTap","beforeExcelExport","exportDetailDataBound","exportDetailTemplate","beforePdfExport","freezeRender","filterDialogCreated","filterMenuClose","initForeignKeyColumn","showEmptyGrid","rtlUpdated","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","expandChildGrid","exportRowDataBound","exportDataBound","rowPositionChanged","partialRefresh","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","filterCboxValue","detailIndentCellInfo","virtaulCellFocus","virtualScrollEdit","editReset","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","resetColumns","pdfAggregateQueryCellInfo","excelAggregateQueryCellInfo","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","setVirtualPageQuery","resetVirtualFocus","beforeCheckboxRendererQuery","destroyChildGrid","stickyScrollComplete","captionActionComplete","refreshInfinitePersistSelection","afterFilterColumnMenuClose","beforeCheckboxfilterRenderer","commandColumnDestroy","batchCnfrmDlgCancel","refreshResizePosition","renderResponsiveChangeAction","renderResponsiveColumnChooserDiv","defaultConfig","axios","spread","ViewBase","createEventTable","eventContainer","colGroupEle","scrollHeaderLabels","applyLeft","tdLeft","hiddenLeft","headerCells_2","classNames_1","headerCells_1","resHeader","agendaDaysCount","weekLength","viewStr","formattedStr","getMobileDateElement","tdElement","quickTemplate","getColElements","colElements","contentBody","colWidth_1","resourceColumn","headerCellElements","headerCellColSpan","colElements_1","wireExpandCollapseIconEvents","treeIcons","treeIcons_1","scrollWrap","renderedCount","sr","tzl","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","one","tlh","ContentRender","freezeRowElements","infiniteCache","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","setRowsInLazyGroup","prevPage","maxBlock","maxBlocks","rowElements","generator","getModelGenerator","pressedKey","renderHorizontalScrollbar","scrollbarHeight","setScrollbarHeight","virtualTable","createContentTable","initializeContentDrop","destroyForm","currentMovableRows","frag","initialPageRecords","refFrag","refHdrfrag","hdrfrag","tbdy","isColumnVirtualInfiniteProcess","isInfiniteColumnvirtualization","isGroupFrozenHdr","checkCache","isFrozenLeft","templatetoclear","updateVirtualCells","blockLoad","offsets_1","bSize","isEndBlock","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","resetStickyLeftPos","newRow","enableCacheOnInfiniteColumnVirtual","headerCellHeight","boxSizing","maintainRows","initialGroupRows","getCurrentBlockInfiniteRecords","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","testRow","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","setDisplayNone","isFreeze","getHeaderColGroup","canSkip","getInfiniteRowIndex","firstRowIndex","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","trs","currentLen","oldIndex","refreshImmutableContent","setRowValue","updateCellIndex","bo","aPossiblePrototype","CORRECT_SETTER","ptBr","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","ensureRowVisibility","parentid","preCaption","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","removeAllChildren","fil","hyAm","doesImplementInterface","checkFor","getUpdateUsingRaf","updateFunction","isExportColumns","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","gLen","dataRowCnt","agrCnt","gLevel","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","validSelector","setStyleAndAttributes","copyAttr","literals","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","popUpSpan","targetPosition","isBottomTail","getPopupLeftPosition","parentsUntil","isID","getActualPropFromColl","getUid","appendChildren","calculateAggregate","Global","isComplexField","getComplexFieldID","getParsedFieldID","isActionPrevent","clName","addRemoveActiveClasses","getFilterMenuPostion","elementVisible","dlgWidth","leftPos","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","padZero","filterObject","datePredicate","nextDate","prevObj","nextObj","predicateSt","predicateEnd","dateOnlyString","newCase","getExpandedState","getPrintGridModel","printGridModel","extendObjWithFn","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","getColumnModelByFieldName","transformV","replacedTv","rootElement","getScrollWidth","scrollElem","resetColspanGroupCaption","gridWidth","groupCaptionRowLeftRightPos","applyStickyLeftRightPosition","newColspan","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","resetCachedRowIndex","groupReorderRowObject","dropRObj","rowObjectDropIndex","orderChangeRowObjects","orderChangeRowObject","compareChanges","isChildColumn","uids","pushuid","frozenDirection","addFixedColumnBorder","resetColandRowSpanStickyPosition","getCellFromRow","addStickyColumnPosition","getCellsByTableName","getCellByColAndRowIndex","mtch_1","addBiggerDialog","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","setDisplayValue","actualIndex","addRemoveEventListener","isOn","evt_1","clearReactVueTemplates","generateExpandPredicates","filterCols","getPredicates","findCellIndex","checkActiveMatrix","checkCellIndex","activeMatrix","currentCellIndexPass","capitalizeFirstLetter","DataUtil","notEndsWith","notStartsWith","asteriskSplit","optionalSplit","regexPattern","localeCompare","extractFields","jsonArray","isLazyLoad","jsonData","groupedArray","getVal","aggs","grp","fKeyData","copyObj","lowerCaseNameSpace","upperCaseNameSpace","casing","diacritics","fnName","param1","param2","adp","rand","hexs","getItemFromComparer","castRequired","requiresCompleteRecord","prepareQuery","sampledata","requiresCounts","mainPred","childPred","cpre","sum","average","truecount","falsecount","operatorSymbols","expected","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","doesnotcontain","isnotnull","isnull","startswith","doesnotstartwith","isempty","isnotempty","wildcard","endswith","doesnotendwith","processSymbols","jsonText","iterateAndReviveArray","iterateAndReviveJson","jsonReviver","offSet","toTimeZone","secondsMs","getUTCMilliseconds","utcFormat","hrs","mins","addSelfOffset","jsonReplacer","arrayReplacer","toUTC","datefn","differenceString","localtimefn","norm","frCa","globalThis","_interopRequireWildcard","curVue","isExecute","aVue","gh","vueDefineComponent","ComponentBase","childDirObjects","isDecorator","ej2Instance","injectables","vueInjectables","prevModule","managed","getInjectedServices","curModule","curModule_1","cusEle","beforeDestroy","destroyComponent","beforeUnmount","childKey","fetchChildPropValues","curChildDir","assignValueToWrapper","$","provideValue","tempBeforeDestroyThis","curModule_2","childOption","dirProps","propRef","resolveArrayDirectives","splitKeys","keyRef","getDirectiveValues","dirProp","innerDirValues","flatMap","childSlot","tagRef","resolveComplexDirs","tagObject","resolveComplexInnerDirs","getCamelCaseProps","slot_3","resolveMultilevelComplexInnerDirs","slot_4","tagDirectives","keyTags","tagDirectives_1","tagDirective","getTagName","dirTag","children_1","tagDirChild","retObj","getVNodeValue","getMultiLevelDirValue","tagDirectories","tagKey","mulObj","tagDirectories_1","tagDir","children_2","mulLevObj","retProps","getProps","newprops","stringCompiler","returnEle","vueSlot_1","getCurrentVueSlot","createVNode","getValues","vueSlot_2","getVueSlot","provided_1","getProvideValues_1","vueinstance","vueTemplate","setup","templateVue","dataObj_1","tempRef_1","templateCompRef","_context","objkeys","objstring","intComponent","__data","objkeys_1","cInstance","provided","getProvideValue","provides","appContext","getVueChildSlot","vSlots","childSlots","getSlot","getChildVueSlot","nlBe","liIdx","selectedLi","blankIcon","menuItem","VERTICAL","DropDownButton","isPopupCreated","openPopUp","createPopupOnClick","getULElement","dropDown","popupContent","isColorPicker","appendItems","hasIcon","createAnchor","beforeDisabled","afterDisabled","getPopUpElement","appendArrowSpan","setActiveElem","activeElem","attrList","popupUnWireEvents","dropDownBtn","delegateMousedownHandler","mousedownHandler","popupWireEvents","closeActionEvents","focusoutHandler","keyEventHandler","triggerSelect","liTarget","popupElem","splitButton","appendReactElement","wrapperWidth","popupLeft","openArgs","btnModel","arrowSpan","DropDownButtonItemsDirective","DropDownButtonItemsPlugin","DropDownButtonItemDirective","DropDownButtonItemPlugin","DropDownButtonComponent","DropDownButtonPlugin","hi","CellMergeRender","targetCell_1","colSpanLen","colSpanRange","spanText","backupMergeCells","setMergeCells","generteKey","fname","splitKey","getMergeCells","mCells","getIndexFromAllColumns","vColumnIndices","normalizeArray","allowAboveRoot","basename","matchedSlash","xs","resolvedAbsolute","isAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","dirname","hasRoot","ext","extname","startDot","startPart","preDotState","AgendaBase","createAgendaContentElement","aTd","appWrapper","createAppointment","appSubjectWrap","appSubjectText","strDate","allDayStr","eventString","displayStr","appDateTime","processAgendaEvents","spanned","wireEventActions","eventElement_1","dateHeaderElement","dateHeaderElement_1","dayNavigationClick","calculateResourceTableElement","agendaDate","agendaLastDate","lastLevelInfo","tempLastLevelInfo","agendaCollection","hideEmptyAgendaDays","resDataCollection","resDayCollection","topResources","tempGroupedData","totalRowSpan","createResourceTableRow","totalCollection","renderEmptyContent","tContent","tContentCollection","rowSpanCollection","createDateHeaderElement","eTr","createTableRowElement","eTd","dTd","Agenda","agendaDates","virtualScrollTop","eventLoad","renderInitialContent","refreshEvent","refreshDate","emptyTBody","contentChild","emptyTBody_1","appointmentFiltering","updateHeaderText","nTr","cTd","agendaScrolling","filterDate","topElement","getElementFromScrollerPosition","getPreviousNextDate","scrollToValue","liDetails","getStartDateFromEndDate","dateStart","dateEnd","onAgendaScrollUiUpdate","ExportHelper","processColumns","columnPromise","fColumns","isHideColumnInclude","processHeaderCells","generateActualColumns","actualColumns","getCellCount","appendGridCells","isIgnoreFirstCell","getGridModel","parentPrimaryKeys","parentKeyField","parentRowData","exportId","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","menuWrapper","ContextMenu","isSearched","isRightToolbarMenu","gridID","excludingItems","preItems_1","itemStr","localeName","isResponsiveToolbarMenuItems","responsiveToolbarItems","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","responsiveToolbarMenu","renderResponsiveToolbarpopup","addReactToolbarPortals","bindSearchEvents","searchElement","updateSearchBox","toolbarCreated","isNormal","registerTemp","ID","renderResponsiveSearch","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","toolbarItems_1","itemObject","gID","openResponsiveToolbarMenuPopup","newArgs","tarElement","toolbarMenuElement","getMenuItems","toolbarItems_2","getLocaleText","ResponsiveToolbarMenuItemClick","setFocusToolbarItem","getFocusToolbarElements","getFocusToolbarItems","keyPressedHandler","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","gu","CORRECT_PROTOTYPE_GETTER","IE_PROTO","ObjectPrototype","F","enIe","isModelChanged","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","gObj_1","colObj","initiateSort","showPopUp","colUid","enableSortMultiTouch","allowUnsort","updateAriaAttr","relativeURL","km","isValDiff","makechanges","Clipboard","x_1","y_1","isAvail","leftCols","checkBoxSelection","colIndexes","isCell","queryCommandSupported","rowCellIndxes","NAME","NATIVE_ARRAY_BUFFER","classof","redefine","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Float32Array","Float64Array","isTypedArray","aTypedArrayConstructor","ARRAY","TypedArrayConstructor","KEY","forced","exportTypedArrayStaticMethod","et","enIn","DropDownListComponent","DropDownListPlugin","extension","mimeType","getMimeType","downloadLink","hasDownloadAttribute","isPopupBlocked","onloadend","readAsDataURL","paIn","Encoding","emitBOM","initBOM","getByteCount","validateNullOrUndefined","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","high","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint16","byteUni","byte16","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","gd","eject","nl","FooterRenderer","gridModule","modelGenerator","tFoot","renderSummaryContent","cEnd","summaries","fragment","rowrenderer","srow","onScroll","refreshCol","mheaderCol","onWidthChange","getColFromIndex","updateFooterTableWidth","getIndexByKey","isModified","gridData","idVal","agrVal","SummaryCellRenderer","refreshWithAggregate","gColumn","cellNode","curCell","Aggregate","footerRenderer","summaryIterator","cModel","gModel","xPseudo","sham","se"],"mappings":"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O,OACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,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,IACP,IAAO,IACP,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,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,OAOJ,SAASC,EAAwB9zU,GACpC,OAAO4R,EAAS5R,GAAgB,GAAI6zU,IC5WxC,SAAWpC,GACP,IAAIsC,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,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,OAOpH,SAASx9J,EAAaC,GAClB,IAAI5+K,EAAM4+K,EAAMnlG,UACZx5E,EAAQ2+K,EAAM/kG,WACd35E,EAAO0+K,EAAM9vL,cACbstV,EAASn8U,EAAQ,EACjBo8U,EAAQn8U,EACRk8U,EAAS,IACTC,GAAS,EACTD,GAAU,IAEd,IAAIE,EAAU/8V,KAAK6sD,MAAMiwS,EAAQ,KAC7BE,EAAgBD,EAAU/8V,KAAK6sD,MAAMkwS,EAAU,GAAM,EACrDE,EAAej9V,KAAK6sD,MAAM,QAAUiwS,EAAQ,OAAS98V,KAAK6sD,MAAM,SAAWgwS,EAAS,IAAMp8U,EAAMu8U,EAAgB,KACpHD,EAAU/8V,KAAK6sD,OAAOowS,EAAe,YAAc,UACnDD,EAAgBD,EAAU/8V,KAAK6sD,MAAMkwS,EAAU,GAAM,EACrD,IAAI1lW,EAAI4lW,EAAeD,EAAgB,KACnC5kW,EAAI4H,KAAK6sD,OAAOx1D,EAAI,OAAS,QAC7B7G,EAAIwP,KAAK6sD,MAAM,OAASz0D,GACxB8kW,EAAYl9V,KAAK6sD,OAAOx1D,EAAI7G,GAAK,SACrCiwB,EAAOppB,EAAI7G,EAAKwP,KAAK6sD,MAAM,QAAUqwS,GACrCx8U,EAAQ1gB,KAAK6sD,OAAOx1D,EAAI7G,GAAK,SACzBkwB,EAAQ,KACRtoB,GAAK,EACLsoB,GAAS,IAEbA,GAAS,EACTC,EAAOvoB,EAAI,KACX,IAAI+kW,EAAqBF,EAAe,KAEpCG,EAAQ,MAAS,GACjBlhM,EAAI+gM,EAAe,QACnBI,EAAMr9V,KAAK6sD,MAAMqvG,EAAI,OACzBA,GAAQ,MAAQmhM,EAChB,IAAI5hU,EAAIz7B,KAAK6sD,OAAOqvG,EAAI,OAAUkhM,GAC9BE,EAAK,GAAKD,EAAM5hU,EACpBygI,GAAQl8J,KAAK6sD,MAAMpxB,EAAI2hU,EAAQ,OAC/B,IAAIG,EAAKv9V,KAAK6sD,OAAOqvG,EAAI,SAAW,MAEzB,KAAPqhM,IACAA,EAAK,IAIT,IAFA,IAAIC,EAAUthM,EAAIl8J,KAAK6sD,MAAM,QAAU0wS,EAAK,IACxC5kW,EAAI,EACDA,EAAIikW,EAAetkW,OAAQK,IAC9B,GAAIikW,EAAejmW,SAASgC,EAAEsP,WAAY,KAAOk1V,EAC7C,MAGR,IAAIM,EAAM9kW,EAAI,MACV+kW,EAAK19V,KAAK6sD,OAAO4wS,EAAM,GAAK,IAC5BE,EAAQD,EAAK,EACbE,EAASH,EAAM,GAAKC,EACpBv+J,EAAQg+J,EAAqBP,EAAejkW,EAAI,GAAK,EAMzD,OALKwmM,EAAQ,IAAI7mM,OAAS,IACtB6mM,EAAQq+J,EACRI,EAASL,EACTI,EAAQL,GAEL,CAAE38U,KAAMg9U,EAAOj9U,MAAOk9U,EAAQ/kV,KAAMsmL,GAU/C,SAAS3vD,EAAY7uH,EAAMD,EAAOD,GAC9B,IAAI68U,EAAK38U,EACL48U,EAAK78U,EACLve,EAAKse,EACLi9U,EAAKJ,EAAK,EACVG,EAAY,GAALC,EAAW,GAAKH,EAAK,GAC5B5kW,EAAI8kW,EAAM,MACVI,EAAQ17V,EAAKy6V,EAAejkW,EAAI,GAAK,EACrCmlW,EAAaD,EAAQ,KACrB3hM,EAAIl8J,KAAK6sD,MAAMixS,EAAa,IAC5B10U,EAAIppB,KAAK6sD,OAAOqvG,EAAI,YAAc,UACtC9yI,EAAI8yI,EAAI,EAAI9yI,EAAIppB,KAAK6sD,MAAMzjC,EAAI,GAC/B,IAAI/xB,EAAI+xB,EAAI,KACRhxB,EAAI4H,KAAK6sD,OAAOx1D,EAAI,OAAS,QAC7B7G,EAAIwP,KAAK6sD,MAAM,OAASz0D,GACxB2L,EAAI/D,KAAK6sD,OAAOx1D,EAAI7G,GAAK,SACzButW,EAAO1mW,EAAI7G,EAAIwP,KAAK6sD,MAAU,QAAJ9oD,GAC1Bi6V,EAASj6V,GAAKA,EAAI,KAAO,GAAK,GAC9Bk6V,EAAQ7lW,GAAK4lW,EAAS,IAAM,KAAO,MAKvC,OAHIC,GAAS,GACTD,IAEG,IAAIjvV,KAAKkvV,EAAQ,IAAM,EAAW,IAAMF,GA/BnDzD,EAAYl7J,aAAeA,EAiC3Bk7J,EAAY9qN,YAAcA,GArM9B,CAsMG8qN,IAAgBA,EAAc,KCtMjC,IAAI4D,EAAwB,mEACxB3oU,EAAa,cACb4oU,EAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAExDC,EAAa,CACbhuW,EAAG,aACHE,EAAG,WACH+tW,EAAG,WACHnuW,EAAG,aACHM,EAAG,UACHmtF,EAAG,mBAEI2gR,EAAkB,CACzB,EAAK,QACL,EAAK,MACL,EAAK,UACL,EAAK,UACL,EAAK,OACL,EAAK,SACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,QACL,EAAK,aACL,EAAK,WACL,EAAK,WACL,EAAK,MACL,EAAK,gBAELhC,EAAgB,gBAOhB,EAA4B,WAC5B,SAASiC,KA2QT,OAjQAA,EAAWp8G,WAAa,SAAUjvO,EAASi7F,EAAQqwP,GAC/C,IAAIzjW,EAAQxM,KACRkwW,EAAa,GAAKC,eAAeF,EAAMtrV,EAASi7F,EAAO3+G,UACvDmvW,EAAYlkU,EAAS,uBAAwBgkU,GAC7CrN,EAAaqN,EAAWrN,WACxB3/U,EAAgB,CAAEmtV,UAAW,GAAKC,aAAa5wW,KAAKkgH,EAAO3+G,WAC3D2pW,KAAchrP,EAAOsV,mBACrBtV,EAAS,GAAK2wP,yBAAyB3wP,EAAQj7F,IAEnD,IAAI6rV,EAAa5wP,EAAO17F,QACpB,GAAKusV,oBAAoB7wP,EAAOz7F,SAAU+rV,EAAWrN,WAAYjjP,EAAO/oG,MAAM,EAAO+zV,IAAajmV,EAAU,IAEhH,GADAzB,EAAcwtV,cAAgB9F,IAAa1+T,EAAS,gBAAiB22T,GAAc,GAAK8N,iBAAiBT,EAAWrN,YAChHn7P,EAAY8oQ,GACZr7T,EAAW,oDAEV,CACDq7T,EAAa,GAAKI,wBAAwBJ,GACtC5F,MACA4F,EAAaA,EAAW/tV,QAAQ,KAAM,MAE1CS,EAAcqH,QAAUimV,EACxBttV,EAAc2tV,UAAYjG,IACtBN,EAAO,GAAI8F,GAAa,EAAOvC,gBAAgBqC,EAAWY,aAAc,EAAOxE,mBAAmB2D,IAEtG,IADA,IAAIc,EAAeP,EAAWroW,MAAMwnW,IAA0B,GACrDz5V,EAAK,EAAG86V,EAAiBD,EAAc76V,EAAK86V,EAAejnW,OAAQmM,IAAM,CAC9E,IAAIklC,EAAM41T,EAAe96V,GACrBuU,EAAM2wB,EAAIrxC,OACVm/G,EAAO9tE,EAAI,GAIf,OAHa,MAAT8tE,IACAA,EAAO,KAEHA,GACJ,IAAK,IACL,IAAK,IACG0hP,IAEA1nV,EAAckvO,QAAUlmN,EAAS,QAAU,GAAK+kU,WAAWxmV,GAAMo4U,GAIjE3/U,EAAckvO,QAAU89G,EAAWrN,WAAW,GAAK3oN,MAAMlzG,GAAY,GAAKiqU,WAAWxmV,IAEzF,MACJ,IAAK,IACL,IAAK,IACGmgV,IAEA1nV,EAAciP,MAAQ+Z,EAAS,UAAY,GAAK+kU,WAAWxmV,GAAMo4U,GAIjE3/U,EAAciP,MAAQ+9U,EAAWrN,WAAW,GAAK1wU,OAAO6U,GAAY,GAAKiqU,WAAWxmV,IAExF,MACJ,IAAK,IACDvH,EAAcguV,WAAatG,IACvB1+T,EAAS,aAAc22T,GAAc32T,EAAS,yBAA0B22T,GAC5E,MACJ,IAAK,IAED,IAAIsO,EAAS1mV,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAChEvH,EAAckuV,IAAMxG,IAAa1+T,EAAS,OAAQ22T,GAAc32T,EAAS,QAAUilU,EAAOjB,EAAWrN,YACrG,MACJ,IAAK,IACD3/U,EAAcuS,SAAWyW,EAAS,sBAAuBgkU,EAAWY,cACpE,QAIhB,OAAO,SAAU7qW,GACb,OAAIod,MAAMpd,EAAM0lG,WACL,KAEJn/F,EAAM6kW,iBAAiBprW,EAAOid,KAU7C8sV,EAAWqB,iBAAmB,SAAUprW,EAAOsG,GAK3C,IAJA,IAAIge,EAAUhe,EAAQge,QAClB+f,EAAM,GACNqyH,EAAUpyI,EAAQpiB,MAAM,GAAKmpW,gBAC7BC,EAAUvxW,KAAKwxW,oBAAoBvrW,EAAOsG,EAAQ8jW,WAC7Cn6V,EAAK,EAAGu7V,EAAY90M,EAASzmJ,EAAKu7V,EAAU1nW,OAAQmM,IAAM,CAC/D,IAAI/N,EAAQspW,EAAUv7V,GAClB0T,EAAWzhB,EAAM4B,OACjBm/G,EAAO/gH,EAAM,GACJ,MAAT+gH,IACAA,EAAO,KAEX,IAAIwoP,OAAS,EACTC,EAAY,GACZv4L,OAAW,EACXw4L,OAAgB,EAChBC,EAAS,GACb,OAAQ3oP,GACJ,IAAK,IACL,IAAK,IACDwoP,EAASH,EAAQp/U,MACbvI,EAAW,EAEX0gB,GAAO/9B,EAAQ4lB,MAAMu/U,GAGrBt4L,GAAW,EAEf,MACJ,IAAK,IACL,IAAK,IAED9uI,GAAO/9B,EAAQ6lP,QAAQw9G,EAAW3pW,EAAMwlG,WACxC,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADA2tE,GAAW,EACE,MAATlwD,EACAwoP,EAASH,EAAQjnV,UAEhB,GAAa,MAAT4+F,EAAc,CACnBkwD,GAAW,EACXw4L,GAAgB,EAEhBD,EAAY1rW,EAAM4pW,EAAW3mP,MAASxvG,WACtCi4V,EAAYA,EAAUlzU,UAAU,EAAG7U,GACnC,IAAIkoV,EAAYH,EAAU5nW,OAC1B,GAAI6f,IAAakoV,EAAW,CACxB,GAAIloV,EAAW,EACX,SAEJ,IAAK,IAAIxf,EAAI,EAAGA,EAAIwf,EAAWkoV,EAAW1nW,IACtCunW,EAAY,IAAMA,EAAUj4V,WAGpCm4V,GAAUF,OAIVD,EAASzrW,EAAM4pW,EAAW3mP,MAEjB,MAATA,IACAwoP,EAASA,EAAS,IAAM,IAE5B,MACJ,IAAK,IACDE,GAAgB,EAChBC,GAAUN,EAAQn/U,KACD,IAAbxI,IACAioV,EAASA,EAAOh9M,OAAOg9M,EAAO9nW,OAAS,IAE3C,MACJ,IAAK,IAED,IAAIgoW,EAAQ9rW,EAAM6kB,WAAa,GAAK,KAAO,KAE3Cwf,GAAO/9B,EAAQ2kW,WAAWa,GAC1B,MACJ,IAAK,IAED,IAAIC,EAAM/rW,EAAM+a,cAAgB,EAAI,EAAI,EAEpCixV,EAAO1lW,EAAQ6kW,IAAIY,GACnBpI,EAAkBqI,KAElBA,EAAO1lW,EAAQ6kW,IAAIY,EAAM,EAAI,IAEjC1nU,GAAO2nU,GAAQ,GACf,MACJ,IAAK,IACD3nU,GAAkB,OAAVniC,EAAoB,IAAOA,EAAMsa,QAAQ,KAAM,IACvD,MACJ,IAAK,IAED,IAAI4S,EAAWpvB,EAAMwa,oBAEjByxV,EAAatoV,EAAW,EAAK,QAAUrd,EAAQkpB,SAAS08U,WAC5DD,EAAYA,EAAUzvV,QAAQ,KAAMlW,EAAQskW,UAAU9C,eACrC,IAAb14U,EACAiV,GAAO/9B,EAAQkpB,SAAS28U,eAGxBR,GAAgB,EAChBC,EAAS7xW,KAAKqyW,iBAAiBh9U,EAAU68U,IAE7CL,EAAStlW,EAAQkpB,SAAS68U,UAAU7vV,QAAQ,QAASovV,GACrD,MACJ,IAAK,IAEDvnU,GAAO/9B,EAAQskW,UAAU/C,cAAcC,GACvC,MACJ,IAAK,IACDzjU,GAAO/9B,EAAQmkW,cACf,MACJ,IAAK,IACDt3L,GAAW,EACXs4L,EAAS,GAAKa,cAActsW,GAC5B,MACJ,QACIqkC,GAAOniC,EAEXixK,IACAw4L,GAAgB,EAChBC,EAAS7xW,KAAKwyW,oBAAoBd,EAAQ9nV,IAE1CgoV,IACAtnU,GAAO,EAAO2iU,kBAAkB4E,EAAQ,GAAKY,eAAgBlmW,EAAQskW,UAAU37F,SAGvF,OAAO5qO,GAEX0lU,EAAWwB,oBAAsB,SAAUvrW,EAAOoqW,GAC9C,OAAIA,EACOtE,EAAYl7J,aAAa5qM,GAE7B,CAAEmsB,KAAMnsB,EAAM+a,cAAemR,MAAOlsB,EAAM8lG,WAAa,EAAGzhF,KAAMrkB,EAAM0lG,YASjFqkQ,EAAWwC,oBAAsB,SAAUhuV,EAAKiG,GAC5C,IAAI6f,EAAM9lB,EAAM,GAChB,OAAY,IAARiG,GAA4B,IAAf6f,EAAIvgC,OACV,IAAMugC,EAEVA,GAUX0lU,EAAWqC,iBAAmB,SAAUK,EAAMnoV,GAC1C,IAAI/d,EAAQxM,KACR2yW,EAAOpoV,EAAQlqB,MAAM,KACrBuyW,EAAaD,EAAKD,EAAO,EAAI,EAAI,GACjCvxE,EAAK1vR,KAAKyuI,IAAIwyN,GAClB,OAAoBE,EAAWnwV,QAAQ,WAAW,SAAU24B,GACxD,IAAI3wB,EAAM2wB,EAAIrxC,OACV8oW,GAA+B,IAAtBz3T,EAAIluC,QAAQ,KACzB,OAAOV,EAAMgmW,oBAAoB/gW,KAAK6sD,MAAMu0S,EAAU1xE,EAAK,GAAOA,EAAK,IAAM12Q,OAG9EulV,EA5QoB,GCrC3B8C,EAAY,CACZ,GAAM,2BACN,GAAM,2BACN,GAAM,wBACN,GAAM,yBAENC,EAAc,cACdC,EAAY,YACZ,EAAS,CAAC,WAAY,MAAO,QAAS,UAAW,eAMjD,EAA8B,WAC9B,SAASC,KAwWT,OA9VAA,EAAaC,gBAAkB,SAAUvuV,EAASi7F,EAAQqwP,GACtD,IAIIkD,EAJA3mW,EAAQxM,KACRozW,EAAW9I,EAAO,GAAI1qP,GACtByzP,EAAW,GACXC,EAAW,GAEXpD,EAAa,GAAKC,eAAeF,EAAMtrV,EAAS,IAAI,GACpDyrV,EAAYF,EAAW/xU,cAC3Bm1U,EAASC,aAAe3I,IAAaN,EAAO,GAAI8F,GAC5C,EAAOvC,gBAAgBqC,EAAWY,aAAc,EAAOxE,mBAAmB2D,IAAO,GACrFqD,EAASE,eAAiB5I,IAAa1+T,EAAS,iBAAkBkkU,GAAa,GAAKqD,kBAAkBvD,EAAW/xU,cAAei1U,EAAS/4U,UAAYq5U,GAAqB9zP,EAAO+zP,WAEjLL,EAASM,cAAgBhJ,IAAa1+T,EAAS,4BAA6BkkU,GACxEkD,EAASC,aAAazF,cAAc,GAAKiF,GAC7CO,EAASO,YAAcjJ,IAAa1+T,EAAS,0BAA2BkkU,GACpEkD,EAASC,aAAazF,cAAc,GAAKkF,GAC7C,IAAIc,EAAUR,EAASC,aAAazF,cACpC,GAAKluP,EAAa,SAAO,GAAKyhP,YAAY3hW,KAAKkgH,EAAO17F,QAClDmvV,EAAW,GAAKU,aAAan0P,EAAO17F,OAAQovV,EAAUpD,EAAW/xU,mBAEhE,CAkBD,GAjBAmsU,EAAO8I,EAAU,GAAKY,yBAAyBp0P,EAAO17F,QAAU,MAChEkvV,EAASa,WAA+B,aAAlBb,EAASv8V,KAC/Bu8V,EAASc,UAA8B,YAAlBd,EAASv8V,KACzB+zV,MACDuI,EAAgB,GAAKgB,iBAAiBf,EAASv8V,KAAMy8V,EAASC,aAAajG,aAAc4C,EAAW/xU,cAAei1U,EAASgB,YAEhIhB,EAASiB,SAAWr0W,KAAKs0W,gBAAgBlB,EAASmB,yBAA0BnB,EAASoB,0BAA0B,GAC/Gx0W,KAAKs0W,gBAAgBlB,EAASx3U,sBAAuBw3U,EAASv3U,uBAAuB,GAAO,GACvF6rE,EAAY0rQ,EAASqB,kBACtBrB,EAASv3U,sBAAwBu3U,EAASx3U,sBAAwBw3U,EAASqB,gBAE3E/sQ,EAAY0rQ,EAASt3U,eACrBs3U,EAASt3U,aAAc,GAEvBs3U,EAASa,aAAerJ,MACxBuI,EAAgBA,EAAc1wV,QAAQ,UAAW,GAAKiyV,kBAErD9J,IAUDyI,EAASsB,MAAQrK,EAAO,GAAI,GAAIp+T,EAASknU,EAASv8V,KAAO,QAASu5V,IAClEiD,EAASxgU,MAAQy3T,EAAO,GAAI,GAAIp+T,EAASknU,EAASv8V,KAAO,QAASu5V,IAC5C,aAAlBgD,EAASv8V,MAAuB+oG,EAAOvlF,UACvC,GAAKu6U,sBAAsB,CAACvB,EAASxgU,MAAOwgU,EAASsB,OAAQrB,EAASE,eAAgB5zP,EAAOvlF,cAbpF,CACb,IAAIh6B,EAAQ8yW,EAAc9yW,MAAM,KAChCgzW,EAASsB,MAAQ,GAAKE,cAAcx0W,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAMizW,EAASE,gBAC/EH,EAASxgU,MAAQ,GAAKgiU,cAAcx0W,EAAM,IAAI,EAAOizW,EAASE,gBAC1DJ,EAASt3U,cACTs3U,EAAS0B,eAAiBhB,EAAQ,EAAO,IACzCV,EAASptE,UAAYhmS,KAAK+0W,mBAAmB10W,EAAM,KAU3D,IAAI20W,EAAUttQ,EAAY0rQ,EAASv3U,uBAInC,GAHIm5U,IACA5B,EAASv3U,sBAAwBw3U,EAASsB,MAAMM,iBAEhDvtQ,EAAY0rQ,EAASx3U,uBAAwB,CAC7C,IAAIs5U,EAAO7B,EAASsB,MAAMQ,gBAC1B/B,EAASx3U,sBAAwB8rE,EAAYwtQ,IAAS9B,EAASc,UAAY,EAAIgB,EAEnF,IAAIE,EAAQhC,EAASv3U,sBACjBw5U,EAAQjC,EAASx3U,sBAChB8rE,EAAY0tQ,IAAW1tQ,EAAY2tQ,IAChCD,EAAQC,IACRjC,EAASx3U,sBAAwBw5U,GAM7C,OAFA9K,EAAO+I,EAASsB,MAAOvB,GACvB9I,EAAO+I,EAASxgU,MAAOugU,GAChB,SAAUntW,GACb,OAAIod,MAAMpd,GACC6tW,EAAQ,EAAO,IAEhBwB,SAASrvW,GAGZuG,EAAM+oW,mBAAmBtvW,EAAOotW,EAAUC,EAAU1zP,GAFhDk0P,EAAQ,EAAO,MAWlCb,EAAa8B,mBAAqB,SAAUxqV,GACxC,IAAI+f,EAAM,GACNniC,EAAQoiB,EAAQpiB,MAAM,GAAKqtW,mBAC/B,GAAIrtW,GAASA,EAAM,GAAI,CACnB,IAAI+pW,EAAY/pW,EAAM,GAClBgB,EAAI+oW,EAAU1zU,YAAY,KAC9B,IAAW,IAAPr1B,EAAU,CACV,IAAIslC,EAAOyjU,EAAU7xW,MAAM,KAAK,GAChCiqC,EAAImrU,QAAWhnU,EAAK1kC,OAASZ,EAAK,EAClC,IAAIxH,EAAIuwW,EAAU1zU,YAAY,IAAKr1B,EAAI,IAC5B,IAAPxH,IACA2oC,EAAIorU,UAAYvsW,EAAI,EAAIxH,IAIpC,OAAO2oC,GAWX2oU,EAAaqB,gBAAkB,SAAUqB,EAAMC,EAAMC,EAAgBC,GACjE,IAAIC,EAASD,EAAa,IAAM,IAC5BE,EAAO,EACPC,EAAOnD,EAAU,IAAMiD,GAEvBG,EAAOpD,EAAU,IAAMiD,GAS3B,GARKruQ,EAAYiuQ,KACb31W,KAAKm2W,WAAWR,EAAMM,EAAMH,GAC5BE,KAECtuQ,EAAYkuQ,KACb51W,KAAKm2W,WAAWP,EAAMM,EAAMJ,GAC5BE,KAES,IAATA,EAAY,CACZ,KAAIL,EAAOC,GAIP,OAAO,EAHPzgU,EAAW+gU,EAAO,kCAAoCD,QAMrDJ,GAA2B,IAATG,GACvB7gU,EAAW,OAAS+gU,EAAO,MAAQA,EAAO,mBAE9C,OAAO,GAUXjD,EAAakD,WAAa,SAAU3xV,EAAKgd,EAAMs0U,GAC3C,IAAIlyO,EAAQkyO,EAAa,CAAC,EAAG,IAAM,CAAC,EAAG,KACnCtxV,EAAMo/G,EAAM,IAAMp/G,EAAMo/G,EAAM,KAC9BzuF,EAAW3T,EAAO,iCAAmCoiG,EAAM,GAAK,KAAOA,EAAM,KAYrFqvO,EAAasC,mBAAqB,SAAUtvW,EAAOmtW,EAAUE,EAAU1zP,GACnE,IAAI/sD,EACJ,IAAI60C,EAAY0rQ,EAASuB,MAAM99V,MAA/B,CAIQ5Q,EAAQ,GACRA,IAAiB,EACjB4sD,EAAUugT,EAASuB,OAGnB9hT,EADe,IAAV5sD,GACKmtW,EAASgD,UAGThD,EAASvgU,MAEvB,IAAIwjU,EAAS,GAIb,GAHIxjT,EAAQqhT,YACRjuW,GAAgB,KAEhB4sD,EAAQwhT,SACRgC,EAASr2W,KAAKs2W,yBAAyBrwW,EAAO4sD,EAAQ2hT,yBAA0B3hT,EAAQ0hT,+BAOxF,GAJA8B,EAASr2W,KAAKu2W,gBAAgBtwW,EAAO4sD,EAAQh3B,sBAAuBg3B,EAAQj3B,sBAAuBgkF,GAC/F/sD,EAAQ2jT,uBACRH,EAASr2W,KAAKy2W,uBAAuBJ,EAAQxjT,EAAQ2jT,uBAErDlD,EAASoD,gBAAkB7jT,EAAQh3B,sBAAwBg3B,EAAQj3B,uBAChE,WAAWl8B,KAAK22W,GAAS,CAI5B,IAHA,IAAI5nU,EAAO4nU,EAAOh2W,MAAM,KACpBugC,EAAc6N,EAAK,GACnBhkB,EAAMmW,EAAY72B,OACbK,EAAIqgB,EAAM,EAAGrgB,GAAK,EAAGA,IAAK,CAC/B,KAA4B,MAAxBw2B,EAAY,GAAKx2B,IAAcA,GAAKyoD,EAAQh3B,uBAI5C,MAHA+E,EAAcA,EAAY7qB,MAAM,EAAG3L,GAM3CisW,EAAS5nU,EAAK,GAAK,IAAM7N,EAcjC,MAXqB,eAAjBiyB,EAAQh8C,OACRw/V,EAASpwW,EAAM0wW,cAAc9jT,EAAQj3B,uBACrCy6U,EAASA,EAAO5zV,QAAQ,IAAK6wV,EAASC,aAAazF,cAAc,EAAO,MAE5EuI,EAASA,EAAO5zV,QAAQ,IAAK6wV,EAASC,aAAazF,cAAc,EAAO,KACxEuI,EAA4B,sBAAnBxjT,EAAQ3uC,OAAiClkB,KAAK42W,kBAAkBxuW,SAASiuW,EAAQ,KAAOA,EAC7FxjT,EAAQ/2B,cAERu6U,EAASr2W,KAAK62W,aAAaR,EAAQxjT,EAAQmzO,UAAUyvE,QAAS5iT,EAAQiiT,gBAAkB,IAAKxB,EAASC,aAAazF,cAAc,EAAO,KAAO,IAAKj7S,EAAQmzO,UAAU0vE,YAE1KW,EAAS,EAAOpJ,kBAAkBoJ,EAAQ,GAAK5D,eAAgBa,EAASC,aAAar+F,QAC/D,QAAlBriN,EAAQikT,MACDjkT,EAAQikT,MAGA,MAAXT,GAAkBz2P,GAA4B,MAAlBA,EAAO17F,OAC5BmyV,EAASxjT,EAAQkkT,KAErBlkT,EAAQikT,MAAQT,EAASxjT,EAAQkkT,OAYpD9D,EAAaqD,yBAA2B,SAAUrwW,EAAOme,EAAKlD,GAC1D,IACI81V,EADAvoU,EAAOxoC,EAAQ,GAEf8D,EAAS0kC,EAAK1kC,OAClB,OAAIA,EAASqa,EACFne,EAAMgxW,YAAY7yV,IAGzBqqB,EAAOxoC,EAAMgxW,YAAY/1V,GACzB81V,GAAMvoU,EACCuoU,EAAK,KAapB/D,EAAa4D,aAAe,SAAUryV,EAAK0yV,EAAQC,EAAKC,EAAeC,GACnE,IAAIhjR,GAAQu1Q,EAAkByN,IAAsB,IAAXA,EACrCh3W,EAAQmkB,EAAInkB,MAAM+2W,GAClBE,EAASj3W,EAAM,GACf0J,EAASutW,EAAOvtW,OAChBqxC,EAAM,GACV,MAAOrxC,EAASmtW,EACZ97T,EAAMk8T,EAAOvhW,MAAMhM,EAASmtW,EAAQntW,IAAWqxC,EAAIrxC,OAC9CotW,EAAM/7T,EAAO,IAClBrxC,GAAUmtW,EACN7iR,IACA6iR,EAASG,EACThjR,GAAO,GAIf,OADAh0F,EAAM,GAAKi3W,EAAOvhW,MAAM,EAAGhM,IAAWqxC,EAAIrxC,OAASotW,EAAM,IAAM/7T,EACxD/6C,EAAMsU,KAAKyiW,IAWtBnE,EAAasD,gBAAkB,SAAUtwW,EAAOme,EAAKlD,EAAK0+F,GACtD,IAAInxE,GAAQxoC,EAAQ,IAAI5F,MAAM,KAAK,GAC/B0J,EAAS0kC,EAAOA,EAAK1kC,OAAS,EAClC,GAAIqa,GAAOra,EAASqa,EAAK,CACrB,IAAIkmB,EAAM,GACV,GAAe,IAAXvgC,EAGC,CACDugC,GAAOrkC,EACP,IAAK,IAAIinC,EAAI,EAAGA,EAAI9oB,EAAMra,EAAQmjC,IAC9B5C,GAAO,IAEX,OAAOA,EAEX,OATIA,EAAMrkC,EAAM06B,QAAQvc,GASjBne,EAAM06B,QAAQvc,GAEpB,IAAKwlV,EAAkB1oV,KAASnX,EAASmX,GAAe,IAARA,GACjD,OAAOjb,EAAM06B,QAAQzf,GAEzB,IAAIk6B,EAAMn1C,EAAQ,GAIlB,MAHe,MAAXm1C,EAAI,IAAcwkE,GAA4B,WAAlBA,EAAO17F,SACnCk3B,EAAMA,EAAIrlC,MAAM,IAEbqlC,GASX63T,EAAawD,uBAAyB,SAAUxwW,EAAOme,GACnD,IAAIqqB,EAAOxoC,EAAM5F,MAAM,KACnBk3W,EAAO9oU,EAAK,GACZhkB,EAAM8sV,EAAKxtW,OACf,GAAI0gB,EAAMrG,EAAK,CACX,IAAK,IAAIha,EAAI,EAAGA,EAAIga,EAAMqG,EAAKrgB,IAC3BmtW,EAAO,IAAMA,EAEjB9oU,EAAK,GAAK8oU,EAEd,OAAO9oU,EAAK95B,KAAK,MAQrBs+V,EAAa2D,kBAAoB,SAAU3wW,GACvC,GAAIA,GAAS,IAAQ,CACjBA,GAAS,IAET,IAAI+G,EAAK/G,EAAMyT,WAAWrZ,MAAM,KAAuBm3W,GAAPxqW,EAAG,GAAcA,EAAG,IACpE,OAAOwqW,IAAYA,EAAQ/4U,UAAU,EAAG,IAAM,EACxChtB,KAAKsxC,KAAK98C,GAAOyT,WACjBjI,KAAK6sD,MAAMr4D,GAAOyT,WAE5B,MAAO,IAEJu5V,EAzWsB,GCb7B,EAAa,cACbwE,EAAY,WACZ,EAAa,CACbz0W,OAAQ,aACRF,KAAM,WACNuvB,OAAQ,aACRH,IAAK,UACLC,MAAO,WACPg9E,aAAc,mBAEdh9E,EAAQ,SAOR,EAA4B,WAC5B,SAASulV,KA4YT,OAlYAA,EAAWC,WAAa,SAAUhzV,EAASi7F,EAAQqwP,GAC/C,IAAIzjW,EAAQxM,KACRkwW,EAAa,GAAKC,eAAeF,EAAMtrV,EAASi7F,EAAO3+G,UACvD22W,EAAa,EAAOxK,yBAAyB8C,EAAWY,aAAc,EAAOxE,mBAAmB2D,IAAO,EAAOrF,KAC9GiN,EAAe,GACfjN,KAAchrP,EAAOsV,mBACrBtV,EAAS,GAAK2wP,yBAAyB3wP,EAAQj7F,IAEnD,IAGImzV,EAHAtH,EAAa5wP,EAAO17F,QACpB,GAAKusV,oBAAoB7wP,EAAOz7F,SAAU+rV,EAAWrN,WAAYjjP,EAAO/oG,MAAM,EAAO+zV,IAAajmV,EAAU,IAC5GozV,EAAc,GAElB,GAAIrwQ,EAAY8oQ,GACZr7T,EAAW,oDAEV,CACDq7T,EAAa,GAAKI,wBAAwBJ,GAC1CqH,EAAe,CAAExH,UAAW,GAAKC,aAAa5wW,KAAKkgH,EAAO3+G,UAAWspB,QAASimV,EAAYwH,aAAc,GAAIrzV,QAASA,GAUrH,IATA,IAAIosV,EAAeP,EAAWroW,MAAM,GAAKmpW,iBAAmB,GACxD1nV,EAAWmnV,EAAahnW,OACxBkuW,EAAgB,EAChBC,EAAe,EACfC,GAAiB,EACjBC,EAAQR,EAAWj6U,aAEnBkzU,EAAYjG,IAAasF,EAAWY,aAAauH,QACjD,EAAOxK,gBAAgBqC,EAAWY,aAAc,EAAOxE,mBAAmB2D,IACrE7lW,EAAI,EAAGA,EAAIwf,EAAUxf,IAAK,CAC/B,IAAIgxC,EAAM21T,EAAa3oW,SAASgC,EAAEsP,WAAY,KAC1C+Q,EAAM2wB,EAAIrxC,OACVm/G,EAAmB,MAAX9tE,EAAI,GAAc,IAAMA,EAAI,GACpCg+H,OAAW,EACXk/L,OAAY,EAEZC,EAAUxI,EAAgB7mP,GAC1BsvP,EAAoB,IAAR/tV,EAAa,GAAK,IAKlC,OAJI0tV,IACAF,EAAgBC,EAChBC,GAAiB,GAEbjvP,GACJ,IAAK,IACL,IAAK,IAED,IAAIuvP,OAAW,EAGXA,EAFA7N,IAEW1+T,EAAS,QAAU,GAAK+kU,WAAWxmV,GAAMylV,EAAWrN,YAIpDqN,EAAWrN,WAAW,GAAK3oN,MAAM,GAAY,GAAK+2N,WAAWxmV,IAG5E,IAAIiuV,EAAa,EAAOlM,cAAciM,GAEtCV,GAAe,IAAMhvW,OAAOmU,KAAKw7V,GAAY/jW,KAAK,KAAO,IACzD,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADA2jW,GAAY,GACE,MAATpvP,GAAyB,MAATA,IAAiBz+F,EAAM,EAAG,CAC3C,IAAI+tI,OAAY,EAGZA,EAFAoyM,IAEY1+T,EAAS,UAAY,GAAK+kU,WAAWxmV,GAAMylV,EAAWrN,YAItDqN,EAAWrN,WAAW1wU,GAAO,GAAY,GAAK8+U,WAAWxmV,IAGzEotV,EAAaU,GAAW,EAAO/L,cAAch0M,GAE7Cu/M,GAAe,IAAMhvW,OAAOmU,KAAK26V,EAAaU,IAAU5jW,KAAK,KAAO,SAEnE,GAAa,MAATu0G,EAAc,CACnB,GAAIz+F,EAAM,EACN,SAEJ2uJ,GAAW,EACX2+L,GAAe,IAAMK,EAAQA,EAAQ,IAAMA,EAA5B,UAGfh/L,GAAW,EACX2+L,GAAe,IAAMK,EAAQA,EAAQI,EAAW,IAEvC,MAATtvP,IACA2uP,EAAac,QAAS,GAE1B,MACJ,IAAK,IAED,IAAI79T,EAAc,IAARrwB,EAAY,IAAM,GAC5BstV,GAAe,IAAMK,EAAQt9T,EAAMs9T,EAAQ,IAC3C,MACJ,IAAK,IACDE,EAAYl/L,GAAW,EAEnB2+L,GADQ,IAARttV,EACe,IAAM2tV,EAAQA,EAAQ,IAGtB,IAAMA,EAAQ,IAAM3tV,EAAM,MAE7C,MACJ,IAAK,IACD6tV,GAAY,EAEZ,IAAIM,EAAchO,IACd1+T,EAAS,aAAcgkU,EAAWrN,YAClC32T,EAAS,yBAA0BgkU,EAAWrN,YAElDgV,EAAaU,GAAW,EAAO/L,cAAcoM,GAE7Cb,GAAe,IAAMhvW,OAAOmU,KAAK26V,EAAaU,IAAU5jW,KAAK,KAAO,IACpE,MACJ,IAAK,IACD2jW,GAAY,EAEZ,IAAInH,EAAS1mV,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAEhEotV,EAAaU,GAAW,EAAO/L,cAAc5B,IACzC1+T,EAAS,OAAQgkU,EAAWrN,YAAc32T,EAAS,QAAUilU,EAAOjB,EAAWrN,aAEnFkV,GAAe,IAAMhvW,OAAOmU,KAAK26V,EAAaU,IAAU5jW,KAAK,KAAO,KACpE,MACJ,IAAK,IAED,IAAIkkW,GAAO,IAAIr4V,MAAOC,oBACtB63V,EAAsB,IAATO,EAEbhB,EAAaU,GAAWrsU,EAAS,sBAAuBgkU,EAAWY,cAEnE,IAAIgI,EAAQjB,EAAaU,GACzBT,EAAYrtV,EAAM,EAElB,IAAIsuV,EAAWjB,EAAW,QAAUgB,EAAM3G,WAC1C4G,EAAWA,EAASt2V,QAAQ,KAAMouV,EAAU9C,eAC5CgK,GAAe,IAAM/3W,KAAKg5W,kBAAkBD,EAAUD,EAAOV,GAAS,KACtED,GAAiB,EACjBD,EAAeJ,EAAW,EAAI,GAC9B,MACJ,IAAK,IAED,IAAImB,EAAU79T,EAAI34B,QAAQ,KAAM,IAChCs1V,GAAe,IAAMkB,EAAU,KAC/B,MACJ,QACIlB,GAAe,UACf,MAKR,GAHIO,IACAT,EAAaG,aAAa,GAAKO,GAAW,CAAEn/L,SAAUA,EAAUvzK,IAAKuE,EAAI,EAAI6tW,EAAeH,SAAUA,IAEtG1tW,IAAMwf,EAAW,IAAMggV,EAAkBmO,GAAc,CACvD,IAAInL,EAAS/1U,OACbghV,EAAaqB,YAAc,IAAItM,EAAO,IAAMmL,EAAc,IAAK,OAI3E,OAAO,SAAU9xW,GACb,IAAIkzW,EAAkB3sW,EAAM4sW,kBAAkBnzW,EAAO4xW,EAAcD,GACnE,GAAIhO,EAAkBuP,KAAqBpwW,OAAOmU,KAAKi8V,GAAiBpvW,OACpE,OAAO,KAEX,GAAI8tW,EAAaxH,UAAW,CACxB,IAAIgJ,EAAO,GACP9K,EAAQ4K,EAAgB/mV,KACxBknV,EAAQH,EAAgBjnV,IACxBo8U,EAAS6K,EAAgBhnV,MACzBonV,EAAShL,EAASA,EAAQ,GAAM,GAChCiL,EAAkC,IAAlBD,EAAOxvW,OACtBwkW,GAAUD,GAAWgL,IAASE,IAC/BH,EAAOtN,EAAYl7J,aAAa,IAAIrwL,OAEpCg5V,IACAjL,EAAQnmW,UAAUixW,EAAKjnV,KAAO,IAAIrc,MAAM,EAAG,GAAKwjW,EAAQ,KAG5D,IAAI1W,EAAakJ,EAAY9qN,YAAYstN,GAAS8K,EAAKjnV,KAAMk8U,GAAU+K,EAAKlnV,MAAOmnV,GAASD,EAAK/uV,MACjG6uV,EAAgB/mV,KAAOywU,EAAW7hV,cAClCm4V,EAAgBhnV,MAAQ0wU,EAAW92P,WAAa,EAChDotQ,EAAgBjnV,IAAM2wU,EAAWl3P,UAErC,OAAOn/F,EAAMkuV,cAAcye,KAWnCzB,EAAWhd,cAAgB,SAAUnuV,EAAStG,GAC1C,IAAImpC,EAAMnpC,GAAS,IAAIua,KACvB4uB,EAAI3d,gBAAgB,GACpB,IAAIgoV,EAAQ,CAAC,OAAQ,SAAU,SAAU,eAAgB,QAAS,OAC9Dp3W,EAAIkK,EAAQ6lB,KACZ2/U,EAAQxlW,EAAQ2kW,WAChB4H,EAAQvsW,EAAQkpB,SACpB,IAAKiyE,EAAYrlG,GAAI,CACjB,IAAIooB,GAAOpoB,EAAI,IAAI0H,OACnB,GAAI0gB,GAAO,EAAG,CACV,IAAIivV,EAAgD,IAAtCjoW,KAAK6sD,MAAMlvB,EAAIpuB,cAAgB,KAC7C3e,GAAKq3W,EAETtqU,EAAIxkB,YAAYvoB,GAEpB,IAAK,IAAI6T,EAAK,EAAGyjW,EAAUF,EAAOvjW,EAAKyjW,EAAQ5vW,OAAQmM,IAAM,CACzD,IAAIrS,EAAM81W,EAAQzjW,GAEd0jW,EAASrtW,EAAQ1I,GAIrB,GAHI6jG,EAAYkyQ,IAAmB,QAAR/1W,GACvBurC,EAAIs8D,QAAQ,IAEXhE,EAAYkyQ,GACb,GAAY,UAAR/1W,EAAiB,CAEjB,GADA+1W,GAAU,EACNA,EAAS,GAAKA,EAAS,GACvB,OAAO,IAAIp5V,KAAK,WAEpB,IAAIq5V,EAAQzqU,EAAIu8D,UAChBv8D,EAAIs8D,QAAQ,GAEZt8D,EAAI,EAAWvrC,IAAM+1W,GACrB,IAAIE,EAAQ,IAAIt5V,KAAK4uB,EAAIpuB,cAAe44V,EAAS,EAAG,GAAGjuQ,UACvDv8D,EAAIs8D,QAAQmuQ,EAAQC,EAAQD,EAAQC,OAEnC,CACD,GAAY,QAARj2W,EAAe,CACf,IAAIxC,EAAU,IAAImf,KAAK4uB,EAAIpuB,cAAeouB,EAAI28D,WAAa,EAAG,GAAGJ,UACjE,GAAKiuQ,EAAS,GAAKA,EAASv4W,EACxB,OAAO,KAIf+tC,EAAI,EAAWvrC,IAAM+1W,IAIjC,IAAKlyQ,EAAYqqQ,GAAQ,CACrB,IAAIjvW,EAAOssC,EAAItkB,WACD,OAAVinV,EACA3iU,EAAIvkB,SAAS/nB,GAAiB,KAATA,EAAc,EAAI,KAEzB,KAATA,GACLssC,EAAIvkB,SAAS,GAGrB,IAAK68E,EAAYoxQ,GAAQ,CACrB,IAAIiB,EAAUjB,EAAQ1pU,EAAI3uB,oBACV,IAAZs5V,GACA3qU,EAAIsqC,WAAWtqC,EAAIrkB,aAAegvV,GAG1C,OAAO3qU,GAUXsoU,EAAW0B,kBAAoB,SAAUnzW,EAAO4xW,EAAcloR,GAC1D,IAAIgtE,EAAU12J,EAAMkC,MAAM0vW,EAAaqB,aACnCc,EAAa,CAAE,KAAQ,EAAG,OAAU,EAAG,OAAU,GACrD,GAAIpQ,EAAkBjtM,GAClB,OAAO,KAIP,IADA,IAAI/4H,EAAQ76B,OAAOmU,KAAK26V,EAAaG,cAC5B9hW,EAAK,EAAG8tB,EAAUJ,EAAO1tB,EAAK8tB,EAAQj6B,OAAQmM,IAAM,CACzD,IAAIiH,EAAO6mB,EAAQ9tB,GACf+jW,EAAYpC,EAAaG,aAAa,GAAK76V,GAC3C+8V,EAAcv9M,EAAQs9M,EAAUp0W,KACpC,GAAIo0W,EAAU7gM,SAEV4gM,EAAW78V,GAAQnd,KAAKm6W,qBAAqBD,EAAavqR,QAG1D,GAAa,aAATxyE,GAAwBuqF,EAAYwyQ,GAgBnC,CACD,IAAIE,EAAiB,CAAC,QAAS,QAAS,SAExCF,EAAyB,UAAT/8V,GAAuB06V,EAAaxH,WAAwC,OAAzBwH,EAAalzV,SAA6C,UAAzBkzV,EAAalzV,SAAgD,UAAzBkzV,EAAalzV,QACvEu1V,EAAxEA,EAAY,GAAGvgO,cAAgBugO,EAAYz7U,UAAU,GAAG14B,cAE9Dm0W,EAAyB,UAAT/8V,GAA+B,eAATA,GAA0B06V,EAAalzV,UAAoD,IAAzCkzV,EAAalzV,QAAQzX,QAAQ,SAAmE,IAAlDktW,EAAeltW,QAAQ2qW,EAAalzV,SACpKu1V,EAAYn0W,cAAgBm0W,EAElCF,EAAW78V,GAAQ06V,EAAa16V,GAAM+8V,OAzBY,CAClD,IAAIr0W,EAAMo0W,EAAUp0W,IAChB2e,OAAM,EACN61V,EAAS19M,EAAQ92J,EAAM,GACvBwuF,GAAQqT,EAAY2yQ,GACpBJ,EAAUnC,SACVtzV,EAA+D,GAAzDxkB,KAAKs6W,aAAajmR,EAAMgmR,EAAQ19M,EAAQ92J,EAAM,GAAI8pF,IAGxDnrE,EAA+D,GAAzDxkB,KAAKs6W,aAAajmR,EAAMgmR,EAAQ19M,EAAQ92J,EAAM,GAAI8pF,GACxDnrE,GAAOxkB,KAAKs6W,aAAajmR,EAAMsoE,EAAQ92J,EAAM,GAAI82J,EAAQ92J,EAAM,IAAK8pF,IAEnEi6Q,EAAkBplV,KACnBw1V,EAAW,GAAK78V,GAAQqH,IAoB5C,OAJQqzV,EAAac,SACbqB,EAAWrB,QAAS,GAGrBqB,GASXtC,EAAWyC,qBAAuB,SAAUl0W,EAAO25G,GAE/C,OADA35G,EAAQ,EAAOgnW,kBAAkBhnW,EAAO25G,EAAO8tP,iBAAkB9tP,EAAO6tP,aACpEgK,EAAU/3W,KAAKuG,IACPA,EAEL,MAUXyxW,EAAWsB,kBAAoB,SAAU7G,EAAYoI,EAAOrM,GACxD,IACI5jU,EAEAkwU,EAHAjwV,EAAUgwV,EAAMjI,UAEhBmI,EAAS,IAAMvM,EAAN,KAA2BA,EAAS,IAcjD,OAZA5jU,EAAM6nU,EAAW1vV,QAAQ,IAAK,OAE1B6nB,GAD8B,IAA9B6nU,EAAWjlW,QAAQ,MACbo9B,EAAI7nB,QAAQ,SAAU,IAAMg4V,EAAS,KAGrCnwU,EAAI7nB,QAAQ,OAAQ,IAAMg4V,EAAS,MAG7CD,EAAYlwU,EAAIjqC,MAAM,KAAKiP,KAAI,SAAU8rC,GACrC,OAAO7wB,EAAQ9H,QAAQ,MAAO24B,MAElC9Q,EAAMkwU,EAAS7lW,KAAK,KAAO,IAAM4lW,EAAMnI,cAChC9nU,GAWXotU,EAAW4C,aAAe,SAAUjmR,EAAMshR,EAAMC,EAAMjmR,GAClD,IAAI+qR,EAAOrmR,EAAOshR,EAAOC,EACzB,IAAK8E,EACD,OAAO,EAEX,IAAIz0W,EAAQjG,KAAKm6W,qBAAqBO,EAAM/qR,GAC5C,OAAI0E,GACQpuF,EAELA,GAEJyxW,EA7YoB,GCnB3B,EAAS7gV,OAET8jV,GAAa,IAAI,EAAO,qEACxBC,GAAa,KACb,GAAO,CAAC,YAAa,YAMrB,GAA8B,WAC9B,SAASC,KAyHT,OA/GAA,EAAaC,aAAe,SAAUn2V,EAASi7F,EAAQqwP,GACnD,IAGI2H,EAHAprW,EAAQxM,KACRkwW,EAAa,GAAKC,eAAeF,EAAMtrV,EAAS,IAAI,GACpDkzV,EAAe,CAAExzU,QAAQ,GAExB,GAAKg9T,YAAY3hW,KAAKkgH,EAAO17F,UAAc07F,EAAa,QACzD0qP,EAAOuN,EAAc,GAAK7D,yBAAyBp0P,EAAO17F,QAAU,MACpE2zV,EAAaxzU,QAAS,EACjBwzU,EAAapD,gBACV70P,EAAOhkF,wBACPi8U,EAAaj8U,sBAAwBgkF,EAAOhkF,wBAKpD0uU,EAAOuN,EAAc,GAAK9D,aAAan0P,EAAO17F,OAAQ,KAAM,OAEhE,IAMI62V,EANA1C,EAAUnsU,EAAS,UAAWgkU,EAAWY,cAO7C,GALA8G,EAAa,EAAOxK,yBAAyB8C,EAAWY,aAAc,EAAOxE,mBAAmB2D,IAAO,EAAMrF,KAC7GiN,EAAamD,YAAc,EAAOtO,eAAe3jW,OAAOmU,KAAK06V,EAAWhK,cAExEiK,EAAaoD,SAAWrD,EAAWjK,mBAAmB,GAAK,IAEtD/C,IAUDiN,EAAalD,MAAQrK,EAAO,GAAI,GAAIp+T,EAAS2rU,EAAahhW,KAAO,QAASwhW,IAC1ER,EAAahlU,MAAQy3T,EAAO,GAAI,GAAIp+T,EAAS2rU,EAAahhW,KAAO,QAASwhW,IAChD,aAAtBR,EAAahhW,MAAuB+oG,EAAOvlF,UAC3C,GAAKu6U,sBAAsB,CAACiD,EAAahlU,MAAOglU,EAAalD,OAAQzoU,EAAS,iBAAkBmsU,GAAUz4P,EAAOvlF,eAXrH,GADA0gV,EAAgB,GAAK5G,iBAAiB0D,EAAahhW,KAAM+gW,EAAWtK,aAAc4C,EAAW/xU,cAAe05U,EAAazD,WACrH2G,EAAe,CACfA,EAAgBA,EAAct4V,QAAQ,UAAW,GAAKiyV,iBACtD,IAAIr0W,EAAQ06W,EAAc16W,MAAM,KAChCw3W,EAAalD,MAAQ,GAAKE,cAAcx0W,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAM,IAC1Ew3W,EAAahlU,MAAQ,GAAKgiU,cAAcx0W,EAAM,IAAI,EAAM,IAUhE,OAAO,SAAU4F,GACb,OAAOuG,EAAM0uW,gBAAgBj1W,EAAO4xW,EAAcD,KAW1DiD,EAAaK,gBAAkB,SAAUj1W,EAAOsG,EAASqrW,GACrD,IAAIuD,EACAjH,EACA/1N,EACAo5N,EACA5tV,EACA2gB,EACJ,IAAyC,IAArCrkC,EAAMiH,QAAQX,EAAQ0uW,UACtB,OAAOlzW,IAGP9B,EAAQ,EAAOgnW,kBAAkBhnW,EAAOsG,EAAQyuW,YAAapD,EAAWhK,aACxE3nW,EAAQ,EAAOgnW,kBAAkBhnW,EAAO2xW,EAAWlK,iBAAkBkK,EAAWnK,aAChFxnW,GAAgC,IAAxBA,EAAMiH,QAAQ,KAAcjH,EAAMwc,QAAQ,KAAM,OAASxc,EACtC,IAAvBA,EAAMiH,QAAQ,OACdjH,EAAQ,IAAMA,GAElB,IAAI02J,EAAU12J,EAAMkC,MAAMwyW,IAC1B,GAAI/Q,EAAkBjtM,GAClB,OAAO/X,IAEX2yN,EAAO56M,EAAQ,GACfxe,EAAYwe,EAAQ,GACpB,IAAIy+M,EAAWz+M,EAAQ,GAyBvB,OAxBAhzI,EAAMgzI,EAAQ,GACdw+M,EAAa5uW,EAAQ83B,OAAWkzU,IAAShrW,EAAQooW,MAAMmC,OAAWntV,IAAQpd,EAAQooW,MAAMoC,MAC3C,IAAvCQ,EAAKrqW,QAAQX,EAAQooW,MAAMmC,SAAwD,IAArCntV,EAAIzc,QAAQX,EAAQooW,MAAMoC,MAC9E7C,EAAYiH,EACR5uW,EAAQooW,MAAMT,UACd3nW,EAAQsmC,MAAMqhU,UAClB/1N,EAAYA,EAAU17H,QAAQm4V,GAAY,IACtCQ,IACAj9N,GAAai9N,GAEjB9wU,GAAO6zG,GACc,YAAjB5xI,EAAQsK,MAAsBq9V,KAC9B5pU,GAAY,MAEZ/9B,EAAQ83B,QAAU93B,EAAQkoW,kBAC1BnqU,EAAM/6B,WAAW+6B,EAAI3J,QAAQp0B,EAAQ83B,OAChC82U,EAAa5uW,EAAQooW,MAAM/4U,sBAAwBrvB,EAAQsmC,MAAMjX,sBAAyBrvB,EAAQkoW,kBAEvGloW,EAAQqvB,wBACR0O,EAAMtqC,KAAKq7W,qBAAqBl9N,EAAW5xI,EAAS+9B,EAAK6wU,IAEzDA,IACA7wU,IAAQ,GAELA,GAGfuwU,EAAaQ,qBAAuB,SAAUp1W,EAAOsG,EAAS+9B,EAAK6wU,GAC/D,IAAIG,EAAoBr1W,EAAM5F,MAAM,KAKpC,OAJIi7W,EAAkB,IAAMA,EAAkB,GAAGvxW,OAASwC,EAAQqvB,wBAC9D0O,GAAQA,EAAI3J,QAAQp0B,EAAQ83B,OACvB82U,EAAa5uW,EAAQooW,MAAM/4U,sBAAwBrvB,EAAQsmC,MAAMjX,sBAAyBrvB,EAAQqvB,wBAEpG0O,GAEJuwU,EA1HsB,GCZ7B,GAA0B,WAC1B,SAASU,EAASx/P,GACd/7G,KAAKw7W,SAAW,GAChBx7W,KAAKy7W,cAAgB,GACjB7R,EAAkB7tP,KAGtB/7G,KAAK+7G,QAAUA,GA8MnB,OAnMAw/P,EAAShyW,UAAUmxE,GAAK,SAAUy8G,EAAU/6F,EAAS2f,EAASnoG,GAC1D,IAAIg2V,EAAkBxtQ,GAAtB,CAGA,IAAIs/Q,EAAQ3/P,GAAW/7G,KAAK+7G,QACxB/7G,KAAK27W,SAASxkL,GACdn3L,KAAKy7W,cAAc,GAAKtkL,GAAY,CAAC,CAAE/6F,QAASA,EAAS2f,QAAS2/P,EAAO9nW,GAAIA,IAG5Eg2V,EAAkBh2V,GAMb5T,KAAK47W,iBAAiB57W,KAAKy7W,cAAc,GAAKtkL,GAAW/6F,IAC/Dp8F,KAAKy7W,cAAc,GAAKtkL,GAAUziL,KAAK,CAAE0nF,QAASA,EAAS2f,QAAS2/P,KANjC,IAA/B17W,KAAKw7W,SAAStuW,QAAQ0G,KACtB5T,KAAKw7W,SAAS9mW,KAAKd,GACnB5T,KAAKy7W,cAAc,GAAKtkL,GAAUziL,KAAK,CAAE0nF,QAASA,EAAS2f,QAAS2/P,EAAO9nW,GAAIA,OAe3F2nW,EAAShyW,UAAUsxE,IAAM,SAAUs8G,EAAU/6F,EAASxoF,GAClD,IAAI5T,KAAK27W,SAASxkL,GAAlB,CAGA,IAAI8iL,EAAY/tU,EAASirJ,EAAUn3L,KAAKy7W,eACxC,GAAIr/Q,GACA,IAAK,IAAIhyF,EAAI,EAAGA,EAAI6vW,EAAUlwW,OAAQK,IAClC,GAAIwJ,GACA,GAAIqmW,EAAU7xW,SAASgC,EAAEsP,WAAY,KAAK9F,KAAOA,EAAI,CACjDqmW,EAAUllW,OAAO3K,EAAG,GACpB,IAAIyxW,EAAgB77W,KAAKw7W,SAAStuW,QAAQ0G,IACnB,IAAnBioW,GACA77W,KAAKw7W,SAASzmW,OAAO8mW,EAAe,GAExC,YAGH,GAAIz/Q,IAAY69Q,EAAU7xW,SAASgC,EAAEsP,WAAY,KAAK0iF,QAAS,CAChE69Q,EAAUllW,OAAO3K,EAAG,GACpB,mBAKDpK,KAAKy7W,cAAc,GAAKtkL,KAYvCokL,EAAShyW,UAAUkY,OAAS,SAAU01K,EAAUx5C,EAAUt3G,EAAgBy1U,GACtE,GAAI97W,KAAK27W,SAASxkL,GACV9wJ,GACAA,EAAe55B,KAAKzM,KAAM29I,OAFlC,CAMIA,IACAA,EAASh2I,KAAOwvL,GAEpB,IAAI4kL,EAAS,SACT9B,EAAY/tU,EAASirJ,EAAUn3L,KAAKy7W,eAAe1lW,MAAM,GAC7D,GAAI9G,OAAO,GAAK8sW,GACZ,OAAO/7W,KAAKg8W,eAAe/B,EAAWt8N,EAAUt3G,EAAgBy1U,EAAc,GAG9E,IAAK,IAAI5lW,EAAK,EAAG+lW,EAAchC,EAAW/jW,EAAK+lW,EAAYlyW,OAAQmM,IAAM,CACrE,IAAIq7J,EAAM0qM,EAAY/lW,GACtBq7J,EAAIn1E,QAAQ3vF,KAAK8kK,EAAIx1D,QAAS4hC,GAE9Bt3G,GACAA,EAAe55B,KAAKzM,KAAM29I,KAItC49N,EAAShyW,UAAUyyW,eAAiB,SAAUE,EAAMv+N,EAAUt3G,EAAgBy1U,EAAchnW,GACxF,IAAItI,EAAQxM,KACRm8W,EAAYrnW,IAAUonW,EAAKnyW,OAAS,EACxC,GAAI+K,EAAQonW,EAAKnyW,OAAQ,CACrB,IAAIqyW,EAAQF,EAAK9zW,SAAS0M,EAAM4E,WAAY,KACxC4Z,EAAU8oV,EAAMhgR,QAAQ3vF,KAAK2vW,EAAMrgQ,QAAS4hC,GAChD,GAAIrqH,GAAmC,oBAAjBA,EAAQQ,KAAqB,CAC/C,IAAKuS,EACD,OAAO/S,EAEXA,EAAQQ,MAAK,SAAUK,GAGnB,GAFAA,EAAuB,kBAATA,GAAqB3nB,EAAM6vW,OAAOloV,GAAQ0b,KAAKE,MAAM5b,EAAM3nB,EAAM8vW,aAAenoV,EAC9Fm2U,EAAO3sN,EAAUA,EAAUxpH,GAAM,IAC7BkS,IAAkB81U,EAIlB,OAAO3vW,EAAMwvW,eAAeE,EAAMv+N,EAAUt3G,EAAgBy1U,EAAchnW,EAAQ,GAHlFuxB,EAAe55B,KAAK2vW,EAAMrgQ,QAAS4hC,MAKxCl9C,OAAM,SAAUtsE,GACX2nV,GACAA,EAAarvW,KAAK2vW,EAAMrgQ,QAAyB,kBAAT5nF,GACpC3nB,EAAM6vW,OAAOloV,GAAQ0b,KAAKE,MAAM5b,EAAM3nB,EAAM8vW,aAAenoV,UAItE,KAAIkS,IAAkB81U,EAIvB,OAAOn8W,KAAKg8W,eAAeE,EAAMv+N,EAAUt3G,EAAgBy1U,EAAchnW,EAAQ,GAHjFuxB,EAAe55B,KAAK2vW,EAAMrgQ,QAAS4hC,MAQ/C49N,EAAShyW,UAAU+yW,YAAc,SAAUz4W,EAAKoC,GAC5C,IAAIs2W,EAAW,uCACf,OAAI3R,GAA6B,kBAAV3kW,GAAgD,OAA1BA,EAAMkC,MAAMo0W,GAC9C,IAAK/7V,KAAKva,GAEd,GAEXs1W,EAAShyW,UAAU8yW,OAAS,SAAUp2W,GAClC,IACI4pC,KAAKE,MAAM9pC,GAEf,MAAOuP,GACH,OAAO,EAEX,OAAO,GAOX+lW,EAAShyW,UAAU+Q,QAAU,WACzBta,KAAKy7W,cAAgBz7W,KAAK+7G,aAAUp2G,GAOxC41W,EAAShyW,UAAUizW,cAAgB,WAE/B,IAAIC,EAAYz8W,KAAKy7W,cAAc,wBACnC,GAAIgB,EAAW,CACX,IAAK,IAAIryW,EAAI,EAAGA,EAAIqyW,EAAU1yW,OAAQK,IAAK,CAEvC,IAAIsyW,EAAaD,EAAU,GAAKryW,GAAG2xG,QAC/B2gQ,GAAcA,EAAWC,gBAAkBD,EAAWE,WAAaF,EAAWhvJ,aAC9E1tN,KAAK66E,IAAI,uBAAwB6hS,EAAWC,eAAgBD,EAAWE,UACvExyW,KAGHpK,KAAKy7W,cAAc,wBAAwB1xW,eACrC/J,KAAKy7W,cAAc,0BAUtCF,EAAShyW,UAAUoyW,SAAW,SAAUx+V,GAEpC,OAAmD,IAA5Cnd,KAAKy7W,cAAcryW,eAAe+T,IAAmBnd,KAAKy7W,cAAct+V,GAAMpT,QAAU,GASnGwxW,EAAShyW,UAAUqyW,iBAAmB,SAAUH,EAAer/Q,GAC3D,IAAK,IAAIlmF,EAAK,EAAG2mW,EAAkBpB,EAAevlW,EAAK2mW,EAAgB9yW,OAAQmM,IAAM,CACjF,IAAIq7J,EAAMsrM,EAAgB3mW,GAC1B,GAAIq7J,EAAIn1E,UAAYA,EAChB,OAAO,EAGf,OAAO,GAEJm/Q,EArNkB,GCSlBuB,GAAe,IAAI,GAInBC,IAAc,EAMdC,GAAW,GAMX9hB,GAAiB,QAMjBwY,GAAsB,MAC7B,GAAS,CAAC,gBAAiB,cAoC3B,GAAsC,WACtC,SAASuJ,EAAqBlhE,GACtBA,IACA/7S,KAAK2kB,QAAUo3R,GA8HvB,OArHAkhE,EAAqB1zW,UAAUq5O,cAAgB,SAAUr2O,GACrD,OAAO,EAAWqnP,WAAW5zP,KAAKk9W,aAAc3wW,GAAW,CAAEsK,KAAM,OAAQsN,SAAU,SAAW64V,KAQpGC,EAAqB1zW,UAAUoyB,gBAAkB,SAAUpvB,GAOvD,OANIA,IAAYA,EAAQ8tB,WACpB9tB,EAAQ8tB,SAAWq5U,IAEnB9I,KAAcr+V,IAAYA,EAAQ2X,SAClC3X,EAAQsvB,sBAAwB,GAE7B,EAAaq3U,gBAAgBlzW,KAAKk9W,aAAc3wW,GAAW,GAAIywW,KAQ1EC,EAAqB1zW,UAAUo/V,cAAgB,SAAUp8V,GACrD,OAAO,EAAWorW,WAAW33W,KAAKk9W,aAAc3wW,GAAW,CAAE4X,SAAU,QAAStN,KAAM,QAAUmmW,KAQpGC,EAAqB1zW,UAAU0wB,gBAAkB,SAAU1tB,GAIvD,OAHIq+V,KAAcr+V,IAAYA,EAAQ2X,SAClC3X,EAAQsvB,sBAAwB,GAE7B,GAAai/U,aAAa96W,KAAKk9W,aAAc3wW,GAAW,CAAE2X,OAAQ,KAAO84V,KASpFC,EAAqB1zW,UAAUg3B,aAAe,SAAUt6B,EAAO25G,GAC3D,OAAO5/G,KAAK27B,gBAAgBikF,EAArB5/G,CAA6BiG,IASxCg3W,EAAqB1zW,UAAU0a,WAAa,SAAUhe,EAAO25G,GACzD,OAAO5/G,KAAK4iP,cAAchjI,EAAnB5/G,CAA2BiG,IAStCg3W,EAAqB1zW,UAAUub,UAAY,SAAU7e,EAAO25G,GACxD,OAAO5/G,KAAK2oW,cAAc/oP,EAAnB5/G,CAA2BiG,IAStCg3W,EAAqB1zW,UAAU4zW,YAAc,SAAUl3W,EAAO25G,GAC1D,OAAO5/G,KAAKi6B,gBAAgB2lF,EAArB5/G,CAA6BiG,IAUxCg3W,EAAqB1zW,UAAUqb,eAAiB,SAAUg7F,EAAQw9P,GAC9D,OAAO,GAASC,wBAAwBr9W,KAAKk9W,aAAct9P,EAAQo9P,GAAUI,IAUjFH,EAAqB1zW,UAAUwnU,iBAAmB,SAAUnxN,EAAQu/L,GAChE,OAAO,GAASm+D,sBAAsBt9W,KAAKk9W,aAAct9P,EAAQo9P,GAAU79D,IAO/E89D,EAAqB1zW,UAAUouI,kBAAoB,WAC/C,OAAO,GAAS4lO,YAAYv9W,KAAKk9W,aAAcF,KAOnDC,EAAqB1zW,UAAU2zW,WAAa,WACxC,OAAOl9W,KAAK2kB,SAAWu2U,IAEpB+hB,EAjI8B,GA0IlC,SAASpU,GAAW9sD,GACvBm/C,GAAiBn/C,EACjB+gE,GAAar7V,OAAO,uBAAwB,CAAE,OAAUy5U,KAgDrD,SAASsiB,GAAiBp7V,EAAQvL,GAErC,IAAIu5V,EAAY,GAASD,eAAe6M,GAAU56V,EAAQ,IAAI,GAAM,GAAO,IAEvEygV,EAAa,GAASsN,eAAe6M,GAAU56V,EAAQ,IAAI,GAAO,IAClEq7V,EAAYvxU,EAAS,yBAA0BkkU,GAC/CsN,EAAc9S,IAAa1+T,EAAS,gBAAiBkkU,GAAalkU,EAAS,wBAA0BuxU,EAAWrN,GAChH7lV,EAAU,GAAS4pV,iBAAiBt9V,GAAQ,UAAW4mW,EAAWrN,GAAW,GACjF,OAAO9F,EAAOoT,EAAa,GAAS7I,cAActqV,GAAS,EAAM,IAAI,GAAO,CAAE,cAAiB,GAASomV,iBAAiB9N,KAyBtH,SAAS8a,GAAqBp/Q,GAEjC,OAAO,GAAS4xQ,eAAe6M,GAAU,GAAIz+Q,GAAM,GAAO,GAAO,IC9RrE,IA0BW,GA1BP,GAAS1nE,OACF+mV,GAAuB,CAC9B,QAAS,CACL,EAAK,QACL,EAAK,kBACL,EAAK,yBACL,EAAK,2BACL,EAAK,eACL,EAAK,sBACL,EAAK,SACL,EAAK,SACL,EAAK,sCACL,EAAK,sCACL,EAAK,gCACL,EAAK,UACL,EAAK,WACL,EAAK,iCACL,EAAK,gCACL,EAAK,YACL,EAAK,eAQb,SAAWC,GAGPA,EAASrI,kBAAoB,qHAC7BqI,EAASC,YAAc,0HACvBD,EAASpL,eAAiB,uBAC1B,IAAIsL,EAAgB,SACpBF,EAASnJ,gBAAkB,IAC3B,IAAIx/F,EAAS,CAAC,WAAY,MAAO,QAAS,WACtC8oG,EAAe,8BACfjN,EAAe,CACf,EAAK,GACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACLkN,IAAM,IACN,KAAM,SACN,GAAM,KACN,EAAK,OACL,KAAQ,OACR,EAAK,OAETJ,EAASK,oBAAsB,aAC/B,IAAIC,EAAkB,MACtBN,EAASvN,aAAe,WACxB,IAAI8N,EAAiB,CACjB,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,GAEXP,EAASxc,YAAc,IAAI,GAAO,kCAAmC,KACrEwc,EAASQ,oBAAsB,IAAI,GAAO,+BAAgC,KAC1ER,EAASS,sBAAwB,WACjC,IAAIC,EAAa,CACb,EAAK,aACL,IAAK,YACL,IAAK,aACLzvR,EAAG,QACHpnD,EAAG,QA4kBP,SAAS+oU,EAAoBtsV,EAAU0+U,EAAYhsV,EAAMw5V,EAAWmO,GAChE,IAAIhO,EACAiO,EAAQ5nW,GAAQ,OACpB,GAAI2nW,EACAhO,EAAaD,EAAyB,CAAEpsV,SAAUA,GAAYq6V,GAAet6V,QACzEqsV,EAAyB,CAAEpsV,SAAU,KAAO,SAASD,WAExD,CACD,IAAkD,IAA9C25V,EAASa,cAAcxxW,QAAQiX,IAE/B,GADAqsV,EAAatkU,EAASuyU,EAAQ,WAAat6V,EAAU0+U,GACvC,aAAV4b,EAAsB,CACtB,IAAIlC,EAAWrwU,EAAS,eAAiB/nB,EAAU0+U,GAC/C8b,EAAWzyU,EAAS,eAAiB/nB,EAAU0+U,GACnD2N,EAAaA,EAAW/tV,QAAQ,MAAO85V,GAAU95V,QAAQ,MAAOk8V,SAIpEnO,EAAatkU,EAAS,oCAAsC/nB,EAAU0+U,GAEtEn7P,EAAY8oQ,IAA4B,QAAbrsV,IAC3BqsV,EAAa,SAGrB,OAAOA,EAaX,SAASL,EAAeF,EAAMtrV,EAAS45E,EAAM66E,GACzC,IAAI9uI,EAAM,GACNs0U,EAAergR,GAAQ,YAE3B,GADAj0D,EAAIwmU,aAAe,EAAO1E,cAAc6D,EAAMtrV,KAAaimV,IAAaiT,EAASgB,oBAAsBhB,EAASiB,eAC5G1lM,EACA9uI,EAAInM,cAAgB+N,EAAS,UAAW5B,EAAIwmU,kBAE3C,CACD,IAAIltV,EAAagnV,IAAa,QAAW,mBAAqBgU,EAC9Dt0U,EAAIu4T,WAAa32T,EAAStoB,EAAY0mB,EAAIwmU,cAE9C,OAAOxmU,EAaX,SAAS6pU,EAAiBt9V,EAAM4mW,EAAW7wU,EAAKwnU,GAC5C,OAAOloU,EAASr1B,EAAO,wBACnB4mW,GAAarJ,EAAY,cAAgB,aAAcxnU,KAASwnU,EAAYloU,EAASr1B,EAAO,wBAC5F4mW,EAAY,YAAa7wU,GAAO,IAQxC,SAASgkU,EAAwB1sV,GAC7B,IAAI66V,EAAgB76V,EAAO/b,MAAM01W,EAASK,qBAC1C,GAAIa,GAAiBnU,IAAY,CAC7B,IAAIoU,EAAyC,IAA5BD,EAAc,GAAGh1W,OAAe,MAAQ,OACzD,OAAOma,EAAOzB,QAAQo7V,EAASK,oBAAqBc,GAExD,OAAO96V,EASX,SAASqsV,EAAyBrtV,EAAeyB,GAC7C,IAAIT,EAAShB,EAAcgB,QAAUhB,EAAciB,SAC/C86V,EAAkB/yU,GAAUvnB,GAAW,SAAW,IAAMT,EAAQ05V,IAQpE,OAPKqB,IACDA,EAAkB/yU,EAAS,SAAWhoB,EAAQ05V,KAE9CqB,IACAA,EAAkBrO,EAAwBqO,GAC1C/7V,EAAcgB,OAAS+6V,EAAgBx8V,QAAQ,KAAM,MAElDS,EAUX,SAAS8wV,EAAyB7vV,GAC9B,IAAIw4I,EAAUx4I,EAAShc,MAAM01W,EAASxc,aAClC/2T,EAAM,GACN/f,EAAUoyI,EAAQ,GAAGhjB,cAMzB,OALArvG,EAAI8pU,UAAyB,MAAZ7pV,EACjB+f,EAAIzzB,KAAOgnW,EAASqB,eAAe30V,GAC/BpG,EAASpa,OAAS,IAClBugC,EAAImqU,eAAiBrsW,SAASu0J,EAAQ,GAAI,KAEvCryH,EAaX,SAASuqU,EAActqV,EAAS40V,EAAcC,EAASC,GACnD,IAAI1K,EAAQ0K,EAAe,GAAK,CAAEvI,MAAO,GAAIC,KAAM,IAC/C5uW,EAAQoiB,EAAQpiB,MAAM01W,EAASC,aACnC,GAAI31W,EAAO,CACFk3W,IACD1K,EAAMmC,MAAQwI,EAAqBn3W,EAAM,GAAIi3W,GAC7CzK,EAAMoC,KAAOuI,EAAqBn3W,EAAM,IAAKi3W,GAC7CzK,EAAM4K,aAAep3W,EAAM,IAE/B,IAAIq3W,EAAWr3W,EAAM,GACrB,GAAIq3W,GAAYL,EAAc,CAC1B,IAAIM,EAASD,EAASr3W,MAAM41W,GACvBnU,EAAkB6V,GAInB9K,EAAMM,gBAAkB,EAHxBN,EAAMM,gBAAkBwK,EAAO11W,OAKnC4qW,EAAMQ,gBAAkBqK,EAASz1W,OAAS,GAGlD,OAAO4qW,EAWX,SAAS2K,EAAqB96V,EAAKk7V,GAC/B,OAAIl7V,GACAA,EAAMA,EAAI/B,QAAQo7V,EAASnJ,gBAAiBgL,GAC5B,KAARA,EAAcl7V,EAAI5P,OAAS4P,GAEhC,GAYX,SAASivV,EAAkBt1U,EAAe7D,EAAcq5U,GACpD,IAAIr5C,EAASq5C,EAAa,IAAMA,EAAa,UACzCgM,EAAczzU,EAAS,cAAgB5R,EAAeggS,EAAQn8R,IAC9D+N,EAAS,cAAgB5R,EAAe,qBAAsB6D,IAAkB,IACpF,OAAOwhV,EAYX,SAAS5L,EAAa7vV,EAAQovV,EAAU1mU,GAIpC,IAHA,IAAIrgC,EAAU,GACVqzW,EAAc17V,EAAO7jB,MAAM,KAC3B8zB,EAAO,CAAC,QAAS,QAAS,YACrB/pB,EAAI,EAAGA,EAAIw1W,EAAY71W,OAAQK,IACpCmC,EAAQ4nB,EAAK/pB,IAAMy1W,EAAmBD,EAAYx1W,GAAIkpW,EAAU1mU,GAMpE,OAJIg9T,EAAkBr9V,EAAQooW,SAC1BpoW,EAAQooW,MAAQrK,EAAO,GAAI/9V,EAAQsmC,OACnCtmC,EAAQooW,MAAMmC,MAAQlN,EAAkB0J,GAAY,IAAM/mW,EAAQooW,MAAMmC,MAAQxD,EAASO,YAActnW,EAAQooW,MAAMmC,OAElHvqW,EAYX,SAASszW,EAAmB37V,EAAQovV,EAAUlD,GAC1C,IAAIiD,EAAW,CAAEx8V,KAAM,UAAWglB,sBAAuB,EAAGD,sBAAuB,GAC/ErR,EAAUrG,EAAO/b,MAAM01W,EAASC,aACpC,GAAIlU,EAAkBr/U,IAA4B,KAAfA,EAAQ,IAAwB,QAAXrG,EAEpD,OADAmvV,EAASx8V,UAAOlR,EACT0tW,EAEXA,EAASyD,MAAQvsV,EAAQ,GACzB8oV,EAAS0D,KAAOxsV,EAAQ,IACxB,IAAIu1V,EAAcv1V,EAAQ,GACtBw1V,IAAeD,EAAY33W,MAAM,QACjC63W,GAAkE,IAAlDF,EAAYr9V,QAAQ,OAAQ,IAAIvV,QAAQ,KAC5DmmW,EAASv3U,aAA4C,IAA9BgkV,EAAY5yW,QAAQ,MAAe8yW,EAC1DF,EAAcA,EAAYr9V,QAAQ,KAAM,IACxC,IAAIw9V,EAAe11V,EAAQ,GAwB3B,IAvBkC,IAA9Bu1V,EAAY5yW,QAAQ,OACpBmmW,EAASmD,qBAAuBsJ,EAAY/1W,OAAS+1W,EAAY5yW,QAAQ,MAExE08V,EAAkBqW,KACnB5M,EAASx3U,sBAAwBokV,EAAazhV,YAAY,KAC1D60U,EAASz3U,sBAAwBqkV,EAAazhV,YAAY,MAClB,IAApC60U,EAASx3U,wBACTw3U,EAASx3U,sBAAwB,KAEG,IAApCw3U,EAASz3U,uBAAgCy3U,EAASz3U,sBAAwBy3U,EAASx3U,yBACnFw3U,EAASz3U,sBAAwBy3U,EAASx3U,wBAG7C+tU,EAAkB0J,GAQnBhJ,EAAO+I,EAAU6M,EAAkB,CAAC7M,EAASyD,MAAOzD,EAAS0D,MAAO,IAAK,OAPzEzD,EAASoD,gBAAiB,EAC1BpM,EAAO+I,EAAU6M,EAAkB,CAAC7M,EAASyD,MAAOzD,EAAS0D,MAAO,IAAKzD,EAASE,iBAC7EH,EAASY,YACV3J,EAAO+I,EAAU6M,EAAkB,CAAC7M,EAASyD,MAAOzD,EAAS0D,MAAO,IAAKzD,EAASM,kBAMrFhK,EAAkBwG,GAAY,CAC/B,IAAI+C,EAAgBgB,EAAiBd,EAASx8V,KAAMy8V,EAASC,aAAajG,aAAc8C,GAAW,GAC/FiD,EAASv3U,cACTu3U,EAASyB,eAAiBkL,EAAgB,IAAM1M,EAASC,aAAazF,cAAc54F,EAAO,IAC3Fm+F,EAASrtE,UAAY,EAAa+uE,mBAAmB5B,EAAc9yW,MAAM,KAAK,KAElFgzW,EAASyD,MAAQzD,EAASyD,MAAMr0V,QAAQ,KAAM,IAC9C4wV,EAAS0D,KAAOgJ,EAAe,IAAM1M,EAAS0D,KAAKt0V,QAAQ,KAAM,IAAM4wV,EAAS0D,KAAKt0V,QAAQ,KAAM,IAEvG,OAAO4wV,EAYX,SAAS6M,EAAkBp7N,EAAOg9C,EAAQw4H,GAEtC,IADA,IAAI/tT,EAAU,CAAEuqW,MAAOhyN,EAAM,GAAIiyN,KAAMjyN,EAAM,IACpC16I,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI2+T,EAAOjkL,EAAM18I,SAASgC,EAAEsP,WAAY,KACpCymW,EAAMp3C,EAAK77T,QAAQ40L,GACvB,IAAc,IAATq+K,IAAiBA,EAAMp3C,EAAK77T,QAAQ,MAAWizW,EAAMp3C,EAAKvqS,YAAY,MAAS,CAChFjyB,EAAQgyW,EAAWn0W,IAAM2+T,EAAKl0K,OAAO,EAAGsrN,GAAO7lD,EAASyO,EAAKl0K,OAAOsrN,EAAM,GAC1E5zW,EAAQgyW,EAAWz8K,KAAW,EAC9Bv1L,EAAQsK,KAAOtK,EAAQ0nW,WAAa,WAAa,UACjD,OAGR,OAAO1nW,EAUX,SAASokW,EAAiBngK,GACtB,IAAIvqM,GAASimC,EAAS,oBAAqBskK,IAAY,IAAIroM,MAAM,yBACjE,OAAOlC,EAAQA,EAAM,GAAK,IAa9B,SAASo3W,EAAwB14V,EAASpY,EAAS0jW,EAAMmN,GACrD,IAAIlN,EAAaC,EAAeF,EAAMtrV,EAASpY,EAAQtL,UACnD2pW,MACAr+V,EAAUgkW,EAAyBhkW,EAASoY,IAEhD,IAAIy7V,EAAgB7zW,EAAQ2X,QAAUusV,EAAoBlkW,EAAQ4X,SAAU+rV,EAAWrN,WAAYt2V,EAAQsK,MAC3G,GAAIumW,EAAe,CAIf,GAHAgD,EAAgBA,EAAc39V,QAAQu7V,GAAc,SAAUzzV,GAC1D,OAAOwmV,EAAaxmV,OAEY,IAAhC61V,EAAclzW,QAAQ,KAAa,CACnC,IAAImzW,EAAUD,EAAcj4W,MAAM,MAAM4B,OACpCu2W,OAAkB,EAClBv1N,EAAY,CAAE,SAAY,IAC9BA,EAAU8lN,UAAY,EAAOhD,gBAAgBqC,EAAWY,aAAc,EAAOxE,mBAAmB2D,IAChGllN,EAAUt1H,SAAWyW,EAAS,sBAAuBgkU,EAAWY,cAChE,IAAI7qW,EAAQ,IAAIua,KACZ6U,EAAWpvB,EAAMwa,oBACjB8J,EAAW81V,EAAU,EAAK,QAAUt1N,EAAUt1H,SAAS08U,WAC3D5nV,EAAUA,EAAQ9H,QAAQ,KAAMsoI,EAAU8lN,UAAU9C,eACnC,IAAb14U,EACAirV,EAAkBv1N,EAAUt1H,SAAS28U,eAGrCkO,EAAkB,EAAWjO,iBAAiBh9U,EAAU9K,GACxD+1V,EAAkBv1N,EAAUt1H,SAAS68U,UAAU7vV,QAAQ,QAAS69V,IAEpEF,EAAgBA,EAAc39V,QAAQ,OAAQ,IAAM69V,EAAkB,KAE1EF,EAAgBA,EAAc39V,QAAQ,KAAM,IAEhD,OAAO29V,EASX,SAASG,EAAcz+K,EAAQliF,GAC3B,IAA6B,IAAzBkiF,EAAO50L,QAAQ,KAAa,CAC5B,IAAI7M,EAAQyhM,EAAOzhM,MAAM,KACzByhM,EAAUzhM,EAAM,GAAK6rC,EAAS,mCAAoC0zE,GAC9Dv/G,EAAM,GAAGoiB,QAAQ,IAAKypB,EAAS,qCAAsC0zE,SAGzEkiF,EAASA,EAAOr/K,QAAQ,IAAKypB,EAAS,qCAAsC0zE,IAEhF,OAAOkiF,EAYX,SAASw7K,EAAsB34V,EAASpY,EAAS0jW,EAAM9wD,GACnD,IAGI61D,EAuBAoL,EA1BAlQ,EAAaC,EAAeF,EAAMtrV,EAAS,IAAI,GAC/CkzV,EAAe,CAAExzU,QAAQ,GACzBm8U,EAAiBtQ,EAAW/xU,cAE5BkvU,EAAS,GACT14P,GAAYpoG,EAAQ2X,QAAU,IAAI/b,MAAM01W,EAASQ,qBACjDxnW,EAAOgnW,EAASxc,YAAY3hW,KAAK6M,EAAQ2X,QAAU8vV,EAAyBznW,EAAQ2X,QAAU,KAAO,GACrGovV,EAAW,GACf,GAAI3+P,EAAU,CACV2+P,EAASC,aAAe3I,IACpBN,EAAO,GAAI4F,EAAW/xU,eACtB,EAAO0vU,gBAAgBqC,EAAWY,aAAc,EAAOxE,mBAAmB2D,IAAO,GACrF,IAAIwQ,EAAU7V,IAAa1+T,EAAS,iBAAkBgkU,EAAW/xU,eAC7Ds1U,EAAkBvD,EAAW/xU,cAAe5xB,EAAQ8tB,UAAYq5U,GAAqBnnW,EAAQonW,WAC7FR,EAAgBgB,EAAiB,WAAYb,EAASC,aAAajG,aAAc4C,EAAW/xU,cAAe,KAAOz+B,KAAK6M,EAAQ2X,SACnIivV,EAAgBA,EAAc1wV,QAAQ,UAAWg+V,GACjD,IAAIpgX,EAAQ8yW,EAAc9yW,MAAM,KAChCgtW,EAAOqT,qBAAqB9V,KAAqBvqW,EAAM0J,OAAS,EAChEsjW,EAAOsH,MAAQ/J,IAAa1+T,EAASr1B,EAAKA,KAAO,QAAS2pW,GACtD3L,EAAcx0W,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAMogX,GACpDpT,EAAOx6T,MAAQ+3T,IAAa1+T,EAASr1B,EAAKA,KAAO,QAAS2pW,GACtD3L,EAAcx0W,EAAM,IAAI,EAAOogX,GAC9B9rQ,EAAS,IAAOpoG,EAAQsvB,uBAA0BtvB,EAAQqvB,wBAC3Do5U,EAAUH,EAAc1B,EAAc9yW,MAAM,KAAK,IAAI,EAAM,IAAI,GAAM40W,iBAI7E,GAAK4I,EAASxc,YAAY3hW,KAAK6M,EAAQ2X,UAAc3X,EAAc,OAAG,CAIlE,GAHA+9V,EAAOuN,EAAc7D,EAAyBznW,EAAQ2X,QAAU,MAChE2zV,EAAaxzU,QAAS,EACtB+7U,EAAgB,OACZvI,EAAapD,gBAAkBloW,EAAQsvB,uBAAyBtvB,EAAQqvB,uBAAyBo5U,EAAS,CAC1G,IAAI2L,EAAiB,EACjB9I,EAAapD,iBACbloW,EAAQsvB,sBAAwBtvB,EAAQqvB,sBAAwBi8U,EAAapD,gBAEjF2L,EAAgBQ,EAAsBR,EAAepL,GAAW6C,EAAapD,gBACzEloW,EAAQsvB,uBAAyB8kV,EAAgBp0W,EAAQqvB,uBAAyB+kV,GAQ1F,GANIp0W,EAAQiqW,uBACR4J,EAAgBS,EAAsBT,EAAe7zW,EAAQiqW,uBAE7DjqW,EAAQuvB,cACRskV,EAAgBU,EAAgBV,IAEV,aAAtBvI,EAAahhW,MAAwBghW,EAAahhW,MAAQ+zV,IAAa,CACnEA,KAAoC,aAAtBiN,EAAahhW,OAC3Bw2V,EAAOx6T,MAAQ3G,EAAS2rU,EAAahhW,KAAO,QAAS2pW,GACrDnT,EAAOsH,MAAQzoU,EAAS2rU,EAAahhW,KAAO,QAAS2pW,IAEzD,IAAIO,EAAWX,EACfA,EAAgB/S,EAAOx6T,MAAMikU,MAAQiK,EAAW1T,EAAOx6T,MAAMkkU,MACzD1J,EAAOqT,oBAAsB9V,OAC7BwV,GAAiB,IAAM/S,EAAOsH,MAAMmC,MAAQiK,EAAW1T,EAAOsH,MAAMoC,MAGlD,YAAtBc,EAAahhW,MAAuB+zV,MACpCwV,GAAiB,WAIrBA,EAAgB7zW,EAAQ2X,OAAOzB,QAAQ,KAAM,KAKjD,OAHI1Z,OAAOmU,KAAKo2V,GAAUvpW,OAAS,IAC/Bq2W,EAAiBjhE,EAAmDihE,EAAzCG,EAAcH,EAAe9M,IAErD8M,EAUX,SAASQ,EAAsBr2V,EAASy2V,EAAWC,GAC/C12V,GAAW,IACX,IAAK,IAAIsQ,EAAI,EAAGA,EAAImmV,EAAWnmV,IAC3BtQ,GAAW,IAEf,GAAIy2V,EAAYC,EAEZ,IADA,IAAI1lN,EAAO0lN,EAAYD,EACdl4W,EAAI,EAAGA,EAAIyyJ,EAAMzyJ,IACtByhB,GAAW,IAGnB,OAAOA,EASX,SAASs2V,EAAsBt2V,EAASmsN,GAGpC,IAFA,IAAIjoM,EAAOlkB,EAAQlqB,MAAM,KACrB6gX,EAAU,GACLtyW,EAAI,EAAGA,EAAI8nO,EAAQ9nO,IACxBsyW,GAAW,IAEf,OAAOzyU,EAAK,GAAMyyU,EAAU,IAAMzyU,EAAK,GAAMyyU,EAQjD,SAASJ,EAAgBv2V,GACrB,IAAIkkB,EAAOlkB,EAAQlqB,MAAM,KACrB6gX,EAAUzyU,EAAK,GACf0yP,EAAK,EAAI+/E,EAAQn3W,OAAS,EAC1B2qG,EAAQysL,GAAa,IAAPA,EAAY,IAAc,IAAPA,EAAW,KAAO,GACvD+/E,EAAUxsQ,EAAOwsQ,EACjB32V,EAAU,GACV,IAAK,IAAI3b,EAAIsyW,EAAQn3W,OAAS,EAAG6E,EAAI,EAAGA,GAAQ,EAC5C2b,EAAU,IAAM22V,EAAQtyW,EAAI,GAAKsyW,EAAQtyW,EAAI,GAAKsyW,EAAQ94W,SAASwG,EAAE8K,WAAY,KAAO6Q,EAG5F,OADAA,EAAUA,EAAQxU,MAAM,GACjB04B,EAAK,GAAMlkB,EAAU,IAAMkkB,EAAK,GAAMlkB,EASjD,SAASgzV,EAAY54V,EAASsrV,GAC1B,IAAIjyR,EAAWmgS,EACXjpG,EAAShpO,EAAS,iCAAkC+jU,GACpDkR,EAAWx8V,EAQf,MAPI,MAAQjlB,KAAKyhX,KACbA,EAAWA,EAASprW,MAAM,IAE9BorW,EAAWA,EAASprW,MAAM,EAAG,GAAG4jI,cAAgBwnO,EAAStsN,OAAO,GAC5DqgH,IACAl3L,EAAWk3L,EAAO,GAAKisG,IAAajsG,EAAOisG,EAASprW,MAAM,EAAG,KAAOooW,GAEjEC,EAAe,GAAKpgS,GAU/B,SAAS42R,EAAsB/hU,EAAOuuU,EAAWC,GAC7C,IAAIC,EAAYlT,EAAwBiT,GACxC,GAAID,IAAcE,EACd,IAAK,IAAIprW,EAAK,EAAGqrW,EAAU1uU,EAAO38B,EAAKqrW,EAAQx3W,OAAQmM,IAAM,CACzD,IAAIie,EAAOotV,EAAQrrW,GACnBie,EAAK4iV,KAAO5iV,EAAK4iV,KAAKt0V,QAAQ2+V,EAAWE,GACzCntV,EAAK2iV,MAAQ3iV,EAAK2iV,MAAMr0V,QAAQ2+V,EAAWE,IAUvD,SAAS/O,EAAcjoV,GACnB,IAEIk3V,EAFAC,EAAU,IAAIjhW,KAAK8J,EAAKtJ,cAAe,EAAG,GAC1CkR,EAAMuvV,EAAQh2Q,SAElBv5E,EAAOA,GAAO,EAAIA,EAAMA,EAAM,EAC9B,IAAIwvV,EAASjwW,KAAK6sD,OAAOh0C,EAAKzJ,UAAY4gW,EAAQ5gW,UACa,KAA1DyJ,EAAK7J,oBAAsBghW,EAAQhhW,sBAAgC,OAAY,EACpF,GAAIyR,EAAM,GAEN,GADAsvV,EAAU/vW,KAAK6sD,OAAOojT,EAASxvV,EAAM,GAAK,GAAK,EAC3CsvV,EAAU,GAAI,CACd,IAAIG,EAAQ,IAAInhW,KAAK8J,EAAKtJ,cAAgB,EAAG,EAAG,GAC5C4gW,EAAOD,EAAMl2Q,SACjBm2Q,EAAOA,GAAQ,EAAIA,EAAOA,EAAO,EACjCJ,EAAUI,EAAO,EAAI,EAAI,SAI7BJ,EAAU/vW,KAAK6sD,OAAOojT,EAASxvV,EAAM,GAAK,GAE9C,OAAOsvV,EA1nCX3D,EAASvM,eAAiB,iCAC1BuM,EAASa,cAAgB,CAAC,QAAS,SAAU,OAAQ,QAErDb,EAASiB,cAAgB,CACrB,MAAS,CACL,UAAa,CACT,UAAa,CACT,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,KAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,cAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,gBACL,gBAAiB,oBACjB,EAAK,cACL,gBAAiB,cAErB,QAAW,CACP,EAAK,KACL,gBAAiB,MACjB,EAAK,KACL,gBAAiB,MAErB,UAAa,CACT,EAAK,IACL,gBAAiB,MACjB,EAAK,IACL,gBAAiB,OAGzB,YAAe,CACX,KAAQ,kBACR,KAAQ,YACR,OAAU,WACV,MAAS,UAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,KAAQ,cACR,KAAQ,aACR,IAAO,WACP,IAAO,UACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,IACL,GAAM,MACN,IAAO,QACP,KAAQ,WACR,KAAQ,QACR,MAAS,WACT,OAAU,cACV,MAAS,YAIrB,QAAW,CACP,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,UACL,EAAK,SACL,EAAK,UACL,EAAK,OACL,EAAK,OACL,EAAK,OACL,GAAM,QACN,GAAM,WACN,GAAM,YAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,KACN,GAAM,KACN,GAAM,MAEV,KAAQ,CACJ,EAAK,WACL,EAAK,QACL,EAAK,UACL,EAAK,WACL,EAAK,WACL,EAAK,YACL,EAAK,QACL,EAAK,UACL,EAAK,UACL,GAAM,UACN,GAAM,eACN,GAAM,kBAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,MAET,QAAW,CACP,EAAK,MAET,UAAa,CACT,EAAK,OAGb,YAAe,CACX,KAAQ,oBACR,KAAQ,cACR,OAAU,aACV,MAAS,eAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,MACL,KAAQ,MACR,MAAS,YACT,OAAU,cACV,QAAW,iBACX,QAAW,UACX,SAAY,aACZ,UAAa,gBACb,SAAY,WACZ,QAAW,UACX,SAAY,eAK5B,cAAiB,CACb,WAAc,gBACd,UAAa,SACb,cAAiB,QAGzB,QAAW,CACP,WAAc,CACV,IAAO,CACH,YAAe,YACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,OACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,gBACf,oBAAqB,MAG7B,uBAA0B,OAC1B,sBAAyB,IACzB,4BAA6B,CACzB,QAAW,IACX,MAAS,IACT,KAAQ,IACR,YAAe,IACf,SAAY,IACZ,UAAa,IACb,YAAe,IACf,uBAA0B,IAC1B,SAAY,IACZ,SAAY,IACZ,IAAO,MACP,cAAiB,KAErB,mCAAoC,CAChC,SAAY,aAEhB,mCAAoC,CAChC,SAAY,UAEhB,oCAAqC,CACjC,SAAY,YACZ,WAAc,yBAElB,sCAAuC,CACnC,SAAY,SAIxBjB,EAASgB,oBAAsB,CAC3B,QAAW,CACP,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KAET,aAAgB,aAChB,cAAiB,CACb,QAAW,IACX,MAAS,IACT,SAAY,IACZ,UAAa,IACb,YAAe,IACf,IAAO,MACP,cAAiB,IACjB,SAAY,KAEhB,cAAiB,IACjB,eAAkB,IAClB,cAAiB,CACb,MAAS,IACT,KAAQ,GACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,cAAiB,CACb,MAAS,KACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,IAG3B,MAAS,CACL,WAAc,CACV,GAAM,KACN,GAAM,MAEV,cAAiB,IACjB,KAAQ,CACJ,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,aAGf,OAAU,CACN,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,aAGd,KAAQ,CACJ,EAAK,QAKjBhB,EAAS5M,WAAa,CAClB9oU,EAAG,cACHC,EAAG,OACHT,EAAG,SACHD,EAAG,eAKPm2U,EAAS1rV,MAAQ,SACjB0rV,EAAS3jO,KAAO,OAIhB2jO,EAASqB,eAAiB,CACtB2C,EAAG,WACHC,EAAG,UACHC,EAAG,UACHC,EAAG,WACHC,EAAG,cAsCPpE,EAASpN,oBAAsBA,EAwB/BoN,EAAS1N,eAAiBA,EAgB1B0N,EAAS1J,iBAAmBA,EAc5B0J,EAASjN,wBAA0BA,EAmBnCiN,EAAStN,yBAA2BA,EAmBpCsN,EAAS7J,yBAA2BA,EAkCpC6J,EAAShJ,cAAgBA,EAgBzBgJ,EAASyB,qBAAuBA,EAgBhCzB,EAASpK,kBAAoBA,EAuB7BoK,EAAS9J,aAAeA,EA2DxB8J,EAASgC,mBAAqBA,EAwB9BhC,EAASqC,kBAAoBA,EAY7BrC,EAASlN,iBAAmBA,EA4C5BkN,EAASR,wBAA0BA,EAiGnCQ,EAASP,sBAAwBA,EAqBjCO,EAAS+C,sBAAwBA,EAejC/C,EAASgD,sBAAwBA,EAmBjChD,EAASiD,gBAAkBA,EAoB3BjD,EAASN,YAAcA,EAkBvBM,EAASjJ,sBAAwBA,EA2BjCiJ,EAAStL,cAAgBA,GAzqC7B,CA0qCG,KAAa,GAAW,KC1sC3B,IAAI2P,GAAc,6BACdC,GAAc,MCWd,IDGsB,WAStB,SAASC,EAAK71W,EAASsK,EAAMwrW,EAAOnyU,GAMhClwC,KAAKu+F,MAAO,EAOZv+F,KAAKsiX,WAAY,EACjBtiX,KAAKuM,QAAU,GACQ,kBAAZA,GACPvM,KAAKmzB,IAAM5mB,EACXvM,KAAK6W,KAAOA,EAAOA,EAAK8iI,cAAgBwoO,GACxCniX,KAAKu+F,OAAQqrQ,EAAkByY,IAASA,GAEhB,kBAAZ91W,IACZvM,KAAKuM,QAAUA,EACf28F,EAAMlpG,KAAMA,KAAKuM,UAErBvM,KAAK6W,KAAO7W,KAAK6W,KAAO7W,KAAK6W,KAAK8iI,cAAgBwoO,GAClDniX,KAAKkwC,iBAAoCvqC,IAArB3F,KAAKkwC,YAA6BlwC,KAAKkwC,YAAcA,EAS7EkyU,EAAK74W,UAAUm5L,KAAO,SAAUvuK,GAC5B,IAAI3nB,EAAQxM,KACZA,KAAKm0B,KAAOy1U,EAAkBz1U,GAAQn0B,KAAKm0B,KAAOA,EAClD,IAAIrG,EAAY,CACZhX,QAAQ,EACRyrW,YAAa,MAEbjvV,EAAU,IAAIC,SAAQ,SAAUC,EAAS81G,GACzC98H,EAAM+1W,YAAc,IAAI16Q,eACxBr7F,EAAM+1W,YAAYC,mBAAqB,WAAch2W,EAAMi2W,YAAYjvV,EAAS81G,IAC3EsgO,EAAkBp9V,EAAMk2W,UACzBl2W,EAAM+1W,YAAYl/C,OAAS72T,EAAMk2W,QAEhC9Y,EAAkBp9V,EAAMm2W,cACzBn2W,EAAM+1W,YAAYK,WAAap2W,EAAMm2W,YAGpC/Y,EAAkBp9V,EAAMq2W,WACzBr2W,EAAM+1W,YAAYO,QAAUt2W,EAAMq2W,SAGjCjZ,EAAkBp9V,EAAMu2W,WACzBv2W,EAAM+1W,YAAYS,QAAUx2W,EAAMu2W,SAIjCnZ,EAAkBp9V,EAAMy2W,oBACzBz2W,EAAM+1W,YAAYW,OAAON,WAAap2W,EAAMy2W,kBAEhDz2W,EAAM+1W,YAAYj0W,KAAK9B,EAAMqK,KAAMrK,EAAM2mB,IAAK3mB,EAAM+xF,MAE/CqrQ,EAAkBp9V,EAAM2nB,OAA+B,OAAtB3nB,EAAM0jC,aACxC1jC,EAAM+1W,YAAYY,iBAAiB,eAAgB32W,EAAM0jC,aAAe,mCAExE1jC,EAAM6lC,aACNvkB,EAAUy0V,YAAc/1W,EAAM+1W,YAC9B/1W,EAAM6lC,WAAWvkB,IAEhBA,EAAUhX,QACXtK,EAAM+1W,YAAY7/K,KAAMknK,EAAkBp9V,EAAM2nB,MAAqB,KAAb3nB,EAAM2nB,SAGtE,OAAOb,GAEX8uV,EAAK74W,UAAU88B,eAAiB,SAAUlS,GAItC,OAHIn0B,KAAK2hM,WACL3hM,KAAK2hM,UAAUxtK,EAAMn0B,MAElBm0B,GAEXiuV,EAAK74W,UAAU61U,eAAiB,SAAUlvI,GAItC,OAHIlwM,KAAK4hM,WACL5hM,KAAK4hM,UAAU5hM,KAAKuiX,aAEjBryK,GAEXkyK,EAAK74W,UAAUk5W,YAAc,SAAUjvV,EAAS81G,GAC5C,IAAIn1G,EAAOn0B,KAAKuiX,YAAYa,aAC5B,GAAIpjX,KAAK+xC,UAA4C,SAAhC/xC,KAAK+xC,SAAShsC,cAC/B,GAAa,KAATouB,EACAA,OAAOxuB,OAGP,IACIwuB,EAAO0b,KAAKE,MAAM5b,GAEtB,MAAOuB,IAKqB,IAAhC11B,KAAKuiX,YAAYc,aAEZrjX,KAAKuiX,YAAYv5Q,QAAU,KAAOhpG,KAAKuiX,YAAYv5Q,QAAU,KAAoC,MAA5BhpG,KAAKuiX,YAAYv5Q,OACvFx1E,EAAQxzB,KAAKqmC,eAAelS,IAGxBn0B,KAAKsiX,UACLh5O,EAAO,IAAIn2F,MAAMnzC,KAAKo/U,eAAep/U,KAAKuiX,YAAYe,cAGtD9vV,MAWhB4uV,EAAK74W,UAAUg6W,kBAAoB,SAAU1/W,GACzC,IAAI2/W,EACAplR,EAEJolR,EAAkB,GAClB,IAAI9yU,EAAUwxU,GAAY7+W,KAAKrD,KAAKuiX,YAAYkB,yBAChD,MAAO/yU,EACH8yU,EAAgB9yU,EAAQ,GAAG3qC,eAAiB2qC,EAAQ,GACpDA,EAAUwxU,GAAY7+W,KAAKrD,KAAKuiX,YAAYkB,yBAIhD,OADArlR,EAASolR,EAAgB3/W,EAAIkC,eACtB6jW,EAAkBxrQ,GAAU,KAAOA,GAnJzB,GCHE,WAQvB,SAASslR,EAAMn3W,EAASsK,EAAMq5B,GAM1BlwC,KAAK6W,KAAO,MAOZ7W,KAAKsiX,WAAY,EACM,kBAAZ/1W,GACPvM,KAAKmzB,IAAM5mB,EACXvM,KAAK6W,KAAQ,EAAMA,GAA6B7W,KAAK6W,KAA1BA,EAAK8iI,cAChC35I,KAAKkwC,YAAcA,GAEdu4D,EAASl8F,IAAYxD,OAAOmU,KAAK3Q,GAASxC,OAAS,GACxDm/F,EAAMlpG,KAAMuM,GAEhBvM,KAAKkwC,YAAe,EAAMlwC,KAAKkwC,aAAkC,kCAAnBlwC,KAAKkwC,YAsEvD,OA9DAwzU,EAAMn6W,UAAUm5L,KAAO,SAAUvuK,GAC7B,IAAI3nB,EAAQxM,KACR2jX,EAAe,CACf,mBAAoB,OACpB,sBAAuB,WACvB,2BAA4B,OAC5B,oCAAqC,YAEzC,IACQ,EAAM3jX,KAAKm2C,eAA+B,QAAdn2C,KAAK6W,KACjC7W,KAAKm2C,aAAe,IAAIytU,QAAQ5jX,KAAKmzB,IAAK,CAAEC,OAAQpzB,KAAK6W,OAEpD,EAAM7W,KAAKm2C,gBAChBn2C,KAAKm0B,KAAQ,EAAMA,GAAen0B,KAAKm0B,KAAZA,EAC3Bn0B,KAAKm2C,aAAe,IAAIytU,QAAQ5jX,KAAKmzB,IAAK,CACtCC,OAAQpzB,KAAK6W,KACb65B,QAAS,CAAE,eAAgB1wC,KAAKkwC,aAChCppC,KAAM9G,KAAKm0B,QAGnB,IAAIrG,EAAY,CAAEhX,QAAQ,EAAOq/B,aAAcn2C,KAAKm2C,cAEpD,OADAn2C,KAAK0uB,aAAa1uB,KAAK,cAAe8tB,GAClCA,EAAUhX,OACH,MAEX9W,KAAK6jX,cAAgBC,MAAM9jX,KAAKm2C,cACzBn2C,KAAK6jX,cAAc/vV,MAAK,SAAUb,GAErC,GADAzmB,EAAMkiB,aAAaliB,EAAM,UAAWymB,IAC/BA,EAASguQ,GACV,MAAMhuQ,EAGV,IADA,IAAI8wV,EAAe,OACV7tW,EAAK,EAAGlJ,EAAKjE,OAAOmU,KAAKymW,GAAeztW,EAAKlJ,EAAGjD,OAAQmM,IAAM,CACnE,IAAIrS,EAAMmJ,EAAGkJ,GACT+c,EAASyd,QAAQtJ,IAAI,kBAA0E,IAAvDnU,EAASyd,QAAQtJ,IAAI,gBAAgBl6B,QAAQrJ,KACrFkgX,EAAeJ,EAAa9/W,IAGpC,OAAOovB,EAAS8wV,QAEjBjwV,MAAK,SAAUK,GAEd,OADA3nB,EAAMkiB,aAAaliB,EAAM,aAAc2nB,EAAM3nB,GACtC2nB,KAERssE,OAAM,SAAU/qE,GACf,IAAIupT,EAAY,GAKhB,OAJIzyU,EAAM81W,YACN91W,EAAMkiB,aAAaliB,EAAM,aAAckpB,GACvCupT,EAAY1rT,QAAQ+1G,OAAO5zG,IAExBupT,MAGf,MAAOvpT,GACH,OAAOA,IAGfguV,EAAMn6W,UAAUmlB,aAAe,SAAU2Y,EAAUlT,EAAM6F,GAChD,EAAMqN,IAAiC,oBAAbA,GAC3BA,EAASlT,EAAM6F,IAGhB0pV,EApGe,ICZtBM,GAAc,wEACdC,GAAU,gBACVC,GAAY,eACZC,GAAW,4BACXC,GAAY,yEACZC,GAAe,WACfC,GAAe,8BACfC,GAAe,yBACfC,GAAe,CACfC,MAAO,yCACPC,KAAM,oCACNC,OAAQ,8BACRC,WAAY,2BACZC,OAAQ,wBACRC,OAAQ,wBACRC,KAAM,2BACNC,QAAS,kCAGS,qBAAX/1W,SACPA,OAAOg2W,eAAiBh2W,OAAOg2W,gBAAkB,IAOrD,IAAI,GAAyB,WACzB,SAASC,KA8VT,OA5VAA,EAAQC,qBAAuB,WAI3B,IAHA,IAAIC,EAAc,CAAEzgW,QAAS,IACzBzH,EAAOnU,OAAOmU,KAAKsnW,IACnBa,EAAa,GACRnvW,EAAK,EAAGo5B,EAASpyB,EAAMhH,EAAKo5B,EAAOvlC,OAAQmM,IAAM,CACtD,IAAIrS,EAAMyrC,EAAOp5B,GAEjB,GADAmvW,EAAaH,EAAQlmV,UAAU72B,MAAMq8W,GAAa,GAAK3gX,IACnDwhX,EAAY,CAMZ,GALAD,EAAYz9W,KAAwC,QAAhC09W,EAAW,GAAGt/W,cAA0B,QAAUs/W,EAAW,GAAGt/W,cACpFq/W,EAAYz9W,KAAwC,UAAhC09W,EAAW,GAAGt/W,cAA4B,SAAWq/W,EAAYz9W,KACrFy9W,EAAYnkV,QAAUokV,EAAW,GACjCD,EAAYzgW,QAAQhd,KAAOy9W,EAAYzgW,QAAQ2gW,SAAWxnV,UAAUwnV,SAE9DJ,EAAQlmV,UAAU72B,MAAM+7W,IAAY,CACtCkB,EAAYz9W,KAAO,OACnB,MAEJ,IAAIs5B,EAAUikV,EAAQlmV,UAAU72B,MAAMo8W,IACb,WAArBa,EAAYz9W,MAAqBs5B,IACjCmkV,EAAYnkV,QAAUA,EAAQ,IAElC,OAGR,OAAOmkV,GAQXF,EAAQK,SAAW,SAAUxuW,GAEzB,IAAI04D,EAAS,CACT/lD,MAAO,CACH87V,UAAW,cAAe/pF,QAAS,aAAc1jR,SAAU,aAE/D0tW,KAAM,CACFD,UAAW,cAAe/pF,QAAS,YAAa1jR,SAAU,aAE9D4R,IAAK,CACD67V,UAAW,YAAa/pF,QAAS,WAAY1jR,SAAU,WAE3DjB,OAAQ,CACJ0uW,UAAW,gBAAiB/pF,QAAS,cAAe1jR,SAAU,eAGtE,OAAQmtW,EAAQM,UAAY/1S,EAAO,GAAK14D,GAAOyuW,UAC1CN,EAAQzpF,QAAUhsN,EAAO,GAAK14D,GAAO0kR,SAAYypF,EAAQntW,SAA+C,GAApC,IAAM03D,EAAO,GAAK14D,GAAOgB,UACxF03D,EAAO,GAAK14D,GAAOgB,UAOjCmtW,EAAQQ,mBAAqB,WACzB,OAAOR,EAAQK,SAAS,UAO5BL,EAAQS,iBAAmB,WACvB,OAAOT,EAAQK,SAAS,QAO5BL,EAAQU,kBAAoB,WACxB,OAAOV,EAAQK,SAAS,SAO5BL,EAAQW,oBAAsB,WAC1B,OAAOX,EAAQK,SAAS,WAO5BL,EAAQY,SAAW,WACf,OAAQZ,EAAQntW,UAAYmtW,EAAQjjV,OAASijV,EAAQzpF,SAA6B,qBAAXxsR,SACA,IAAhEA,OAAO6uB,UAAUkB,UAAUj5B,cAAcmH,QAAQ,WACjD+B,OAAO6uB,UAAUkB,UAAUj5B,cAAcmH,QAAQ,WAAa,GASzEg4W,EAAQh5U,SAAW,SAAUroC,EAAKkiX,GAC9B,IAAId,EAAmC,qBAAXh2W,OAAyBA,OAAOg2W,eAAiB,GAO7E,MANyB,qBAAdnnV,WAAoD,aAAvBA,UAAUC,UAA2BD,UAAUkoV,eAAiB,IAAyB,IAApBd,EAAQzpF,UAAqB+oF,GAAaG,OAAOjlX,KAAKo+B,UAAUkB,aACzKimV,EAAe,UAAW,EAC1BA,EAAe,aAAc,EAC7BA,EAAe,YAAa,EAC5BA,EAAe,cAAe,GAE9B,qBAAuBA,EAAe,GAAKphX,GACpCohX,EAAe,GAAKphX,GAAOkiX,EAAKrmX,KAAKwlX,EAAQlmV,WAEjDimV,EAAe,GAAKphX,IAE/BkF,OAAOsB,eAAe66W,EAAS,YAAa,CACxC99U,IAAK,WACD,OAAO89U,EAAQe,IASnBzwU,IAAK,SAAUywU,GACXf,EAAQe,GAAKA,EACbh3W,OAAOg2W,eAAiB,IAE5B3yQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,OAAQ,CAOnC99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAejkV,MAC3B/xB,OAAOg2W,eAAejkV,KAAOkkV,EAAQC,uBAEzCl2W,OAAOg2W,eAAejkV,MAEjCsxE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,OAAQ,CAMnC99U,IAAK,WACD,OAAO89U,EAAQh5U,SAAS,OAAQ+3U,KAEpC3xQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,UAAW,CAMtC99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAexpF,SAC1BxsR,OAAOg2W,eAAexpF,QACzB,iBAAkBxsR,OAAO6uB,WACrB7uB,QACGA,OAAO6uB,WACN7uB,OAAO6uB,UAAUkoV,eAAiB,GAAQ,iBAAkB/2W,OAEtEA,OAAOg2W,eAAexpF,SAEjCnpL,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,YAAa,CAMxC99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAeO,WAC3Bv2W,OAAOg2W,eAAeO,UAAa,mBAAoBv2W,OAAO6uB,UAElE7uB,OAAOg2W,eAAeO,WAEjClzQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,cAAe,CAM1C99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAeiB,aAC3Bj3W,OAAOg2W,eAAeiB,YAAe,qBAAsBj3W,OAAO6uB,UAEtE7uB,OAAOg2W,eAAeiB,aAEjC5zQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,WAAY,CAMvC99U,IAAK,WACD,OAAO89U,EAAQh5U,SAAS,WAAY83U,KAExC1xQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,QAAS,CAMpC99U,IAAK,WACD,OAAO89U,EAAQh5U,SAAS,QAASi4U,KAErC7xQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,SAAU,CAMrC99U,IAAK,WACD,OAAO89U,EAAQh5U,SAAS,SAAUk4U,KAEtC9xQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,YAAa,CAMxC99U,IAAK,WACD,OAAO89U,EAAQh5U,SAAS,YAAam4U,KAEzC/xQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,YAAa,CAMxC99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAekB,YAClCl3W,OAAOg2W,eAAekB,YAAcz+Q,EAAYz4F,OAAOm3W,UAAY1+Q,EAAYz4F,OAAOo3W,WAC/E3+Q,EAAYz4F,OAAOq3W,WAA8B,WAAjBr3W,OAAOs3W,OACvCt3W,OAAOg2W,eAAekB,WAE1Bl3W,OAAOg2W,eAAekB,WAEjC7zQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,YAAa,CAMxC99U,IAAK,WACD,OAAO89U,EAAQh5U,SAAS,YAAao4U,KAEzChyQ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,kBAAmB,CAM9C99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAe7wW,iBAC3BnF,OAAOg2W,eAAe7wW,gBAAkB8wW,EAAQQ,qBAEpDz2W,OAAOg2W,eAAe7wW,iBAEjCk+F,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,iBAAkB,CAM7C99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAe/nV,gBAC3BjuB,OAAOg2W,eAAe/nV,eAAiBgoV,EAAQU,oBAEnD32W,OAAOg2W,eAAe/nV,gBAEjCo1E,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,gBAAiB,CAM5C99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAe7oW,eAC3BnN,OAAOg2W,eAAe7oW,cAAgB8oW,EAAQS,mBAElD12W,OAAOg2W,eAAe7oW,eAEjCk2F,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe66W,EAAS,mBAAoB,CAM/C99U,IAAK,WACD,OAAIsgE,EAAYz4F,OAAOg2W,eAAeuB,kBAC3Bv3W,OAAOg2W,eAAeuB,iBAAmBtB,EAAQW,sBAErD52W,OAAOg2W,eAAeuB,kBAEjCl0Q,YAAY,EACZC,cAAc,IAGlB2yQ,EAAQe,GAA0B,qBAAdnoV,UAA4BA,UAAUkB,UAAY,GAC/DkmV,EA/ViB,GCPxB,GAA8B,WAC9B,SAASuB,KAsHT,OAnHAA,EAAaC,kBAAoB,SAAUtiX,GACvC,MAAI,gBAAiBA,EACVA,EAAQuiX,YAAYl3S,QAG3BrrE,EAAQuiX,YAAc,GACfviX,EAAQuiX,YAAYl3S,OAAS,KAa5Cg3S,EAAatyW,IAAM,SAAU/P,EAASgiB,EAAWwgW,EAAUC,EAAQC,GAC/D,IACIC,EADAv1S,EAAYi1S,EAAaC,kBAAkBtiX,GAG3C2iX,EADAD,EACmB9b,EAAS4b,EAAUE,GAGnBF,EAEnBC,IACAE,EAAmBA,EAAiBv4W,KAAKq4W,IAG7C,IADA,IAAI9vW,EAAQqP,EAAU/lB,MAAM,KACnB+J,EAAI,EAAGA,EAAI2M,EAAMhN,OAAQK,IAC9BonE,EAAU98D,KAAK,CACX/M,KAAMoP,EAAM3O,SAASgC,EAAEsP,WAAY,KACnCktW,SAAUA,EACV5b,SAAU+b,IAEV,GAAQj0T,KACR1uD,EAAQ48C,iBAAiBjqC,EAAM3O,SAASgC,EAAEsP,WAAY,KAAMqtW,GAG5D3iX,EAAQ48C,iBAAiBjqC,EAAM3O,SAASgC,EAAEsP,WAAY,KAAMqtW,EAAkB,CAAEC,SAAS,IAGjG,OAAOD,GAUXN,EAAax4W,OAAS,SAAU7J,EAASgiB,EAAWwgW,GAmBhD,IAlBA,IAAIp1S,EAAYi1S,EAAaC,kBAAkBtiX,GAC3C2S,EAAQqP,EAAU/lB,MAAM,KACxBk5C,EAAU,SAAUrM,GACpB,IACI65U,EADAjyW,GAAS,EAET08D,GAAkC,IAArBA,EAAUznE,QACvBynE,EAAU+oB,MAAK,SAAU3rF,EAAGxE,GACxB,OAAOwE,EAAEjH,OAASoP,EAAM3O,SAAS8kC,EAAExzB,WAAY,MAAQ9K,EAAEg4W,WAAaA,IACjE9xW,EAAQ1K,EAAG28W,EAAmBn4W,EAAEo8V,UAAU,OAGxC,IAAXl2V,GACA08D,EAAUz8D,OAAOD,EAAO,GAExBiyW,GACA3iX,EAAQw2E,oBAAoB7jE,EAAM3O,SAAS8kC,EAAExzB,WAAY,KAAMqtW,IAG9D75U,EAAI,EAAGA,EAAIn2B,EAAMhN,OAAQmjC,IAC9BqM,EAAQrM,IAShBu5U,EAAap/R,YAAc,SAAUjjF,GACjC,IAAIotE,EACAy1S,EAEJz1S,EAAYi1S,EAAaC,kBAAkBtiX,GAE3C6iX,EAAW3c,EAAO,GAAI2c,EAAUz1S,GAChC,IAAK,IAAIpnE,EAAI,EAAGA,EAAI68W,EAASl9W,OAAQK,IAAK,CACtC,IAAIy0B,EAAaooV,EAAS7+W,SAASgC,EAAEsP,WAAY,KACjDtV,EAAQw2E,oBAAoB/7C,EAAWl3B,KAAMk3B,EAAWmsU,UACxDx5R,EAAUz9C,UAYlB0yV,EAAal2W,QAAU,SAAUnM,EAASgiB,EAAWggB,GAEjD,IADA,IAAIorC,EAAYi1S,EAAaC,kBAAkBtiX,GACtC8R,EAAK,EAAGgzP,EAAc13L,EAAWt7D,EAAKgzP,EAAYn/P,OAAQmM,IAAM,CACrE,IAAIk6D,EAAU84L,EAAYhzP,GACtBk6D,EAAQzoE,OAASye,GACjBgqD,EAAQ46R,SAASv+V,KAAKzM,KAAMomC,KAIjCqgV,EAvHsB,GChB7BS,GAAU,gBAcP,SAAS15W,GAAcsK,EAAS8K,GACnC,IAAIxe,EAAW8iX,GAAQxnX,KAAKoY,GAAW7B,SAAS+mD,gBAAgB,6BAA8BllD,GAAW7B,SAASzI,cAAcsK,GAChI,MAA4B,qBAAjB,IAGX1T,EAAQgP,UAAawP,EAAWxP,UAAYwP,EAAWxP,UAAY,QACtCzN,IAAzBid,EAAWnV,YACXrJ,EAAQqJ,UAAYmV,EAAWnV,gBAEb9H,IAAlBid,EAAWhP,KACXxP,EAAQwP,GAAKgP,EAAWhP,SAEFjO,IAAtBid,EAAWrL,QACXnT,EAAQ6O,aAAa,QAAS2P,EAAWrL,aAEpB5R,IAArBid,EAAWvL,OACX,GAAWjT,EAASwe,EAAWvL,QAbxBjT,EAyBR,SAAS+iX,GAASh7R,EAAUkqC,GAG/B,IAFA,IAAIlvH,EAAYigX,GAAa/wP,GACzBu2O,EAAS/1U,OACJ3gB,EAAK,EAAGlJ,EAAKm/E,EAAUj2E,EAAKlJ,EAAGjD,OAAQmM,IAE5C,IADA,IAAI2vB,EAAM74B,EAAGkJ,GACJjJ,EAAK,EAAGo6W,EAAclgX,EAAW8F,EAAKo6W,EAAYt9W,OAAQkD,IAAM,CACrE,IAAIQ,EAAY45W,EAAYp6W,GAC5B,GAAIw7F,EAAS5iE,GAAM,CACf,IAAIyhV,EAAWp7U,EAAS,uBAAwBrG,GAC5C+jU,EAAkB0d,GAClB//V,EAAS,uBAAwB9Z,EAAWo4B,GAEtC,IAAI+mU,EAAO,MAAQn/V,EAAY,MAAO,KAAK/N,KAAK4nX,IACtD//V,EAAS,uBAAwB+/V,EAAW,IAAM75W,EAAWo4B,QAI5DA,EAAI1+B,UAAUC,SAASqG,IACxBo4B,EAAI1+B,UAAUgN,IAAI1G,GAKlC,OAAO0+E,EAUJ,SAASo7R,GAAYp7R,EAAUkqC,GAElC,IADA,IAAIlvH,EAAYigX,GAAa/wP,GACpBngH,EAAK,EAAGlJ,EAAKm/E,EAAUj2E,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAClD,IAAI2vB,EAAM74B,EAAGkJ,GACTm+E,EAAOoU,EAAS5iE,GAChB2hV,EAAYnzR,EAAOnoD,EAAS,uBAAwBrG,GAAyB,KAAlBA,EAAIp4B,UACnE,GAAI+5W,EACA,IAAK,IAAIv6W,EAAK,EAAGw6W,EAActgX,EAAW8F,EAAKw6W,EAAY19W,OAAQkD,IAAM,CACrE,IAAIQ,EAAYg6W,EAAYx6W,GAC5B,GAAIonF,EAAM,CACN,IAAIqzR,EAAYx7U,EAAS,uBAAwBrG,GAC7C8hV,EAAWD,EAAUrnX,MAAM,KAC3ByU,EAAQ6yW,EAASz6W,QAAQO,IACd,IAAXqH,GACA6yW,EAAS5yW,OAAOD,EAAO,GAE3ByS,EAAS,uBAAwBogW,EAAShzW,KAAK,KAAMkxB,QAGrDA,EAAI1+B,UAAU8G,OAAOR,IAKrC,OAAO0+E,EASX,SAASi7R,GAAa/wP,GAClB,IAAIlvH,EAAY,GAOhB,MANuB,kBAAZkvH,EACPlvH,EAAUuN,KAAK2hH,GAGflvH,EAAYkvH,EAETlvH,EASJ,SAASmrD,GAAUluD,GACtB,IAAIyhC,EAAMzhC,EACV,MAAiC,KAAzByhC,EAAI9gC,MAAMwtD,YAAqB1sB,EAAI/zB,YAAc,EAWtD,SAAS+5H,GAAQuyC,EAAcJ,EAAW4pM,GAE7C,IADA,IAAIC,EAAU5xW,SAAS0oK,yBACdzoK,EAAK,EAAGlJ,EAAKoxK,EAAcloK,EAAKlJ,EAAGjD,OAAQmM,IAAM,CACtD,IAAI2vB,EAAM74B,EAAGkJ,GACb2xW,EAAQl6W,YAAYk4B,GAMxB,OAJAm4I,EAAUhxJ,aAAa66V,EAAS7pM,EAAU70J,mBACtCy+V,GACAE,GAAc9pM,GAEXI,EAWJ,SAAS0qJ,GAAO1qJ,EAAcJ,EAAW4pM,GAC5C,IAAIC,EAAU5xW,SAAS0oK,yBACvB,GAAIP,aAAwB2pM,SACxB,MAAO3pM,EAAar0K,OAAS,EACzB89W,EAAQl6W,YAAYywK,EAAa,SAIrC,IAAK,IAAIloK,EAAK,EAAGlJ,EAAKoxK,EAAcloK,EAAKlJ,EAAGjD,OAAQmM,IAAM,CACtD,IAAI2vB,EAAM74B,EAAGkJ,GACb2xW,EAAQl6W,YAAYk4B,GAO5B,OAJAm4I,EAAUrwK,YAAYk6W,GAClBD,GACAE,GAAc9pM,GAEXI,EAQX,SAAS0pM,GAAcjiV,GACnB,IAAImiV,EAAWniV,EAAI3b,iBAAiB,UACpC89V,EAASv0V,SAAQ,SAAUrvB,GACvB,IAAI6jX,EAAShyW,SAASzI,cAAc,UACpCy6W,EAAOzmV,KAAOp9B,EAAQgP,UACtB6C,SAASiyW,KAAKv6W,YAAYs6W,GAC1BE,GAAOF,MAWR,SAASE,GAAO/jX,GACnB,IAAI4jD,EAAa5jD,EAAQ4jD,WACzB,GAAIA,EACA,OAAOA,EAAW6M,YAAYzwD,GAU/B,SAAS6J,GAAO7J,GACnB,IAAI4jD,EAAa5jD,EAAQ4jD,WACzB,GAAaq/B,YAAYjjF,GACzB4jD,EAAW6M,YAAYzwD,GAWpB,SAAS,GAAWA,EAAS6qB,GAGhC,IAFA,IAAI/R,EAAOnU,OAAOmU,KAAK+R,GACnB4W,EAAMzhC,EACD8R,EAAK,EAAGo5B,EAASpyB,EAAMhH,EAAKo5B,EAAOvlC,OAAQmM,IAAM,CACtD,IAAIrS,EAAMyrC,EAAOp5B,GACjB,GAAIuyF,EAAS5iE,GAAM,CACf,IAAIuiV,EAAOvkX,EACC,aAARA,IACAukX,EAAO,YAEXviV,EAAI5W,WAAW,GAAKm5V,GAAQn5V,EAAW,GAAKprB,QAG5CgiC,EAAI5yB,aAAapP,EAAKorB,EAAW,GAAKprB,IAG9C,OAAOgiC,EAYJ,SAAS,GAAO6jB,EAAUqyD,EAASssQ,GAGtC,YAFgB,IAAZtsQ,IAAsBA,EAAU9lG,UACpCyzC,EAAW4+T,GAAc5+T,GAClBqyD,EAAQxnG,cAAcm1C,GAY1B,SAASy3E,GAAUz3E,EAAUqyD,EAASssQ,QACzB,IAAZtsQ,IAAsBA,EAAU9lG,UACpCyzC,EAAW4+T,GAAc5+T,GACzB,IAAI6+T,EAAWxsQ,EAAQ7xF,iBAAiBw/B,GACxC,OAAO6+T,EASX,SAASD,GAAc5+T,GACnB,IAAI8+T,EAAY,+DAChB,GAAI9+T,EAASvhD,MAAM,YAAcuhD,EAASvhD,MAAMqgX,GAAY,CAExD,IADA,IAAIC,EAAS/+T,EAASrpD,MAAM,KACnB+J,EAAI,EAAGA,EAAIq+W,EAAO1+W,OAAQK,IAAK,CAEpC,IADA,IAAIo2G,EAAOioQ,EAAOrgX,SAASgC,EAAEsP,WAAY,KAAKrZ,MAAM,KAC3C6sC,EAAI,EAAGA,EAAIszE,EAAKz2G,OAAQmjC,IAC7B,GAAIszE,EAAKp4G,SAAS8kC,EAAExzB,WAAY,KAAKxM,QAAQ,MAAQ,IAC5CszG,EAAKp4G,SAAS8kC,EAAExzB,WAAY,KAAKvR,MAAM,UAAW,CACnD,IAAIugX,EAAUloQ,EAAKp4G,SAAS8kC,EAAExzB,WAAY,KAAKrZ,MAAM,KACrD,GAAIqoX,EAAQ,GAAGvgX,MAAM,QAAUugX,EAAQ,GAAGvgX,MAAMqgX,GAAY,CACxD,IAAIG,EAAQnoQ,EAAKp4G,SAAS8kC,EAAExzB,WAAY,KAAKrZ,MAAM,KACnDsoX,EAAM,GAAKA,EAAM,GAAGlmW,QAAQ,IAAK,SAAY,KAC7C+9F,EAAKp4G,SAAS8kC,EAAExzB,WAAY,KAAOivW,EAAMh0W,KAAK,MAK9D8zW,EAAOrgX,SAASgC,EAAEsP,WAAY,KAAO8mG,EAAK7rG,KAAK,KAEnD,OAAO8zW,EAAO9zW,KAAK,KAEvB,OAAO+0C,EAUJ,SAAS36C,GAAQ3K,EAASslD,GAC7B,IAAI/J,EAAKv7C,EACT,GAA0B,oBAAfu7C,EAAG5wC,QACV,OAAO4wC,EAAG5wC,QAAQ26C,GAEtB,MAAO/J,GAAsB,IAAhBA,EAAG2pD,SAAgB,CAC5B,GAAI,GAAQ3pD,EAAI+J,GACZ,OAAO/J,EAEXA,EAAKA,EAAGqI,WAEZ,OAAO,KAyDJ,SAAS4gU,GAAkBxkX,EAASiT,QACzB1R,IAAV0R,GACAtO,OAAOmU,KAAK7F,GAAOoc,SAAQ,SAAU5vB,GAEjCO,EAAQW,MAAMlB,GAAOwT,EAAMxT,MAahC,SAAS,GAAUO,EAASw2R,EAAY7kC,GAC3CoxH,GAAS,CAAC/iX,GAAUw2R,GACpB2sF,GAAY,CAACnjX,GAAU2xP,GAUpB,SAAS,GAAQ3xP,EAASslD,GAE7B,IAAIizG,EAAUv4J,EAAQu4J,SAAWv4J,EAAQykX,mBAAqBzkX,EAAQo7K,sBACtE,OAAI7iB,EACOA,EAAQlwJ,KAAKrI,EAASslD,IAG6C,IAAnE,GAAGx8C,QAAQT,KAAKwJ,SAASiU,iBAAiBw/B,GAAWtlD,GCtapE,IAqUW0kX,GArUPC,GAAa,IAAIlyV,OAAO,KAOxB,GAAsB,WAOtB,SAASmyV,EAAKz8W,EAASnI,GACnBpE,KAAK0tN,YAAa,EAClB1tN,KAAKipX,sBAAuB,EAC5BjpX,KAAKk1H,kBAAmB,EACxBl1H,KAAKkpX,wBAAyB,EAC9BlpX,KAAK4wF,qBAAsB,EAC3B5wF,KAAK4iB,WAAa,GAClB5iB,KAAKmpX,kBAAoB,GACzBnpX,KAAK09F,cAAgB,GACrB19F,KAAKopX,YAAc,GACnBppX,KAAKk3D,YAAa,EAClBl3D,KAAKqpX,uBAAwB,EAE7BrpX,KAAKspX,YAAc,aACnBtpX,KAAKupX,uBAAyB,GAC9BvpX,KAAKwpX,cAAgB,IAAI,GAASxpX,MAC7B0nG,EAAYtjG,KAETpE,KAAKoE,QADL,kBAAoB,EACL6R,SAAS1B,cAAcnQ,GAGvBA,EAEdwlW,EAAkB5pW,KAAKoE,WACxBpE,KAAK4wF,qBAAsB,EAC3B5wF,KAAKypX,gBAGR/hR,EAAYn7F,IACbvM,KAAKuT,cAAchH,GAAS,GAEhCvM,KAAKg2F,aAAc,EAoOvB,OAzNAgzR,EAAKz/W,UAAUgK,cAAgB,SAAU4J,EAAM6oB,GAC3C,IAAI0jV,EAAgB1pX,KAAK4wF,oBACzB5wF,KAAK4wF,sBAAwB5qD,EAC7BkjE,EAAMlpG,KAAMmd,IACS,IAAjB6oB,GACAkjE,EAAMlpG,KAAKmpX,kBAAmBhsW,GAC9Bnd,KAAKqQ,YAEAu6V,KAAc5qW,KAAK0tN,YACxB1tN,KAAK2pX,eAAexsW,GAExBnd,KAAKspX,cACLtpX,KAAKmpX,kBAAoB,GACzBnpX,KAAK09F,cAAgB,GACrB19F,KAAK4wF,oBAAsB84R,GAU/BV,EAAKY,kBAAoB,SAAUh9U,EAAK4e,GAEpC,IADA,IAAItuC,EAAOnU,OAAOmU,KAAK0vB,GACd12B,EAAK,EAAGo5B,EAASpyB,EAAMhH,EAAKo5B,EAAOvlC,OAAQmM,IAAM,CACtD,IAAIrS,EAAMyrC,EAAOp5B,GACjB,GAAIs1C,EAAO,GAAK3nD,aAAgBqF,MAC5B,IAAK,IAAI8D,EAAK,EAAGC,EAAKu+C,EAAO,GAAK3nD,GAAMmJ,EAAKC,EAAGlD,OAAQiD,IAAM,CAC1D,IAAIovW,EAAQnvW,EAAGD,QACQrH,IAAnBy2W,EAAM/rW,UACN+rW,EAAM/rW,gBAKdm7C,EAAO,GAAK3nD,GAAKwM,aAI7B24W,EAAKz/W,UAAUouD,aAAe,WAC1B33D,KAAKspX,cACLtpX,KAAKmpX,kBAAoB,GACzBnpX,KAAK09F,cAAgB,GACrB19F,KAAKupX,uBAAyB,IAOlCP,EAAKz/W,UAAU8G,SAAW,WAEtB,GADA24W,EAAKY,kBAAkB5pX,KAAKupX,uBAAwBvpX,MAChD+I,OAAO8gX,oBAAoB7pX,KAAKmpX,mBAAmBp/W,OAAQ,CAC3D,IAAI2/W,EAAgB1pX,KAAK4wF,oBACrBk5R,EAAa9pX,KAAKmpX,kBAClBY,EAAa/pX,KAAK09F,cACtB19F,KAAK23D,eACL33D,KAAK4wF,qBAAsB,EAC3B5wF,KAAK+c,kBAAkB+sW,EAAYC,GACnC/pX,KAAK4wF,oBAAsB84R,IAInCV,EAAKz/W,UAAUogX,eAAiB,SAAUG,GACtC,GAAKlf,IAAL,CAGAkf,EAAaA,GAA0B,GACvCxf,EAAOtqW,KAAKopX,YAAa,GAAIU,GAAY,GACzC,IAAIE,EAAW,WACXhqX,KAAKkpX,wBAA0Bj6W,OAAO,GAAK+6W,GAAUv0R,cACrDxmF,OAAO,GAAK+6W,GAAUv0R,YAAYz1F,MAClCA,KAAKopX,YAAc,MAI3BJ,EAAKz/W,UAAU4/H,YAAc,SAAUtlI,EAAKqpH,EAAUC,GAClD,GAAIy9O,IAAY,CAEZ,IAAIkf,EAAa,GACjBA,EAAW,GAAKjmX,GAAOqpH,EACvBltH,KAAK2pX,eAAeG,GAEpB9pX,KAAK4wF,sBAGT5wF,KAAK09F,cAAc,GAAK75F,GAAOspH,EAC/BntH,KAAKmpX,kBAAkB,GAAKtlX,GAAOqpH,EACnCltH,KAAKspX,cACLtpX,KAAKspX,YAAc/nL,EAAavhM,KAAKqQ,SAAS7B,KAAKxO,SAUvDgpX,EAAKz/W,UAAUy3C,iBAAmB,SAAU56B,EAAWg2E,GACnDp8F,KAAKwpX,cAAc9uS,GAAGt0D,EAAWg2E,IASrC4sR,EAAKz/W,UAAUqxE,oBAAsB,SAAUx0D,EAAWg2E,GACtDp8F,KAAKwpX,cAAc3uS,IAAIz0D,EAAWg2E,IAatC4sR,EAAKz/W,UAAUgH,QAAU,SAAU6V,EAAWggB,EAAWC,EAAgBy1U,GACrE,IAAItvW,EAAQxM,KACZ,IAAyB,IAArBA,KAAKg2F,YAAsB,CAC3B,IAAI0zR,EAAgB1pX,KAAK4wF,oBACzB5wF,KAAK4wF,qBAAsB,EAC3B,IAAIz8D,EAAOn0B,KAAKwpX,cAAc/nW,OAAO2E,EAAWggB,EAAWC,EAAgBy1U,GAC3E,GAAIiN,GAAWrpX,KAAK0mB,GAAY,CAC5B,IAAIg2E,EAAUlwD,EAAS9lB,EAAWpmB,MAClC,GAAIo8F,EAAS,CACT,IAAI2/Q,EAAS,SACb,GAAI9sW,OAAO,GAAK8sW,GAAS,CACrB,IAAIzoV,EAAU8oE,EAAQ3vF,KAAKzM,KAAMomC,GAC7B9S,GAAmC,oBAAjBA,EAAQQ,KACrBuS,EAID/S,EAAQQ,MAAK,SAAUK,GACfkS,IACAlS,EAAuB,kBAATA,GAAqB3nB,EAAMg9W,cAAcnN,OAAOloV,GAC1D0b,KAAKE,MAAM5b,GAAQA,EACvBkS,EAAe55B,KAAKD,EAAO2nB,OAEhCssE,OAAM,SAAUtsE,GACX2nV,IACA3nV,EAAuB,kBAATA,GAAqB3nB,EAAMg9W,cAAcnN,OAAOloV,GAAQ0b,KAAKE,MAAM5b,GAAQA,EACzF2nV,EAAarvW,KAAKD,EAAO2nB,OAZjCA,EAAOb,EAiBN+S,GACLA,EAAe55B,KAAKzM,KAAMomC,QAI9Bg2D,EAAQ3vF,KAAKzM,KAAMomC,GACfC,GACAA,EAAe55B,KAAKzM,KAAMomC,QAI7BC,GACLA,EAAe55B,KAAKzM,KAAMomC,GAIlC,OADApmC,KAAK4wF,oBAAsB84R,EACpBv1V,IAQf60V,EAAKz/W,UAAUkgX,YAAc,WAEzB,IAAIQ,EAAc,KAAOjqX,KAAK4c,gBAAgB7W,cAC9CohX,GAAS,CAACnnX,KAAKoE,SAAU,CAAC,QAAS6lX,IAC9BrgB,EAAkB5pW,KAAKoE,QAAQwkL,eAIhCrhK,EAAS,gBAAiB,CAACvnB,MAAOA,KAAKoE,SAHvCpE,KAAKoE,QAAQwkL,cAAcl0K,KAAK1U,OAWxCgpX,EAAKz/W,UAAU+Q,QAAU,WACrB,IAAI9N,EAAQxM,KAEZA,KAAKoE,QAAQwkL,cACT5oL,KAAKoE,QAAQwkL,cACT5oL,KAAKoE,QAAQwkL,cAAczwJ,QAAO,SAAU/tB,GACxC,OAAI0+W,GACOA,GAAW1+W,KAAO0+W,GAAWt8W,GAEjCpC,IAAMoC,KAEf,GACV+6W,GAAY,CAACvnX,KAAKoE,SAAU,CAAC,KAAOpE,KAAK4c,kBACC,IAAtC5c,KAAKoE,QAAQwkL,cAAc7+K,QAE3Bw9W,GAAY,CAACvnX,KAAKoE,SAAU,CAAC,UAEjCpE,KAAK23D,eACL33D,KAAKwpX,cAAclvW,UACnBta,KAAKg2F,aAAc,GAEhBgzR,EA1Qc,GAqRlB,SAASkB,GAAa1qU,EAAM2qU,GAC/B,IAAInwV,EACA5vB,EACAy7B,EAAsB,kBAAT2Z,EAAoBvpC,SAASkhD,eAAe3X,GAAQA,EACrE,IAAKp1C,EAAI,EAAGA,EAAIy7B,EAAI+iJ,cAAc7+K,OAAQK,IAEtC,GADA4vB,EAAW6L,EAAI+iJ,cAAcxgL,SAASgC,EAAEsP,WAAY,KAChC,kBAATywW,EAAmB,CAC1B,IAAIC,EAAWpwV,EAASpd,gBACxB,GAAIutW,IAASC,EACT,OAAOpwV,OAKX,GAAIA,aAAoBmwV,EACpB,OAAOnwV,EA2BhB,IAAIqwV,GAAgB,SAAUC,GAASxB,GAAawB,GC9T3D,SAASn9U,GAAUnT,EAAUuwV,EAAQl5R,EAAcx6E,GAK/C,OAHKmjB,EAASpX,WAAWxZ,eAAemhX,IAAavwV,EAASpX,WAAW2nW,aAAmB1zW,IACxFmjB,EAASpX,WAAW,GAAK2nW,GAAU/tH,EAAe3lP,EAAM,CAACmjB,EAAUuwV,EAAQl5R,KAExEr3D,EAASpX,WAAW,GAAK2nW,GAcpC,SAASC,GAAexwV,EAAUuwV,EAAQl5R,EAAcx6E,EAAM4zW,EAAUC,GAGpE,IAFA,IAAI3mX,EAAS,GACT0mB,EAAM4mE,EAAeA,EAAatnF,OAAS,EACtCK,EAAI,EAAGA,EAAIqgB,EAAKrgB,IAAK,CAC1B,IAAIugX,EAAU9zW,EAId,GAHI6zW,IACAC,EAAU9zW,EAAKw6E,EAAajpF,SAASgC,EAAEsP,WAAY,KAAMsgB,IAEzDywV,EAAU,CACV,IAAI3e,EAAOtvG,EAAemuH,EAAS,CAAC3wV,EAAUuwV,EAAQ,IAAI,IAC1Dze,EAAKv4V,cAAc89E,EAAajpF,SAASgC,EAAEsP,WAAY,MAAM,GAC7D3V,EAAO2Q,KAAKo3V,QAGZ/nW,EAAO2Q,KAAK8nP,EAAemuH,EAAS,CAAC3wV,EAAUuwV,EAAQl5R,EAAajpF,SAASgC,EAAEsP,WAAY,MAAM,KAGzG,OAAO3V,EASX,SAAS6mX,GAAev5R,EAAck5R,GAClC,OAAO,WAKH,OAHKvqX,KAAK4iB,WAAWxZ,eAAemhX,KAChCvqX,KAAK4iB,WAAW,GAAK2nW,GAAUl5R,GAE5BrxF,KAAK4iB,WAAW,GAAK2nW,IAUpC,SAASM,GAAex5R,EAAck5R,GAClC,OAAO,SAAUr9P,GACb,GAAIltH,KAAK4iB,WAAW,GAAK2nW,KAAYr9P,EAAU,CAE3C,IAAIG,EAASrtH,KAAK4iB,WAAWxZ,eAAemhX,GAAUvqX,KAAK4iB,WAAW2nW,GAAUl5R,EAChFrxF,KAAKmpI,YAAYohP,EAAQr9P,EAAUG,GACnCrtH,KAAK4iB,WAAW,GAAK2nW,GAAUr9P,IAa3C,SAAS49P,GAAcz5R,EAAck5R,EAAQ1zW,GACzC,OAAO,WACH,OAAOs2B,GAAUntC,KAAMuqX,EAAQl5R,EAAcx6E,IAWrD,SAASk0W,GAAc15R,EAAck5R,EAAQ1zW,GACzC,OAAO,SAAUq2G,GACb//E,GAAUntC,KAAMuqX,EAAQl5R,EAAcx6E,GAAMtD,cAAc25G,IA2ClE,SAAS89P,GAAmB35R,EAAck5R,EAAQ1zW,GAC9C,OAAO,WACH,IAAIrK,EAAQxM,KAEZ,IAAKA,KAAK4iB,WAAWxZ,eAAemhX,GAAS,CACzC,IAAIU,EAAgBT,GAAexqX,KAAMuqX,EAAQl5R,EAAcx6E,GAAM,GACrE7W,KAAK4iB,WAAW,GAAK2nW,GAAUU,EAEnC,IAAIxxI,OAAkC9zO,IAAvB3F,KAAKkrX,eAA+BlrX,KAAKkrX,cAAc7B,uBAC/DrpX,KAAKqpX,sBAeZ,OAbKrpX,KAAK4iB,WAAW2nW,GAAQnhX,eAAe,SAAYqwO,GACpD,CAAC,OAAQ,OAAOhmN,SAAQ,SAAU03V,GAC9B,IAAIC,EAAa,CACbnlX,MAAOolX,GAA4BF,EAAYZ,EAAQ1zW,EAAMrK,EAAMoW,WAAW,GAAK2nW,IAAS/7W,KAAKhC,GACjG+lG,cAAc,GAElBxpG,OAAOsB,eAAemC,EAAMoW,WAAW,GAAK2nW,GAASY,EAAYC,MAIpEprX,KAAK4iB,WAAW2nW,GAAQnhX,eAAe,mBACxCL,OAAOsB,eAAerK,KAAK4iB,WAAW,GAAK2nW,GAAS,iBAAkB,CAAEtkX,OAAO,IAE5EjG,KAAK4iB,WAAW,GAAK2nW,IAUpC,SAASe,GAAmBj6R,EAAck5R,EAAQ1zW,GAC9C,OAAO,SAAUq2G,GACbltH,KAAKipX,sBAAuB,EAC5B,IAAIsC,EAAqBf,GAAexqX,KAAMuqX,EAAQl5R,EAAcx6E,GAAM,GACtE20W,EAAmBhB,GAAexqX,KAAMuqX,EAAQr9P,EAAUr2G,GAAM,GACpE7W,KAAKipX,sBAAuB,EAC5BjpX,KAAKmpI,YAAYohP,EAAQiB,EAAkBD,GAC3CvrX,KAAK4iB,WAAW,GAAK2nW,GAAUiB,GA6CvC,SAASH,GAA4BI,EAAOlB,EAAQ1zW,EAAMsG,GAEtD,OAAO,WAEH,IADA,IAAI+vG,EAAW,GACNh3G,EAAK,EAAGA,EAAKpM,UAAUC,OAAQmM,IACpCg3G,EAASh3G,GAAMpM,UAAUoM,GAE7B,IAAIw1W,EAAY1rX,KAAK2zD,SAAW3zD,KAAK2rX,eAAiB,IAAMpB,EAAS,IAAMA,EAAS,IACpF,OAAQkB,GACJ,IAAK,OACD,IAAK,IAAIrhX,EAAI,EAAGA,EAAI8iH,EAASnjH,OAAQK,IAAK,CACtC,IAAIwhX,EAAgB1+P,EAAS9kH,SAASgC,EAAEsP,WAAY,KACpDxQ,MAAMK,UAAU,GAAKkiX,GAAOv/W,MAAMiR,EAAM,CAACyuW,IACzC,IAAIC,EAAUC,GAAcJ,GAAavuW,EAAKpT,OAAS,GAAI6hX,GAAgB5rX,KAAKkrX,cAAeO,GAC/FzrX,KAAK2pX,eAAekC,EAAS3+P,EAAS9kH,SAASgC,EAAEsP,WAAY,MAAM,EAAO+xW,GAE9E,MACJ,IAAK,MACDviX,MAAMK,UAAU,GAAKkiX,GAAOv/W,MAAMiR,GAElC,IAAIuL,EAAQojW,GAAcJ,EAAYvuW,EAAKpT,OAAQ,MAAO/J,KAAKkrX,cAAeO,GAC9EzrX,KAAK2pX,eAAejhW,EAAO,CAAEqjW,UAAW,QAAS,EAAON,GACxD,MAER,OAAOtuW,GAWf,SAAS2uW,GAAcJ,EAAWzlX,EAAO+lX,EAAiBC,GACtD,IAAIC,EAAcR,EAClB,GAAIM,IACAE,EAAc,GACdA,EAAY,GAAKR,GAAazlX,EAC1BA,GAA0B,kBAAVA,GAAoB,CACpC,IAAIoiB,EAAS,YACb6jW,EAAY,GAAKR,GAAW,GAAKrjW,GAAU4jW,EAGnD,OAAOC,EAcJ,SAASC,GAAS96R,GACrB,OAAO,SAAU1nF,EAAQ9F,GACrB,IAAIuoX,EAAqB,CACrB52U,IAAKq1U,GAAex5R,EAAcxtF,GAClCujC,IAAKwjV,GAAev5R,EAAcxtF,GAClCyuG,YAAY,EACZC,cAAc,GAGlBxpG,OAAOsB,eAAeV,EAAQ9F,EAAKuoX,GACnCC,GAAsB1iX,EAAQ9F,EAAK,OAAQwtF,IAe5C,SAASi7R,GAAQj7R,EAAcx6E,GAClC,OAAO,SAAUlN,EAAQ9F,GACrB,IAAIuoX,EAAqB,CACrB52U,IAAKu1U,GAAc15R,EAAcxtF,EAAKgT,GACtCuwB,IAAK0jV,GAAcz5R,EAAcxtF,EAAKgT,GACtCy7F,YAAY,EACZC,cAAc,GAGlBxpG,OAAOsB,eAAeV,EAAQ9F,EAAKuoX,GACnCC,GAAsB1iX,EAAQ9F,EAAK,cAAewtF,EAAcx6E,IAuCjE,SAAS01W,GAAWl7R,EAAcx6E,GACrC,OAAO,SAAUlN,EAAQ9F,GACrB,IAAIuoX,EAAqB,CACrB52U,IAAK81U,GAAmBj6R,EAAcxtF,EAAKgT,GAC3CuwB,IAAK4jV,GAAmB35R,EAAcxtF,EAAKgT,GAC3Cy7F,YAAY,EACZC,cAAc,GAGlBxpG,OAAOsB,eAAeV,EAAQ9F,EAAKuoX,GACnCC,GAAsB1iX,EAAQ9F,EAAK,UAAWwtF,EAAcx6E,IAoC7D,SAAS,KACZ,OAAO,SAAUlN,EAAQ9F,GACrB,IAAI2oX,EAAkB,CAClBh3U,IAAK,SAAU03E,GACX,IAAIC,EAAWntH,KAAK4iB,WAAW,GAAK/e,GACpC,GAAIspH,IAAaD,EAAU,CACvB,IAAIu/P,EAAeC,GAAiB1sX,KAAM6D,IACZ,IAA1B6jG,EAAYylB,IACZs/P,EAAa1wQ,QAAQnhC,oBAAoB6xS,EAAanV,OAAQnqP,GAElEs/P,EAAa1wQ,QAAQ/6D,iBAAiByrU,EAAanV,OAAQpqP,GAC3DltH,KAAK4iB,WAAW,GAAK/e,GAAOqpH,IAGpC9lF,IAAKwjV,QAAejlX,EAAW9B,GAC/ByuG,YAAY,EACZC,cAAc,GAElBxpG,OAAOsB,eAAeV,EAAQ9F,EAAK2oX,GACnCH,GAAsB1iX,EAAQ9F,EAAK,UA2BpC,SAAS8oX,GAAsBC,IActC,SAASP,GAAsB1iX,EAAQ9F,EAAKgpX,EAAcx7R,EAAcx6E,GAChE6wF,EAAY/9F,EAAOmjX,YACnBnjX,EAAOmjX,SAAW,CACdlpV,MAAO,GACPmpV,aAAc,GACdC,SAAU,GACVv9S,OAAQ,GACRw9S,UAAW,GACXC,iBAAkB,GAClBC,aAAc,GACdC,WAAY,KAIpBzjX,EAAOmjX,SAASD,EAAe,KAAKn4W,KAAK,CACrC24W,aAAcxpX,EACdwtF,aAAcA,EACdx6E,KAAMA,IAGVlN,EAAOmjX,SAASD,EAAe,SAASn4W,KAAK7Q,GAyFjD,SAAS6oX,GAAiB3wQ,EAASu7P,GAE/B,IAA4C,IAAxCv7P,EAAQ3yG,eAAe,aACvB,MAAO,CAAE2yG,QAASA,EAASu7P,OAAQA,GAGnC,IAAIgW,EAAUphV,EAAS,WAAY6vE,GAInC,OAHIuxQ,IACAhW,EAASgW,EAAU,IAAMhW,GAEtBoV,GAAiBxgV,EAAS,YAAa6vE,GAAUu7P,GCjlBhE,IAAI1uW,GAAwC,WACxC,IAAIC,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,GAA0C,SAAUC,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAkB5D,GAA2B,SAAUiC,GAErC,SAASD,EAAUO,GACf,IAAIC,EAAQP,EAAOQ,KAAKzM,KAAMuM,OAAS5G,IAAc3F,KAcrD,OAVAwM,EAAM0kD,OAAS,CACXq8T,KAAM,2CACNC,OAAQ,2CACRC,OAAQ,2CACRC,QAAS,2CACTC,UAAW,2CACXC,aAAc,oCACdC,UAAW,oCACXC,WAAY,qCAETthX,EAsLX,IAAIuhX,EA4BJ,OAlOAnlX,GAAUoD,EAAWC,GAkBrB8hX,EAAc/hX,EAQdA,EAAUzC,UAAUu4C,QAAU,SAAU19C,EAASmI,GAC7CA,EAAWA,GAAU,GACrB,IAAImc,EAAQ1oB,KAAKguX,SAASzhX,GAC1B,GAAuB,kBAAZnI,EAEP,IADA,IAAI+nF,EAAWjjF,MAAMK,UAAUwM,MAAMtJ,KAAK00H,GAAU/8H,EAAS6R,WACpDC,EAAK,EAAGyhO,EAAaxrJ,EAAUj2E,EAAKyhO,EAAW5tO,OAAQmM,IAAM,CAClE,IAAIo9G,EAAYqkH,EAAWzhO,GAC3BwS,EAAMtkB,QAAUkvH,EAChBy6P,EAAYE,eAAevlW,QAI/BA,EAAMtkB,QAAUA,EAChB2pX,EAAYE,eAAevlW,IAUnC1c,EAAU0L,KAAO,SAAUtT,EAASskB,GAChCtkB,EAAQW,MAAM6Q,UAAY,GAC1BxR,EAAQ8O,gBAAgB,aACxB,IAAIg7W,EAAc9pX,EAAQ4O,aAAa,kBACvC,GAAIk7W,EAAa,CACb,IAAIC,EAAU/lX,SAAS8lX,EAAa,IACpClsU,qBAAqBmsU,GACrB/pX,EAAQ8O,gBAAgB,kBAExBwV,GAASA,EAAMiB,KACfjB,EAAMiB,IAAIld,KAAKzM,KAAM0oB,IAS7B1c,EAAUiiX,eAAiB,SAAUvlW,GACX,YAAlB0lW,IAA+BA,KAAkBC,GAAoBC,SACjE5lW,EAAMqtC,OACNrtC,EAAMqtC,MAAMtpD,KAAKzM,KAAM0oB,GAEvBA,EAAMiB,KACNjB,EAAMiB,IAAIld,KAAKzM,KAAM0oB,IAIrBA,EAAMrc,MACNoJ,YAAW,WAAcs4W,EAAYQ,eAAe7lW,KAAWA,EAAMrc,OAGrE0hX,EAAYQ,eAAe7lW,IAUvC1c,EAAUuiX,eAAiB,SAAU7lW,GACjC,IAAIlc,EAAQxM,KACZ0oB,EAAMqzB,UAAY,EAClB,IAAIhgB,EAAO,EACPyyV,EAAU,EACVC,EAAgB,EAChBriX,EAAWsc,EAAMtc,SACrBsc,EAAMtkB,QAAQ6O,aAAa,YAAa,QACxC,IAAIy7W,EAAiB,SAAU3yU,GAC3B,IACI,GAAIA,EAAW,CAGX0yU,EAAkC,IAAlBA,EAAsB1yU,EAAY0yU,EAClD/lW,EAAMqzB,UAAaA,EAAYrzB,EAAMqzB,UAAa0yU,EAClDA,EAAgB1yU,GAGXhgB,GAAQrT,EAAMqtC,OACfrtC,EAAMqtC,MAAMtpD,KAAKD,EAAOkc,GAE5BqT,GAAc,EACd,IAAI4yV,EAAMjmW,EAAMqzB,UAAYhgB,EACxBrT,EAAMqzB,UAAY3vC,GAAYsc,EAAMqzB,UAAY4yU,EAAMviX,GAAYsc,EAAMtkB,QAAQ4O,aAAa,cAE7F0V,EAAMtkB,QAAQW,MAAM6Q,UAAY8S,EAAM/gB,KAAO,IAAM+gB,EAAMtc,SAAW,MAAQsc,EAAMtQ,eAC9EsQ,EAAMstC,UACNttC,EAAMstC,SAASvpD,KAAKD,EAAOkc,GAG/Bu5B,sBAAsBysU,KAItB1sU,qBAAqBwsU,GACrB9lW,EAAMtkB,QAAQ8O,gBAAgB,kBAC9BwV,EAAMtkB,QAAQ8O,gBAAgB,aAC9BwV,EAAMtkB,QAAQW,MAAM6Q,UAAY,GAC5B8S,EAAMiB,KACNjB,EAAMiB,IAAIld,KAAKD,EAAOkc,SAO9B8lW,EAAUvsU,sBAAsBysU,GAChChmW,EAAMtkB,QAAQ6O,aAAa,iBAAkBu7W,EAAQ90W,YAG7D,MAAOlE,GACHwsC,qBAAqBwsU,GACrB9lW,EAAMtkB,QAAQ8O,gBAAgB,kBAC1BwV,EAAMs6G,MACNt6G,EAAMs6G,KAAKv2H,KAAKD,EAAOgJ,KAInCk5W,KAQJ1iX,EAAUzC,UAAUykX,SAAW,SAAUzhX,GACrC,MAAO,CACH5E,KAAM4E,EAAQ5E,MAAQ3H,KAAK2H,KAC3B0E,MAAOE,EAAQF,OAASrM,KAAKqM,MAC7BD,cAAgCzG,IAArB4G,EAAQH,SAAyBG,EAAQH,SAAWpM,KAAKoM,SACpE2pD,MAAOxpD,EAAQwpD,OAAS/1D,KAAK+1D,MAC7BpsC,IAAKpd,EAAQod,KAAO3pB,KAAK2pB,IACzBq5G,KAAMz2H,EAAQy2H,MAAQhjI,KAAKgjI,KAC3BhtE,SAAUzpD,EAAQypD,UAAYh2D,KAAKg2D,SACnC59C,eAAgBpY,KAAKkxD,OAAO3kD,EAAQ6L,gBAAkBpY,KAAKkxD,OAAO3kD,EAAQ6L,gBACrE7L,EAAQ6L,gBAAkBpY,KAAKkxD,OAAOlxD,KAAKoY,kBAUxDpM,EAAUzC,UAAUwT,kBAAoB,SAAUC,EAASC,KAS3DjR,EAAUzC,UAAUqT,cAAgB,WAChC,MAAO,aAOX5Q,EAAUzC,UAAU+Q,QAAU,aAI9B7Q,GAAW,CACP0iX,GAAS,WACVngX,EAAUzC,UAAW,YAAQ,GAChCE,GAAW,CACP0iX,GAAS,MACVngX,EAAUzC,UAAW,gBAAY,GACpCE,GAAW,CACP0iX,GAAS,SACVngX,EAAUzC,UAAW,sBAAkB,GAC1CE,GAAW,CACP0iX,GAAS,IACVngX,EAAUzC,UAAW,aAAS,GACjCE,GAAW,CACP,MACDuC,EAAUzC,UAAW,gBAAY,GACpCE,GAAW,CACP,MACDuC,EAAUzC,UAAW,aAAS,GACjCE,GAAW,CACP,MACDuC,EAAUzC,UAAW,WAAO,GAC/BE,GAAW,CACP,MACDuC,EAAUzC,UAAW,YAAQ,GAChCyC,EAAY+hX,EAActkX,GAAW,CACjCkjX,IACD3gX,GACIA,EAnOmB,CAoO5B,IAiBK,SAAS4iX,GAAaxqX,EAASyqX,EAAe9rP,GACjD,IAAIgtB,EAAc++N,GAAeD,GACjC,OAA+B,IAA3B9+N,EAAYg/N,iBAAoDppX,IAA3BoqJ,EAAYg/N,aAA6BC,GACvE,cAIX5qX,EAAQ6O,aAAa,cAAe,QACpC,GAAakB,IAAI/P,EAAS,YAAa6qX,GAAe,CAAEzjU,OAAQpnD,EAASyqX,cAAe9+N,IACxF,GAAa57I,IAAI/P,EAAS,UAAW8qX,GAAiB,CAAE1jU,OAAQpnD,EAASyqX,cAAe9+N,EAAahtB,KAAMA,IAC3G,GAAa5uH,IAAI/P,EAAS,aAAc+qX,GAAoB,CAAE3jU,OAAQpnD,EAASyqX,cAAe9+N,IAC1F,GAAQy1N,WACR,GAAarxW,IAAI/P,EAAS,gBAAiB+qX,GAAoB,CAAE3jU,OAAQpnD,EAASyqX,cAAe9+N,IAE9F,WACH3rJ,EAAQ8O,gBAAgB,eACxB,GAAajF,OAAO7J,EAAS,YAAa6qX,IAC1C,GAAahhX,OAAO7J,EAAS,UAAW8qX,IACxC,GAAajhX,OAAO7J,EAAS,aAAc+qX,IAC3C,GAAalhX,OAAO7J,EAAS,gBAAiB+qX,MAStD,SAASL,GAAeD,GACpB,IAAI9+N,EAAc,CACdrmG,SAAUmlU,GAAiBA,EAAcnlU,SAAWmlU,EAAcnlU,SAAW,KAC7E+vL,OAAQo1I,GAAiBA,EAAcp1I,OAASo1I,EAAcp1I,OAAS,KACvEs1I,WAAYF,GAAiBA,EAAcE,WAC3CrlR,eAAgBmlR,GAAiBA,EAAcnlR,eAC/Ct9F,SAAUyiX,GAAiBA,EAAcziX,SAAWyiX,EAAcziX,SAAW,KAEjF,OAAO2jJ,EASX,SAASk/N,GAAcz5W,GACnB,IAAI7L,EAAU6L,EAAQ,OAClBk0C,EAAW1pD,KAAK6uX,cAAcnlU,SAC9BtlD,EAAUslD,EAAW36C,GAAQpF,EAAQ+/C,GAAY//C,EACrD,MAAKvF,GAAYpE,KAAK6uX,eAAiB9/W,GAAQpF,EAAQ3J,KAAK6uX,cAAcp1I,SAA1E,CAGA,IAAI/xO,EAAStD,EAAQiC,wBACjB2L,EAAUwD,EAAE0F,MAAQjF,SAASnP,KAAK3B,WAClC8M,EAAUuD,EAAE2F,QAAWlF,SAASnP,KAAK1B,WAAa6Q,SAASpP,gBAC3DoP,SAASpP,gBAAgBzB,UAAY6Q,SAASnP,KAAK1B,WACnD8V,EAAQzJ,KAAKyP,IAAIzP,KAAKyuI,IAAIluI,EAAUtK,EAAO/C,MAAO8M,KAAKyuI,IAAIluI,EAAUtK,EAAOJ,QAC5E6T,EAAQ1J,KAAKyP,IAAIzP,KAAKyuI,IAAIjuI,EAAUvK,EAAO9C,KAAM6M,KAAKyuI,IAAIjuI,EAAUvK,EAAOV,SAC3EuzD,EAAS9oD,KAAK29W,KAAKl0W,EAAQA,EAAQC,EAAQA,GAC3CikD,EAAoB,EAAT7E,EAAa,KACxB3rD,EAAIoD,EAAUtK,EAAO/C,KAAO41D,EAC5Bl4D,EAAI4P,EAAUvK,EAAO9C,IAAM21D,EAC3Bv6D,KAAK6uX,eAAiB7uX,KAAK6uX,cAAcnlR,iBACzC96F,EAAI,EACJvM,EAAI,EACJ+8D,EAAW,QAEfh7D,EAAQ+C,UAAUgN,IAAI,YACtB,IAAI/H,EAAWpM,KAAK6uX,cAAcziX,SAASsN,WACvCnC,EAAS,UAAY6nD,EAAW,YAAcA,EAAW,UAAYxwD,EAAI,WAAavM,EAA7E,2BACiB+J,EAAW,MACrC8wQ,EAAgB1vQ,GAAc,MAAO,CAAEC,UAAW,mBAAoB8J,OAAQA,IAClFnT,EAAQuJ,YAAYuvQ,GACpBjuQ,OAAOC,iBAAiBguQ,GAAe9tQ,iBAAiB,WACxD8tQ,EAAcn4Q,MAAMyqG,UAAY,WAC5BprG,IAAYpE,KAAKwrD,QACjB,GAAar3C,IAAI/P,EAAS,aAAc+qX,GAAoB,CAAE3jU,OAAQxrD,KAAKwrD,OAAQqjU,cAAe7uX,KAAK6uX,iBAU/G,SAASK,GAAgB15W,GACrB65W,GAAa75W,EAAGxV,MASpB,SAASmvX,GAAmB35W,GACxB65W,GAAa75W,EAAGxV,MAUpB,SAASqvX,GAAa75W,EAAGsY,GACrB,IAAI1hB,EAAW0hB,EAAU+gW,cAAcziX,SACnCzC,EAAU6L,EAAQ,OAClBk0C,EAAW57B,EAAU+gW,cAAcnlU,SACnCtlD,EAAUslD,EAAW36C,GAAQpF,EAAQ+/C,GAAY//C,EACrD,GAAKvF,KAAYA,IAAsD,IAA3CA,EAAQqJ,UAAUP,QAAQ,aAAtD,CAGA,IAAIoiX,EAAiBnuP,GAAU,oBAAqB/8H,GAChD84Q,EAAgBoyG,EAAeA,EAAevlX,OAAS,GACvDmzQ,IACAA,EAAcn4Q,MAAMs8H,QAAU,OAE9BvzG,EAAU09B,SAAWpnD,GACrB,GAAa6J,OAAO7J,EAAS,aAAc+qX,IAG/C15W,YAAW,WACHynQ,GAAiBA,EAAcl1N,YAC/Bk1N,EAAcl1N,WAAW6M,YAAYqoN,GAEpC94Q,EAAQ6b,uBAAuB,oBAAoBlW,QACpD3F,EAAQ+C,UAAU8G,OAAO,YAEzB6f,EAAUi1G,MACVj1G,EAAUi1G,KAAKvtH,KAEpBpJ,IAEA,IAgBIgiX,GAaAC,GA7BAW,IAAkB,GA8B7B,SAAWX,GAIPA,EAAoB,WAAa,UAIjCA,EAAoB,UAAY,SAIhCA,EAAoB,WAAa,WAZrC,CAaGA,KAAwBA,GAAsB,KCvcjD,ICEIkB,GDFAC,GAAgB,SAChB,GAA8B,WAC9B,SAASC,EAAajkU,GAClBxrD,KAAK0vX,cAAgB,GACrB1vX,KAAKwrD,OAASA,EA6GlB,OApGAikU,EAAalmX,UAAU2uD,OAAS,SAAU7qC,EAAiBsiW,GACvD,IAAIC,EAAYviW,EAAgBtjB,OAChC,GAAkB,IAAd6lX,EAAJ,CAII5vX,KAAK0vX,cAAc3lX,QACnB/J,KAAK6vX,kBAAkBxiW,GAE3B,IAAK,IAAIjjB,EAAI,EAAGA,EAAIwlX,EAAWxlX,IAE3B,IADA,IAAI0lX,EAAOziW,EAAgBjlB,SAASgC,EAAEsP,WAAY,KACzCxD,EAAK,EAAG65W,EAAeJ,EAAYz5W,EAAK65W,EAAahmX,OAAQmM,IAAM,CACxE,IAAIvW,EAASowX,EAAa75W,GACtB85W,EAAUF,EAAKtiW,OACnB,GAAI7tB,GAAUA,EAAO4J,UAAUqT,kBAAoBkzW,EAAKtiW,SAAWxtB,KAAKiwX,eAAeD,GAAU,CAC7F,IAAIE,EAAe1zH,EAAe78P,EAAQmwX,EAAKviW,MAC3C4iW,EAAanwX,KAAKowX,cAAcJ,GAChCF,EAAKO,WACL9oW,EAAS4oW,EAAYxwX,EAAQK,KAAKwrD,QAGlCjkC,EAAS4oW,EAAYD,EAAclwX,KAAKwrD,QAE5C,IAAI8kU,EAAeR,EACnBQ,EAAa9iW,OAAS2iW,EACtBnwX,KAAK0vX,cAAch7W,KAAK47W,UAtBhCtwX,KAAKuwX,SAgCbd,EAAalmX,UAAUgnX,MAAQ,WAC3B,IAAK,IAAIr6W,EAAK,EAAGlJ,EAAKhN,KAAK0vX,cAAex5W,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAC5D,IAAIoX,EAAUtgB,EAAGkJ,GACZoX,EAAQ+iW,YACTnkV,EAAS5e,EAAQE,OAAQxtB,KAAKwrD,QAAQlxC,UAG9Cta,KAAK0vX,cAAgB,IASzBD,EAAalmX,UAAUinX,sBAAwB,SAAUnjW,GACrD,IAAI7gB,EAAQxM,KACZ,OAAOqtB,EAAgB8K,QAAO,SAAUx4B,GAAU,OAAQ6M,EAAMyjX,eAAetwX,EAAO6tB,YAQ1FiiW,EAAalmX,UAAUsmX,kBAAoB,SAAUF,GAMjD,IALA,IAAInjX,EAAQxM,KACRywX,EAAcd,EAAWrgX,KAAI,SAAU+8H,GAAO,OAAO7/H,EAAM4jX,cAAc/jP,EAAI7+G,WAC7EkjW,EAAkB1wX,KAAK0vX,cAAcv3V,QAAO,SAAUx4B,GACtD,OAA+C,IAAxC8wX,EAAYvjX,QAAQvN,EAAO6tB,WAE7BtX,EAAK,EAAGy6W,EAAoBD,EAAiBx6W,EAAKy6W,EAAkB5mX,OAAQmM,IAAM,CACvF,IAAI06W,EAAMD,EAAkBz6W,GACvB06W,EAAIP,YACLnkV,EAAS0kV,EAAIpjW,OAAQxtB,KAAKwrD,QAAQlxC,UAEtCta,KAAK0vX,cAAc36W,OAAO/U,KAAK0vX,cAAcxiX,QAAQ0jX,GAAM,GAC3D/mB,EAAa7pW,KAAKwrD,OAAQolU,EAAIpjW,UAStCiiW,EAAalmX,UAAU6mX,cAAgB,SAAUzoX,GAC7C,OAAOA,EAAK,GAAG5B,cAAgB4B,EAAK82B,UAAU,GAAK+wV,IAQvDC,EAAalmX,UAAU0mX,eAAiB,SAAUD,GAC9C,IAAK,IAAI95W,EAAK,EAAGlJ,EAAKhN,KAAK0vX,cAAex5W,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAC5D,IAAI06W,EAAM5jX,EAAGkJ,GACb,GAAI06W,EAAIpjW,SAAWxtB,KAAKowX,cAAcJ,GAClC,OAAO,EAGf,OAAO,GAEJP,EAhHsB,GEE7B,GAA+B,WAC/B,SAASoB,EAAcrlU,EAAQmI,EAAU09B,EAAcpgD,GACnDjxC,KAAKipX,sBAAuB,EAC5BjpX,KAAK4iB,WAAa,GAClB5iB,KAAKmpX,kBAAoB,GACzBnpX,KAAKupX,uBAAyB,GAC9BvpX,KAAK09F,cAAgB,GAErB19F,KAAKspX,YAAc,aACnBtpX,KAAK4pX,kBAAoB19U,EAAS,oBAAqB,IACvDlsC,KAAKu/E,UAAY/zB,EACjBxrD,KAAKkrX,cAAgBlrX,KAAKu/E,UAAU2rS,eAAiBlrX,KAAKu/E,UAC1Dv/E,KAAK2zD,SAAWA,EAChB3zD,KAAK8wX,cAAgB7/U,EACrBjxC,KAAKuT,cAAc89E,GAAc,GAyJrC,OAhJAw/R,EAActnX,UAAU2+O,aAAe,SAAU1jO,EAAKmvC,IACtC,IAARnvC,EACAxkB,KAAKu/E,UAAUgqS,uBAAuB,GAAK51T,GAAYnvC,SAGhDxkB,KAAKu/E,UAAUgqS,uBAAuB,GAAK51T,GAElD3zD,KAAKu/E,UAAU2oK,cACfloP,KAAKu/E,UAAU2oK,aAAa1jO,EAAKxkB,KAAKu/E,UAAU5rB,WAQxDk9T,EAActnX,UAAUwnX,cAAgB,WACpC,GAAI/wX,KAAKu/E,UAAUwxS,cACf/wX,KAAKu/E,UAAU+pS,cACftpX,KAAKu/E,UAAUwxS,oBAEd,CACD,IAAIC,EAAev7W,WAAWzV,KAAKu/E,UAAUlvE,SAAS7B,KAAKxO,KAAKu/E,YAC5D0xS,EAAc,WACd97W,aAAa67W,IAEjBhxX,KAAKspX,YAAc2H,IAQ3BJ,EAActnX,UAAUouD,aAAe,WACnC33D,KAAKspX,cACLtpX,KAAKkoP,cAAa,EAAOloP,KAAK2zD,UAC9B3zD,KAAK09F,cAAgB,GACrB19F,KAAKmpX,kBAAoB,IAS7B0H,EAActnX,UAAUgK,cAAgB,SAAU4J,EAAM6oB,IAC/B,IAAjBA,GACAkjE,EAAMlpG,KAAMmd,GACZnd,KAAKkoP,cAAa,EAAOloP,KAAK2zD,UAC9B3zD,KAAK23D,gBAGLuxC,EAAMlpG,KAAMmd,IAQpB0zW,EAActnX,UAAU8G,SAAW,WAE/B,GADArQ,KAAK4pX,kBAAkB5pX,KAAKupX,uBAAwBvpX,MAChDA,KAAK8wX,cAAe,CACpB,IAAII,EAAWlxX,KAAKu/E,UAAUv/E,KAAK2zD,UAAUzmD,QAAQlN,MACjD+I,OAAOmU,KAAKld,KAAKmpX,mBAAmBp/W,SACpCwd,EAASvnB,KAAK2zD,SAAW,IAAMu9T,EAAUlxX,KAAKmpX,kBAAmBnpX,KAAKu/E,UAAU4pS,mBAChF5hW,EAASvnB,KAAK2zD,SAAW,IAAMu9T,EAAUlxX,KAAK09F,cAAe19F,KAAKu/E,UAAUme,qBAIhF19F,KAAKu/E,UAAU4pS,kBAAkBnpX,KAAK2zD,UAAY3zD,KAAKmpX,kBACvDnpX,KAAKu/E,UAAUme,cAAc19F,KAAK2zD,UAAY3zD,KAAK09F,cAEvD19F,KAAK23D,gBAWTk5T,EAActnX,UAAU4/H,YAAc,SAAUtlI,EAAKqpH,EAAUC,EAAUgkQ,GACjEnxX,KAAKkrX,cAAct6R,sBAGlBugS,GACDnxX,KAAK2pX,eAAe9lX,EAAKqpH,GAAU,GAEvCltH,KAAK09F,cAAc,GAAK75F,GAAOspH,EAC/BntH,KAAKmpX,kBAAkB,GAAKtlX,GAAOqpH,EACnCltH,KAAKkoP,cAAa,EAAMloP,KAAK2zD,UAC7B3zD,KAAKspX,cACLtpX,KAAK+wX,kBAETF,EAActnX,UAAUogX,eAAiB,SAAU9lX,EAAKoC,EAAOmrX,EAAe/oW,GAC1E,GAAIuiV,MAAe5qW,KAAKu/E,UAAU0pS,qBAAsB,CACpD,IAAIhgU,EACA6gU,EAAa,GACbuH,EAAYD,EAAgBpxX,KAAK2rX,cAAa,GAAQ,IAAM9nX,EAAMA,EAEtE,IAAgC,IAA5BwtX,EAAUnkX,QAAQ,KAAa,CAC/B,IAAIokX,EAAcD,EAAUhxX,MAAM,KAClC4oD,EAAW6gU,EACX,IAAK,IAAI1/W,EAAI,EAAGA,EAAIknX,EAAYvnX,OAAQK,IAAK,CACzC,IAAImnX,EAAUnnX,IAAMknX,EAAYvnX,OAAS,EACzCk/C,EAASqoU,EAAYlpX,SAASgC,EAAEsP,WAAY,MAAQ63W,EAAUtrX,EAAQ,GACtEgjD,EAAWsoU,EAAUtoU,EAAWA,EAASqoU,EAAYlpX,SAASgC,EAAEsP,WAAY,YAIhFowW,EAAW,GAAKuH,GAAa,GAC7BpoU,EAAW6gU,EAAW,GAAKuH,GAC3BvH,EAAW,GAAKuH,GAAW,GAAKxtX,GAAOoC,EAG3C,GAAIjG,KAAK8wX,cAAe,CACpB,IAAIU,EAAiB,YACrBvoU,EAAS,GAAKuoU,GAAkBnpW,GAAkB,OAEtDroB,KAAKkrX,cAAcvB,eAAeG,KAG1C+G,EAActnX,UAAUoiX,aAAe,SAAUyF,GAE7C,IAAIt8W,EAAQ,GACR6+C,EAAW3zD,KAAK2zD,SAEpB,GAAI3zD,KAAK8wX,cAAe,CACpBh8W,EAAQ9U,KAAKu/E,UAAUv/E,KAAK2zD,UAAUzmD,QAAQlN,MAC9C,IAAI65H,EAAc75H,KAAKu/E,UAAUv/E,KAAK2zD,UAAU5pD,OAChD8vH,EAAcu3P,EAAgBv3P,EAAeA,EAAc,EAAIA,EAAc,EAAI,EACjF/kH,GAAmB,IAAXA,EAAe,IAAMA,EAAQ,IAAM+kH,EAC3ClmE,GAAsB7+C,EAK1B,OAHI9U,KAAKkrX,gBAAkBlrX,KAAKu/E,YAC5B5rB,EAAW3zD,KAAKu/E,UAAUosS,eAAiB,IAAM3rX,KAAK2zD,SAAW7+C,GAE9D6+C,GAEJk9T,EAvKuB,GDLvBY,GAAgB,CAAC,OAAQ,YAAa,WAAY,cAAe,iBAAkB,iBAAkB,UAAW,gBAAiB,YAAa,iBAAkB,kBAAmB,QAAS,aAAc,gBAAiB,UAAW,UAAW,cAAe,OAAQ,SAAU,aAAc,UAAW,YAAa,UAAW,cAAe,SAAU,kBAAmB,WAAY,QAAS,YAAa,gBAAiB,iBAAkB,WAAY,cAAe,WAAY,YAAa,MAAO,YACtfC,GAAY,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC/C,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAC7C,IAAK,IAAK,GAAI,IAAK,IAAK,KAOxB,GAAkC,WAClC,SAASC,EAAiB9tX,GACtB7D,KAAK4xX,aAAc,EACnB5xX,KAAK6xX,YAAa,EAClB7xX,KAAKihC,QAAU,KACfjhC,KAAK+9B,SAAW,sEAChB/9B,KAAK8xX,OAAS,CACVC,UAAW,4LAEXC,aAAc,4LAEdC,kBAAmB,+DACnBC,mBAAoB,+DACpBC,WAAY,gEAKhBnyX,KAAKorU,QAAU,WACX,IAAIgnD,EAAS,KAOb,SAAS58U,EAAI3xC,GAAOuuX,EAASvuX,EAM7B,SAASujC,IAAQ,OAAOgrV,EACxB,MAAO,CACHxvP,OAAQptF,EACRszF,OAAQ1hG,GAjBD,GAuBfpnC,KAAKqyX,WAAa,WACd,IAAIC,EAAY,gBAMhB,SAASlrV,IAAQ,OAAOkrV,EACxB,MAAO,CACHxpP,OAAQ1hG,GATE,GAYlBpnC,KAAKorU,QAAQxoM,OAAO/+H,GAuJxB,OAhJA8tX,EAAiBpoX,UAAUsjC,SAAW,WAClC,IAAI0lV,EAAa,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC/D,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/DC,EAAS,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3D,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IACnE,IAAKxyX,KAAK4xX,aAAgB9nB,IAAoB59T,EAASumV,GAAcf,IAAY5nB,KAAqB59T,EAAS,SAAU49T,GAAmB,CACxI,IAAI4oB,OAAc,EACdC,OAAc,EAClB,GAAK3yX,KAAKorU,SAAWprU,KAAKorU,QAAQtiM,UAAc9oI,KAAKqyX,YAA2C,kBAA7BryX,KAAKqyX,WAAWvpP,SAA+B,CAC9G,IAAI/kI,EAAS/D,KAAK4yX,iBAClB,GAAI7uX,GAAUA,EAAOgG,OACjB,IAAK,IAAImM,EAAK,EAAG43E,EAAW/pF,EAAQmS,EAAK43E,EAAS/jF,OAAQmM,IAAM,CAC5D,IAAIk5B,EAAM0+C,EAAS53E,GACnB,IAAKlW,KAAK+9B,SAASr+B,KAAK0vC,EAAIrR,WAAaqR,EAAIyjV,gBACzCH,EAAc1yX,KAAK8xX,OAAOI,wBAEzB,IAA2C,IAAvC9iV,EAAInO,QAAQ/zB,QAAQlN,KAAKihC,SAC9ByxV,EAAc1yX,KAAK8xX,OAAOG,kBAC1BS,EAAcA,EAAYjwW,QAAQ,mBAAoB2sB,EAAInO,SAC1DyxV,EAAcA,EAAYjwW,QAAQ,mBAAoBziB,KAAKihC,QAAU,WAEpE,GAAImO,EAAI0jV,WAAY,CACrB,IAAIC,EAAU,IAAIvyW,KAAK4uB,EAAI0jV,YACvBE,EAAW,IAAIxyW,KACnB,KAAIuyW,IAAYC,GAAYD,EAAUC,GAIlC,MAHAN,EAAc1yX,KAAK8xX,OAAOE,mBAStCU,EAAc1yX,KAAK8xX,OAAOK,eAG7B,CACD,IAAIc,EAAiB/mV,EAASumV,GAAcF,GAAazoB,GACzD6oB,EAAczmV,EAASumV,GAAcD,GAAS1oB,GAE1C4oB,EADAO,GAAqC,KAAnBA,EACJA,EAGAjzX,KAAK8xX,OAAOC,UAGlC,GAAIW,GAAmC,qBAAbz8W,WAA6B2zV,EAAkB3zV,UAAW,CAChFs5W,GAAcoD,GAA+B,KAAhBA,EAAsBA,EAAc,+KACjE,IAAIO,EAAW1lX,GAAc,MAAO,CAChC4F,UAAW,qxCAAuxCs/W,EAAvxC,2EAAu3CnD,GAAa,iCAEn5C2D,EAASjgX,aAAa,QAAS,4dAC/BgD,SAASnP,KAAK6G,YAAYulX,GAC1BlzX,KAAK6xX,YAAa,EAEtB7xX,KAAK4xX,aAAc,EACnBrqW,EAASkrW,GAAcf,IAAY1xX,KAAK4xX,YAAa9nB,GAEzD,OAAO9pW,KAAK6xX,YAEhBF,EAAiBpoX,UAAU4pX,iBAAmB,SAAUtvX,GACpD,IACI,OAAO+xU,KAAK/xU,GAEhB,MAAO6xB,GACH,MAAO,KAQfi8V,EAAiBpoX,UAAUqpX,eAAiB,WACxC,IACI,IAAIR,EAAS,GACTgB,EAAO,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAC9D,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QACxE,QAAS,QAAS,QAAS,QAAS,QAAS,SAC7CC,EAAe,GACfC,EAAc,GACdT,GAAkB,EAClBU,GAAW,EACXvzX,KAAKorU,QAAQtiM,SACbspP,EAASpyX,KAAKorU,QAAQtiM,UAGtByqP,GAAW,EACXnB,EAASpyX,KAAKqyX,WAAWvpP,SAASzoI,MAAM,iBAAiB,IAG7D,IADA,IAAImzX,EAAcpB,EAAO/xX,MAAM,KACtB6V,EAAK,EAAGu9W,EAAgBD,EAAat9W,EAAKu9W,EAAc1pX,OAAQmM,IAAM,CAC3E,IAAIw9W,EAAOD,EAAcv9W,GACrBy9W,EAAY3zX,KAAKmzX,iBAAiBO,GACtC,GAAKC,EAAL,CAGA,IAAIjyR,EAAI,EACJkyR,EAAQ,GACZ,GAAKL,EASA,CACD,IAAIhb,EAAUob,EAAUA,EAAU5pX,OAAS,GACvC8pX,EAAe,GACnB,IAASzpX,EAAI,EAAGA,EAAIupX,EAAU5pX,OAAQK,IAClCypX,EAAa,GAAKzpX,GAAKupX,EAAU,GAAKvpX,GAAGi0B,WAAW,GAAKk6U,EAAQl6U,WAAW,GAEhF,IAASj0B,EAAI,EAAGA,EAAIypX,EAAa9pX,OAAQK,IACrCwpX,GAAS/zX,OAAOyhC,aAAauyV,EAAazrX,SAASgC,EAAEsP,WAAY,WAfrE,IAAK,IAAItP,EAAI,EAAGA,EAAIupX,EAAU5pX,OAAQK,IAAKs3F,IAAK,CACxCA,IAAM0xR,EAAKrpX,SACX23F,EAAI,GAER,IAAI73F,EAAI8pX,EAAUt1V,WAAWj0B,GAC7BwpX,GAAS/zX,OAAOyhC,aAAaz3B,EAAKupX,EAAKhrX,SAASs5F,EAAEhoF,WAAY,MAAQ,IAa1E1Z,KAAK+9B,SAASr+B,KAAKk0X,IACnBP,EAAeO,EAAMvzX,MAAM,KAC3BwyX,GAAkB,EAEdQ,EAAatpX,OAAS,GACtBupX,EAAY5+W,KAAK,CAAEqpB,SAAUs1V,EAAa,GACtCpyV,QAASoyV,EAAa,GACtBP,WAAYO,EAAa,MAG5BO,GAASA,EAAMvzX,MAAM,KAAK0J,OAAS,IACxC8oX,GAAkB,IAG1B,OAAIA,IAAoBS,EAAYvpX,OACzB,CAAC,CAAE8oX,gBAAiBA,IAGpBS,EAAYvpX,OAASupX,EAAc,KAGlD,MAAO59V,GACH,OAAO,OAGRi8V,EA5M0B,GA8MjCmC,GAAmB,IAAI,GAO3B,SAASrB,GAAcsB,GAEnB,IADA,IAAIzpV,EAAM,GACDp0B,EAAK,EAAG89W,EAASD,EAAM79W,EAAK89W,EAAOjqX,OAAQmM,IAAM,CACtD,IAAIoxB,EAAM0sV,EAAO99W,GACjBo0B,GAAOzqC,OAAOyhC,aAAagG,GAE/B,OAAOgD,EAQJ,SAAS2pV,GAAgBpwX,GAC5BiwX,GAAmB,IAAI,GAAiBjwX,GAErC,IErNHqwX,GFqNOC,GAAkB,SAAUtwX,GAInC,OAHIA,GACAowX,GAAgBpwX,GAEbiwX,GAAiBjnV,YAMjBunV,GAAuB,WAC9B,IAAIC,EAAiB,47uDAA8+uD9E,GAAa,kzBAChhvD,GAAwB,qBAAbt5W,WAA6B2zV,EAAkB3zV,UAAW,CACjE,IAAIq+W,EAAkB9mX,GAAc,MAAO,CACvC4F,UAAWihX,IAEfp+W,SAASnP,KAAK6G,YAAY2mX,KElQ9B,GAAwC,WACxC,IAAIzrX,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxC,GAA0C,SAAUK,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAW5DuqX,GAAiB,EAEjBC,GAAiB,EAEjBC,GAAgB,EAEhBC,IAAU,EAEVC,IAAgB,EACTC,IAA+B,EAa1C,IAAI,GAA2B,SAAU3oX,GAQrC,SAAS4oX,EAAUtoX,EAASm9C,GACxB,IAAIl9C,EAAQP,EAAOQ,KAAKzM,KAAMuM,EAASm9C,IAAa1pD,KAgCpD,OA/BAwM,EAAMowW,SAAWthT,IAMjB9uD,EAAM2pH,kBAAmB,EACzB3pH,EAAM0rK,SAAU,EAChB1rK,EAAMsoX,eAAgB,EAClBlrB,EAAkBp9V,EAAM6B,YACxB7B,EAAM+G,cAAc,CAAE,UAAawpW,KAAe,GAElDnT,EAAkBp9V,EAAM4V,SACxB5V,EAAM+G,cAAc,CAAE,OAAU2nV,KAAkB,GAEtD1uV,EAAMuoX,aAAe,IAAI,GAAavoX,GACtCA,EAAMwoX,cAAgB,IAAI,GAASxoX,GAEnCswW,GAAapiS,GAAG,uBAAwBluE,EAAMmwW,eAAgBnwW,EAAOA,EAAMowW,UAErD,qBAAX3tW,QAA8C,qBAAbgH,UAA6Bk+W,OACf,IAAlD1C,GAAcvkX,QAAQV,EAAMoQ,mBAC5B63W,IAAgC,EAC5BA,GAAgB,IAChBC,IAAU,IAIjBhtR,EAAYh+C,IACbl9C,EAAMqhB,WAEHrhB,EAubX,OA/dA,GAAUqoX,EAAW5oX,GA0CrB4oX,EAAUtrX,UAAU8jB,gBAAkB,WAClC,MAAO,IAOXwnW,EAAUtrX,UAAU+Q,QAAU,WACtBta,KAAKg2F,cAGLh2F,KAAKinF,oBACLjnF,KAAKmgM,iBACLngM,KAAKi1X,qBAETj1X,KAAKg1X,cAAc16W,UACfta,KAAKk3D,aAGTqwT,GAAY,CAACvnX,KAAKoE,SAAU,CAAC,cAC7BpE,KAAKuQ,QAAQ,YAAa,CAAEuG,QAAQ,IACpC7K,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,MAC9BA,KAAK+0X,aAAaxE,QAClBzT,GAAajiS,IAAI,uBAAwB76E,KAAK28W,eAAgB38W,KAAK48W,aAOvEiY,EAAUtrX,UAAU6T,QAAU,WAC1Bpd,KAAKk3D,YAAa,EAClBl3D,KAAK+0X,aAAaxE,QAClBvwX,KAAKsa,UACLta,KAAK23D,eACL33D,KAAKg1X,cAAgB,IAAI,GAASh1X,MAClCA,KAAK4b,YACL5b,KAAKk1X,gBACLl1X,KAAKyb,SACLzb,KAAKk3D,YAAa,GAEtB29T,EAAUtrX,UAAU4rX,YAAc,WAC1Bn1X,KAAKo1X,QAAUp1X,KAAK80X,eACpB90X,KAAKo1X,SAQbP,EAAUtrX,UAAU8rX,eAAiB,WACjC,OAAIr1X,KAAK80X,cAEE90X,KAAKs1X,cAGLt1X,KAAKoE,SASpBywX,EAAUtrX,UAAUgsX,aAAe,WAC/B,IAAIC,EAAQx1X,KAAK4c,gBAAkB5c,KAAKoE,QAAQwP,GAChD,OAAIghX,GACO3lX,OAAOmtC,aAAaE,QAAQk5U,EAAQx1X,KAAKy1X,4BAGzCxmX,OAAOmtC,aAAaE,QAAQk5U,IAQ3CX,EAAUtrX,UAAUmsX,kBAAoB,WACpC11X,KAAK21X,aAAe31X,KAAK21X,aAAannX,KAAKxO,MAC3CiP,OAAO+xC,iBAAiB,SAAUhhD,KAAK21X,eAO3Cd,EAAUtrX,UAAUosX,aAAe,WAC/B31X,KAAKmgM,kBAOT00L,EAAUtrX,UAAU0rX,kBAAoB,WACpChmX,OAAO2rE,oBAAoB,SAAU56E,KAAK21X,eAQ9Cd,EAAUtrX,UAAUskB,SAAW,SAAU67B,GAOrC,GANKkgT,EAAkBlgT,IAAmC,kBAAf,EAGjCkgT,EAAkBlgT,KACxB1pD,KAAKoE,QAAUslD,GAHf1pD,KAAKoE,QAAU,GAAOslD,EAAUzzC,WAK/B2zV,EAAkB5pW,KAAKoE,SAAU,CAClC,IAAI6lX,EAAc,KAAOjqX,KAAK4c,gBAAgB7W,cAC9CohX,GAAS,CAACnnX,KAAKoE,SAAU,CAAC,YAAa6lX,IACvCjqX,KAAK4wF,qBAAsB,EACvB5wF,KAAKk4K,UAAYl4K,KAAKoE,QAAQwP,KAC9B5T,KAAKoE,QAAQwP,GAAK5T,KAAK8qW,YAAY9qW,KAAK4c,kBAExC5c,KAAKinF,oBACLjnF,KAAK41X,mBACL51X,KAAK01X,qBAET,IAAI5pB,EAAO5/T,EAAS,gBAAiBlsC,KAAKoE,SACrC0nW,IAAgC,IAAxBA,EAAK5+V,QAAQlN,OACtBiM,EAAO1C,UAAUkgX,YAAYh9W,KAAKzM,MAEtCA,KAAK4b,YACL5b,KAAKk1X,gBAEL,IAAIW,EAAoB,CACpBtxS,SAAU,MACVuxS,QAAS,MACTC,UAAW,MACX15L,KAAM,CAAC,UACP25L,eAAgB,CAAC,OAAQ,QAAS,QAAS,QAAS,QAAS,gBAAiB,cAAe,eAAgB,aAAc,WAC3Hz2E,SAAU,CAAC,UACX02E,MAAO,CAAC,WACRC,MAAO,CAAC,SAAU,QAClBC,kBAAmB,CAAC,WAEpBtvV,EAAY7mC,KAAK4c,gBACrB,GAAI5c,KAAKqtB,mBAAqBwoW,EAAkB,GAAKhvV,IAAoD,QAAtCgvV,EAAkB,GAAKhvV,IAEtF,IADA,IAAIuvV,EAAkBp2X,KAAKqtB,kBAClBnX,EAAK,EAAGlJ,EAAKhN,KAAK+0X,aAAavE,sBAAsB4F,GAAkBlgX,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAClG,IAAIvW,EAASqN,EAAGkJ,GACZoJ,EAAa3f,EAAOgI,KAAOhI,EAAOgI,KAAOhI,EAAO6tB,OACpD,IAAIqoW,EAAkB,GAAKhvV,KAA4E,IAA9DgvV,EAAkB,GAAKhvV,GAAW35B,QAAQvN,EAAO6tB,QAA1F,CAGA,IAAI6oW,EAAgBxvV,EAAUhf,OAAO,GAAG8xH,cAAgB9yG,EAAU9wB,MAAM,GACxE2+H,QAAQ04E,KAAK,wBAA2B9tM,EAAa,yBAA4B+2W,EAAgB,4EAIpG3B,IAAYC,KACbP,KACAO,IAAgB,GAEpB30X,KAAKyb,SACAzb,KAAKo1X,MAINp1X,KAAKm1X,cAHLn1X,KAAKuQ,QAAQ,aAazBskX,EAAUtrX,UAAUoS,eAAiB,SAAUs0I,GAC3C,GAAI26M,IAAY,CACZ,IAAIof,EAAW,WAEf/6W,OAAO+6W,GAAUruW,eAAe3b,KAAKoE,QAAS6rJ,GAElDjwJ,KAAK0tN,YAAa,GAOtBmnK,EAAUtrX,UAAU8G,SAAW,WAC3BrQ,KAAKk1X,gBACLjpX,EAAO1C,UAAU8G,SAAS5D,KAAKzM,OAYnC60X,EAAUtrX,UAAUmxE,GAAK,SAAU3jE,EAAOqlF,EAAS2f,GAC/C,GAAqB,kBAAVhlG,EACP/W,KAAKg1X,cAAct6S,GAAG3jE,EAAOqlF,EAAS2f,QAGtC,IAAK,IAAI7lG,EAAK,EAAGk6D,EAAUr5D,EAAOb,EAAKk6D,EAAQrmE,OAAQmM,IAAM,CACzD,IAAIm2H,EAAMj8D,EAAQl6D,GAClBlW,KAAKg1X,cAAct6S,GAAG2xD,EAAIt1H,MAAOs1H,EAAIjwC,QAASiwC,EAAItwB,WAY9D84Q,EAAUtrX,UAAUsxE,IAAM,SAAU9jE,EAAOqlF,GACvC,GAAqB,kBAAVrlF,EACP/W,KAAKg1X,cAAcn6S,IAAI9jE,EAAOqlF,QAG9B,IAAK,IAAIlmF,EAAK,EAAGo8D,EAAUv7D,EAAOb,EAAKo8D,EAAQvoE,OAAQmM,IAAM,CACzD,IAAIm2H,EAAM/5D,EAAQp8D,GAClBlW,KAAKg1X,cAAcn6S,IAAIwxD,EAAIt1H,MAAOs1H,EAAIjwC,WAYlDy4R,EAAUtrX,UAAUkY,OAAS,SAAU01K,EAAUx5C,IACpB,IAArB39I,KAAKg2F,aACLh2F,KAAKg1X,cAAcvzW,OAAO01K,EAAUx5C,IAS5Ck3O,EAAUtrX,UAAUqjN,mBAAqB,WACrC,OAAO5sN,KAAKu+S,iBAQhBs2E,EAAU/uM,OAAS,WAEf,IADA,IAAI6pM,EAAa,GACRz5W,EAAK,EAAGA,EAAKpM,UAAUC,OAAQmM,IACpCy5W,EAAWz5W,GAAMpM,UAAUoM,GAE1BlW,KAAKuJ,UAAUg1S,kBAChBv+S,KAAKuJ,UAAUg1S,gBAAkB,IAErC,IAAK,IAAIn0S,EAAI,EAAGA,EAAIulX,EAAW5lX,OAAQK,KACqD,IAApFpK,KAAKuJ,UAAUg1S,gBAAgBrxS,QAAQyiX,EAAWvnX,SAASgC,EAAEsP,WAAY,OACzE1Z,KAAKuJ,UAAUg1S,gBAAgB7pS,KAAKi7W,EAAWvnX,SAASgC,EAAEsP,WAAY,OAclFm7W,EAAUtrX,UAAUiE,cAAgB,SAAUsK,EAASqF,EAAMm5W,GACzD,OAAO9oX,GAAcsK,EAASqF,IAUlC03W,EAAUtrX,UAAUgtX,mBAAqB,SAAUn6R,EAASuhD,GACpD39I,KAAK80X,gBAEL90X,KAAK8pI,WACL9pI,KAAKw2X,eAAiB,CAAEC,MAAOr6R,EAAS7uE,KAAMowH,KAItDk3O,EAAUtrX,UAAU2rX,cAAgB,WAC5Bl1X,KAAKu+S,iBAAmBv+S,KAAKu+S,gBAAgBx0S,QAC7C/J,KAAK+0X,aAAa78T,OAAOl4D,KAAKqtB,kBAAmBrtB,KAAKu+S,kBAG9Ds2E,EAAUtrX,UAAUozW,eAAiB,SAAUpvV,GAC3C,IAAIpQ,EAAOpU,OAAOmU,KAAKqQ,GACnBpQ,EAAKpT,SACL/J,KAAKmd,EAAK,IAAMoQ,EAAKpQ,EAAK,MAGlC03W,EAAUtrX,UAAUqsX,iBAAmB,WACnC,IAAIzhW,EAEAA,EADAygW,GACO3lX,OAAOmtC,aAAaE,QAAQt8C,KAAK4c,gBAAkB5c,KAAKoE,QAAQwP,GAAK5T,KAAKy1X,4BAG1ExmX,OAAOmtC,aAAaE,QAAQt8C,KAAK4c,gBAAkB5c,KAAKoE,QAAQwP,IAErEg2V,EAAkBz1U,IAAmB,KAATA,GAC9Bn0B,KAAKuT,cAAcs8B,KAAKE,MAAM5b,IAAO,IAG7C0gW,EAAUtrX,UAAU42L,eAAiB,WAC5BngM,KAAKg2F,cACF4+R,GACA3lX,OAAOmtC,aAAaC,QAAQr8C,KAAK4c,gBAC7B5c,KAAKoE,QAAQwP,GAAK5T,KAAKy1X,2BAA4Bz1X,KAAK6c,kBAG5D5N,OAAOmtC,aAAaC,QAAQr8C,KAAK4c,gBAAkB5c,KAAKoE,QAAQwP,GAAI5T,KAAK6c,oBAKrFg4W,EAAUtrX,UAAUwK,qBAAuB,SAAUszB,GAC5CuiU,EAAkBviU,IACnBA,KAIRwtV,EAAUtrX,UAAUoH,cAAgB,SAAU6xE,EAAc1tE,KAG5D+/W,EAAUtrX,UAAUuhW,YAAc,SAAUC,GAMxC,OALI/qW,KAAK02X,qBACLnC,GAAiB,GAErBL,GAAal0X,KAAK22X,OAAOn9U,SAASiS,MAClC+oU,GAAiB1yQ,QAAQ/3G,OAClBghW,EAAc,IAAMmpB,GAAa,IAAMK,MAElDM,EAAUtrX,UAAUotX,OAAS,SAAUxjW,GACnC,IAAIuhF,EAAO,EACX,GAAmB,IAAfvhF,EAAIppB,OACJ,OAAO2qG,EAEX,IAAK,IAAItqG,EAAI,EAAGA,EAAI+oB,EAAIppB,OAAQK,IAAK,CACjC,IAAI8+G,EAAO/1F,EAAIkL,WAAWj0B,GAC1BsqG,GAASA,GAAQ,GAAKA,EAAQwU,EAC9BxU,GAAcA,EAElB,OAAOjjG,KAAKyuI,IAAIxrC,IAEpBmgR,EAAUtrX,UAAUmtX,iBAAmB,WACnC,OAAOxC,KAAel0X,KAAK22X,OAAOn9U,SAASiS,OAAS+oU,KAAmB1yQ,QAAQ/3G,QAEnF8qX,EAAUtrX,UAAUuT,aAAe,SAAUvQ,GAGzC,IAFA,IAAIC,EAAQxM,KACR42X,EAAa,GACR1gX,EAAK,EAAG60I,EAAYx+I,EAAS2J,EAAK60I,EAAUhhJ,OAAQmM,IAAM,CAC/D,IAAIrS,EAAMknJ,EAAU70I,GAChB2gX,OAAW,EAEfA,EAAW3qV,EAASroC,EAAK7D,MACpB0nG,EAAYmvR,IACbtvW,EAAS1jB,EAAK7D,KAAKm1Q,oBAAoB0hH,GAAWD,GAG1D,OAAO/mV,KAAKC,UAAU8mV,GAAY,SAAU/yX,EAAKoC,GAC7C,OAAOuG,EAAM2oQ,oBAAoBlvQ,OAGzC4uX,EAAUtrX,UAAU4rQ,oBAAsB,SAAUvoO,GAChD,OAAIA,aAAe,GACRV,EAAS,aAAcU,GAGvBA,GAGfioV,EAAUtrX,UAAUq2L,gBAAkB,SAAUrzL,GAC5C,OAAOsjC,KAAKC,UAAU9vC,KAAK82X,sBAAsB92X,KAAK4iB,WAAYrW,KAEtEsoX,EAAUtrX,UAAUutX,sBAAwB,SAAUlqV,EAAKmqV,GAqBvD,IApBA,IAAIC,EAAS,GACTz9U,EAAU,SAAU11C,GACpB,IAAiC,IAA7BkzX,EAAW7pX,QAAQrJ,GAAa,CAEhC,IAAIoC,EAAQ2mC,EAAI/oC,GAChB,GAAqB,kBAAVoC,GAAwBA,aAAiBiD,MAUhD8tX,EAAO,GAAKnzX,GAAOoC,MAVqC,CACxD,IAAIiqJ,EAAU6mO,EAAW5+V,QAAO,SAAUijB,GACtC,IAAIwxT,EAAS/1U,OACb,OAAO,IAAI+1U,EAAO/oW,EAAM,KAAKnE,KAAK07C,MACnC9rC,KAAI,SAAU8rC,GACb,OAAOA,EAAI34B,QAAQ5e,EAAM,IAAK,OAElCmzX,EAAO,GAAKnzX,GAAOixD,EAAOgiU,sBAAsBhiU,EAAOqgN,oBAAoBlvQ,GAAQiqJ,MAO3Fp7F,EAAS90D,KACJkW,EAAK,EAAGlJ,EAAKjE,OAAOmU,KAAK0vB,GAAM12B,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAC1D,IAAIrS,EAAMmJ,EAAGkJ,GACbqjC,EAAQ11C,GAEZ,OAAOmzX,GAEX,GAAW,CACP7K,IAAS,IACV0I,EAAUtrX,UAAW,yBAAqB,GAC7C,GAAW,CACP4iX,MACD0I,EAAUtrX,UAAW,iBAAa,GACrC,GAAW,CACP4iX,MACD0I,EAAUtrX,UAAW,cAAU,GAClCsrX,EAAY,GAAW,CACnBlI,IACDkI,GACIA,EAhemB,CAie5B,KAIF,WAC0B,qBAAX5lX,QACPA,OAAO+xC,iBAAiB,YAExB,WACIuzU,GAAiB,MAL7B,GCvhBA,IAAI,GAAwC,WACxC,IAAI1rX,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxC,GAA0C,SAAUK,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAU5DitX,GAAkB,CAAEtyX,KAAM,EAAGC,IAAK,EAAGoC,OAAQ,EAAGM,MAAO,GACvD4vX,GAAkB,CAAEC,WAAW,GAI/B,GAA0B,SAAUlrX,GAEpC,SAASmrX,IACL,OAAkB,OAAXnrX,GAAmBA,EAAOC,MAAMlM,KAAM8J,YAAc9J,KAQ/D,OAVA,GAAUo3X,EAAUnrX,GAIpB,GAAW,CACPkgX,GAAS,IACViL,EAAS7tX,UAAW,YAAQ,GAC/B,GAAW,CACP4iX,GAAS,IACViL,EAAS7tX,UAAW,WAAO,GACvB6tX,EAXkB,CAY3B,IAkBE,GAA2B,SAAUnrX,GAErC,SAASorX,EAAUjzX,EAASmI,GACxB,IAAIC,EAAQP,EAAOQ,KAAKzM,KAAMuM,EAASnI,IAAYpE,KAiBnD,OAhBAwM,EAAM8qX,UAAYC,EAAYC,qBAC9BhrX,EAAMuiJ,YAAcwoO,EAAYC,qBAChChrX,EAAMmlD,QAAU4lU,EAAYC,qBAC5BhrX,EAAMirX,MAAQ,EACdjrX,EAAMkrX,SAAW,EACjBlrX,EAAMmrX,QAAU,EAChBnrX,EAAMorX,oBAAqB,EAC3BprX,EAAMqrX,OAAS,EAEfrrX,EAAMsrX,aAAe,EACrBtrX,EAAMurX,oBAAqB,EAC3BvrX,EAAMwrX,MAAQ,EACdxrX,EAAMyrX,cAAgB,EACtBzrX,EAAM0rX,cAAgB,EACtB1rX,EAAM2rX,WAAa,GACnB3rX,EAAMgC,OACChC,EA8wBX,IAAI+qX,EA4EJ,OA72BA,GAAUF,EAAWprX,GAqBrBsrX,EAAcF,EACdA,EAAU9tX,UAAUiF,KAAO,WACvBxO,KAAKo4X,eACD,GAAQtlU,MACRq0T,GAAS,CAACnnX,KAAKoE,SAAU,iBAE7BpE,KAAKm4X,WAAWn4X,KAAKq4X,OAAS,IAElChB,EAAUG,mBAAqB,WAC3B,OAAOltB,EAAO,GAAI2sB,KAEtBI,EAAU9tX,UAAU6uX,aAAe,SAAUE,GACzC,IAAIzyV,EACC6hE,EAAY1nG,KAAKo9K,UAClBv3I,EAAM,GAAO7lC,KAAKo9K,OAAQp9K,KAAKoE,UAEnC,IAAIg4F,EAAWp8F,KAAKylR,eAAiB,GAAQ1tQ,UAAY,GAAQ0jR,QAAWz7R,KAAKu4X,iBAAmBv4X,KAAK8M,WACrGwrX,EACA,GAAarqX,OAAO43B,GAAO7lC,KAAKoE,QAAS,GAAQ0hX,WAAa,aAAe,GAAQ1xW,gBAAiBgoF,GAGtG,GAAajoF,IAAI0xB,GAAO7lC,KAAKoE,QAAS,GAAQ0hX,WAAa,aAAe,GAAQ1xW,gBAAiBgoF,EAASp8F,OAIpHq3X,EAAU9tX,UAAUgvX,iBAAmB,SAAUrjX,GAC7C,IAAI1I,EAAQxM,KACR2J,EAASuL,EAAIoI,cACjBtd,KAAK83X,aAAeriX,YAAW,WAC3BjJ,EAAMurX,oBAAqB,EAC3BvrX,EAAMgsX,qBACNhsX,EAAMM,WAAWoI,EAAKvL,KACvB3J,KAAKkc,kBACR,GAAa/H,IAAI8B,SAAU,GAAQ6vW,WAAa,YAAc,GAAQ5oV,eAAgBl9B,KAAKw4X,mBAAoBx4X,MAC/G,GAAamU,IAAI8B,SAAU,GAAQ6vW,WAAa,WAAa,GAAQ1pW,cAAepc,KAAKw4X,mBAAoBx4X,OAGjHq3X,EAAU9tX,UAAUivX,mBAAqB,WACrCrjX,aAAanV,KAAK83X,cAClB,GAAa7pX,OAAOgI,SAAU,GAAQ6vW,WAAa,YAAc,GAAQ5oV,eAAgBl9B,KAAKw4X,oBAC9F,GAAavqX,OAAOgI,SAAU,GAAQ6vW,WAAa,WAAa,GAAQ1pW,cAAepc,KAAKw4X,qBAGhGnB,EAAU9tX,UAAUujM,oBAAsB,SAAU1oM,EAASu0L,GACzD,IAAIl6I,EAAS,CAAE,SAAY,eAAgB,WAAc,eACrDg9L,EAAS,CAAE,SAAY,eAAgB,WAAc,eACzD,OAAImuH,EAAkBxlW,GACX,KAEPA,EAAQq6C,EAAO,GAAKk6I,IAASv0L,EAAQq3O,EAAO,GAAK9iD,MACpC,aAATA,EAAsBv0L,EAAQgB,UAAY,EAAIhB,EAAQe,WAAa,IACtD,aAATwzL,GACA34L,KAAKk4X,cAAgBl4X,KAAKk4X,eACE,IAAvBl4X,KAAKk4X,cAAsB9zX,EAAQgB,UAAYhB,EAAQgB,UAAYpF,KAAKk4X,eAC7El4X,KAAKy4X,iBAAmBr0X,EAAQihD,eAGhCrlD,KAAKi4X,cAAgBj4X,KAAKi4X,eACE,IAAvBj4X,KAAKi4X,cAAsB7zX,EAAQe,WAAaf,EAAQe,WAAanF,KAAKi4X,eAC/Ej4X,KAAK04X,gBAAkBt0X,EAAQ0+C,aAE9B8mT,EAAkBxlW,GAIZA,EAHApE,KAAK8sM,oBAAoB1oM,EAAQ4jD,WAAY2wI,IAWrD34L,KAAK8sM,oBAAoB1oM,EAAQ4jD,WAAY2wI,IAI5D0+L,EAAU9tX,UAAUovX,oBAAsB,WACtC34X,KAAKi4X,cAAgB,EACrBj4X,KAAKk4X,cAAgB,EACDl4X,KAAKoE,QAAQ+C,UAAUC,SAAS,aAAepH,KAAKoE,QAAQ+C,UAAUC,SAAS,eACxEpH,KAAK8sM,oBAAoB9sM,KAAKoE,QAAQ4jD,WAAY,YAChDhoD,KAAK8sM,oBAAoB9sM,KAAKoE,QAAQ4jD,WAAY,eAGnFqvU,EAAU9tX,UAAUuD,WAAa,SAAUoI,EAAK0jX,GAE5C,GADA54X,KAAK64X,mBAAqB3jX,EAAIvL,QAC1B3J,KAAK84X,gBAAT,CASA,GALI94X,KAAK84X,eAAc,GACnB94X,KAAK+3X,oBAAqB,EAE9B/3X,KAAK2J,OAAUuL,EAAIoI,eAAiBs7W,EACpC54X,KAAK43X,oBAAqB,EACtB53X,KAAKm9K,MAAO,CAGZ,IAAI47M,EAAiB/4X,KAAKm9K,MACI,kBAAnB47M,IACPA,EAAiB,CAACA,IAEtB,IAAK,IAAI3uX,EAAI,EAAGA,EAAI2uX,EAAehvX,OAAQK,IACvC,IAAKw/V,EAAkB76V,GAAQmG,EAAIvL,OAAQovX,EAAe3wX,SAASgC,EAAEsP,WAAY,OAK7E,YAHI1Z,KAAK84X,iBACL94X,KAAK84X,eAAc,IAM/B94X,KAAKgb,iBAAmB0sF,EAAYxyF,EAAI02C,iBAAgC,eAAb12C,EAAI2B,MAC/D3B,EAAI8F,iBAERhb,KAAKoE,QAAQ6O,aAAa,eAAgB,QAC1C,IAAI+lX,EAAWh5X,KAAKi5X,eAAe/jX,GAEnC,GADAlV,KAAKk5X,gBAAkB,CAAEtqX,EAAGoqX,EAAS99W,MAAO7Y,EAAG22X,EAAS79W,QACnDnb,KAAK88C,MAAO,CACb,IAAIj3C,EAAM7F,KAAKoE,QAAQiC,wBACvBrG,KAAK24X,sBACDzjX,EAAI0tB,UAAY1tB,EAAIgG,QACpBlb,KAAKi4X,cAAgB,GAErB/iX,EAAI2tB,UAAY3tB,EAAIiG,QACpBnb,KAAKk4X,cAAgB,GAEzBl4X,KAAKm5X,kBAAoBH,EAAS99W,OAASrV,EAAIlB,KAAO3E,KAAKi4X,eAC3Dj4X,KAAKo5X,kBAAoBJ,EAAS79W,OAAStV,EAAIjB,IAAM5E,KAAKk4X,eAE1Dl4X,KAAK+3X,mBACL/3X,KAAKq5X,aAAankX,IAGlB,GAAaf,IAAI8B,SAAU,GAAQ6vW,WAAa,YAAc,GAAQ5oV,eAAgBl9B,KAAKq5X,aAAcr5X,MACzG,GAAamU,IAAI8B,SAAU,GAAQ6vW,WAAa,WAAa,GAAQ1pW,cAAepc,KAAKqmR,WAAYrmR,OAEzGA,KAAKo4X,cAAa,GACD,eAAbljX,EAAI2B,MAAyB7W,KAAKs5X,iBAClCrjX,SAASnP,KAAKK,UAAUgN,IAAI,oBAEhCnU,KAAK+3X,oBAAqB,EAC1B,GAAaxnX,QAAQ0F,SAASpP,gBAAiB,GAAQi/W,WAAa,aAAe,GAAQ1xW,gBAAiBc,KAEhHmiX,EAAU9tX,UAAU8vX,aAAe,SAAUnkX,GACzClV,KAAKw4X,qBACL,IAAIe,GAAiB7xR,EAAYxyF,EAAI02C,gBACrC,IAAI2tU,GAAgD,IAA9BrkX,EAAI02C,eAAe7hD,OAAzC,CAGA,IACIlE,EADA2zX,EAAex5X,KAAKi5X,eAAe/jX,GAEnCukX,EAAYvqX,iBAAiBlP,KAAKoE,SACtCpE,KAAK4xD,OAAS,CACVjtD,KAAMyD,SAASqxX,EAAUxrM,WAAY,IACrCrpL,IAAKwD,SAASqxX,EAAUjrR,UAAW,IACnClnG,MAAOc,SAASqxX,EAAU/tW,YAAa,IACvC1kB,OAAQoB,SAASqxX,EAAUhrR,aAAc,KAE7C,IAAIrqG,EAAUpE,KAAKoE,QACnB,GAAIpE,KAAK88C,OAAS98C,KAAKm8F,WAAY,CAC/B,IAAIu9R,EAAa3qX,GAAQmG,EAAIvL,OAAQ3J,KAAKm8F,YACrCytQ,EAAkB8vB,KACnBt1X,EAAUs1X,GAId15X,KAAK25X,mBAELv1X,EAAUpE,KAAK45X,kBAAkB1kX,EAAIvL,OAAQvF,IAEjDpE,KAAK0H,OAAS1H,KAAK65X,wBAAwBz1X,GAC3CpE,KAAKgF,SAAWhF,KAAK85X,iBAAiB5kX,EAAKlV,KAAKk9K,cAChD,IAAItuK,EAAI5O,KAAKk5X,gBAAgBtqX,EAAI4qX,EAAat+W,MAC1C7Y,EAAIrC,KAAKk5X,gBAAgB72X,EAAIm3X,EAAar+W,MAC1CumC,EAAWjwC,KAAK29W,KAAMxgX,EAAIA,EAAMvM,EAAIA,GACxC,GAAKq/C,GAAY1hD,KAAK0hD,UAAY1hD,KAAK+3X,mBAAqB,CACxD,IAAIlyV,EAAM7lC,KAAK+5X,iBAAiB7kX,GAChC,IAAK2wB,GAAO+jU,EAAkB/jU,GAC1B,OAEA0zV,GACArkX,EAAI8F,iBAER,IAAIg/W,EAAoBh6X,KAAKi6X,cAAgBp0V,EAE7C,GADA7lC,KAAKk6X,iBAAmBl6X,KAAK65X,wBAAwBG,EAAkBl1X,cACnE9E,KAAKozF,UAAW,CAChB,IAAIwlS,EAAY54X,KAAKm6X,uBAAuBjlX,GACxCqY,EAAO,CACPxW,MAAO7B,EACP9Q,QAASA,EACTuF,OAAQivX,EACRj5W,WAAYirV,IAAa5qW,KAAKo6X,eAAe5rX,KAAKxO,MAAQ,KAC1Ds9K,YAAa08M,GAEjBh6X,KAAKuQ,QAAQ,YAAagd,GAE1BvtB,KAAKu9K,SACLv9K,KAAKq6X,eAGLr6X,KAAKs3X,UAAY,CAAE3yX,KAAM,EAAG2C,MAAO,EAAGN,OAAQ,EAAGpC,IAAK,GACtD5E,KAAK+uJ,YAAc,CAAEnqJ,IAAK,EAAGD,KAAM,IAEvCkB,EAAM,CAAElB,KAAM3E,KAAKgF,SAASL,KAAO3E,KAAKk6X,iBAAiBv1X,KAAMC,IAAK5E,KAAKgF,SAASJ,IAAM5E,KAAKk6X,iBAAiBt1X,KAC1G5E,KAAK88C,QAAU98C,KAAKulR,iBACpBvlR,KAAKy3X,MAAQz3X,KAAKgF,SAASL,KAAO3E,KAAK0H,OAAO/C,KAC9C3E,KAAKg4X,MAAQh4X,KAAKgF,SAASJ,IAAM5E,KAAK0H,OAAO9C,KAEjD5E,KAAK24X,sBAEL,IAAIphX,EAASrI,iBAAiB9K,GAC1BoqG,EAAYj/F,WAAWgI,EAAOi3F,WAE9BxuG,KAAK88C,OAAuB,IAAd0xD,IACd3oG,EAAIjB,KAAO4pG,GAEfxuG,KAAK63X,OAAUx0W,MAAM9T,WAAWgI,EAAO3S,MAAmD,EAA3C2K,WAAWgI,EAAO3S,KAAO5E,KAAK0H,OAAO9C,IAKhF5E,KAAKs6X,sBAAwBt6X,KAAK88C,QAClCj3C,EAAIjB,KAAO5E,KAAKk4X,cAChBryX,EAAIlB,MAAQ3E,KAAKi4X,eAErB,IAAIsC,EAAWv6X,KAAKw6X,0BAA0B,CAC1C51X,IAAMiB,EAAIjB,IAAM5E,KAAKg4X,MAAS,KAC9BrzX,KAAOkB,EAAIlB,KAAO3E,KAAKy3X,MAAS,OAEhCz3X,KAAKu9K,UAAqC,kBAAlBv9K,KAAKu9K,UAAyBv9K,KAAKu9K,SAASp2K,UAAUC,SAAS,qBAAwD,aAAjCpH,KAAKu9K,SAASx4K,MAAMC,WAClIa,EAAIjB,KAAO5E,KAAKu9K,SAASn4K,WAE7BpF,KAAKy6X,gBAAkB,CAAE71X,IAAKiB,EAAIjB,IAAKD,KAAMkB,EAAIlB,MACjDikX,GAAkBoR,EAAmBh6X,KAAK06X,gBAAgB,CAAE11X,SAAU,WAAYL,KAAM41X,EAAS51X,KAAMC,IAAK21X,EAAS31X,OACrH,GAAaqJ,OAAOgI,SAAU,GAAQ6vW,WAAa,YAAc,GAAQ5oV,eAAgBl9B,KAAKq5X,cAC9F,GAAaprX,OAAOgI,SAAU,GAAQ6vW,WAAa,WAAa,GAAQ1pW,cAAepc,KAAKqmR,YACvFukF,KACD5qW,KAAKo6X,eAAeJ,MAIhC3C,EAAU9tX,UAAU6wX,eAAiB,SAAUJ,GACvC1nU,GAAU0nU,IACV,GAAa7lX,IAAI8B,SAAU,GAAQ6vW,WAAa,YAAc,GAAQ5oV,eAAgBl9B,KAAK26X,QAAS36X,MACpG,GAAamU,IAAI8B,SAAU,GAAQ6vW,WAAa,WAAa,GAAQ1pW,cAAepc,KAAK46X,YAAa56X,MACtGA,KAAK66X,qBAAoB,EAAO76X,KAAKoE,QAAS41X,KAG9Ch6X,KAAKo4X,eACLniX,SAASnP,KAAKK,UAAU8G,OAAO,sBAGvCopX,EAAU9tX,UAAUuxX,kBAAoB,SAAUn7U,GAC9C3/C,KAAK4E,IAAM+6C,EAAGz6C,UACdlF,KAAK2E,KAAOg7C,EAAG16C,WACfjF,KAAKqH,MAAQs4C,EAAG7tC,YAChB9R,KAAKiH,OAAS04C,EAAG5tC,aACjB,MAAO4tC,EAAG76C,aACN66C,EAAKA,EAAG76C,aACR9E,KAAK4E,KAAO+6C,EAAGz6C,UACflF,KAAK2E,MAAQg7C,EAAG16C,WAEpB,OAAQjF,KAAK4E,KAAOqK,OAAO+J,aACvBhZ,KAAK2E,MAAQsK,OAAO8J,aACnB/Y,KAAK4E,IAAM5E,KAAKiH,QAAYgI,OAAO+J,YAAc/J,OAAOwvK,aACxDz+K,KAAK2E,KAAO3E,KAAKqH,OAAW4H,OAAO8J,YAAc9J,OAAO4sL,YAEjEw7L,EAAU9tX,UAAUixX,0BAA4B,SAAUv0X,GACtD,OAAIjG,KAAK+6X,kBACE/6X,KAAK+6X,kBAAkB90X,GAE3BA,GAEXoxX,EAAU9tX,UAAUswX,wBAA0B,SAAUh0V,GACpD,GAAI+jU,EAAkB/jU,GAClB,MAAO,CAAElhC,KAAM,EAAGC,IAAK,GAE3B,IAAIyhW,EAAOxgU,EAAIx/B,wBACXtB,EAAQmK,iBAAiB22B,GAC7B,MAAO,CACHlhC,KAAO0hW,EAAK1hW,KAAOsK,OAAO8J,YAAe3Q,SAASrD,EAAMkpL,WAAY,IACpErpL,IAAMyhW,EAAKzhW,IAAMqK,OAAO+J,YAAe5Q,SAASrD,EAAMypG,UAAW,MAIzE6oR,EAAU9tX,UAAUoxX,QAAU,SAAUzlX,GACpC,GAAKwyF,EAAYxyF,EAAI02C,iBAAkD,IAA9B12C,EAAI02C,eAAe7hD,OAA5D,CAMA,IAAIpF,EACAC,EAJA5E,KAAK88C,OAAS5nC,EAAI02C,gBAAkB,GAAQ7zC,UAAY,GAAQ0jR,SAChEvmR,EAAI8F,iBAIRhb,KAAKgF,SAAWhF,KAAK85X,iBAAiB5kX,EAAKlV,KAAKk9K,cAChD,IAAI89M,EAAYh7X,KAAKi7X,uBAAuB,UACxCD,EAAYh7X,KAAKgF,SAASJ,MAC1B5E,KAAKgF,SAASJ,IAAMo2X,GAExB,IAAIE,EAAWl7X,KAAKi7X,uBAAuB,SAI3C,GAHIC,EAAWl7X,KAAKgF,SAASL,OACzB3E,KAAKgF,SAASL,KAAOu2X,GAErBl7X,KAAKqzF,KAAM,CACX,IAAIulS,EAAY54X,KAAKm6X,uBAAuBjlX,GAC5ClV,KAAKuQ,QAAQ,OAAQ,CAAEwG,MAAO7B,EAAK9Q,QAASpE,KAAKoE,QAASuF,OAAQivX,IAEtE,IAAI3jM,EAASj1L,KAAKm7X,mBAAmBjmX,GACrC,GAAI+/K,EAAOtrL,QAAUsrL,EAAOj7J,SAAU,CAElC,IAAIq6D,GAAO,EACPr0F,KAAKo7X,cACDp7X,KAAKo7X,YAAYphW,WAAai7J,EAAOj7J,SACrCh6B,KAAKq7X,mBAAmBnmX,EAAK+/K,GAG7B5gG,GAAO,GAGXA,IAEA4gG,EAAOj7J,SAASksP,SAASlmR,KAAKq4X,OAASr4X,KAAKm4X,WAAWn4X,KAAKq4X,OAC5DpjM,EAAOj7J,SAASshW,QAAQpmX,EAAK+/K,EAAOtrL,QACpC3J,KAAKo7X,YAAcnmM,QAGlBj1L,KAAKo7X,aACVp7X,KAAKq7X,mBAAmBnmX,EAAK+/K,GAEjC,IAAIglM,EAAgBj6X,KAAKm4X,WAAWn4X,KAAKq4X,OAAOvlS,OAChD9yF,KAAKk6X,iBAAmBl6X,KAAK65X,wBAAwB75X,KAAKi6X,cAAcn1X,cACxE,IAAIy2X,EAAQv7X,KAAKk6X,iBAAiBv1X,KAC9B62X,EAAOx7X,KAAKk6X,iBAAiBt1X,IAC7Bo0X,EAAWh5X,KAAKi5X,eAAe/jX,GAC/BumX,EAAQzC,EAAS99W,MACjBwgX,EAAQ1C,EAAS79W,MACjBwgX,EAAQ37X,KAAKgF,SAASL,KAAO3E,KAAKy3X,MAClCmE,EAAO57X,KAAKgF,SAASJ,IAAM5E,KAAKg4X,MAChCzgX,EAASrI,iBAAiB+qX,GAC9B,GAAIj6X,KAAKu9K,SAAU,CAIf,GAHIv9K,KAAKwlR,kBACLxlR,KAAKq6X,cAELr6X,KAAKkb,QAAUugX,GAASz7X,KAAK67X,kBAAmB,CAChD,IAAIC,EAAc7B,EAAcnoX,aAAevC,WAAWgI,EAAO02K,YAC3D1+K,WAAWgI,EAAOmU,cAEpB/mB,EADA3E,KAAKs3X,UAAU3yX,KAAOg3X,GAASA,EAAQ,EAChC37X,KAAKs3X,UAAU3yX,KAEjB3E,KAAKs3X,UAAUhwX,MAAQ2H,OAAO8J,YAAc4iX,EAAQG,GAAeH,EAAQ,EACzEA,GAASA,EAAQ37X,KAAKs3X,UAAUhwX,OAAS2H,OAAO8J,YAAc+iX,EAG9DH,EAAQ,EAAI37X,KAAKs3X,UAAU3yX,KAAOg3X,EAGjD,GAAI37X,KAAKmb,QAAUugX,GAAS17X,KAAK67X,kBAAmB,CAChD,IAAIE,EAAe9B,EAAcloX,cAAgBxC,WAAWgI,EAAOi3F,WAC7Dj/F,WAAWgI,EAAOk3F,eAEpB7pG,EADA5E,KAAKs3X,UAAU1yX,IAAMg3X,GAAQA,EAAO,EAC9B57X,KAAKs3X,UAAU1yX,IAEhB5E,KAAKs3X,UAAUtwX,OAASiI,OAAO+J,YAAc4iX,EAAOG,GAAgBH,EAAO,EAC1EA,GAAQA,EAAO57X,KAAKs3X,UAAUtwX,QAAUiI,OAAO+J,YAAc+iX,EAG7DH,EAAO,EAAI57X,KAAKs3X,UAAU1yX,IAAMg3X,QAK9Cj3X,EAAOg3X,EACP/2X,EAAMg3X,EAEV,IAUII,EACAC,EAXAC,EAAOV,EAAOx7X,KAAK+uJ,YAAYnqJ,IAC/Bu3X,EAAQZ,EAAQv7X,KAAK+uJ,YAAYpqJ,KAWrC,GAVI3E,KAAK43X,qBACDhuB,EAAkBhlW,KAClBA,EAAM5E,KAAK23X,SAEX/tB,EAAkBjlW,KAClBA,EAAO3E,KAAK03X,WAKhB13X,KAAKi6X,cAAc9yX,UAAUC,SAAS,cAClCpH,KAAKu9K,UACLv9K,KAAKs3X,UAAU1yX,IAAM5E,KAAK88C,MAAQ98C,KAAKs3X,UAAU1yX,IAAM,EACvDo3X,EAAap3X,EAAMs3X,EAAQ,EAAIl8X,KAAKs3X,UAAU1yX,IAAOA,EAAM5E,KAAK+uJ,YAAYnqJ,IAC5Eq3X,EAAct3X,EAAOw3X,EAAS,EAAIn8X,KAAKs3X,UAAU3yX,KAAQA,EAAO3E,KAAK+uJ,YAAYpqJ,OAGjFq3X,EAAYp3X,EAAM5E,KAAK+uJ,YAAYnqJ,IACnCq3X,EAAat3X,EAAO3E,KAAK+uJ,YAAYpqJ,WAIzC,GAAI3E,KAAKu9K,SAAU,CACf,IAAI6+M,EAAcp8X,KAAKi6X,cAAc9yX,UAAUC,SAAS,YACxDpH,KAAKs3X,UAAU1yX,IAAM5E,KAAK88C,MAAQ98C,KAAKs3X,UAAU1yX,IAAM,EACvDo3X,EAAap3X,EAAMs3X,EAAQ,EAAIl8X,KAAKs3X,UAAU1yX,IAAOA,EAAMs3X,EAC3DD,EAAct3X,EAAOw3X,EAAS,EAAIC,EAAez3X,GAAQw3X,EAAQn8X,KAAK+uJ,YAAYpqJ,MAC9E3E,KAAKy6X,gBAAgB91X,KAAQA,EAAOw3X,OAGxCH,EAAYp3X,EAAMs3X,EAClBD,EAAat3X,EAAOw3X,EAG5B,IAAI3tR,EAAYj/F,WAAWL,iBAAiBlP,KAAKoE,SAASoqG,WAG1D,GAAIA,EAAY,IACRxuG,KAAK88C,QACLk/U,GAAaxtR,EACTotR,EAAO,IACFptR,EAAYotR,GAAS,EACtBI,EAAYxtR,EAAYotR,EAGxBI,GAAaxtR,GAGjBxuG,KAAKu9K,WACLy+M,EAAah8X,KAAKs3X,UAAUtwX,OAASg1X,EAAah8X,KAAKs3X,UAAUtwX,OAASg1X,IAG7Ep3X,EAAMs3X,EAAQ,GACf,GAAIN,EAAOptR,GAAayrR,EAAcloX,aAAemqX,IAAS,EAAG,CAC7D,IAAIG,EAAgBr8X,KAAKs3X,UAAU1yX,IAAMg3X,EAAOM,EAC3CG,EAAgB7tR,EAAY0tR,EAAQ,EACrCF,GAAaxtR,EAAY0tR,EAGzBF,EAAYK,OAIhBL,GAAaxtR,EAAY0tR,EAIrC,GAAIl8X,KAAKu9K,UAAYv9K,KAAKi6X,cAAc9yX,UAAUC,SAAS,cAAe,CAClE20X,EAAe9B,EAAcloX,cAAgBxC,WAAWgI,EAAOi3F,WAC7Dj/F,WAAWgI,EAAOk3F,eACxButR,EAAaA,EAAYD,EAAgB/7X,KAAKs3X,UAAUtwX,OAAUhH,KAAKs3X,UAAUtwX,OAAS+0X,EAAgBC,EAM1Gh8X,KAAKs6X,sBAAwBt6X,KAAK88C,QAClCk/U,GAAah8X,KAAKk4X,cAClB+D,GAAcj8X,KAAKi4X,eAEnBj4X,KAAKu9K,UAAqC,kBAAlBv9K,KAAKu9K,UAAyBv9K,KAAKu9K,SAASp2K,UAAUC,SAAS,qBAAwD,aAAjCpH,KAAKu9K,SAASx4K,MAAMC,WAClIg3X,GAAah8X,KAAKu9K,SAASn4K,WAE/B,IAAIk3X,EAAYt8X,KAAKw6X,0BAA0B,CAAE51X,IAAKo3X,EAAY,KAAMr3X,KAAMs3X,EAAa,OAC3FrT,GAAkBqR,EAAej6X,KAAK06X,gBAAgB4B,IACjDt8X,KAAK86X,kBAAkBb,KAAkBj6X,KAAKwlR,kBAAqBxlR,KAAKi6X,cAAc9yX,UAAUC,SAAS,eAC1GpH,KAAKi6X,cAAc7jK,iBAEvB,IAAIjqI,EAAWl2E,SAASiU,iBAAiB,UACzC,GAAIlqB,KAAKwlR,kBAAoBxlR,KAAKi6X,cAAc9yX,UAAUC,SAAS,cAAe,CACtD,IAApB+kF,EAASpiF,SACToiF,EAAWnsF,KAAKu8X,gBAAgBrnX,IAIpC,IAAIsnX,EAAex8X,KAAK+hR,gBAAgB51L,GAAU,GAC9CnsF,KAAK86X,kBAAkB96X,KAAKi6X,eAC5Bj6X,KAAKy8X,kBAAkBD,EAAcR,GAE/Bh8X,KAAK86X,kBAAkB96X,KAAKi6X,iBAClC9tS,EAAW,GAAGp2E,MAAMtJ,KAAKwJ,SAASiU,iBAAiB,WAC3B,IAApBiiE,EAASpiF,SACToiF,EAAWnsF,KAAKu8X,gBAAgBrnX,IAEpCsnX,EAAex8X,KAAK+hR,gBAAgB51L,GAAU,GAC9CnsF,KAAKy8X,kBAAkBD,EAAcR,IAG7Ch8X,KAAK43X,oBAAqB,EAC1B53X,KAAK03X,SAAW/yX,EAChB3E,KAAK23X,QAAU/yX,EACf5E,KAAKgF,SAASL,KAAOA,EACrB3E,KAAKgF,SAASJ,IAAMA,EACpB5E,KAAKkb,MAAQugX,EACbz7X,KAAKmb,MAAQugX,IAIjBrE,EAAU9tX,UAAUw4Q,gBAAkB,SAAU34K,EAAM/zD,GAKlD,IAFA,IACIqnV,EADAC,EAAStnV,EAAU+zD,EAAK/zD,UAAY+zD,EAE/Bh/F,EAAIuyX,EAAO5yX,OAAS,EAAGK,GAAK,EAAGA,IAEpC,GADAsyX,EAAYztX,OAAOC,iBAAiBytX,EAAOv0X,SAASgC,EAAEsP,WAAY,MAAM,eACrD,SAAdgjX,GAAsC,WAAdA,IACtBC,EAAOv0X,SAASgC,EAAEsP,WAAY,KAAK2rC,aAAes3U,EAAOv0X,SAASgC,EAAEsP,WAAY,KAAK9H,aACxF,OAAO+qX,EAAOv0X,SAASgC,EAAEsP,WAAY,KAI7C,GADAgjX,EAAYztX,OAAOC,iBAAiB+G,SAAS4qK,kBAAkB,cAC7C,YAAd67M,EAEA,OADAzmX,SAAS4qK,iBAAiB97K,MAAMi/C,SAAW,OACpC/tC,SAAS4qK,kBAGxBw2M,EAAU9tX,UAAUkzX,kBAAoB,SAAUG,EAASZ,GACvD,GAAIY,GAAWA,IAAY3mX,SAAS4qK,iBAC3B+7M,EAAQhrX,aAAeqE,SAAS4qK,iBAAiBz7K,UAAYpF,KAAKi6X,cAAcroX,aAAgBoqX,GAC9FY,EAAQv2X,wBAAwBY,OAASjH,KAAKk6X,iBAAiBt1X,IAAMo3X,EACxEY,EAAQx3X,WAAapF,KAAKi6X,cAAcroX,aAEnCgrX,EAAQx3X,UAAY42X,EAAYh8X,KAAKi6X,cAAcroX,eACxDgrX,EAAQx3X,WAAapF,KAAKi6X,cAAcroX,mBAG3C,GAAIgrX,GAAWA,IAAY3mX,SAAS4qK,iBAAkB,CACvD,IAAIg8M,EAAe5mX,SAAS4qK,iBAAiBz7K,UACzC03X,EAAqB98X,KAAKi6X,cAAcroX,aACvCgrX,EAAQhrX,aAAegrX,EAAQv2X,wBAAwBzB,IAAMk4X,EAAqBD,EAAgBb,EACnGY,EAAQx3X,WAAapF,KAAKi6X,cAAcroX,aAEnCgrX,EAAQv2X,wBAAwBzB,IAAOo3X,EAAYc,EAAqBD,IAC7ED,EAAQx3X,WAAapF,KAAKi6X,cAAcroX,gBAIpDylX,EAAU9tX,UAAUgzX,gBAAkB,SAAUrnX,GAC5C,IAAI6nX,EAAa7nX,EAAI0tB,QAAU,EAAI1tB,EAAI0tB,QAAU,EAC7Co6V,EAAc9nX,EAAI2tB,QAAU,EAAI3tB,EAAI2tB,QAAU,EAClD,OAAO5sB,SAASgnX,kBAAkBF,EAAYC,IAElD3F,EAAU9tX,UAAU8xX,mBAAqB,SAAUnmX,EAAK+/K,GACpDj1L,KAAKo7X,YAAYphW,SAASkjW,OAAOhoX,EAAK+/K,EAAOtrL,QAC7C3J,KAAKo7X,YAAYphW,SAASksP,SAASlmR,KAAKq4X,OAAS,KACjDr4X,KAAKo7X,YAAc,MAEvB/D,EAAU9tX,UAAUmxX,gBAAkB,SAAU4B,GAC5C,IAAI7tV,EAAO67T,EAAO,GAAIgyB,GAStB,OARIt8X,KAAK24L,OACa,MAAd34L,KAAK24L,YACElqJ,EAAK7pC,IAEO,MAAd5E,KAAK24L,aACHlqJ,EAAK9pC,MAGb8pC,GAEX4oV,EAAU9tX,UAAU0xX,uBAAyB,SAAU7/U,GACnD,IAAI+hV,EAAUlnX,SAASnP,KACnBs2X,EAASnnX,SAASpP,gBAClBstC,EAAc1iC,KAAKyP,IAAIi8W,EAAQ,SAAW/hV,GAAMgiV,EAAO,SAAWhiV,GAAM+hV,EAAQ,SAAW/hV,GAAMgiV,EAAO,SAAWhiV,GAAMgiV,EAAO,SAAWhiV,IAC/I,OAAOjH,GAEXkjV,EAAU9tX,UAAUqxX,YAAc,SAAU1lX,GAExC,GADAlV,KAAK43X,oBAAqB,EACrBlwR,EAAYxyF,EAAI02C,iBAAkD,IAA9B12C,EAAI02C,eAAe7hD,OAA5D,CAGA,IAAI8M,EAAO,CAAC,WAAY,YAAa,WACrC,IAAgC,IAA5BA,EAAK3J,QAAQgI,EAAI2B,MAAc,CAC/B,GAAI7W,KAAKwzF,SAAU,CACf,IAAIolS,EAAY54X,KAAKm6X,uBAAuBjlX,GAC5ClV,KAAKuQ,QAAQ,WAAY,CAAEwG,MAAO7B,EAAK9Q,QAASpE,KAAKoE,QAASuF,OAAQivX,EAAW9lS,OAAQ9yF,KAAKi6X,gBAElGj6X,KAAKqmR,WAAWnxQ,QAGhBlV,KAAKoE,QAAQ6O,aAAa,eAAgB,SAE9C,IAAIgiL,EAASj1L,KAAKm7X,mBAAmBjmX,GACjC+/K,EAAOtrL,QAAUsrL,EAAOj7J,WACxBi7J,EAAOj7J,SAASqjW,gBAAiB,EAEjCpoM,EAAOj7J,SAASksP,SAASlmR,KAAKq4X,OAASr4X,KAAKm4X,WAAWn4X,KAAKq4X,OAC5DpjM,EAAOj7J,SAASsjW,QAAQpoX,EAAK+/K,EAAOtrL,SAExC3J,KAAK66X,qBAAoB,GACzB5kX,SAASnP,KAAKK,UAAU8G,OAAO,sBAQnCopX,EAAU9tX,UAAU88Q,WAAa,SAAUnxQ,GACvClV,KAAK43X,oBAAqB,EAC1B53X,KAAKo4X,eACLniX,SAASnP,KAAKK,UAAU8G,OAAO,oBAC/BjO,KAAKoE,QAAQ6O,aAAa,eAAgB,SAC1C,GAAahF,OAAOgI,SAAU,GAAQ6vW,WAAa,YAAc,GAAQ5oV,eAAgBl9B,KAAKq5X,cAC9F,GAAaprX,OAAOgI,SAAU,GAAQ6vW,WAAa,WAAa,GAAQ1pW,cAAepc,KAAK46X,aAC5F,GAAa3sX,OAAOgI,SAAU,GAAQ6vW,WAAa,WAAa,GAAQ1pW,cAAepc,KAAKqmR,YAC5F,GAAap4Q,OAAOgI,SAAU,GAAQ6vW,WAAa,YAAc,GAAQ5oV,eAAgBl9B,KAAK26X,SAC1F36X,KAAK84X,iBACL94X,KAAK84X,eAAc,IAK3BzB,EAAU9tX,UAAUwT,kBAAoB,SAAUC,EAASC,KAG3Do6W,EAAU9tX,UAAUqT,cAAgB,WAChC,MAAO,aAEXy6W,EAAU9tX,UAAUuvX,cAAgB,SAAUrhV,GAI1C,OAHIA,IACAy/U,GAAgBC,WAAaD,GAAgBC,WAE1CD,GAAgBC,WAE3BE,EAAU9tX,UAAU8wX,YAAc,WAC9B,IAAIkD,EACAC,EAGA33V,EAFAjhC,EAAM,EACND,EAAO,EAEPkS,SAAc7W,KAAKu9K,SAOvB,GALI13I,EADS,WAAThvB,EACM,GAAO7W,KAAKu9K,UAGZv9K,KAAKu9K,SAEX13I,EAAK,CACL,IAAI43V,EAAc53V,EAAIx/B,wBACtBk3X,EAAgB13V,EAAIid,YAAcjd,EAAIid,YAAc26U,EAAYn2X,MAAQm2X,EAAY94X,KACpF64X,EAAiB33V,EAAIwf,aAAgBrlD,KAAKu9K,WAAaqsL,EAAkB5pW,KAAKi6X,gBAAkBj6X,KAAKi6X,cAAc9yX,UAAUC,SAAS,cAAiBy+B,EAAIj0B,aAAei0B,EAAIwf,aAAeo4U,EAAYz2X,OAASy2X,EAAY74X,IAI9N,IAHA,IAAIsY,EAAO,CAAC,MAAO,OAAQ,SAAU,SAEjC3F,EAASrI,iBAAiB22B,GACrBz7B,EAAI,EAAGA,EAAI8S,EAAKnT,OAAQK,IAAK,CAClC,IAAIvG,EAAMqZ,EAAK9U,SAASgC,EAAEsP,WAAY,KAClCgkX,EAAUnmX,EAAO,SAAW1T,EAAM,SAClC85X,EAAWpmX,EAAO,UAAY1T,GAC9B+5X,EAAW/5X,EAAIkC,cACnB/F,KAAK+uJ,YAAY,GAAK6uO,GAAYv6W,MAAM9T,WAAWmuX,IAAY,EAAInuX,WAAWmuX,GAC9E19X,KAAK2xD,QAAQ,GAAKisU,GAAYv6W,MAAM9T,WAAWouX,IAAa,EAAIpuX,WAAWouX,GAI3E/4X,EADA5E,KAAKu9K,WAAaqsL,EAAkB5pW,KAAKi6X,gBAAkBj6X,KAAKi6X,cAAc9yX,UAAUC,SAAS,cAC3Fq2X,EAAY74X,IAAMqR,SAAS4qK,iBAAiBz7K,UAG5Cq4X,EAAY74X,IAEtBD,EAAO84X,EAAY94X,KACnB3E,KAAKs3X,UAAU3yX,KAAOA,EAAO3E,KAAK+uJ,YAAYpqJ,KAAO3E,KAAK2xD,QAAQhtD,KAClE3E,KAAKs3X,UAAU1yX,IAAMihC,EAAI3gC,UAAYlF,KAAK+uJ,YAAYnqJ,IAAM5E,KAAK2xD,QAAQ/sD,IACzE5E,KAAKs3X,UAAUhwX,MAAQ3C,EAAO44X,GAAiBv9X,KAAK+uJ,YAAYznJ,MAAQtH,KAAK2xD,QAAQrqD,OACrFtH,KAAKs3X,UAAUtwX,OAASpC,EAAM44X,GAAkBx9X,KAAK+uJ,YAAY/nJ,OAAShH,KAAK2xD,QAAQ3qD,UAG/FqwX,EAAU9tX,UAAU4wX,uBAAyB,SAAUjlX,GACnD,IACI2wB,EADAmzV,EAAWh5X,KAAKi5X,eAAe/jX,GAE/B2oX,EAAY79X,KAAKi6X,cAAcl1X,MAAM+4X,eAAiB,GACtDtY,GAA6C,IAAjCtwW,EAAI2B,KAAK3J,QAAQ,YAA2C,WAAtB,GAAQ8zB,KAAKr5B,MAAqBS,SAAS,GAAQ44B,KAAKC,QAAS,IAAM,GAS7H,OARIkqU,EAAqBj2V,EAAIvL,OAAQ3J,KAAKi6X,iBAAiD,IAA/B/kX,EAAI2B,KAAK3J,QAAQ,UAAmBs4W,GAC5FxlX,KAAKi6X,cAAcl1X,MAAM+4X,cAAgB,OACzCj4V,EAAM5vB,SAAS0sB,iBAAiBq2V,EAASp2V,QAASo2V,EAASn2V,SAC3D7iC,KAAKi6X,cAAcl1X,MAAM+4X,cAAgBD,GAGzCh4V,EAAM3wB,EAAIvL,OAEPk8B,GAGXwxV,EAAU9tX,UAAUqwX,kBAAoB,SAAU/zV,EAAKk4V,GACnD,IAAIv+U,EAOJ,OAFIA,EAJCoqT,EAAkB5pW,KAAK64X,qBAAuB74X,KAAK64X,qBAAuBhzV,EAInE+jU,EAAkBm0B,GAAmBl4V,EAATk4V,EAH7B/9X,KAAK64X,mBAKTr5U,GAEX63U,EAAU9tX,UAAUuwX,iBAAmB,SAAU5kX,EAAK8oX,GAGlD,IAEI9iX,EACAC,EAHA8iX,OAA6Bt4X,IAAnBuP,EAAIs6C,WAA2Bt6C,EAAIs6C,WAAat6C,EAAIvL,OAC9DqvX,EAAWh5X,KAAKi5X,eAAe/jX,GAG/BgpX,EAAiBt0B,EAAkBq0B,EAAQn5X,cAY/C,GAVIk5X,GACA9iX,EAAQlb,KAAK88C,MAAQk8U,EAAS99W,MACzB89W,EAAS99W,OAASgjX,EAAiB,EAAID,EAAQn5X,aAAaK,YAAenF,KAAKm5X,kBACrFh+W,EAAQnb,KAAK88C,MAAQk8U,EAAS79W,MACzB69W,EAAS79W,OAAS+iX,EAAiB,EAAID,EAAQn5X,aAAaM,WAAcpF,KAAKo5X,oBAGpFl+W,EAAQlb,KAAK88C,MAAQk8U,EAAS99W,MAAS89W,EAAS99W,MAAQjM,OAAO8J,YAAe/Y,KAAKm5X,kBACnFh+W,EAAQnb,KAAK88C,MAAQk8U,EAAS79W,MAAS69W,EAAS79W,MAAQlM,OAAO+J,YAAehZ,KAAKo5X,mBAEnFnjX,SAAS4qK,mBAAsBm9M,IAAiBh+X,KAAK88C,MAAQ,CAC7D,IAAIjX,EAAM5vB,SAAS4qK,iBACfs9M,EAAmBt4V,EAAIwf,aAAe,GAAKxf,EAAIwf,aAAexf,EAAIj0B,cAAgBi0B,EAAIzgC,UAAY,EAClGg5X,EAAsBv4V,EAAIid,YAAc,GAAKjd,EAAIid,YAAcjd,EAAIh0B,aAAeg0B,EAAI1gC,WAAa,EACvG+V,EAAQkjX,EAAsBljX,EAAQ2qB,EAAI1gC,WAAa+V,EACvDC,EAAQgjX,EAAmBhjX,EAAQ0qB,EAAIzgC,UAAY+V,EAEvD,MAAO,CACHxW,KAAMuW,GAASlb,KAAK4xD,OAAOjtD,KAAO3E,KAAKumR,SAAS5hR,MAChDC,IAAKuW,GAASnb,KAAK4xD,OAAOhtD,IAAM5E,KAAKumR,SAAS3hR,OAGtDyyX,EAAU9tX,UAAU0vX,eAAiB,SAAU/jX,GAC3C,OAAIA,EAAI2B,KAAK3J,QAAQ,UAAY,EACtBgI,EAAI02C,eAAe,GAEvB12C,GAEXmiX,EAAU9tX,UAAUwwX,iBAAmB,SAAU7kX,GAC7C,IAAI9Q,EAaJ,OAZIpE,KAAK88C,MACD98C,KAAK8yF,OACL1uF,EAAUpE,KAAK8yF,OAAO,CAAEE,OAAQ99E,EAAK9Q,QAASpE,KAAK2J,UAGnDvF,EAAUoJ,GAAc,MAAO,CAAEC,UAAW,8BAA+B2F,UAAW,cACtF6C,SAASnP,KAAK6G,YAAYvJ,IAI9BA,EAAUpE,KAAKoE,QAEZA,GAEXizX,EAAU9tX,UAAUsxX,oBAAsB,SAAUzjR,EAAO/jB,EAAMP,GAC7D9yF,KAAKm4X,WAAWn4X,KAAKq4X,OAASjhR,EAAQ,KAAO,CACzCywK,UAAWx0L,EACXP,OAAQA,EACRo1L,eAAgBloR,KAAKoE,UAG7BizX,EAAU9tX,UAAU4xX,mBAAqB,SAAUjmX,GAC/C,IAAIvL,EAAS3J,KAAKm6X,uBAAuBjlX,GACrCmpX,EAAUr+X,KAAKs+X,gBAAgB30X,GACnC,IAAK00X,GAAW10X,IAAWigW,EAAkBjgW,EAAOq+C,YAAa,CAC7D,IAAIiB,EAAWl6C,GAAQpF,EAAOq+C,WAAY,iBAAmBr+C,EAAOtE,cAChE4jD,IACAo1U,EAAUr+X,KAAKs+X,gBAAgBr1U,IAGvC,MAAO,CAAEt/C,OAAQA,EAAQqwB,SAAUqkW,IAEvChH,EAAU9tX,UAAU+0X,gBAAkB,SAAUz4V,GAC5C,IACI4uD,EADA9sF,EAAO,gBAEP42X,EAAU14V,GAAOA,EAAI+iJ,cACzB,GAAI21M,EACA,IAAK,IAAIroX,EAAK,EAAGsoX,EAAYD,EAASroX,EAAKsoX,EAAUz0X,OAAQmM,IAAM,CAC/D,IAAI41V,EAAO0yB,EAAUtoX,GACrB,GAA0B,cAAtB41V,EAAK,GAAKnkW,KAAyB,CACnC8sF,EAAOq3Q,EACP,OAIZ,OAAOr3Q,GAEX4iS,EAAU9tX,UAAU+Q,QAAU,WAC1Bta,KAAKo4X,cAAa,GAClBnsX,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,OAGlC,GAAW,CACPssX,GAAQ,GAAI,KACb+K,EAAU9tX,UAAW,gBAAY,GACpC,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,aAAS,GACjC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,gBAAY,GACpC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,oBAAgB,GACxC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,wBAAoB,GAC5C,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,uBAAmB,GAC3C,GAAW,CACP,MACD8tX,EAAU9tX,UAAW,YAAQ,GAChC,GAAW,CACP,MACD8tX,EAAU9tX,UAAW,iBAAa,GACrC,GAAW,CACP,MACD8tX,EAAU9tX,UAAW,gBAAY,GACpC,GAAW,CACP4iX,GAAS,IACVkL,EAAU9tX,UAAW,gBAAY,GACpC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,cAAU,GAClC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,aAAS,GACjC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,cAAU,GAClC,GAAW,CACP4iX,GAAS,YACVkL,EAAU9tX,UAAW,aAAS,GACjC,GAAW,CACP4iX,GAAS,KACVkL,EAAU9tX,UAAW,kBAAc,GACtC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,YAAQ,GAChC,GAAW,CACP4iX,MACDkL,EAAU9tX,UAAW,yBAAqB,GAC7C,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,sBAAkB,GAC1C,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,yBAAqB,GAC7C,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,sBAAkB,GAC1C,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,wBAAoB,GAC5C,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,qBAAiB,GACzC,GAAW,CACP4iX,GAAS,MACVkL,EAAU9tX,UAAW,wBAAoB,GAC5C,GAAW,CACP4iX,IAAS,IACVkL,EAAU9tX,UAAW,2BAAuB,GAC/C8tX,EAAYE,EAAc,GAAW,CACjC5K,IACD0K,GACIA,EA92BmB,CA+2B5B,IC76BE,GAAwC,WACxC,IAAIxuX,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxC,GAA0C,SAAUK,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAuB5D,GAA2B,SAAUiC,GAErC,SAASwyX,EAAUr6X,EAASmI,GACxB,IAAIC,EAAQP,EAAOQ,KAAKzM,KAAMuM,EAASnI,IAAYpE,KAKnD,OAJAwM,EAAMkyX,WAAY,EAClBlyX,EAAM05Q,SAAW,GACjB15Q,EAAM6wX,gBAAiB,EACvB7wX,EAAMgC,OACChC,EAyFX,OAhGA,GAAUiyX,EAAWxyX,GASrBwyX,EAAUl1X,UAAUiF,KAAO,WACvBxO,KAAK0b,cAET+iX,EAAUl1X,UAAUmS,WAAa,WAC7B,GAAavH,IAAInU,KAAKoE,QAAS,GAAQ0hX,WAAa,WAAa,GAAQ1pW,cAAepc,KAAKs9X,QAASt9X,OAI1Gy+X,EAAUl1X,UAAUwT,kBAAoB,SAAUC,EAASC,KAG3DwhX,EAAUl1X,UAAUqT,cAAgB,WAChC,MAAO,aAEX6hX,EAAUl1X,UAAU+xX,QAAU,SAAUvkX,EAAO3S,GAC3C,IAAKpE,KAAK0+X,UAAW,CACjB,IAAIrrS,EAAOrzF,KAAKkmR,SAASlmR,KAAKq4X,OAC9Br4X,KAAKuQ,QAAQ,OAAQ,CAAEwG,MAAOA,EAAOpN,OAAQvF,EAAS8hR,SAAU7yL,IAChErzF,KAAK0+X,WAAY,IAGzBD,EAAUl1X,UAAU2zX,OAAS,SAAUnmX,EAAO3S,GACtCpE,KAAK0+X,YACL1+X,KAAKuQ,QAAQ,MAAO,CAAE2E,IAAK6B,EAAOpN,OAAQvF,IAC1CpE,KAAK0+X,WAAY,IAGzBD,EAAUl1X,UAAU+zX,QAAU,SAAUpoX,EAAK9Q,GACzC,GAAKpE,KAAKq9X,eAAV,CAIIr9X,KAAKq9X,gBAAiB,EAE1B,IAGIsB,EAHAtrV,GAAS,EACTggD,EAAOrzF,KAAKkmR,SAASlmR,KAAKq4X,OAC1BuG,IAASvrS,IAAQA,EAAKP,QAAUxgC,GAAU+gC,EAAKP,SAE/C8rS,IACAD,EAAO3+X,KAAK6+X,WAAW3pX,EAAKm+E,EAAKP,OAAQ1uF,GACrCpE,KAAKqzC,SACLA,EAAS,GAAQggD,EAAKP,OAAQ9yF,KAAKqzC,UAGvCurV,GAAU5+X,KAAKy0F,MAAQkqS,EAAKG,SAAWzrV,GACvCrzC,KAAKuQ,QAAQ,OAAQ,CAAEwG,MAAO7B,EAAKvL,OAAQg1X,EAAKh1X,OAAQ+qF,eAAgBrB,EAAKP,OAAQozL,SAAU7yL,IAEnGrzF,KAAK0+X,WAAY,IAErBD,EAAUl1X,UAAUs1X,WAAa,SAAU3pX,EAAK49E,EAAQ1uF,GACpD,IAAIu6X,EAAO,CAAEG,SAAS,EAAMn1X,OAAQvF,GAAW8Q,EAAIvL,QAC/C8xR,EAAuB,aAAbvmR,EAAI2B,KAClB,GAAI4kR,GAAWkjG,EAAKh1X,SAAWmpF,EAAQ,CACnCA,EAAO/tF,MAAMyK,QAAU,OACvB,IAAIuvX,EAAQtjG,EAAWvmR,EAAI02C,eAAe,GAAM12C,EAC5C2wB,EAAM5vB,SAAS0sB,iBAAiBo8V,EAAMn8V,QAASm8V,EAAMl8V,SACzD87V,EAAKG,SAAU,EACfH,EAAKG,QAAU3zB,EAAqBtlU,EAAK7lC,KAAKoE,SAC1Cu6X,EAAKG,UACLH,EAAKh1X,OAASk8B,GAElBitD,EAAO/tF,MAAMyK,QAAU,GAE3B,OAAOmvX,GAEXF,EAAUl1X,UAAU+Q,QAAU,WAC1B,GAAarM,OAAOjO,KAAKoE,QAAS,GAAQ0hX,WAAa,WAAa,GAAQ1pW,cAAepc,KAAKs9X,SAChGrxX,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,OAElC,GAAW,CACPmsX,MACDsS,EAAUl1X,UAAW,cAAU,GAClC,GAAW,CACP4iX,GAAS,YACVsS,EAAUl1X,UAAW,aAAS,GACjC,GAAW,CACP,MACDk1X,EAAUl1X,UAAW,YAAQ,GAChC,GAAW,CACP,MACDk1X,EAAUl1X,UAAW,YAAQ,GAChC,GAAW,CACP,MACDk1X,EAAUl1X,UAAW,WAAO,GAC/Bk1X,EAAY,GAAW,CACnB9R,IACD8R,GACIA,EAjGmB,CAkG5B,IC1IE,GAAwC,WACxC,IAAI51X,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxC,GAA0C,SAAUK,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAI5DsR,GAAU,CACV,UAAa,EACb,IAAO,EACP,MAAS,GACT,MAAS,GACT,QAAW,GACX,IAAO,GACP,MAAS,GACT,SAAY,GACZ,MAAS,GACT,OAAU,GACV,OAAU,GACV,SAAY,GACZ,IAAO,GACP,KAAQ,GACR,UAAa,GACb,QAAW,GACX,WAAc,GACd,UAAa,GACb,OAAU,GACV,OAAU,GACV,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,UAAa,IACb,KAAQ,IACR,MAAS,IACT,MAAS,IACT,IAAO,IACP,aAAgB,IAChB,YAAe,IACf,YAAe,IACf,UAAa,IACb,aAAgB,IAChB,YAAe,KAkBf,GAAgC,SAAUrP,GAQ1C,SAAS+rM,EAAe5zM,EAASmI,GAC7B,IAAIC,EAAQP,EAAOQ,KAAKzM,KAAMuM,EAASnI,IAAYpE,KA8BnD,OAvBAwM,EAAMqwB,gBAAkB,SAAUrnB,GAM9B,IALA,IAAIyiM,EAAWziM,EAAEk6G,OACbwoF,EAAY1iM,EAAE4rB,QACd+2K,EAAa3iM,EAAEmlK,SACf09B,EAAa7iM,EAAE0rB,MACfhkB,EAAOnU,OAAOmU,KAAK1Q,EAAM0Z,YACpBhQ,EAAK,EAAGo5B,EAASpyB,EAAMhH,EAAKo5B,EAAOvlC,OAAQmM,IAGhD,IAFA,IAAIrS,EAAMyrC,EAAOp5B,GACboiM,EAAmB9rM,EAAM0Z,WAAW,GAAKriB,GAAKxD,MAAM,KAC/C2M,EAAK,EAAGurM,EAAqBD,EAAkBtrM,EAAKurM,EAAmBxuM,OAAQiD,IAAM,CAC1F,IAAIwrM,EAAUD,EAAmBvrM,GAC7ByrM,EAAUC,EAAiBC,iBAAiBH,EAAQ5jM,QACpDqjM,IAAaQ,EAAQ/oF,QAAUwoF,IAAcO,EAAQr3K,SACrD+2K,IAAeM,EAAQ99B,UAAY09B,IAAeI,EAAQn9L,UAC1D9F,EAAE6S,OAASxkB,EACP2I,EAAM6Z,WACN7Z,EAAM6Z,UAAU7Q,MAMpChJ,EAAMgC,OACChC,EAoFX,IAAIksM,EAcJ,OAxIA,GAAUV,EAAgB/rM,GAwC1BysM,EAAmBV,EAMnBA,EAAezuM,UAAU+Q,QAAU,WAC/Bta,KAAKuc,eACLtQ,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,OAWlCg4M,EAAezuM,UAAUwT,kBAAoB,SAAUC,EAASC,KAGhE+6L,EAAezuM,UAAUiF,KAAO,WAC5BxO,KAAK0b,cAQTs8L,EAAezuM,UAAUqT,cAAgB,WACrC,MAAO,YAQXo7L,EAAezuM,UAAUmS,WAAa,WAClC1b,KAAKoE,QAAQ48C,iBAAiBhhD,KAAKomB,UAAWpmB,KAAK68B,kBAQvDm7K,EAAezuM,UAAUgT,aAAe,WACpCvc,KAAKoE,QAAQw2E,oBAAoB56E,KAAKomB,UAAWpmB,KAAK68B,kBAQ1Dm7K,EAAeW,iBAAmB,SAAUzlL,GACxC,GAAIA,KAAUlzB,KAAK44M,YACf,OAAO54M,KAAK44M,YAAY,GAAK1lL,GAEjC,IAAIhW,EAAOgW,EAAOntB,cAAc1F,MAAM,KAClCw4M,EAAU,CACVnpF,QAAkC,IAAzBxyG,EAAKhQ,QAAQ,OACtBk0B,SAAoC,IAA1BlkB,EAAKhQ,QAAQ,QACvBytK,UAAsC,IAA3Bz9J,EAAKhQ,QAAQ,SACxBoO,QAAS,MASb,OAPI4B,EAAKA,EAAKnT,OAAS,GAAGA,OAAS,GAAOyxB,OAAOte,EAAKA,EAAKnT,OAAS,IAChE8uM,EAAQv9L,QAAUkgB,OAAOte,EAAKA,EAAKnT,OAAS,IAG5C8uM,EAAQv9L,QAAUo9L,EAAiBI,WAAW57L,EAAKA,EAAKnT,OAAS,IAErE2uM,EAAiBE,YAAY,GAAK1lL,GAAU2lL,EACrCA,GAGXb,EAAec,WAAa,SAAU/kB,GAClC,OAAOz4K,GAAQ,GAAKy4K,IAAWA,EAAOp6C,cAAct7G,WAAW,IAGnE25K,EAAeY,YAAc,GAC7B,GAAW,CACPuzK,GAAS,KACVn0K,EAAezuM,UAAW,kBAAc,GAC3C,GAAW,CACP4iX,GAAS,UACVn0K,EAAezuM,UAAW,iBAAa,GAC1C,GAAW,CACP,MACDyuM,EAAezuM,UAAW,iBAAa,GAC1CyuM,EAAiBU,EAAmB,GAAW,CAC3Ci0K,IACD30K,GACIA,EAzIwB,CA0IjC,ICnME,GAAsB,WAQtB,SAASgnL,EAAKC,EAAaC,EAAe98W,GACtCpiB,KAAKi/X,YAAcA,EACnBj/X,KAAKk/X,cAAgBA,EACrBl/X,KAAK6xB,UAAUzP,GAAU84U,IAkD7B,OA1CA8jC,EAAKz1X,UAAUsoB,UAAY,SAAUzP,GACjC,IAAI+8W,EAAYn/X,KAAKo/X,sBAAsBJ,EAAK58W,OAAQA,GACxDpiB,KAAKq/X,cAAgBF,GAAan/X,KAAKk/X,eAQ3CF,EAAKz/L,KAAO,SAAUttC,GAClBjyJ,KAAKoiB,OAASkoV,EAAOtqW,KAAKoiB,OAAQ6vI,EAAc,IAAI,IAQxD+sO,EAAKz1X,UAAU+Y,YAAc,SAAUnF,GAEnC,OAAKysV,EAAkB5pW,KAAKq/X,cAAc,GAAKliX,IAIpCnd,KAAKk/X,cAAc,GAAK/hX,IAAS,GAHjCnd,KAAKq/X,cAAc,GAAKliX,IAavC6hX,EAAKz1X,UAAU61X,sBAAwB,SAAUnlB,EAAW73V,GACxD,OAAI,EAAY,GAAKA,GACV,EAAY,GAAKA,GAAQpiB,KAAKi/X,aAElC,MAEXD,EAAK58W,OAAS,GACP48W,EA7Dc,GCzBrB,GAAwC,WACxC,IAAIn2X,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxC,GAA0C,SAAUK,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAW5D,GAA+B,SAAUiC,GAEzC,SAASqzX,IACL,OAAkB,OAAXrzX,GAAmBA,EAAOC,MAAMlM,KAAM8J,YAAc9J,KAK/D,OAPA,GAAUs/X,EAAerzX,GAIzB,GAAW,CACPkgX,GAAS,KACVmT,EAAc/1X,UAAW,8BAA0B,GAC/C+1X,EARuB,CAShC,IAEEC,GAAa,YAsBb,GAAuB,SAAUtzX,GAGjC,SAASuzX,EAAMp7X,EAASmI,GACpB,IAAIC,EAAQP,EAAOQ,KAAKzM,KAAMuM,EAASnI,IAAYpE,KA6InD,OA5IAwM,EAAMizX,aAAc,EACpBjzX,EAAM6gR,SAAW,EAMjB7gR,EAAMkzX,WAAa,SAAUxqX,GACzB,IAA0B,IAAtB1I,EAAMizX,YAAsB,CAC5B,IAAIE,EAAQnzX,EAAMozX,oBAAoB1qX,QACXvP,IAAvBuP,EAAI02C,iBACJp/C,EAAMizX,aAAc,GAExBjzX,EAAMqzX,cAAe,EACrBrzX,EAAMszX,eAAiB,GACvBtzX,EAAMuzX,WAAavzX,EAAMwzX,eAAiB,CAAEp9V,QAAS+8V,EAAM/8V,QAASC,QAAS88V,EAAM98V,SACnFr2B,EAAMyzX,eAAiBN,EACvBnzX,EAAM0zX,cAAgB1zX,EAAM2zX,eAAgB,EAC5C3zX,EAAM4zX,YAAc5/W,KAAK9X,MACzB8D,EAAM6zX,eAAiB5qX,YAAW,WAAcjJ,EAAM8zX,aAAaprX,KAAS1I,EAAM0P,kBAClF,GAAa/H,IAAI3H,EAAMpI,QAAS,GAAQ84B,eAAgB1wB,EAAM+zX,UAAW/zX,GACzE,GAAa2H,IAAI3H,EAAMpI,QAAS,GAAQgY,cAAe5P,EAAMg0X,SAAUh0X,GACvE,GAAa2H,IAAI3H,EAAMpI,QAAS,GAAQoiX,iBAAkBh6W,EAAMu0B,YAAav0B,KAQrFA,EAAM+zX,UAAY,SAAUrrX,GACxB,IAAIyqX,EAAQnzX,EAAMozX,oBAAoB1qX,GACtC1I,EAAMi0X,WAAad,EACnBnzX,EAAMqzX,eAAiBF,EAAM/8V,UAAYp2B,EAAMuzX,WAAWn9V,SAAW+8V,EAAM98V,UAAYr2B,EAAMuzX,WAAWl9V,SACxG,IAAI69V,EAAc,GAClB,GAAIl0X,EAAMqzX,aAAc,CACpB1qX,aAAa3I,EAAM6zX,gBACnB7zX,EAAMm0X,iBAAiBzrX,GACvB,IAAI0rX,EAAY,CACZC,YAAar0X,EAAMyzX,eACnB3qX,cAAeJ,EAAK4rX,OAAQt0X,EAAMuzX,WAAWn9V,QAC7Cm+V,OAAQv0X,EAAMuzX,WAAWl9V,QAASgf,UAAWr1C,EAAMq1C,UACnDiD,UAAWt4C,EAAMs4C,UAAWzC,gBAAiB71C,EAAM61C,gBACnDT,SAAUp1C,EAAMw0X,YAAYrB,IAEhCe,EAAcp2B,EAAOo2B,EAAa,GAAIE,GACtCp0X,EAAM+D,QAAQ,SAAUmwX,GACxBl0X,EAAMwzX,eAAiB,CAAEp9V,QAAS+8V,EAAM/8V,QAASC,QAAS88V,EAAM98V,WAQxEr2B,EAAMu0B,YAAc,SAAU7rB,GAC1BC,aAAa3I,EAAM6zX,gBACnBlrX,aAAa3I,EAAMy0X,YACnBz0X,EAAM6gR,SAAW,EACjB7gR,EAAM00X,QAAQhsX,GACd,GAAajH,OAAOzB,EAAMpI,QAAS,GAAQoiX,iBAAkBh6W,EAAMu0B,cAOvEv0B,EAAMg0X,SAAW,SAAUtrX,GACvB1I,EAAM00X,QAAQhsX,GACT1I,EAAMqzX,cACkB,oBAAdrzX,EAAM4gR,MACb5gR,EAAM+D,QAAQ,MAAO,CAAE+E,cAAeJ,EAAKm4Q,WAAY7gR,EAAM6gR,WAC7D7gR,EAAMy0X,WAAaxrX,YAAW,WAC1BjJ,EAAM6gR,SAAW,IAClB7gR,EAAM20X,eAGjB30X,EAAM40X,aAOV50X,EAAM00X,QAAU,SAAUhsX,GACtBC,aAAa3I,EAAM6zX,gBACnBlrX,aAAa3I,EAAMy0X,YACnB,IAAItB,EAAQnzX,EAAMozX,oBAAoB1qX,GAClCuiX,EAAQkI,EAAM/8V,QAAUp2B,EAAMuzX,WAAWn9V,QACzCo1V,EAAQ2H,EAAM98V,QAAUr2B,EAAMuzX,WAAWl9V,QAC7C40V,EAAQhmX,KAAK6sD,MAAMm5T,EAAQ,GAAK,EAAIA,EAAQA,GAC5CO,EAAQvmX,KAAK6sD,MAAM05T,EAAQ,GAAK,EAAIA,EAAQP,GAC5CjrX,EAAMqzX,aAAepI,EAAQ,GAAKO,EAAQ,EAC1C,IAAIqJ,EAAY,UAAY3hY,KAAK,GAAQs/B,WACrCqiW,GAA+B,IAAlB1B,EAAM/8V,SAAmC,IAAlB+8V,EAAM98V,SAA8B,YAAb3tB,EAAI2B,OAC/DrK,EAAMqzX,cAAe,GAEzBrzX,EAAM80X,SAAW3B,EACjBnzX,EAAM+0X,WAAWrsX,GACjB,IAAIssX,EAAY,CACZlsX,cAAeJ,EACf2rX,YAAar0X,EAAMyzX,eACnBa,OAAQt0X,EAAMuzX,WAAWn9V,QACzBm+V,OAAQv0X,EAAMuzX,WAAWl9V,QACzBgf,UAAWr1C,EAAMq1C,UAAWiD,UAAWt4C,EAAMs4C,UAAW34B,eAAgB3f,EAAMszX,eAC9El+U,SAAUp1C,EAAMw0X,YAAYrB,IAEhC,GAAInzX,EAAMqzX,aAAc,CACpB,IAAI4B,OAAa,EACbC,EAAYl1X,EAAMmzN,cAAcC,uBAEpC6hK,EAAan3B,EAAOm3B,EAAYj1X,EAAMm1X,YAAaH,GACnD,IAAII,GAAa,EACb/7V,EAAMr5B,EAAMpI,QACZy9X,EAAar1X,EAAMs1X,aAAaj8V,GAChCk8V,EAAQxC,GAAW7/X,KAAK8M,EAAMszX,iBAC7B4B,EAAYl1X,EAAMq1C,YAAckgV,GAAWL,EAAYl1X,EAAMs4C,WAAai9U,KAKvEH,GAJCC,GAIYr1X,EAAMw1X,WAAWn8V,EAAKk8V,IAGvCH,GACAp1X,EAAM+D,QAAQ,QAASkxX,GAG/Bj1X,EAAM40X,aAEV50X,EAAM40X,UAAY,WACd50X,EAAMy1X,UAAYxsX,YAAW,WACzBjJ,EAAMizX,aAAc,IACC,oBAAdjzX,EAAM4gR,IAAqB,EAAI,IAC1C5gR,EAAM01X,aAAc,IAAI1hX,MAAOK,UAC/B,GAAa5S,OAAOzB,EAAMpI,QAAS,GAAQ84B,eAAgB1wB,EAAM+zX,WACjE,GAAatyX,OAAOzB,EAAMpI,QAAS,GAAQgY,cAAe5P,EAAMg0X,UAChE,GAAavyX,OAAOzB,EAAMpI,QAAS,GAAQoiX,iBAAkBh6W,EAAMu0B,cAEvEv0B,EAAMgC,OACChC,EAoJX,OApSA,GAAUgzX,EAAOvzX,GA2JjBuzX,EAAMj2X,UAAUwT,kBAAoB,SAAUC,EAASC,KAGvDuiX,EAAMj2X,UAAUiF,KAAO,WACnBxO,KAAK0b,aACD,GAAQo3C,MACR9yD,KAAKoE,QAAQ+C,UAAUgN,IAAI,kBAQnCqrX,EAAMj2X,UAAU+Q,QAAU,WACtBta,KAAKuc,eACLtQ,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,OAGlCw/X,EAAMj2X,UAAUmS,WAAa,WACzB,GAAavH,IAAInU,KAAKoE,QAAS,GAAQgQ,gBAAiBpU,KAAK0/X,WAAY1/X,OAE7Ew/X,EAAMj2X,UAAUgT,aAAe,WAC3B,GAAatO,OAAOjO,KAAKoE,QAAS,GAAQgQ,gBAAiBpU,KAAK0/X,aAQpEF,EAAMj2X,UAAUqT,cAAgB,WAC5B,MAAO,SAQX4iX,EAAMj2X,UAAUu4X,aAAe,SAAU19X,GACrC,IAAI0tN,EAAW5iN,iBAAiB9K,GAC5BW,EAAQ+sN,EAAS9tK,SAAW8tK,EAAS1yK,UAAY0yK,EAAS4mI,UAC9D,QAAI,gBAAkBh5V,KAAKqF,IAU/By6X,EAAMj2X,UAAU+2X,aAAe,SAAUprX,GAGrC,IAAIitX,EAFJniY,KAAKqtR,SAAW,EAChBrtR,KAAKy/X,aAAc,EAEnB,GAAaxxX,OAAOjO,KAAKoE,QAAS,GAAQ84B,eAAgBl9B,KAAKugY,WAC/D,GAAatyX,OAAOjO,KAAKoE,QAAS,GAAQgY,cAAepc,KAAKwgY,UAE9D2B,EAAW,CAAE7sX,cAAeJ,GAC5BlV,KAAKuQ,QAAQ,UAAW4xX,GACxB,GAAal0X,OAAOjO,KAAKoE,QAAS,GAAQoiX,iBAAkBxmX,KAAK+gC,cAErEy+V,EAAMj2X,UAAUg4X,WAAa,SAAUrsX,GACnC,IAAIyqX,EAAQ3/X,KAAK4/X,oBAAoB1qX,GACrClV,KAAK2hY,YAAc,CAAErsX,cAAeJ,GACpClV,KAAK6hD,UAAYpwC,KAAKyuI,IAAKzuI,KAAKyuI,IAAIy/O,EAAM/8V,SAAWnxB,KAAKyuI,IAAIlgJ,KAAK+/X,WAAWn9V,UAC9E5iC,KAAK8kD,UAAYrzC,KAAKyuI,IAAKzuI,KAAKyuI,IAAIy/O,EAAM98V,SAAWpxB,KAAKyuI,IAAIlgJ,KAAK+/X,WAAWl9V,UAC1E7iC,KAAK6hD,UAAY7hD,KAAK8kD,UACtB9kD,KAAK8/X,eAAkBH,EAAM/8V,QAAU5iC,KAAK+/X,WAAWn9V,QAAW,QAAU,OAG5E5iC,KAAK8/X,eAAkBH,EAAM98V,QAAU7iC,KAAK+/X,WAAWl9V,QAAW,KAAO,QAGjF28V,EAAMj2X,UAAUo3X,iBAAmB,SAAUzrX,GACzC,IAAIyqX,EAAQ3/X,KAAK4/X,oBAAoB1qX,GACrClV,KAAK2hY,YAAc,CAAErsX,cAAeJ,GACpClV,KAAK6hD,UAAYpwC,KAAKyuI,IAAKzuI,KAAKyuI,IAAIy/O,EAAM/8V,SAAWnxB,KAAKyuI,IAAIlgJ,KAAKggY,eAAep9V,UAClF5iC,KAAK8kD,UAAYrzC,KAAKyuI,IAAKzuI,KAAKyuI,IAAIy/O,EAAM98V,SAAWpxB,KAAKyuI,IAAIlgJ,KAAKggY,eAAen9V,WAC7E7iC,KAAK6hD,UAAY7hD,KAAK8kD,YAAoC,IAAvB9kD,KAAKkgY,iBAAkD,IAAvBlgY,KAAKmgY,eACzEngY,KAAKqiD,gBAAmBs9U,EAAM/8V,QAAU5iC,KAAKggY,eAAep9V,QAAW,QAAU,OACjF5iC,KAAKkgY,eAAgB,IAGrBlgY,KAAKqiD,gBAAmBs9U,EAAM98V,QAAU7iC,KAAKggY,eAAen9V,QAAW,KAAO,OAC9E7iC,KAAKmgY,eAAgB,IAG7BX,EAAMj2X,UAAUy3X,YAAc,SAAUoB,GACpC,IAAIC,EAAOD,EAAIx/V,QACX0/V,EAAOF,EAAIv/V,QACX0/V,EAAO/hX,KAAK9X,MACZ85X,EAAQH,EAAOriY,KAAK+/X,WAAWn9V,QAC/B6/V,EAAQH,EAAOtiY,KAAK+/X,WAAWn9V,QAC/B8vH,EAAW6vO,EAAOviY,KAAKogY,YAC3B,OAAO3uX,KAAK29W,KAAKoT,EAAQA,EAAQC,EAAQA,GAAS/vO,GAGtD8sO,EAAMj2X,UAAUy4X,WAAa,SAAUn8V,EAAKwuD,GACxC,IAAIn3E,EAAO,CAAC,SAAU,UAClBuxB,EAAO4lD,EAAO,CAAC,SAAU,OAAS,CAAC,QAAS,QAChD,OAAKxuD,EAAI3oB,EAAK,GAAKuxB,EAAK,KAAO5I,EAAI3oB,EAAK,GAAKuxB,EAAK,MAGf,IAA3B5I,EAAI3oB,EAAK,GAAKuxB,EAAK,KACtB5I,EAAI3oB,EAAK,GAAKuxB,EAAK,IAAM5I,EAAI3oB,EAAK,GAAKuxB,EAAK,KAAO5I,EAAI3oB,EAAK,GAAKuxB,EAAK,MAE/E+wV,EAAMj2X,UAAUq2X,oBAAsB,SAAU1qX,GAC5C,IAAIyqX,EAAQzqX,EAAI02C,gBAAgD,IAA9B12C,EAAI02C,eAAe7hD,OAAemL,EAAI02C,eAAe,GAAK12C,EAC5F,OAAOyqX,GAEX,GAAW,CACP,MACDH,EAAMj2X,UAAW,WAAO,GAC3B,GAAW,CACP,MACDi2X,EAAMj2X,UAAW,eAAW,GAC/B,GAAW,CACP,MACDi2X,EAAMj2X,UAAW,aAAS,GAC7B,GAAW,CACP,MACDi2X,EAAMj2X,UAAW,cAAU,GAC9B,GAAW,CACP4iX,GAAS,MACVqT,EAAMj2X,UAAW,oBAAgB,GACpC,GAAW,CACP4iX,GAAS,MACVqT,EAAMj2X,UAAW,wBAAoB,GACxC,GAAW,CACP+iX,GAAQ,GAAI,KACbkT,EAAMj2X,UAAW,qBAAiB,GACrCi2X,EAAQ,GAAW,CACf7S,IACD6S,GACIA,EArSe,CAsSxB,IChWEkD,GAAQ,IAAI7rW,OAAO,kBAAmB,KACtC8rW,GAAS,IAAI9rW,OAAO,QACpB+rW,GAAU,IAAI/rW,OAAO,WACrBgsW,GAAc,IAAIhsW,OAAO,gBACzBisW,GAAY,IAAIjsW,OAAO,QACvBksW,GAAW,IAAIlsW,OAAO,YACtBmsW,GAAY,IAAInsW,OAAO,cACvBosW,GAAgB,IAAIpsW,OAAO,aAAc,IACzCqsW,GAAa,IAAIrsW,OAAO,WAAY,KACpCssW,GAAO,IAAItsW,OAAO,iBAAkB,KACpCusW,GAAiB,IAAIvsW,OAAO,UAAW,KACvCwsW,GAAS,IAAIxsW,OAAO,qBAAsB,KAC1C6hB,GAAM,IAAI7hB,OAAO,eAAgB,KAEjCysW,GAAU,UACVC,GAAe,OACfC,GAAe,SACfC,GAAW,IAAI5sW,OAAO,oBAAqB,KAC3C6sW,GAAa,cAuCV,SAASC,GAAQx7U,EAAU2qC,EAAQ8wS,GACtC,GAAwB,oBAAbz7U,EACP,OAAOA,EAGP,IAAI07U,EAAU,OACVC,EAAgBC,GAAQ57U,EAAU07U,EAAS/wS,EAAQ8wS,GAEnDI,EAAW,s8CACXC,EAAS,YAAeH,EAAgB,KAAQE,EAAW,eAE3Dl5V,EAAK,IAAIyP,SAASspV,EAASI,GAC/B,OAAOn5V,EAAGt8B,KAAKskF,GAWvB,SAASixS,GAAQ3oV,EAAKq3G,EAAW3/D,EAAQ8wS,GACrC,IAAIM,EAAW,EAIXC,EAAY,GACZC,EAAUhpV,EAAIjzC,MAAM,yBACpBk8X,EAAc,GAOlB,GANID,GACAA,EAAQ3wW,SAAQ,SAAUxtB,GACtBo+X,EAAcp+X,EAAMwc,QAAQ,SAAU,KACtC24B,EAAMA,EAAI34B,QAAQxc,EAAOo+X,MAG7B3rV,GAAIh5C,KAAK07C,GAAM,CAGf,IAFA,IAAIkpV,GAAe,EACfC,EAAe,GACVn6X,EAAI,EAAGA,EAAIgxC,EAAIrxC,OAAQK,IACR,MAAhBgxC,EAAIhxC,EAAI,KAA8B,MAAfgxC,EAAIhxC,EAAI,GAC/Bk6X,GAAe,EAEM,MAAhBlpV,EAAIhxC,EAAI,MACbk6X,GAAe,GAEnBC,GAAiC,MAAhBnpV,EAAIhxC,EAAI,KAAgBk6X,EAAwBlpV,EAAIhxC,EAAI,IAAhB,MAE7DgxC,EAAMmpV,OAGNnpV,EAAMA,EAAI34B,QAAQ,QAAS,OAE/B,OAAO24B,EAAI34B,QAAQigX,GAAO,IAAIjgX,QAAQ2gX,GAAgB,QAAU3gX,QAAQi2B,IAExE,SAAUvwC,EAAOqkD,EAAK9kD,EAAQ88X,GAC1B,IAAIC,EAAe,WACf9nO,EAAUnwG,EAAIrkD,MAAM86X,IAExB,GAAItmO,EAAS,CACT,IAAI+nO,EAAQ/nO,EAAQ,GACpB,GAAIkmO,GAAYnjY,KAAK8sD,GAEjBA,EAAM,OAASA,EAAI/pC,QAAQk6I,EAAQ,GAAI+nO,EAAMjiX,QAAQ0gX,IAAM,SAAU/nV,GAEjE,OADAA,EAAMA,EAAIxmC,OACH+vX,GAAavpV,GAAOunV,GAAOjjY,KAAK07C,KAAsC,IAA5B+oV,EAAUj3X,QAAQkuC,GAAcq3G,EAAW0xO,EAAWP,OACrG,0BAEL,GAAIhB,GAAQljY,KAAK8sD,GAElBA,EAAM,MAAQA,EAAI/pC,QAAQk6I,EAAQ,GAAI+nO,EAAMjiX,QAAQ4gX,IAAQ,SAAUuB,GAClE,OAAOC,GAAwBD,EAAMnyO,EAAW0xO,EAAWP,OACzD,0BAEL,GAAIb,GAASrjY,KAAK8sD,GAAM,CAEzB,IAAIs4U,EAAUnoO,EAAQ,GAAGt8J,MAAM,QAG/BmsD,EAAM,MAAQA,EAAI/pC,QAAQk6I,EAAQ,IAAI,SAAUooO,GAK5C,OAJAZ,EAAUzvX,KAAKowX,EAAQ,IACvBX,EAAUzvX,KAAKowX,EAAQ,GAAK,SAC5BZ,GAAsB,EAEf,QAAUA,EAAW,QAAUA,EAAW,MAAQS,GAAaG,EAAQ,IAAI,EAAMryO,EAAW0xO,EAAWP,GAAgB,aAAeM,EAAW,QACvJ,QAAUY,EAAQ,GAAK,KAAOH,GAAaG,EAAQ,IAAI,EAAMryO,EAAW0xO,EAAWP,GAClF,KAAOM,EAAW,aAAeY,EAAQ,GAAK,UAAYZ,EAAW,yBAE1E,CAED,IAAIc,EAAQx4U,EAAInsD,MAAM,KAElB4kY,EAAcnyS,GAAUA,EAAO1pF,eAAe47X,EAAM,IAAM,QAAU,SACxEC,EAAc,KAAKvlY,KAAKslY,EAAM,IAAM,GAAKC,EACzC,IAAIC,EAAUvoO,EAAQ,GAAGt8J,MAAM,KACL,IAAtBs8J,EAAQ,GAAG5yJ,QAAiB,OAASrK,KAAKwlY,EAAQ,KAAQ,UAAYxlY,KAAKwlY,EAAQ,MACnFvoO,EAAQ,GAAqB,WAAfsoO,EAA0BxyO,EAAY,IAAMkK,EAAQ,GAAKA,EAAQ,IAEnF,IAAIwoO,EAAY,WACZC,EAAS,SACb,GAAI1B,GAAWhkY,KAAK8sD,IAAQ44U,EAAO1lY,KAAK8sD,IAAQ24U,EAAUzlY,KAAK8sD,GAAM,CACjE,IAAI64U,EAAe,gBACfA,EAAa3lY,KAAK8sD,KAElBA,EAAM,OAAwB,WAAfy4U,EAA0B,GAAKA,GAAcz4U,EAAI/pC,QAAQk6I,EAAQ,GAAI+nO,EAAMjiX,QAAQghX,IAAU,SAAUmB,GAClH,OAAOC,GAAwBD,EAAMnyO,EAAW0xO,EAAWP,OACzD,YAIVp3U,EAAM,QAAyB,WAAfy4U,EAA0B,GAAKA,GAC3Cz4U,EAAI/pC,QAAQiiX,EAAOC,GAAahoO,EAAQ,GAAGl6I,QAAQ,iBAAkB,IAAMgwI,EAAY,KAAKhwI,QAAQ,qBAAsB,WAA4B,WAAfwiX,EAAyCxyO,EAAW0xO,EAAWP,IACtM,WAIPd,GAAUpjY,KAAK8sD,GAEpBA,EAAM,MAAQA,EAAI/pC,QAAQqgX,GAAW,6BAG9Bt2U,EAAIrkD,MAAM66X,IAEjBx2U,EAAMA,EAAI/pC,QAAQugX,GAAW,4BAExByB,EAAa/kY,KAAK8sD,IAEnBA,EAAIrkD,MAAMo7X,MACV/2U,EAAM84U,GAAa94U,IAEvBA,EAAM,KAAO+4U,GAAwB/4U,GAAkC,IAA5B23U,EAAUj3X,QAAQs/C,GAAcimG,EAAW0xO,GAAa,QAI/F33U,EAAIrkD,MAAMo7X,KACV/2U,EAAM84U,GAAa94U,GACnBA,EAAM,KAAO+4U,GAAwB/4U,GAAkC,IAA5B23U,EAAUj3X,QAAQs/C,GAAcimG,EAAW0xO,GAAa,QAInG33U,EAAc,KAARA,EAAa,KAAOm4U,GAAan4U,EAAI/pC,QAAQ,MAAO,IAAMgwI,EAAY,MAAmC,IAA5B0xO,EAAUj3X,QAAQs/C,GAAcimG,EAAW0xO,EAAWP,GAAgB,KAAO,MAGxK,OAAOp3U,KAYf,SAASm4U,GAAavpV,EAAKoqV,EAAO/yO,EAAWskO,EAAY6M,GACrD,OAAS4B,GAAWtC,GAAWxjY,KAAK07C,KAAoD,IAA3C27U,EAAW7pX,QAAQkuC,EAAI/6C,MAAM,KAAK,KAAeujY,GAAwB,SAARxoV,GAA0B,UAARA,EAA2CA,EAAxBq3G,EAAY,IAAMr3G,EAUzK,SAASqqV,GAAgBrqV,EAAKoqV,EAAO/yO,EAAWskO,GAC5C,IAAI2O,EAAY,UAChB,OAASF,GAAWtC,GAAWxjY,KAAK07C,KACW,IAA3C27U,EAAW7pX,QAAQkuC,EAAI/6C,MAAM,KAAK,KAAgBqlY,EAAUhmY,KAAK07C,GAAiCA,EAAxBq3G,EAAY,IAAMr3G,EAcpG,SAASmqV,GAAwBnqV,EAAKoqV,EAAO/yO,EAAWskO,GACpD,OAASyO,IAAWtC,GAAWxjY,KAAK07C,KAAoD,IAA3C27U,EAAW7pX,QAAQkuC,EAAI/6C,MAAM,KAAK,IAAcoyJ,EAAY,KAAOr3G,EAAMA,EAG1H,SAASkqV,GAAanwM,GAClB,IAAIwwM,EAAS,OAQb,OALIxwM,EAFAA,EAAQhtL,MAAMq7X,IAEJruM,EAGAA,EAAQ1yK,QAAQ8gX,GAAcoC,GAErCxwM,EAUX,SAAS0vM,GAAwBzpV,EAAKwqV,EAAc1oX,EAAM0mX,GACtDxoV,EAAMA,EAAIxmC,OACV,IAAIixX,EAAa,cACjB,GAAKA,EAAWnmY,KAAK07C,GAcjB,OAAOA,EAbP,IAAI0qV,EAAS,QACTX,EAAY,WAIhB,OAHIA,EAAUzlY,KAAK07C,KACfA,EAAMmqV,GAAwBnqV,GAA6B,IAAvBl+B,EAAKhQ,QAAQkuC,GAAcwqV,EAAc1oX,GAAQ,MAErFomX,GAAQ5jY,KAAK07C,GACNqqV,GAAgBrqV,GAAO0qV,EAAOpmY,KAAK07C,KAAiC,IAAvBl+B,EAAKhQ,QAAQkuC,GAAcwqV,EAAc1oX,GAGtFynX,GAAavpV,GAAO0qV,EAAOpmY,KAAK07C,KAAiC,IAAvBl+B,EAAKhQ,QAAQkuC,GAAcwqV,EAAc1oX,EAAM0mX,GClR5G,IAAImC,GAAU,oBACVC,GAAU,2BACHC,GAAkB,GAKtB,SAASC,KACZ,MAAO,IAAMz0X,KAAK2sD,SAAS1kD,SAAS,IAAIm7I,OAAO,EAAG,GAY/C,SAAS,GAAQsxO,EAAgBrzS,EAAQ8wS,GAC5C,IAAIwC,EAAWC,GAAU1C,QAAQwC,EAAgBrzS,EAAQ8wS,GAEzD,OAAO,SAAUzvW,EAAM0S,EAAW8sB,EAAU4uB,EAAY4zC,EAAkBrhH,EAAO1Q,EAASyP,GACtF,IAAI9P,EAASqiY,EAASjyW,EAAM0S,EAAW8sB,EAAUvvD,EAASyP,GACtDyyX,EAAmB,mBACvB,GAAI17B,MAAez0O,EAAkB,CACjC,IAAIymP,EAAWspB,KACXK,EAAWhkT,EAAaq6R,EAI5B,GAHKqpB,GAAgB,GAAK1jT,KACtB0jT,GAAgB,GAAK1jT,GAAc,IAElCqnR,EAAkB90V,GAanBqf,EAAK,GAAKmyW,GAAoBC,EAC9BN,GAAgB,GAAK1jT,GAAY7tE,KAAKyf,QAZtC,IADA,IAAIjX,EAAOnU,OAAOmU,KAAK+oX,GAAgB,GAAK1jT,GAAYn6E,SAAS0M,EAAM4E,WAAY,MAC1ExD,EAAK,EAAGo5B,EAASpyB,EAAMhH,EAAKo5B,EAAOvlC,OAAQmM,IAAM,CACtD,IAAIrS,EAAMyrC,EAAOp5B,GACbrS,IAAQyiY,GAAoBnyW,EAAK,GAAKtwB,KACtCoiY,GAAgB,GAAK1jT,GAAYn6E,SAAS0M,EAAM4E,WAAY,KAAK,GAAK7V,GAAOswB,EAAK,GAAKtwB,IAEvFA,IAAQyiY,IACRC,EAAWN,GAAgB,GAAK1jT,GAAYn6E,SAAS0M,EAAM4E,WAAY,KAAK,GAAK7V,IAS7F,MAAoB,gBAAb8vD,EAA6B,CAACnmD,GAAc,KAAM,CAAEoG,GAAI2yX,EAAU94X,UAAW,uBAEhF,CAACD,GAAc,MAAO,CAAEoG,GAAI2yX,EAAU94X,UAAW,uBAEzD,GAAsB,kBAAX1J,EAAqB,CAC5B,GAAIiiY,GAAQtmY,KAAKqE,GAAS,CACtB,IAAI8hC,EAAMr4B,GAAc,MAAO,CAAE4F,UAAWrP,IAC5C,OAAO8hC,EAAIlL,WAGPkL,EAAMr4B,GAAeu4X,GAAQrmY,KAAKqE,GAAU,QAAU,MAAQ,CAAEqP,UAAWrP,IAC/E,OAAO8hC,EAAIlL,WAIf,OAAO52B,GAaZ,SAASyiY,GAAqBjkT,EAAYC,EAAc2nS,EAAM34M,EAASqoC,GAC1E,GAAI+wJ,IAAY,CACZ,IAAI67B,EAAY,WAChBx3X,OAAO,GAAKw3X,GAAWC,eAAelkT,EAAcyjT,GAAgB,GAAK1jT,GAAaA,EAAY4nS,EAAMtwK,IACxF,IAAZroC,IACAy0N,GAAgB,GAAK1jT,GAAc,KAWxC,SAASokT,GAAoBpkT,EAAYC,EAAc1tE,GAC1D,IAAI8xX,EAAc3wX,SAASkhD,eAAeorB,GAC1C,GAAIqkT,EAGA,IADA,IAAIC,EAAiBD,EAAY3mX,uBAAuB,yBAC/C7V,EAAI,EAAGA,EAAIy8X,EAAe98X,OAAQK,IAAK,CAC5C,IAAIy+K,EAAS,IAKTA,EAJC+gL,EAAkB90V,GAIV+xX,EAAez+X,SAASgC,EAAEsP,WAAY,KAAK1G,aAAa,mBAHxD6zX,EAAez+X,SAAS0M,EAAM4E,WAAY,KAAK1G,aAAa,mBAKzE,IAAIkwI,EAAcjtI,SAASkhD,eAAe0xH,GAC1C,GAAI3lC,EAEA,IADA,IAAIt5H,EAAWs5H,EAAYvoH,WAAW5wB,OAC7BmjC,EAAI,EAAGA,EAAItjB,EAAUsjB,IACrB08T,EAAkB90V,GAKnB+xX,EAAez+X,SAASgC,EAAEsP,WAAY,KAAK/L,YAAYu1I,EAAYvoH,WAAW,KAJ9EksW,EAAez+X,SAAS0M,EAAM4E,WAAY,KAAK/L,YAAYu1I,EAAYvoH,WAAW,IAClFvwB,EAAIy8X,EAAe98X,SAiBpC,SAAS+8X,GAAkBC,GAC9BV,GAAU1C,QAAUoD,EAASpD,QAQ1B,SAASqD,KACZ,OAAOX,GAAU1C,QAWd,SAASsD,GAAsB9+U,EAAU2qC,GAC5C,IAAIo0S,EASJ,OARA/+U,EAAS5+C,UAAU49X,aAAc,EAC5Bv9B,EAAkB92Q,GAKnBo0S,EAAY/+U,GAJZ++U,EAAY/+U,EAAS35C,KAAKskF,GAC1Bo0S,EAAU39X,UAAYR,OAAOS,OAAO2+C,EAAS5+C,YAK1C29X,EAGX,IAAI,GAAwB,WACxB,SAASE,KAOT,OAJAA,EAAO79X,UAAUo6X,QAAU,SAAUwC,EAAgBrzS,EAAQ8wS,GAEzD,YADe,IAAX9wS,IAAqBA,EAAS,IAC3B,GAAOqzS,EAAgBrzS,IAE3Bs0S,EARgB,GAUvBf,GAAY,CAAE1C,SAAS,IAAI,IAASA,SC9KpC0D,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAE12W,UAAW,OAAQ84B,SAAU,yBAC/B,CAAE94B,UAAW,aAAc84B,SAAU,+BACrC,CAAE94B,UAAW,QAAS84B,SAAU,0BAChC,CAAE94B,UAAW,QAAS84B,SAAU,0BAChC,CAAE94B,UAAW,OAAQ84B,SAAU,qCAE/B69U,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA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,CACP,gBAAS,IACVgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,gBAAS,IACVgua,EAAKhua,UAAW,eAAW,GAC9B,GAAW,CACP,eAAQ,GAAI,KACbgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAQ,GAAI,KACbgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,eAAW,GAAI,KAChBgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,gBAAS,IACVgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAQ,GAAI,KACbgua,EAAKhua,UAAW,6BAAyB,GAC5C,GAAW,CACP,gBAAS,IACVgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,eAAS,SACVgua,EAAKhua,UAAW,cAAU,GAC7B,GAAW,CACP,eAAS,SACVgua,EAAKhua,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,YACVgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,eAAS,aACVgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,eAAS,aACVgua,EAAKhua,UAAW,0BAAsB,GACzC,GAAW,CACP,eAAS,KACVgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,OACVgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,aAAS,GAC5B,GAAW,CACP,eAAS,QACVgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,IACVgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,eAAS,IACVgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,KACVgua,EAAKhua,UAAW,gBAAY,GAC/B,GAAW,CACP,eAAS,QACVgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,eAAS,KACVgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,eAAS,KACVgua,EAAKhua,UAAW,kCAA8B,GACjD,GAAW,CACP,kBACDgua,EAAKhua,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,YAAQ,GAC3B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,qBAAiB,GACpC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,8BAA0B,GAC7C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,iCAA6B,GAChD,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mCAA+B,GAClD,GAAW,CACP,kBACDgua,EAAKhua,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,4BAAwB,GAC3C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,eAAW,GAC9B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,+BAA2B,GAC9C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,gCAA4B,GAC/C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,oBAAgB,GACnC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,iBAAa,GAChC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,gBAAY,GAC/B,GAAW,CACP,kBACDgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,wBAAoB,GACvC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,kBAAc,GACjC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,mBAAe,GAClC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,sBAAkB,GACrC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,6BAAyB,GAC5C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,uBAAmB,GACtC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,yBAAqB,GACxC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,0BAAsB,GACzC,GAAW,CACP,kBACDgua,EAAKhua,UAAW,2BAAuB,GAC1C,GAAW,CACP,kBACDgua,EAAKhua,UAAW,6BAAyB,GAC5Cgua,EAAOgD,EAAS,GAAW,CACvB,QACDhD,GACIA,EAz1Mc,CA01MvB,S,oCCzwNF,4GAMI5tI,EAAe,gDACfD,EAAU,4CACVuvJ,EAAU,oBACVh7a,EAAQ,kBACRi7a,EAAO,iBACPrvJ,EAAwB,WACxB,SAASA,EAAOr+O,GACZxrD,KAAKwrD,OAASA,EACdxrD,KAAKwrD,OAAOkvB,GAAG,cAAe16E,KAAKm5b,aAAcn5b,MAkCrD,OAhCA6pS,EAAOtgS,UAAUqT,cAAgB,WAC7B,MAAO,UAEXitR,EAAOtgS,UAAU0rF,IAAM,SAAUgxC,EAAO14G,GAC9B04G,aAAiB/8H,QACnB+8H,EAAQ,CAACA,IAGb,IADA,IAAIpvH,EAAOovH,EACF77H,EAAI,EAAGA,EAAIyM,EAAK9M,OAAQK,IAAK,CAClC,IAAIguB,EAAOgha,EAAYvib,EAAKzO,SAASgC,EAAEsP,WAAY,MAC/CowR,EAAM1xQ,EAAK8+O,MAAM3pP,EAAMvtB,KAAKwrD,QAC5Bs+O,EAAI12L,SAEJshC,QAAQt8G,EAAK+xQ,SAAS/xQ,EAAK2xQ,gBAAgBx8Q,EAAMvtB,KAAKwrD,OAAQs+O,EAAIv9R,YAI9Es9R,EAAOtgS,UAAU4vb,aAAe,WAC5B,IAAIr9Y,EAAU97C,KAAKwrD,OAAOuvC,gBAAgB1wD,YAAYyR,QAClDnK,EAAWmK,EAAQzJ,WACnBV,IACAmK,EAAQzJ,WAAa,SAAUjG,EAAIpZ,EAASuiB,GACxC5D,EAASllC,KAAKqvC,EAAS1P,EAAIpZ,EAASuiB,MAIhDs0P,EAAOtgS,UAAU+Q,QAAU,WACnBta,KAAKwrD,OAAOwqC,aAGhBh2F,KAAKwrD,OAAOqvB,IAAI,cAAe76E,KAAKm5b,eAEjCtvJ,EArCgB,GAwChBuvJ,EAAc,CAErBC,eAAgB,CACZxib,KAAM,iBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,IAAI8tY,EAAW9tY,EAAOohK,qBAAqBt9M,KAAI,SAAUzN,GAAK,OAAOA,EAAE0H,UAAUqT,mBAE7E0Q,EAAUk+B,EAAOn+B,kBAAkB/d,KAAI,SAAUzN,GAAK,OAAOA,EAAE2rB,UAC9D2K,QAAO,SAAUxwB,GAAQ,OAAmC,IAA5B2xb,EAASpsb,QAAQvF,MACtD,MAAO,CAAEyrG,QAAS9lF,EAAQ6K,QAAO,SAAUt2B,GAAK,MAAa,WAANA,KAAmBkI,OAAS,EAAGwC,QAAS+gB,IAEnGy8Q,gBAAiB,SAAUx8Q,EAAMi+B,EAAQl+B,GAGrC,OAFAA,EAAUA,EAAQ6K,QAAO,SAAUt2B,GAAK,MAAa,WAANA,KAC1Cy7E,QAAO,SAAUg0F,EAAMC,GAAO,OAAOD,EAAQ,KAAOC,EAAM,OAAU,IAClE0nR,kEACG3ra,EACL,YAAcq8Q,EAAe,iEAI1C4vJ,gBAAiB,CACb1ib,KAAM,kBACNszR,QAAS,QACTjzB,MAAO,WACH,MAAO,CAAE9jK,QAA4B,qBAAZ7/E,UAE7Bw2Q,gBAAiB,WACb,OAAO9rR,8JAGYyrR,EAAU,iEAIrC8vJ,uBAAwB,CACpB3ib,KAAM,yBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,MAAO,CAAE4nD,QAAS5nD,EAAOgxC,2BAC6B,IAA5ChxC,EAAOk6C,0BAA0B37F,OACwD,IAAzFyhD,EAAO+qC,aAAap+D,QAAO,SAAU+6D,GAAU,OAAOA,EAAOyyC,gBAAiB57H,SAE5FggS,gBAAiB,WACb,OAAOkvJ,kGACYtvJ,EAAe,uFAI1C8vJ,sBAAuB,CACnB5ib,KAAM,wBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,MAAO,CAAE4nD,QAAS5nD,EAAOoiP,kBAAkB6Z,kBACsD,IAAzFj8P,EAAO+qC,aAAap+D,QAAO,SAAU+6D,GAAU,OAAOA,EAAOyyC,gBAAiB57H,SAE1FggS,gBAAiB,WACb,OAAOkvJ,uJAEYtvJ,EAAe,uFAG1C+vJ,cAAe,CACX7ib,KAAM,gBACNszR,QAAS,QACTjzB,MAAO,WACH,MAAO,CAAE9jK,SAAS,IAEtB22L,gBAAiB,SAAUx8Q,EAAMi+B,GAC7B,IAAI82E,EAAU,GACVq3T,EAAcC,EAAmBrsa,EAAMi+B,GACvCquY,EAAYC,EAAiBvsa,EAAMi+B,GAUvC,OARI82E,EADc,KAAdu3T,EACUA,EAEW,KAAhBF,EACKA,EAGApsa,EAAKmI,MAEZuja,EAAU,KAAO32T,IAIhCy3T,eAAgB,CACZljb,KAAM,iBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,IAAIwuY,EAAO,OAAS7sZ,UAAU,UAAYqe,EAAOppC,OAAS,QAAS,QACnE,MAAO,CAAEgxF,QAA2B,UAAlB5nD,EAAOppC,QAAsB,eAAkB43a,KAErEjwJ,gBAAiB,SAAUx8Q,EAAMi+B,GAC7B,OAAOytY,wDAAwEztY,EAAOppC,OAA/E62a,gCACYtvJ,EAAe,yHAG1CswJ,WAAY,CACRpjb,KAAM,aACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,IACI1Q,EADAnzC,EAAO4lB,EAEX,OAAQ5lB,GACJ,IAAK,SACDmzC,EAAM,CACFs4D,QAAS5nD,EAAOupC,gBAAkB,eAAYvpC,EAAOgkH,kBAAoB,eAAYhkH,EAAOikH,aACpF,eAAYjkH,EAAOiqP,cAAgBjqP,EAAO6tC,qBAClD9sF,QAAS,CAAE5E,KAAM,WAErB,MACJ,IAAK,iBACDmzC,EAAM,CACFs4D,SAAU,eAAY5nD,EAAOgkH,kBAAoB,eAAYhkH,EAAOikH,YAAoC,IAAtBjkH,EAAOinP,YACzD,IAAzBjnP,EAAOgpP,cACdjoS,QAAS,CAAE5E,KAAM,mBAErB,MACJ,QACImzC,EAAM,CAAEs4D,SAAS,GACjB,MAER,OAAOt4D,GAEXivP,gBAAiB,SAAUx8Q,EAAMi+B,EAAQj/C,GACrC,IACIuuC,EADAnzC,EAAO4E,EAAQ5E,KAEnB,OAAQA,GACJ,IAAK,SACDmzC,EAAM,qJAMN,MACJ,IAAK,iBACDA,EAAM,gIAIN,MACJ,QACIA,EAAM,GACN,MAER,OAAOm+Y,EAAW,KAAOtxb,EAAKgyI,cAAgB,iBAAoB7+F,IAI1Eo/Y,yBAA0B,CACtBrjb,KAAM,2BACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,MAAO,CAAE4nD,UAAW5nD,EAAOooC,QAAQ7pF,QAC1ByhD,EAAO1hB,sBAAsB,QAAgB0hB,EAAO1hB,WAAW//B,UAE5EggS,gBAAiB,WACb,OAAOkvJ,2JAEYtvJ,EAAe,8EAI1CwwJ,eAAgB,CACZtjb,KAAM,iBACNszR,QAAS,QACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,MAAO,CAAE4nD,QAAS,eAAkB5nD,EAAOvkD,SAA6B,SAAlBukD,EAAOvkD,SAEjE8iS,gBAAiB,WACb,OAAO9rR,0FACY0rR,EAAe,qEAI1CywJ,iBAAkB,CACdvjb,KAAM,mBACNszR,QAAS,QACTjzB,MAAO,SAAU3pP,GACb,MAAO,CAAE6lF,QAASlqG,MAAM+nC,QAAQ1jB,IAASrkB,MAAM+nC,QAAQ1jB,EAAKxpB,UAEhEgmS,gBAAiB,WACb,OAAO9rR,+EAEY0rR,EAAe,0EAI1C0wJ,mBAAoB,CAChBxjb,KAAM,qBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,MAAO,CAAE4nD,QAAS5nD,EAAOuvC,gBAAgBqE,aAE7C2qM,gBAAiB,WACb,OAAOkvJ,0FACYtvJ,EAAe,iFAI1C2wJ,eAAgB,CACZzjb,KAAM,iBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,GACb,MAAO,CAAE6lF,QAAU7lF,EAAK2lE,OAAO2+E,UAAYtkJ,EAAK2lE,OAAO2+E,UAAYtkJ,EAAKlmB,OAC/DkmB,EAAK2lE,OAAOl7E,UAAYuV,EAAK2lE,OAAOl7E,UAAYuV,EAAKlmB,QAElE0iS,gBAAiB,WACb,OAAOmvJ,8FAIfqB,uBAAwB,CACpB1jb,KAAM,yBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,GACb,IACIud,EADAsoE,GAAU,EAEd,OAAQ7lF,EAAKjO,YACT,IAAK,UAEGwrB,EADA,eAAkBvd,EAAKita,YAClB,yCAA2Cjta,EAAK2lE,OAAOiC,WAAa,UAGpE,0CAA4C5nE,EAAK2lE,OAAOD,gBACzD1lE,EAAKita,WAAWrlW,WAAa5nE,EAAK2lE,OAAOiC,YAAc,UAE/D,MACJ,IAAK,QACDrqD,EAAK,uCAAyCvd,EAAK2nE,WAAa,WAChE,MACJ,IAAK,SACDpqD,EAAK,wCAA0Cvd,EAAK2nE,WAAa,WACjE,MACJ,IAAK,OACDpqD,EAAK,sCAAwCvd,EAAK2nE,WAAa,WAC/D,MAER,MAAO,CAAEke,QAASA,EAAS7mG,QAAS,CAAEu+B,GAAIA,KAE9Ci/P,gBAAiB,SAAUx8Q,EAAMi+B,EAAQj/C,GACrC,OAAO2sb,EAAQ,wBAA0B3sb,EAAQu+B,KAIzD2vZ,gBAAiB,CACb5jb,KAAM,kBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,GACb,MAAO,CAAE6lF,SAAS,EAAM7mG,QAAS,CAAEghB,KAAMA,KAE7Cw8Q,gBAAiB,SAAUx8Q,EAAMi+B,EAAQj/C,GACrC,OAAO2sb,EAAQ,kCAAoC3sb,EAAQghB,KAAO,uBAI1Emta,mBAAoB,CAChB7jb,KAAM,qBACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,GACb,MAAO,CAAE6lF,SAAS,EAAM7mG,QAAS,CAAEghB,KAAMA,KAE7Cw8Q,gBAAiB,SAAUx8Q,EAAMi+B,EAAQj/C,GACrC,OAAO2sb,EAAQ,iCAAmC3sb,EAAQghB,KAAO,oBAIzEota,oBAAqB,CACjB9jb,KAAM,sBACNszR,QAAS,QACTjzB,MAAO,WACH,MAAO,CAAE9jK,SAAS,IAEtB22L,gBAAiB,WACb,OAAO9rR,gGACY0rR,EAAe,uFAI1CixJ,eAAgB,CACZ/jb,KAAM,iBACNszR,QAAS,QACTjzB,MAAO,SAAU3pP,GACb,IACIud,EADAsoE,GAAU,EAEd,OAAQ7lF,EAAKjO,YACT,IAAK,QACDwrB,EAAK,OAASvd,EAAK2nE,WAAd,4GAEL,MACJ,IAAK,SACDpqD,EAAK,OAASvd,EAAK2nE,WAAd,8GAEL,MACJ,IAAK,OACDpqD,EAAK,OAASvd,EAAK2nE,WAAd,4GAEL,MAER,MAAO,CAAEke,QAASA,EAAS7mG,QAAS,CAAEu+B,GAAIA,KAE9Ci/P,gBAAiB,SAAUx8Q,EAAMi+B,EAAQj/C,GACrC,OAAO0R,EAAS,+BAAiC1R,EAAQu+B,KAIjE+vZ,oBAAqB,CACjBhkb,KAAM,sBACNszR,QAAS,QACTjzB,MAAO,SAAU3pP,EAAMi+B,GACnB,MAAO,CAAE4nD,QAAS5nD,EAAO+qC,aAAaxsF,QAAUyhD,EAAOgpP,eAC3ChpP,EAAO+3C,gBAAgBx5F,QAAUyhD,EAAOinP,YAAcjnP,EAAO+3C,gBAAgBx5F,SAE7FggS,gBAAiB,SAAUx8Q,EAAMi+B,GAC7B,OAAOvtC,EAAS,4BAA8ButC,EAAO+qC,aAAaxsF,QAAUyhD,EAAOgpP,cAAgB,kBAAoB,KACjHhpP,EAAOinP,YAAcjnP,EAAO+3C,gBAAgBx5F,OAAS,cAAgB,IAAM,aAIzF+wb,oBAAqB,CACjBjkb,KAAM,sBACNszR,QAAS,QACTjzB,MAAO,SAAU3pP,GACb,MAAO,CAAE6lF,QAAS,eAAkB7lF,EAAK2lE,OAAOr8E,MAAOtK,QAASghB,EAAK2lE,OAAOiC,aAEhF40M,gBAAiB,SAAUx8Q,EAAMi+B,EAAQj/C,GACrC,OAAO0R,EAAS,6BAA+B1R,EAAxC0R,8EACsCyrR,EAAU,+BAI/DqxJ,2BAA4B,CACxBlkb,KAAM,6BACNszR,QAAS,OACTjzB,MAAO,SAAU3pP,GACb,MAAO,CAAE6lF,QAAS7lF,EAAKq3G,UAAU96F,cAAgBvc,EAAKq3G,UAAU96F,sBAAsB,QAC9E,WAAYvc,EAAKq3G,UAAU96F,YAAcvc,EAAKq3G,UAAU96F,sBAAsB5gC,SAC5E,cAAD,CAAmBqkB,EAAKq3G,UAAUslK,mBAE/CH,gBAAiB,WACb,OAAOkvJ,wIAMfW,EAAqB,SAAUrsa,GAC/B,IAAImI,EAAQnI,EAAKmI,MACjB,OAAIA,EAAMxoB,SAA+C,IAApCwoB,EAAMxoB,QAAQ,kBACxB,GAEJ,qGAEkBw8R,EAFlB,2DAGgBA,EAHhB,qDAIYh0Q,GAEnBoka,EAAmB,SAAUvsa,GAC7B,IAAImI,EAAQ,OAASyX,UAAU,cAAe5f,GAC9C,GAAI,eAAkBmI,GAClB,MAAO,GAEX,IAAIsla,EAAa,GACjB,IACIA,EAAanrZ,KAAKE,MAAMra,EAAM0tV,cAElC,MAAOp2W,GACHgub,EAAa,GAEjB,MAAO,+BACQtla,EAAMula,YADd,aAEWvla,EAAMszE,OAAS,MAAQtzE,EAAM4tV,WAAa,MAClC,KAAf03E,EAAoB,YAAcA,EAAa,M,oCCxa9D,8DAAIpyb,EAAwC,WACxC,IAAIC,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAM5DmlQ,EAAQ,UACRpoN,EAAW,sBACXm0Y,EAAQ,UACR9rL,EAAgB,SAChBxnB,EAAQ,UACRC,EAAS,qBACTszM,EAAc,iBACdC,EAAsB,gBACtBvwb,EAAM,QACNi9O,EAAU,qBACVnpO,EAAgB,CAAC,QAAS,QAAS,QAAS,WAAY,WAAY,OAAQ,QAAS,MAYrF08a,EAA0B,SAAUpvb,GASpC,SAASovb,EAAS9ub,EAASnI,GACvB,IAAIoI,EAAQP,EAAOQ,KAAKzM,KAAMuM,EAASnI,IAAYpE,KAKnD,OAJAwM,EAAM+S,WAAY,EAClB/S,EAAM8ub,cAAe,EACrB9ub,EAAM+ub,gBAAiB,EACvB/ub,EAAMgvb,YAAa,EACZhvb,EAukBX,OArlBA5D,EAAUyyb,EAAUpvb,GAgBpBovb,EAAS9xb,UAAU4tQ,YAAc,SAAUv9N,EAAO6hZ,GAC9C,IACIhyV,EAAa,KACbE,EAAY3pG,KAAKkoD,aAAajoC,uBAAuBi7a,GAAO,GAC5D,SACAzxV,EAAazpG,KAAKkoD,aAAajoC,uBAAuB4nO,GAAQ,IAEpD,UAAVjuM,GACI+vD,IACAA,EAAUxiG,UAAU8G,OAAOmhQ,GAC3BzlK,EAAUxiG,UAAUgN,IAAIg7P,IAExB1lK,IACAA,EAAWtiG,UAAU8G,OAAOmtb,GAC5B3xV,EAAWtiG,UAAUgN,IAAIgnb,IAEjB,OACZn7b,KAAKoE,QAAQwlG,SAAU,GAClB5pG,KAAKoE,QAAQ8xO,UAAY,eAAQl2O,KAAKoE,QAAS,SAAW,eAAQpE,KAAKoE,QAAS,QAAQ+C,UAAUC,SAAS,qBAAuBpH,KAAKw7b,aAAeC,GACvJz7b,KAAKoE,QAAQwlG,SAAU,EACvB5pG,KAAKw7b,YAAa,IAEbx7b,KAAKoE,QAAQ8xO,UAAY,eAAQl2O,KAAKoE,QAAS,SAAW,eAAQpE,KAAKoE,QAAS,QAAQ+C,UAAUC,SAAS,sBAChHpH,KAAKw7b,YAAa,IAGP,YAAV5hZ,GACD+vD,GACA,gBAAY,CAACA,GAAY,CAACwlK,EAAOC,IAEjC3lK,GACA,gBAAY,CAACA,GAAa,CAAC0xV,EAAaC,IAEhC,QACZp7b,KAAKoE,QAAQwlG,SAAU,GAClB5pG,KAAKoE,QAAQ8xO,UAAY,eAAQl2O,KAAKoE,QAAS,SAAW,eAAQpE,KAAKoE,QAAS,QAAQ+C,UAAUC,SAAS,qBAAuBpH,KAAKw7b,aAAeC,GACvJz7b,KAAKoE,QAAQwlG,SAAU,EACvB5pG,KAAKw7b,YAAa,IAEbx7b,KAAKoE,QAAQ8xO,UAAY,eAAQl2O,KAAKoE,QAAS,SAAW,eAAQpE,KAAKoE,QAAS,QAAQ+C,UAAUC,SAAS,sBAChHpH,KAAKw7b,YAAa,KAIlB7xV,IACAA,EAAUxiG,UAAU8G,OAAOkhQ,GAC3BxlK,EAAUxiG,UAAUgN,IAAIi7P,IAExB3lK,IACAA,EAAWtiG,UAAU8G,OAAOktb,GAC5B1xV,EAAWtiG,UAAUgN,IAAIinb,IAEjB,QACZp7b,KAAKoE,QAAQkzQ,eAAgB,EAC7Bt3Q,KAAKs3Q,eAAgB,IAG7B+jL,EAAS9xb,UAAUggD,aAAe,SAAUxyC,GACxC,GAA6B,UAAzBA,EAAMpN,OAAOmO,SAAuB9X,KAAKu7b,eAKzC,OAJIv7b,KAAKq3B,OACLr3B,KAAKm3Q,YAAYn3Q,KAAK4pG,QAAU,QAAU,gBAE9C5pG,KAAKu7b,gBAAiB,GAGG,SAAzBxkb,EAAMpN,OAAOmO,SAA+C,UAAzBf,EAAMpN,OAAOmO,UAChD9X,KAAKu7b,gBAAiB,GAEtBv7b,KAAKs7b,eACLt7b,KAAK08B,kBACL18B,KAAKs7b,cAAe,GAEpBt7b,KAAKs3Q,eACLt3Q,KAAKm3Q,YAAYn3Q,KAAK4pG,QAAU,QAAU,WAC1C5pG,KAAKs3Q,eAAgB,EACrBt3Q,KAAKoE,QAAQkzQ,eAAgB,GAExBt3Q,KAAK4pG,SACV5pG,KAAKm3Q,YAAY,WACjBn3Q,KAAK4pG,SAAU,IAGf5pG,KAAKm3Q,YAAY,SACjBn3Q,KAAK4pG,SAAU,GAEnB,IAAIrsE,EAAkB,CAAEqsE,QAAS5pG,KAAK07b,qBAAoB,GAAQ3kb,MAAOA,GACzE/W,KAAKuQ,QAAQ,SAAUgtB,GACvBxmB,EAAM4P,mBAOV00a,EAAS9xb,UAAU+Q,QAAU,WACzB,IAAI9N,EAAQxM,KACR+nD,EAAU/nD,KAAKkoD,aACnBj8C,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,MAC1BA,KAAK+nD,UACLA,EAAU/nD,KAAK+nD,QACV/nD,KAAKkgB,UACNlgB,KAAK+0D,eAEY,UAAjB/0D,KAAK8X,SACD9X,KAAKkoD,cAAgBH,EAAQC,YAC7BD,EAAQC,WAAWh7B,aAAahtB,KAAKoE,QAAS2jD,GAElD,eAAOA,GACP/nD,KAAKoE,QAAQwlG,SAAU,EACnB5pG,KAAKs3Q,gBACLt3Q,KAAKoE,QAAQkzQ,eAAgB,GAEjC,CAAC,OAAQ,QAAS,YAAY7jP,SAAQ,SAAU5vB,GAC5C2I,EAAMpI,QAAQ8O,gBAAgBrP,QAIlC,CAAC,SAAS4vB,SAAQ,SAAU5vB,GACxBkkD,EAAQ70C,gBAAgBrP,MAE5BkkD,EAAQ30C,UAAY,GACpBpT,KAAKoE,QAAU2jD,EACX/nD,KAAKk3D,aACL,CAAC,YAAa,aAAc,SAASzjC,SAAQ,SAAU5vB,GACnD2I,EAAMpI,QAAQ+C,UAAUgN,IAAItQ,MAEhC,gBAAS,gBAAiB,CAAC7D,MAAOA,KAAKoE,aAKvDi3b,EAAS9xb,UAAUkzB,aAAe,WAC9Bz8B,KAAKuf,WAAY,GAErB87a,EAAS9xb,UAAUmzB,gBAAkB,WACjC,IAAIqrB,EAAU/nD,KAAKkoD,aACfH,GACAA,EAAQ5gD,UAAU8G,OAAO,WAE7BjO,KAAKuf,WAAY,GAQrB87a,EAAS9xb,UAAUqT,cAAgB,WAC/B,MAAO,YAQXy+a,EAAS9xb,UAAUsT,eAAiB,WAChC,OAAO7c,KAAK8c,aAAa,CAAC,UAAW,mBAEzCu+a,EAAS9xb,UAAU2+C,WAAa,WAC5B,OAAIloD,KAAKoE,SAAWpE,KAAKoE,QAAQiB,cACtBrF,KAAKoE,QAAQiB,cAAcA,cAG3B,MAGfg2b,EAAS9xb,UAAUg/O,SAAW,WAC1B,OAAIvoP,KAAKoE,QACEpE,KAAKoE,QAAQiB,cAGb,MAGfg2b,EAAS9xb,UAAUuD,WAAa,WACxB,eAAkB9M,KAAKyoP,uBACvBzoP,KAAKyoP,oBAAsBzoP,KAAK4pG,SAEhC5pG,KAAK2H,MACL3H,KAAKoE,QAAQ6O,aAAa,OAAQjT,KAAK2H,MAEvC3H,KAAKiG,QACLjG,KAAKoE,QAAQ6O,aAAa,QAASjT,KAAKiG,OACpCjG,KAAKq3B,OAA+B,mBAAfr3B,KAAKiG,QAAsC,IAAfjG,KAAKiG,OACtDjG,KAAKuT,cAAc,CAAE,SAAW,IAAQ,IAG5CvT,KAAK4pG,SACL5pG,KAAKm3Q,YAAY,SAAS,GAE1Bn3Q,KAAKs3Q,eACLt3Q,KAAKm3Q,cAELn3Q,KAAKkgB,UACLlgB,KAAK4oP,eAGbyyM,EAAS9xb,UAAUm/O,YAAc,WAC7B,IAAI3gM,EAAU/nD,KAAKoE,QAAQiB,cACtB0iD,EAAQ5gD,UAAUC,SAAS0gP,KAC5B//L,EAAU/nD,KAAKwN,cAAc,MAAO,CAChCC,UAAWq6O,IAEX9nP,KAAKoE,QAAQ4jD,YACbhoD,KAAKoE,QAAQ4jD,WAAWh7B,aAAa+6B,EAAS/nD,KAAKoE,UAG3D,IAAI42D,EAAQh7D,KAAKwN,cAAc,QAAS,CAAE6J,MAAO,CAAE+iO,IAAKp6O,KAAKoE,QAAQwP,MACjE+1F,EAAY3pG,KAAKwN,cAAc,OAAQ,CAAEC,UAAW,WAAaytb,IAYrE,GAXAnzY,EAAQ5gD,UAAUgN,IAAI,aAClBnU,KAAKqO,WACL05C,EAAQ5gD,UAAUgN,IAAItJ,GAEtB7K,KAAK+S,UACL,eAAS,CAACg1C,GAAU/nD,KAAK+S,SAAS0P,QAAQ,OAAQ,KAAK7N,OAAOvU,MAAM,MAExE0nD,EAAQp6C,YAAYqtD,GACpBA,EAAMrtD,YAAY3N,KAAKoE,SACvB,eAAepE,KAAMg7D,GACrBA,EAAMrtD,YAAYg8F,GACd,OAAiB,CACjB,IAAIF,EAAazpG,KAAKwN,cAAc,OAAQ,CAAEC,UAAWo6O,IAC9B,WAAvB7nP,KAAKkpP,cACLluL,EAAMrtD,YAAY87F,GAGlBzuC,EAAMhuC,aAAay8E,EAAYE,GAEnC,gBAAaF,EAAY,CAAEr9F,SAAU,IAAKs9F,gBAAgB,IAE1D1pG,KAAKg7D,OACLh7D,KAAK6oP,QAAQ7oP,KAAKg7D,QAG1BqgY,EAAS9xb,UAAUqzB,aAAe,WAC1B58B,KAAKuf,WACLvf,KAAKkoD,aAAa/gD,UAAUgN,IAAI,YAGxCknb,EAAS9xb,UAAUu/O,sBAAwB,SAAUtzO,GACjDxV,KAAKs7b,cAAe,EACpB,IAAI7xV,EAAazpG,KAAKkoD,aAAajoC,uBAAuB4nO,GAAQ,GAClE,eAAmBryO,EAAGi0F,IAE1B4xV,EAAS9xb,UAAUw/O,uBAAyB,SAAUvzO,GAClD,IAAIi0F,EAAazpG,KAAKuoP,WAAWtoO,uBAAuB4nO,GAAQ,GAChE,GAAIp+I,EAAY,CAEZ,IADA,IAAIu/I,EAAav/I,EAAWv/E,iBAAiB,qBACpC9f,EAAI4+O,EAAWj/O,OAAS,EAAGK,EAAI,EAAGA,IACvCq/F,EAAW50C,YAAY40C,EAAW9uE,WAAWvwB,IAEjD,eAAmBoL,EAAGi0F,KAG9B4xV,EAAS9xb,UAAU0/O,oBAAsB,SAAUzzO,GAC/CxV,KAAKs7b,cAAe,EACpB,IAAI7xV,EAAazpG,KAAKkoD,aAAajoC,uBAAuB4nO,GAAQ,GAClE,GAAIp+I,EAAY,CAEZ,IADA,IAAIu/I,EAAav/I,EAAWv/E,iBAAiB,qBACpC9f,EAAI,EAAGA,EAAI4+O,EAAWj/O,OAAS,EAAGK,IACvCq/F,EAAW50C,YAAY40C,EAAW9uE,WAAWvwB,IAEjD,eAAmBoL,EAAGi0F,KAY9B4xV,EAAS9xb,UAAUwT,kBAAoB,SAAUC,EAASC,GAEtD,IADA,IAAI8qC,EAAU/nD,KAAKkoD,aACVhyC,EAAK,EAAGlJ,EAAKjE,OAAOmU,KAAKF,GAAU9G,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAC9D,IAAIiH,EAAOnQ,EAAGkJ,GACd,OAAQiH,GACJ,IAAK,UACDnd,KAAKs3Q,eAAgB,EACrBt3Q,KAAKoE,QAAQkzQ,eAAgB,EAC7Bt3Q,KAAKm3Q,YAAYn6P,EAAQ4sF,QAAU,QAAU,WAC7C,MACJ,IAAK,gBACG5sF,EAAQs6P,cACRt3Q,KAAKm3Q,eAGLn3Q,KAAKoE,QAAQkzQ,eAAgB,EAC7Bt3Q,KAAKm3Q,YAAYn3Q,KAAK4pG,QAAU,QAAU,YAE9C,MACJ,IAAK,WACG5sF,EAAQkD,UACRlgB,KAAK4oP,cACL5oP,KAAK+nD,QAAU/nD,KAAKkoD,aACpBloD,KAAK+0D,iBAGL/0D,KAAKoE,QAAQ8b,UAAW,EACxB6nC,EAAQ5gD,UAAU8G,OAAO84C,GACzBgB,EAAQ90C,aAAa,gBAAiB,SACtCjT,KAAK0b,cAET,MACJ,IAAK,WACGuB,EAAQlK,UACR,gBAAY,CAACg1C,GAAU9qC,EAAQlK,SAAS1S,MAAM,MAE9C2c,EAAQjK,UACR,eAAS,CAACg1C,GAAU/qC,EAAQjK,SAAS0P,QAAQ,OAAQ,KAAK7N,OAAOvU,MAAM,MAE3E,MACJ,IAAK,YACG2c,EAAQ3O,UACR05C,EAAQ5gD,UAAUgN,IAAItJ,GAGtBk9C,EAAQ5gD,UAAU8G,OAAOpD,GAE7B,MACJ,IAAK,QACD7K,KAAK6oP,QAAQ7rO,EAAQg+C,OACrB,MACJ,IAAK,gBACD,IAAIA,EAAQjT,EAAQ9nC,uBAAuB2nO,GAAO,GAC9C+zM,EAAY5zY,EAAQqiC,qBAAqB,SAAS,GACtD,eAAOpvB,GACuB,UAA1Bh+C,EAAQksO,cACRyyM,EAAUhub,YAAYqtD,GAGtB2gY,EAAU3ua,aAAaguC,EAAOjT,EAAQ9nC,uBAAuBi7a,GAAO,IAExE,MAEJ,IAAK,OACDl7b,KAAKoE,QAAQ6O,aAAa,OAAQ+J,EAAQrV,MAC1C,MACJ,IAAK,QACD,GAAI3H,KAAKq3B,OAAkC,kBAAlBra,EAAQ/W,MAC7B,MAEJjG,KAAKoE,QAAQ6O,aAAa,QAAS+J,EAAQ/W,OAC3C,MACJ,IAAK,iBACDjG,KAAK2hB,+BACL,SAUhB05a,EAAS9xb,UAAUqS,UAAY,WAC3B,IAAIxX,EAAUpE,KAAKoE,QACnBpE,KAAK8X,QAAU9X,KAAKoE,QAAQ0T,QAC5B1T,EAAU,eAAkBpE,KAAKwN,cAAe,eAAgB,WAAYpJ,EAAS0jP,EAAS,YAC9F9nP,KAAKoE,QAAUA,EAC2B,aAAtCpE,KAAKoE,QAAQ4O,aAAa,SAC1BhT,KAAKoE,QAAQ6O,aAAa,OAAQ,YAEjCjT,KAAKoE,QAAQwP,KACd5T,KAAKoE,QAAQwP,GAAK,eAAY,KAAO5T,KAAK4c,mBASlDy+a,EAAS9xb,UAAUkS,OAAS,WACxBzb,KAAK0oP,cACL1oP,KAAK8M,aACA9M,KAAKkgB,UACNlgB,KAAK0b,aAET1b,KAAK2hB,+BACL3hB,KAAK07b,qBAAoB,GACzB17b,KAAK2b,iBACL3b,KAAK+nD,QAAU/nD,KAAKkoD,cAExBmzY,EAAS9xb,UAAUq/O,YAAc,WAC7B,IAAI7gM,EAAU/nD,KAAKkoD,aACnBloD,KAAKoE,QAAQ8b,UAAW,EACxB6nC,EAAQ5gD,UAAUgN,IAAI4yC,GACtBgB,EAAQ90C,aAAa,gBAAiB,SAG1Coob,EAAS9xb,UAAUs/O,QAAU,SAAUrnN,GACnC,IAAIumB,EAAU/nD,KAAKkoD,aACnB,GAAKH,EAAL,CAGA,IAAIiT,EAAQjT,EAAQ9nC,uBAAuB2nO,GAAO,GAClD,GAAI5sL,EACAA,EAAMpuC,YAAc4U,MAEnB,CACDA,EAAQxhC,KAAwB,oBAAI,OAAmBwT,SAASguB,GAAQA,EACxEw5B,EAAQh7D,KAAKwN,cAAc,OAAQ,CAAEC,UAAWm6O,EAAOx0O,UAAWouB,IAClE,IAAIm6Z,EAAY5zY,EAAQqiC,qBAAqB,SAAS,GAC3B,WAAvBpqF,KAAKkpP,cACLyyM,EAAU3ua,aAAaguC,EAAOjT,EAAQ9nC,uBAAuBi7a,GAAO,IAGpES,EAAUhub,YAAYqtD,MAIlCqgY,EAAS9xb,UAAUuzB,cAAgB,SAAUtnB,GACzCA,EAAEmR,mBAEN00a,EAAS9xb,UAAU26I,iBAAmB,WAClClkJ,KAAK4pG,QAAU5pG,KAAKyoP,oBACpBzoP,KAAKoE,QAAQwlG,QAAU5pG,KAAKyoP,qBAEhC4yM,EAAS9xb,UAAUwrD,aAAe,WAC9B,IAAIhN,EAAU/nD,KAAK+nD,QACnB,OAAa95C,OAAO85C,EAAS,QAAS/nD,KAAKupD,cAC3C,OAAat7C,OAAOjO,KAAKoE,QAAS,QAASpE,KAAK48B,cAChD,OAAa3uB,OAAOjO,KAAKoE,QAAS,QAASpE,KAAKy8B,cAChD,OAAaxuB,OAAOjO,KAAKoE,QAAS,WAAYpE,KAAK08B,iBACnD,IAAIs+B,EAAQjT,EAAQqiC,qBAAqB,SAAS,GAClD,OAAan8E,OAAO+sD,EAAO,YAAah7D,KAAK8oP,uBAC7C,OAAa76O,OAAO+sD,EAAO,UAAWh7D,KAAKipP,qBAC3C,OAAah7O,OAAO+sD,EAAO,aAAch7D,KAAK+oP,wBAC9C,IAAI6yM,EAAW,eAAQ57b,KAAKoE,QAAS,QACjCw3b,GACA,OAAa3tb,OAAO2tb,EAAU,QAAS57b,KAAKkkJ,kBAE3B,iBAAjBlkJ,KAAK8X,SACL,OAAa7J,OAAOjO,KAAKoE,QAAS,SAAUpE,KAAK88B,gBAGzDu+Z,EAAS9xb,UAAUmS,WAAa,WAC5B,IAAIqsC,EAAU/nD,KAAKkoD,aACnB,OAAa/zC,IAAI4zC,EAAS,QAAS/nD,KAAKupD,aAAcvpD,MACtD,OAAamU,IAAInU,KAAKoE,QAAS,QAASpE,KAAK48B,aAAc58B,MAC3D,OAAamU,IAAInU,KAAKoE,QAAS,QAASpE,KAAKy8B,aAAcz8B,MAC3D,OAAamU,IAAInU,KAAKoE,QAAS,WAAYpE,KAAK08B,gBAAiB18B,MACjE,IAAIg7D,EAAQjT,EAAQqiC,qBAAqB,SAAS,GAClD,OAAaj2E,IAAI6mD,EAAO,YAAah7D,KAAK8oP,sBAAuB9oP,MACjE,OAAamU,IAAI6mD,EAAO,UAAWh7D,KAAKipP,oBAAqBjpP,MAC7D,OAAamU,IAAI6mD,EAAO,aAAch7D,KAAK+oP,uBAAwB/oP,MACnE,IAAI47b,EAAW,eAAQ57b,KAAKoE,QAAS,QACjCw3b,GACA,OAAaznb,IAAIynb,EAAU,QAAS57b,KAAKkkJ,iBAAkBlkJ,MAE1C,iBAAjBA,KAAK8X,SACL,OAAa3D,IAAInU,KAAKoE,QAAS,SAAUpE,KAAK88B,cAAe98B,OAGrEq7b,EAAS9xb,UAAUmyb,oBAAsB,SAAUzwT,GAC/C,GAAIjrI,KAAKq3B,OAA+B,kBAAfr3B,KAAKiG,MAAoB,CAC9C,IAAIA,EAAQjG,KAAKoE,QAAQ6B,MACzB,GAAIA,GAASjG,KAAKiG,MAAO,CACrB,IAAIglI,EAQC,CACD,IAAIn2H,EAAQ9U,KAAKiG,MAAMiH,QAAQjH,GAY/B,OAXIjG,KAAK4pG,QACD90F,EAAQ,GACR9U,KAAKiG,MAAMyO,KAAKzO,GAIhB6O,GAAS,GACT9U,KAAKiG,MAAM8O,OAAOD,EAAO,GAI1B9U,KAAKiG,MApBZ,IAAK,IAAImE,EAAI,EAAGA,EAAIpK,KAAKiG,MAAM8D,OAAQK,IAC/BnE,IAAUjG,KAAKiG,MAAMmE,KACrBpK,KAAKm3Q,YAAY,SACjBn3Q,KAAKuT,cAAc,CAAE,SAAW,IAAQ,KAqB5D,OAAOvT,KAAKw7b,WAAax7b,KAAKoE,QAAQwlG,SAAW5pG,KAAKoE,QAAQwlG,SAElEyxV,EAAS9xb,UAAUoY,6BAA+B,WAC9C,IAAK,eAAkB3hB,KAAK0nB,gBACxB,IAAK,IAAIxR,EAAK,EAAGlJ,EAAKjE,OAAOmU,KAAKld,KAAK0nB,gBAAiBxR,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAC1E,IAAIrS,EAAMmJ,EAAGkJ,GACT6xC,EAAU/nD,KAAKkoD,aACnB,GAAIvpC,EAAczR,QAAQrJ,IAAQ,EAC9B,GAAY,UAARA,EACA,eAAS,CAACkkD,GAAU/nD,KAAK0nB,eAAe,GAAK7jB,GAAKxD,MAAM,WAEvD,GAAY,UAARwD,EACLkkD,EAAQ90C,aAAapP,EAAK7D,KAAK0nB,eAAe,GAAK7jB,SAElD,GAAY,UAARA,EAAiB,CACtB,IAAI8lG,EAAY3pG,KAAKkoD,aAAajoC,uBAAuBi7a,GAAO,GAChEvxV,EAAU12F,aAAapP,EAAK7D,KAAK0nB,eAAe,GAAK7jB,QAExC,aAARA,GACiC,SAAlC7D,KAAK0nB,eAAe,GAAK7jB,IACzB7D,KAAK4oP,cAET5oP,KAAKoE,QAAQ6O,aAAapP,EAAK7D,KAAK0nB,eAAe,GAAK7jB,KAGxD7D,KAAKoE,QAAQ6O,aAAapP,EAAK7D,KAAK0nB,eAAe,GAAK7jB,SAI5DkkD,EAAQ90C,aAAapP,EAAK7D,KAAK0nB,eAAe,GAAK7jB,MAYnEw3b,EAAS9xb,UAAUu3C,MAAQ,WACvB9gD,KAAKoE,QAAQ08C,SASjBu6Y,EAAS9xb,UAAUklB,QAAU,WACzBzuB,KAAKoE,QAAQqjB,SAEjBhe,EAAW,CACP,kBACD4xb,EAAS9xb,UAAW,cAAU,GACjCE,EAAW,CACP,kBACD4xb,EAAS9xb,UAAW,eAAW,GAClCE,EAAW,CACP,gBAAS,IACV4xb,EAAS9xb,UAAW,eAAW,GAClCE,EAAW,CACP,eAAS,KACV4xb,EAAS9xb,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV4xb,EAAS9xb,UAAW,gBAAY,GACnCE,EAAW,CACP,gBAAS,IACV4xb,EAAS9xb,UAAW,qBAAiB,GACxCE,EAAW,CACP,eAAS,KACV4xb,EAAS9xb,UAAW,aAAS,GAChCE,EAAW,CACP,eAAS,UACV4xb,EAAS9xb,UAAW,qBAAiB,GACxCE,EAAW,CACP,eAAS,KACV4xb,EAAS9xb,UAAW,YAAQ,GAC/BE,EAAW,CACP,eAAS,KACV4xb,EAAS9xb,UAAW,aAAS,GAChCE,EAAW,CACP,gBAAS,IACV4xb,EAAS9xb,UAAW,2BAAuB,GAC9CE,EAAW,CACP,eAAS,KACV4xb,EAAS9xb,UAAW,sBAAkB,GACzC8xb,EAAW5xb,EAAW,CAClB,QACD4xb,GACIA,EAtlBkB,CAulB3B,S,wBChoBA,SAAUv7b,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIw0B,EAAoB,2FACpBC,EAAyB,oFACzBJ,EAAc,yKACdD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGJwna,EAAK57b,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFC,MAC3F,KAEJC,YAAa,iEAAiED,MAC1E,KAEJi0B,YAAaA,EACbE,iBAAkBF,EAClBG,kBAAmBA,EACnBC,uBAAwBA,EACxBL,YAAaA,EACbM,gBAAiBN,EACjBO,iBAAkBP,EAClB9zB,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1Cw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNC,EAAG,oBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,aACJC,EAAG,YACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WACJ6yB,EAAG,cACHC,GAAI,cACJ7yB,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERgB,uBAAwB,eACxBC,QAAS,SAAUI,EAAQgF,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOhF,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDpB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAOo5b,M,kCChHX;;;;;;AAOA,IAAIC,EAAc/yb,OAAO4zL,OAAO,IAIhC,SAASo/P,EAASl/W,GAChB,YAAal3E,IAANk3E,GAAyB,OAANA,EAG5B,SAASu3T,EAAOv3T,GACd,YAAal3E,IAANk3E,GAAyB,OAANA,EAG5B,SAASyyW,EAAQzyW,GACf,OAAa,IAANA,EAGT,SAASm/W,EAASn/W,GAChB,OAAa,IAANA,EAMT,SAASo/W,EAAah2b,GACpB,MACmB,kBAAVA,GACU,kBAAVA,GAEU,kBAAVA,GACU,mBAAVA,EASX,SAASwiG,EAAU77D,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAMhC,IAAIsvZ,EAAYnzb,OAAOQ,UAAUmQ,SAUjC,SAASq+B,EAAenL,GACtB,MAA+B,oBAAxBsvZ,EAAUzvb,KAAKmgC,GAGxB,SAASuvZ,EAAUt/W,GACjB,MAA6B,oBAAtBq/W,EAAUzvb,KAAKowE,GAMxB,SAASu/W,EAAmB53a,GAC1B,IAAI/gB,EAAI8L,WAAW1P,OAAO2kB,IAC1B,OAAO/gB,GAAK,GAAKgO,KAAK6sD,MAAM76D,KAAOA,GAAK6xW,SAAS9wV,GAGnD,SAAS2nH,EAAW3nH,GAClB,OACE4vX,EAAM5vX,IACc,oBAAbA,EAAIsP,MACU,oBAAdtP,EAAIi8E,MAOf,SAAS/mF,EAAU8K,GACjB,OAAc,MAAPA,EACH,GACAtb,MAAM+nC,QAAQzsB,IAASuzB,EAAcvzB,IAAQA,EAAI9K,WAAawib,EAC5DrsZ,KAAKC,UAAUtrB,EAAK,KAAM,GAC1B3kB,OAAO2kB,GAOf,SAAS63a,EAAU73a,GACjB,IAAI/gB,EAAI8L,WAAWiV,GACnB,OAAOnB,MAAM5f,GAAK+gB,EAAM/gB,EAO1B,SAAS64b,EACPlhZ,EACAmhZ,GAIA,IAFA,IAAIjtb,EAAMvG,OAAOS,OAAO,MACpBg3G,EAAOplE,EAAI/6C,MAAM,KACZ+J,EAAI,EAAGA,EAAIo2G,EAAKz2G,OAAQK,IAC/BkF,EAAIkxG,EAAKp2G,KAAM,EAEjB,OAAOmyb,EACH,SAAU/3a,GAAO,OAAOlV,EAAIkV,EAAIze,gBAChC,SAAUye,GAAO,OAAOlV,EAAIkV,IAMlC,IAAIg4a,EAAeF,EAAQ,kBAAkB,GAKzCG,EAAsBH,EAAQ,8BAKlC,SAASrub,EAAQq5B,EAAKlP,GACpB,GAAIkP,EAAIv9B,OAAQ,CACd,IAAI+K,EAAQwyB,EAAIp6B,QAAQkrB,GACxB,GAAItjB,GAAS,EACX,OAAOwyB,EAAIvyB,OAAOD,EAAO,IAQ/B,IAAI1L,EAAiBL,OAAOQ,UAAUH,eACtC,SAASszb,EAAQ9vZ,EAAK/oC,GACpB,OAAOuF,EAAeqD,KAAKmgC,EAAK/oC,GAMlC,SAAS84b,EAAQ7xZ,GACf,IAAIo5D,EAAQn7F,OAAOS,OAAO,MAC1B,OAAO,SAAoB4xC,GACzB,IAAI4wF,EAAM9nC,EAAM9oD,GAChB,OAAO4wF,IAAQ9nC,EAAM9oD,GAAOtQ,EAAGsQ,KAOnC,IAAIwhZ,EAAa,SACbC,EAAWF,GAAO,SAAUvhZ,GAC9B,OAAOA,EAAI34B,QAAQm6a,GAAY,SAAU7sD,EAAGlmY,GAAK,OAAOA,EAAIA,EAAE8vI,cAAgB,SAM5EmjT,EAAaH,GAAO,SAAUvhZ,GAChC,OAAOA,EAAIvzB,OAAO,GAAG8xH,cAAgBv+F,EAAIrlC,MAAM,MAM7Cgnb,EAAc,aACdC,EAAYL,GAAO,SAAUvhZ,GAC/B,OAAOA,EAAI34B,QAAQs6a,EAAa,OAAOh3b,iBAYzC,SAASk3b,EAAcnyZ,EAAIoyZ,GACzB,SAASC,EAAStia,GAChB,IAAIxyB,EAAIyB,UAAUC,OAClB,OAAO1B,EACHA,EAAI,EACFyiC,EAAG5+B,MAAMgxb,EAAKpzb,WACdghC,EAAGr+B,KAAKywb,EAAKria,GACfiQ,EAAGr+B,KAAKywb,GAId,OADAC,EAAQC,QAAUtyZ,EAAG/gC,OACdozb,EAGT,SAASE,EAAYvyZ,EAAIoyZ,GACvB,OAAOpyZ,EAAGt8B,KAAK0ub,GAGjB,IAAI1ub,EAAO+rC,SAAShxC,UAAUiF,KAC1B6ub,EACAJ,EAKJ,SAASK,EAAS98U,EAAM92F,GACtBA,EAAQA,GAAS,EACjB,IAAItf,EAAIo2G,EAAKz2G,OAAS2f,EAClB4gB,EAAM,IAAIphC,MAAMkB,GACpB,MAAOA,IACLkgC,EAAIlgC,GAAKo2G,EAAKp2G,EAAIsf,GAEpB,OAAO4gB,EAMT,SAASggU,EAAQ4mC,EAAIqsD,GACnB,IAAK,IAAI15b,KAAO05b,EACdrsD,EAAGrtY,GAAO05b,EAAM15b,GAElB,OAAOqtY,EAMT,SAASniO,EAAUznI,GAEjB,IADA,IAAI8H,EAAM,GACDhlC,EAAI,EAAGA,EAAIk9B,EAAIv9B,OAAQK,IAC1Bk9B,EAAIl9B,IACNkgW,EAAOl7T,EAAK9H,EAAIl9B,IAGpB,OAAOglC,EAUT,SAASouZ,EAAM3ia,EAAG/xB,EAAGe,IAKrB,IAAIs3R,EAAK,SAAUtmQ,EAAG/xB,EAAGe,GAAK,OAAO,GAOjC4zb,EAAW,SAAU1tD,GAAK,OAAOA,GAKrC,SAAS2tD,EAAepwa,GACtB,OAAOA,EAAQgwD,QAAO,SAAUpgE,EAAMrb,GACpC,OAAOqb,EAAKw0B,OAAO7vC,EAAE87b,YAAc,MAClC,IAAIhpb,KAAK,KAOd,SAASipb,EAAY/ia,EAAG/xB,GACtB,GAAI+xB,IAAM/xB,EAAK,OAAO,EACtB,IAAI+0b,EAAYp1V,EAAS5tE,GACrBija,EAAYr1V,EAAS3/F,GACzB,IAAI+0b,IAAaC,EAwBV,OAAKD,IAAcC,GACjBj+b,OAAOg7B,KAAOh7B,OAAOiJ,GAxB5B,IACE,IAAIi1b,EAAW70b,MAAM+nC,QAAQpW,GACzBmja,EAAW90b,MAAM+nC,QAAQnoC,GAC7B,GAAIi1b,GAAYC,EACd,OAAOnja,EAAE9wB,SAAWjB,EAAEiB,QAAU8wB,EAAE05C,OAAM,SAAU/+D,EAAGpL,GACnD,OAAOwzb,EAAWpob,EAAG1M,EAAEsB,OAEpB,GAAIywB,aAAara,MAAQ1X,aAAa0X,KAC3C,OAAOqa,EAAEha,YAAc/X,EAAE+X,UACpB,GAAKk9a,GAAaC,EAQvB,OAAO,EAPP,IAAIC,EAAQl1b,OAAOmU,KAAK2d,GACpBqja,EAAQn1b,OAAOmU,KAAKpU,GACxB,OAAOm1b,EAAMl0b,SAAWm0b,EAAMn0b,QAAUk0b,EAAM1pX,OAAM,SAAU1wE,GAC5D,OAAO+5b,EAAW/ia,EAAEh3B,GAAMiF,EAAEjF,OAMhC,MAAO2R,GAEP,OAAO,GAcb,SAAS2ob,EAAc72Z,EAAK9iB,GAC1B,IAAK,IAAIpa,EAAI,EAAGA,EAAIk9B,EAAIv9B,OAAQK,IAC9B,GAAIwzb,EAAWt2Z,EAAIl9B,GAAIoa,GAAQ,OAAOpa,EAExC,OAAQ,EAMV,SAASgyY,EAAMtxW,GACb,IAAI+xW,GAAS,EACb,OAAO,WACAA,IACHA,GAAS,EACT/xW,EAAG5+B,MAAMlM,KAAM8J,aAKrB,IAAIs0b,EAAW,uBAEXC,EAAc,CAChB,YACA,YACA,UAGEC,EAAkB,CACpB,eACA,UACA,cACA,UACA,eACA,UACA,gBACA,YACA,YACA,cACA,gBACA,kBAOEpra,EAAS,CAKX2hX,sBAAuB9rY,OAAOS,OAAO,MAKrC2mI,QAAQ,EAKRouT,eAAe,EAKf9uT,UAAU,EAKVksQ,aAAa,EAKb7/B,aAAc,KAKd0iF,YAAa,KAKbC,gBAAiB,GAMjBC,SAAU31b,OAAOS,OAAO,MAMxBm1b,cAAex9J,EAMfy9J,eAAgBz9J,EAMhB09J,iBAAkB19J,EAKlB29J,gBAAiBtB,EAKjBuB,qBAAsBtB,EAMtBuB,YAAa79J,EAMbkhF,OAAO,EAKP48E,gBAAiBX,GAUfY,EAAgB,8JAKpB,SAASC,EAAY/jZ,GACnB,IAAIvxC,GAAKuxC,EAAM,IAAI/c,WAAW,GAC9B,OAAa,KAANx0B,GAAoB,KAANA,EAMvB,SAASm/H,EAAKp8F,EAAK/oC,EAAK2gB,EAAK8tF,GAC3BvpG,OAAOsB,eAAeuiC,EAAK/oC,EAAK,CAC9BoC,MAAOue,EACP8tF,aAAcA,EACd+kH,UAAU,EACV9kH,cAAc,IAOlB,IAAI6sV,EAAS,IAAIvoa,OAAQ,KAAQqoa,EAAoB,OAAI,WACzD,SAAS3pD,EAAW51U,GAClB,IAAIy/X,EAAO1/b,KAAKigE,GAAhB,CAGA,IAAI01U,EAAW11U,EAAKt/D,MAAM,KAC1B,OAAO,SAAUusC,GACf,IAAK,IAAIxiC,EAAI,EAAGA,EAAIirY,EAAStrY,OAAQK,IAAK,CACxC,IAAKwiC,EAAO,OACZA,EAAMA,EAAIyoW,EAASjrY,IAErB,OAAOwiC,IAOX,IAmCIyyZ,EAnCAC,EAAW,aAAe,GAG1BrqD,EAA8B,qBAAXhmY,OACnBswb,EAAkC,qBAAlBC,iBAAmCA,cAAczha,SACjE0ha,GAAeF,GAAUC,cAAczha,SAASh4B,cAChD25b,GAAKzqD,GAAahmY,OAAO6uB,UAAUkB,UAAUj5B,cAC7C+sD,GAAO4sY,IAAM,eAAehgc,KAAKggc,IACjCC,GAAQD,IAAMA,GAAGxyb,QAAQ,YAAc,EACvC0yb,GAASF,IAAMA,GAAGxyb,QAAQ,SAAW,EAErC2yb,IADaH,IAAMA,GAAGxyb,QAAQ,WACrBwyb,IAAM,uBAAuBhgc,KAAKggc,KAA0B,QAAjBD,IAGpDK,IAFWJ,IAAM,cAAchgc,KAAKggc,IACtBA,IAAM,YAAYhgc,KAAKggc,IAC9BA,IAAMA,GAAGv3b,MAAM,mBAGtB43b,GAAc,GAAKl8Z,MAEnBm8Z,IAAkB,EACtB,GAAI/qD,EACF,IACE,IAAI+B,GAAO,GACXjuY,OAAOsB,eAAe2sY,GAAM,UAAW,CACrC5vW,IAAK,WAEH44Z,IAAkB,KAGtB/wb,OAAO+xC,iBAAiB,eAAgB,KAAMg2V,IAC9C,MAAOxhY,KAMX,IAAIyqb,GAAoB,WAWtB,YAVkBt6b,IAAd05b,IAOAA,GALGpqD,IAAcsqD,GAA4B,qBAAXz/b,IAGtBA,EAAO,YAAgD,WAAlCA,EAAO,WAAWijL,IAAIm9Q,UAKpDb,GAIL5vT,GAAWwlQ,GAAahmY,OAAOo8H,6BAGnC,SAAS80T,GAAUC,GACjB,MAAuB,oBAATA,GAAuB,cAAc1gc,KAAK0gc,EAAK1mb,YAG/D,IAII2mb,GAJA3jD,GACgB,qBAAX9kN,QAA0BuoQ,GAASvoQ,SACvB,qBAAZ1tL,SAA2Bi2b,GAASj2b,QAAQo2b,SAMnDD,GAFiB,qBAARE,KAAuBJ,GAASI,KAElCA,IAGc,WACnB,SAASA,IACPvgc,KAAKw1C,IAAMzsC,OAAOS,OAAO,MAY3B,OAVA+2b,EAAIh3b,UAAUswN,IAAM,SAAch2N,GAChC,OAAyB,IAAlB7D,KAAKw1C,IAAI3xC,IAElB08b,EAAIh3b,UAAU4K,IAAM,SAActQ,GAChC7D,KAAKw1C,IAAI3xC,IAAO,GAElB08b,EAAIh3b,UAAUqH,MAAQ,WACpB5Q,KAAKw1C,IAAMzsC,OAAOS,OAAO,OAGpB+2b,EAdW,GAoBtB,IAAInzO,GAAOowO,EA8FP5xZ,GAAM,EAMN40Z,GAAM,WACRxgc,KAAK4T,GAAKg4B,KACV5rC,KAAK4vI,KAAO,IAGd4wT,GAAIj3b,UAAUk3b,OAAS,SAAiBpuT,GACtCryI,KAAK4vI,KAAKl7H,KAAK29H,IAGjBmuT,GAAIj3b,UAAUm3b,UAAY,SAAoBruT,GAC5CpkI,EAAOjO,KAAK4vI,KAAMyC,IAGpBmuT,GAAIj3b,UAAUo3b,OAAS,WACjBH,GAAI72b,QACN62b,GAAI72b,OAAOi3b,OAAO5gc,OAItBwgc,GAAIj3b,UAAUkY,OAAS,WAErB,IAAImuH,EAAO5vI,KAAK4vI,KAAK75H,QAOrB,IAAK,IAAI3L,EAAI,EAAG/B,EAAIunI,EAAK7lI,OAAQK,EAAI/B,EAAG+B,IACtCwlI,EAAKxlI,GAAGuiC,UAOZ6zZ,GAAI72b,OAAS,KACb,IAAIk3b,GAAc,GAElB,SAASC,GAAYn3b,GACnBk3b,GAAYnsb,KAAK/K,GACjB62b,GAAI72b,OAASA,EAGf,SAASo3b,KACPF,GAAYrzY,MACZgzY,GAAI72b,OAASk3b,GAAYA,GAAY92b,OAAS,GAKhD,IAAIi3b,GAAQ,SACV/0W,EACA93D,EACA7L,EACAkZ,EACAy/Z,EACAllV,EACAmlV,EACAC,GAEAnhc,KAAKisF,IAAMA,EACXjsF,KAAKm0B,KAAOA,EACZn0B,KAAKsoB,SAAWA,EAChBtoB,KAAKwhC,KAAOA,EACZxhC,KAAKihc,IAAMA,EACXjhc,KAAKohc,QAAKz7b,EACV3F,KAAK+7G,QAAUA,EACf/7G,KAAKqhc,eAAY17b,EACjB3F,KAAKshc,eAAY37b,EACjB3F,KAAKuhc,eAAY57b,EACjB3F,KAAK6D,IAAMswB,GAAQA,EAAKtwB,IACxB7D,KAAKkhc,iBAAmBA,EACxBlhc,KAAK+wY,uBAAoBprY,EACzB3F,KAAKwrD,YAAS7lD,EACd3F,KAAK8vK,KAAM,EACX9vK,KAAK+zY,UAAW,EAChB/zY,KAAKwhc,cAAe,EACpBxhc,KAAKyhc,WAAY,EACjBzhc,KAAK0hc,UAAW,EAChB1hc,KAAK2hc,QAAS,EACd3hc,KAAKmhc,aAAeA,EACpBnhc,KAAK4hc,eAAYj8b,EACjB3F,KAAK6hc,oBAAqB,GAGxBj1T,GAAqB,CAAElkF,MAAO,CAAE6pD,cAAc,IAIlDq6B,GAAmBlkF,MAAMthB,IAAM,WAC7B,OAAOpnC,KAAK+wY,mBAGdhoY,OAAOykI,iBAAkBwzT,GAAMz3b,UAAWqjI,IAE1C,IAAIk1T,GAAmB,SAAUtga,QACjB,IAATA,IAAkBA,EAAO,IAE9B,IAAI4nE,EAAO,IAAI43V,GAGf,OAFA53V,EAAK5nE,KAAOA,EACZ4nE,EAAKq4V,WAAY,EACVr4V,GAGT,SAAS24V,GAAiBv9a,GACxB,OAAO,IAAIw8a,QAAMr7b,OAAWA,OAAWA,EAAW9F,OAAO2kB,IAO3D,SAASw9a,GAAYlxD,GACnB,IAAI5tQ,EAAS,IAAI89T,GACflwD,EAAM7kT,IACN6kT,EAAM38W,KAIN28W,EAAMxoX,UAAYwoX,EAAMxoX,SAASvS,QACjC+6X,EAAMtvW,KACNsvW,EAAMmwD,IACNnwD,EAAM/0R,QACN+0R,EAAMowD,iBACNpwD,EAAMqwD,cAWR,OATAj+T,EAAOk+T,GAAKtwD,EAAMswD,GAClBl+T,EAAO6wQ,SAAWjD,EAAMiD,SACxB7wQ,EAAOr/H,IAAMitY,EAAMjtY,IACnBq/H,EAAOu+T,UAAY3wD,EAAM2wD,UACzBv+T,EAAOm+T,UAAYvwD,EAAMuwD,UACzBn+T,EAAOo+T,UAAYxwD,EAAMwwD,UACzBp+T,EAAOq+T,UAAYzwD,EAAMywD,UACzBr+T,EAAO0+T,UAAY9wD,EAAM8wD,UACzB1+T,EAAOw+T,UAAW,EACXx+T,EAQT,IAAI++T,GAAa/4b,MAAMK,UACnB24b,GAAen5b,OAAOS,OAAOy4b,IAE7BE,GAAiB,CACnB,OACA,MACA,QACA,UACA,SACA,OACA,WAMFA,GAAe1ua,SAAQ,SAAUL,GAE/B,IAAIue,EAAWswZ,GAAW7ua,GAC1B41G,EAAIk5T,GAAc9ua,GAAQ,WACxB,IAAI7F,EAAO,GAAI9C,EAAM3gB,UAAUC,OAC/B,MAAQ0gB,IAAQ8C,EAAM9C,GAAQ3gB,UAAW2gB,GAEzC,IAEI+wB,EAFAz3C,EAAS4tC,EAASzlC,MAAMlM,KAAMutB,GAC9B60a,EAAKpic,KAAKqic,OAEd,OAAQjva,GACN,IAAK,OACL,IAAK,UACHooB,EAAWjuB,EACX,MACF,IAAK,SACHiuB,EAAWjuB,EAAKxX,MAAM,GACtB,MAKJ,OAHIylC,GAAY4mZ,EAAGE,aAAa9mZ,GAEhC4mZ,EAAGG,IAAI9gb,SACA1d,QAMX,IAAIy+b,GAAYz5b,OAAO8gX,oBAAoBq4E,IAMvCO,IAAgB,EAEpB,SAASC,GAAiBz8b,GACxBw8b,GAAgBx8b,EASlB,IAAIs1W,GAAW,SAAmBt1W,GAChCjG,KAAKiG,MAAQA,EACbjG,KAAKuic,IAAM,IAAI/B,GACfxgc,KAAK2ic,QAAU,EACf35T,EAAI/iI,EAAO,SAAUjG,MACjBkJ,MAAM+nC,QAAQhrC,IACZq5b,EACFsD,GAAa38b,EAAOi8b,IAEpBW,GAAY58b,EAAOi8b,GAAcM,IAEnCxic,KAAKsic,aAAar8b,IAElBjG,KAAK8ic,KAAK78b,IA+Bd,SAAS28b,GAAcj5b,EAAQ0lK,GAE7B1lK,EAAOV,UAAYomK,EASrB,SAASwzR,GAAal5b,EAAQ0lK,EAAKnyJ,GACjC,IAAK,IAAI9S,EAAI,EAAG/B,EAAI6U,EAAKnT,OAAQK,EAAI/B,EAAG+B,IAAK,CAC3C,IAAIvG,EAAMqZ,EAAK9S,GACf4+H,EAAIr/H,EAAQ9F,EAAKwrK,EAAIxrK,KASzB,SAASk/b,GAAS98b,EAAO+8b,GAIvB,IAAIZ,EAHJ,GAAK35V,EAASxiG,MAAUA,aAAiB+6b,IAkBzC,OAdItE,EAAOz2b,EAAO,WAAaA,EAAMo8b,kBAAkB9mF,GACrD6mF,EAAKn8b,EAAMo8b,OAEXI,KACCxC,OACA/2b,MAAM+nC,QAAQhrC,IAAU8xC,EAAc9xC,KACvC8C,OAAOk6b,aAAah9b,KACnBA,EAAMi9b,SAEPd,EAAK,IAAI7mF,GAASt1W,IAEhB+8b,GAAcZ,GAChBA,EAAGO,UAEEP,EAMT,SAASe,GACPv2Z,EACA/oC,EACA2gB,EACA4+a,EACAC,GAEA,IAAId,EAAM,IAAI/B,GAEVrpQ,EAAWpuL,OAAOkB,yBAAyB2iC,EAAK/oC,GACpD,IAAIszL,IAAsC,IAA1BA,EAAS5kF,aAAzB,CAKA,IAAI2+B,EAASimD,GAAYA,EAAS/vJ,IAC9Bk8Z,EAASnsQ,GAAYA,EAAS3hJ,IAC5B07F,IAAUoyT,GAAgC,IAArBx5b,UAAUC,SACnCya,EAAMooB,EAAI/oC,IAGZ,IAAI0/b,GAAWF,GAAWN,GAAQv+a,GAClCzb,OAAOsB,eAAeuiC,EAAK/oC,EAAK,CAC9ByuG,YAAY,EACZC,cAAc,EACdnrE,IAAK,WACH,IAAInhC,EAAQirI,EAASA,EAAOzkI,KAAKmgC,GAAOpoB,EAUxC,OATIg8a,GAAI72b,SACN44b,EAAI5B,SACA4C,IACFA,EAAQhB,IAAI5B,SACRz3b,MAAM+nC,QAAQhrC,IAChBu9b,GAAYv9b,KAIXA,GAETuvC,IAAK,SAAyB43E,GAC5B,IAAInnH,EAAQirI,EAASA,EAAOzkI,KAAKmgC,GAAOpoB,EAEpC4oG,IAAWnnH,GAAUmnH,IAAWA,GAAUnnH,IAAUA,GAQpDirI,IAAWoyT,IACXA,EACFA,EAAO72b,KAAKmgC,EAAKwgF,GAEjB5oG,EAAM4oG,EAERm2U,GAAWF,GAAWN,GAAQ31U,GAC9Bm1U,EAAI9gb,cAUV,SAAS+zB,GAAK7rC,EAAQ9F,EAAK2gB,GAMzB,GAAItb,MAAM+nC,QAAQtnC,IAAWyyb,EAAkBv4b,GAG7C,OAFA8F,EAAOI,OAAS0H,KAAKyP,IAAIvX,EAAOI,OAAQlG,GACxC8F,EAAOoL,OAAOlR,EAAK,EAAG2gB,GACfA,EAET,GAAI3gB,KAAO8F,KAAY9F,KAAOkF,OAAOQ,WAEnC,OADAI,EAAO9F,GAAO2gB,EACPA,EAET,IAAI49a,EAAK,EAASC,OAClB,OAAI14b,EAAOu5b,QAAWd,GAAMA,EAAGO,QAKtBn+a,EAEJ49a,GAILe,GAAkBf,EAAGn8b,MAAOpC,EAAK2gB,GACjC49a,EAAGG,IAAI9gb,SACA+C,IALL7a,EAAO9F,GAAO2gB,EACPA,GAUX,SAASi/a,GAAK95b,EAAQ9F,GAMpB,GAAIqF,MAAM+nC,QAAQtnC,IAAWyyb,EAAkBv4b,GAC7C8F,EAAOoL,OAAOlR,EAAK,OADrB,CAIA,IAAIu+b,EAAK,EAASC,OACd14b,EAAOu5b,QAAWd,GAAMA,EAAGO,SAO1BjG,EAAO/yb,EAAQ9F,YAGb8F,EAAO9F,GACTu+b,GAGLA,EAAGG,IAAI9gb,WAOT,SAAS+hb,GAAav9b,GACpB,IAAK,IAAIuP,OAAI,EAAUpL,EAAI,EAAG/B,EAAIpC,EAAM8D,OAAQK,EAAI/B,EAAG+B,IACrDoL,EAAIvP,EAAMmE,GACVoL,GAAKA,EAAE6sb,QAAU7sb,EAAE6sb,OAAOE,IAAI5B,SAC1Bz3b,MAAM+nC,QAAQz7B,IAChBgub,GAAYhub,GAhNlB+lW,GAAShyW,UAAUu5b,KAAO,SAAel2Z,GAEvC,IADA,IAAI1vB,EAAOnU,OAAOmU,KAAK0vB,GACdxiC,EAAI,EAAGA,EAAI8S,EAAKnT,OAAQK,IAC/B+4b,GAAkBv2Z,EAAK1vB,EAAK9S,KAOhCmxW,GAAShyW,UAAU+4b,aAAe,SAAuBlxZ,GACvD,IAAK,IAAIhnC,EAAI,EAAG/B,EAAI+oC,EAAMrnC,OAAQK,EAAI/B,EAAG+B,IACvC24b,GAAQ3xZ,EAAMhnC,KAgNlB,IAAIwqY,GAAS1hX,EAAO2hX,sBAoBpB,SAAS1uS,GAAW+qS,EAAI9nW,GACtB,IAAKA,EAAQ,OAAO8nW,EAOpB,IANA,IAAIrtY,EAAK6/b,EAAOC,EAEZzmb,EAAOw/X,GACPxyY,QAAQo2b,QAAQl3Z,GAChBrgC,OAAOmU,KAAKksB,GAEPh/B,EAAI,EAAGA,EAAI8S,EAAKnT,OAAQK,IAC/BvG,EAAMqZ,EAAK9S,GAEC,WAARvG,IACJ6/b,EAAQxyD,EAAGrtY,GACX8/b,EAAUv6Z,EAAKvlC,GACV64b,EAAOxrD,EAAIrtY,GAGd6/b,IAAUC,GACV5rZ,EAAc2rZ,IACd3rZ,EAAc4rZ,IAEdx9V,GAAUu9V,EAAOC,GANjBnuZ,GAAI07V,EAAIrtY,EAAK8/b,IASjB,OAAOzyD,EAMT,SAAS0yD,GACPC,EACAC,EACAlzD,GAEA,OAAKA,EAoBI,WAEL,IAAImzD,EAAmC,oBAAbD,EACtBA,EAASr3b,KAAKmkY,EAAIA,GAClBkzD,EACAE,EAAmC,oBAAdH,EACrBA,EAAUp3b,KAAKmkY,EAAIA,GACnBizD,EACJ,OAAIE,EACK59V,GAAU49V,EAAcC,GAExBA,GA7BNF,EAGAD,EAQE,WACL,OAAO19V,GACe,oBAAb29V,EAA0BA,EAASr3b,KAAKzM,KAAMA,MAAQ8jc,EACxC,oBAAdD,EAA2BA,EAAUp3b,KAAKzM,KAAMA,MAAQ6jc,IAV1DC,EAHAD,EA2Db,SAASI,GACPJ,EACAC,GAEA,IAAI10Z,EAAM00Z,EACND,EACEA,EAAUnyZ,OAAOoyZ,GACjB56b,MAAM+nC,QAAQ6yZ,GACZA,EACA,CAACA,GACLD,EACJ,OAAOz0Z,EACH80Z,GAAY90Z,GACZA,EAGN,SAAS80Z,GAAaC,GAEpB,IADA,IAAI/0Z,EAAM,GACDhlC,EAAI,EAAGA,EAAI+5b,EAAMp6b,OAAQK,KACD,IAA3BglC,EAAIliC,QAAQi3b,EAAM/5b,KACpBglC,EAAI16B,KAAKyvb,EAAM/5b,IAGnB,OAAOglC,EAcT,SAASg1Z,GACPP,EACAC,EACAlzD,EACA/sY,GAEA,IAAIurC,EAAMrmC,OAAOS,OAAOq6b,GAAa,MACrC,OAAIC,EAEKx5F,EAAOl7T,EAAK00Z,GAEZ10Z,EAzEXwlW,GAAOzgX,KAAO,SACZ0va,EACAC,EACAlzD,GAEA,OAAKA,EAcEgzD,GAAcC,EAAWC,EAAUlzD,GAbpCkzD,GAAgC,oBAAbA,EAQdD,EAEFD,GAAcC,EAAWC,IAmCpCxF,EAAgB7qa,SAAQ,SAAUkoF,GAChCi5R,GAAOj5R,GAAQsoV,MAyBjB5F,EAAY5qa,SAAQ,SAAU5c,GAC5B+9X,GAAO/9X,EAAO,KAAOutb,MASvBxvD,GAAO/wW,MAAQ,SACbgga,EACAC,EACAlzD,EACA/sY,GAMA,GAHIggc,IAAc9D,KAAe8D,OAAYl+b,GACzCm+b,IAAa/D,KAAe+D,OAAWn+b,IAEtCm+b,EAAY,OAAO/6b,OAAOS,OAAOq6b,GAAa,MAInD,IAAKA,EAAa,OAAOC,EACzB,IAAIx5Z,EAAM,GAEV,IAAK,IAAI+5Z,KADT/5F,EAAOhgU,EAAKu5Z,GACMC,EAAU,CAC1B,IAAIt4Y,EAASlhB,EAAI+5Z,GACb37Y,EAAQo7Y,EAASO,GACjB74Y,IAAWtiD,MAAM+nC,QAAQua,KAC3BA,EAAS,CAACA,IAEZlhB,EAAI+5Z,GAAS74Y,EACTA,EAAO9Z,OAAOgX,GACdx/C,MAAM+nC,QAAQyX,GAASA,EAAQ,CAACA,GAEtC,OAAOpe,GAMTsqW,GAAOhxW,MACPgxW,GAAOrvW,QACPqvW,GAAO18U,OACP08U,GAAO1kQ,SAAW,SAChB2zT,EACAC,EACAlzD,EACA/sY,GAKA,IAAKggc,EAAa,OAAOC,EACzB,IAAIx5Z,EAAMvhC,OAAOS,OAAO,MAGxB,OAFA8gW,EAAOhgU,EAAKu5Z,GACRC,GAAYx5F,EAAOhgU,EAAKw5Z,GACrBx5Z,GAETsqW,GAAOxwW,QAAUw/Z,GAKjB,IAAIU,GAAe,SAAUT,EAAWC,GACtC,YAAoBn+b,IAAbm+b,EACHD,EACAC,GA+BN,SAASS,GAAgBh4b,EAASqkY,GAChC,IAAIhtW,EAAQr3B,EAAQq3B,MACpB,GAAKA,EAAL,CACA,IACIx5B,EAAGoa,EAAK7c,EADRynC,EAAM,GAEV,GAAIlmC,MAAM+nC,QAAQrN,GAAQ,CACxBx5B,EAAIw5B,EAAM75B,OACV,MAAOK,IACLoa,EAAMof,EAAMx5B,GACO,kBAARoa,IACT7c,EAAOk1b,EAASr4a,GAChB4qB,EAAIznC,GAAQ,CAAEkP,KAAM,YAKnB,GAAIkhC,EAAcnU,GACvB,IAAK,IAAI//B,KAAO+/B,EACdpf,EAAMof,EAAM//B,GACZ8D,EAAOk1b,EAASh5b,GAChBurC,EAAIznC,GAAQowC,EAAcvzB,GACtBA,EACA,CAAE3N,KAAM2N,QAEL,EAOXjY,EAAQq3B,MAAQwL,GAMlB,SAASo1Z,GAAiBj4b,EAASqkY,GACjC,IAAI14U,EAAS3rD,EAAQ2rD,OACrB,GAAKA,EAAL,CACA,IAAIusY,EAAal4b,EAAQ2rD,OAAS,GAClC,GAAIhvD,MAAM+nC,QAAQinB,GAChB,IAAK,IAAI9tD,EAAI,EAAGA,EAAI8tD,EAAOnuD,OAAQK,IACjCq6b,EAAWvsY,EAAO9tD,IAAM,CAAEg/B,KAAM8uB,EAAO9tD,SAEpC,GAAI2tC,EAAcmgB,GACvB,IAAK,IAAIr0D,KAAOq0D,EAAQ,CACtB,IAAI1zC,EAAM0zC,EAAOr0D,GACjB4gc,EAAW5gc,GAAOk0C,EAAcvzB,GAC5B8lV,EAAO,CAAElhU,KAAMvlC,GAAO2gB,GACtB,CAAE4kB,KAAM5kB,QAEL,GAYb,SAASkgb,GAAqBn4b,GAC5B,IAAIo4b,EAAOp4b,EAAQq4b,WACnB,GAAID,EACF,IAAK,IAAI9gc,KAAO8gc,EAAM,CACpB,IAAIE,EAASF,EAAK9gc,GACI,oBAAXghc,IACTF,EAAK9gc,GAAO,CAAE2K,KAAMq2b,EAAQl4Z,OAAQk4Z,KAoB5C,SAASt4H,GACP/gR,EACA9C,EACAkoV,GAkBA,GAZqB,oBAAVloV,IACTA,EAAQA,EAAMn8C,SAGhBg4b,GAAe77Y,EAAOkoV,GACtB4zD,GAAgB97Y,EAAOkoV,GACvB8zD,GAAoBh8Y,IAMfA,EAAMo8Y,QACLp8Y,EAAMq8Y,UACRv5Y,EAAS+gR,GAAa/gR,EAAQ9C,EAAMq8Y,QAASn0D,IAE3CloV,EAAMxkB,QACR,IAAK,IAAI95B,EAAI,EAAG/B,EAAIqgD,EAAMxkB,OAAOn6B,OAAQK,EAAI/B,EAAG+B,IAC9CohD,EAAS+gR,GAAa/gR,EAAQ9C,EAAMxkB,OAAO95B,GAAIwmY,GAKrD,IACI/sY,EADA0I,EAAU,GAEd,IAAK1I,KAAO2nD,EACVw5Y,EAAWnhc,GAEb,IAAKA,KAAO6kD,EACLg0Y,EAAOlxY,EAAQ3nD,IAClBmhc,EAAWnhc,GAGf,SAASmhc,EAAYnhc,GACnB,IAAIohc,EAAQrwD,GAAO/wY,IAAQygc,GAC3B/3b,EAAQ1I,GAAOohc,EAAMz5Y,EAAO3nD,GAAM6kD,EAAM7kD,GAAM+sY,EAAI/sY,GAEpD,OAAO0I,EAQT,SAAS24b,GACP34b,EACAsK,EACAjD,EACAuxb,GAGA,GAAkB,kBAAPvxb,EAAX,CAGA,IAAIwxb,EAAS74b,EAAQsK,GAErB,GAAI6lb,EAAO0I,EAAQxxb,GAAO,OAAOwxb,EAAOxxb,GACxC,IAAIyxb,EAAcxI,EAASjpb,GAC3B,GAAI8ob,EAAO0I,EAAQC,GAAgB,OAAOD,EAAOC,GACjD,IAAIC,EAAexI,EAAWuI,GAC9B,GAAI3I,EAAO0I,EAAQE,GAAiB,OAAOF,EAAOE,GAElD,IAAIl2Z,EAAMg2Z,EAAOxxb,IAAOwxb,EAAOC,IAAgBD,EAAOE,GAOtD,OAAOl2Z,GAOT,SAASm2Z,GACP1hc,EACA2hc,EACAC,EACA70D,GAEA,IAAIzzX,EAAOqob,EAAY3hc,GACnB6hc,GAAUhJ,EAAO+I,EAAW5hc,GAC5BoC,EAAQw/b,EAAU5hc,GAElB8hc,EAAeC,GAAazyD,QAASh2X,EAAKtG,MAC9C,GAAI8ub,GAAgB,EAClB,GAAID,IAAWhJ,EAAOv/a,EAAM,WAC1BlX,GAAQ,OACH,GAAc,KAAVA,GAAgBA,IAAU+2b,EAAUn5b,GAAM,CAGnD,IAAIgic,EAAcD,GAAa/lc,OAAQsd,EAAKtG,OACxCgvb,EAAc,GAAKF,EAAeE,KACpC5/b,GAAQ,GAKd,QAAcN,IAAVM,EAAqB,CACvBA,EAAQ6/b,GAAoBl1D,EAAIzzX,EAAMtZ,GAGtC,IAAIkic,EAAoBtD,GACxBC,IAAgB,GAChBK,GAAQ98b,GACRy8b,GAAgBqD,GASlB,OAAO9/b,EAMT,SAAS6/b,GAAqBl1D,EAAIzzX,EAAMtZ,GAEtC,GAAK64b,EAAOv/a,EAAM,WAAlB,CAGA,IAAI6rH,EAAM7rH,EAAKmoB,QAYf,OAAIsrW,GAAMA,EAAGt0R,SAASmpV,gBACW9/b,IAA/BirY,EAAGt0R,SAASmpV,UAAU5hc,SACH8B,IAAnBirY,EAAGo1D,OAAOnic,GAEH+sY,EAAGo1D,OAAOnic,GAIG,oBAARmlI,GAA6C,aAAvB8rI,GAAQ33P,EAAKtG,MAC7CmyH,EAAIv8H,KAAKmkY,GACT5nQ,GAqFN,SAAS8rI,GAAShqO,GAChB,IAAI3iC,EAAQ2iC,GAAMA,EAAGpxB,WAAWvR,MAAM,sBACtC,OAAOA,EAAQA,EAAM,GAAK,GAG5B,SAAS89b,GAAYpra,EAAG/xB,GACtB,OAAOgsQ,GAAQj6O,KAAOi6O,GAAQhsQ,GAGhC,SAAS88b,GAAc/ub,EAAMqvb,GAC3B,IAAKh9b,MAAM+nC,QAAQi1Z,GACjB,OAAOD,GAAWC,EAAervb,GAAQ,GAAK,EAEhD,IAAK,IAAIzM,EAAI,EAAGqgB,EAAMy7a,EAAcn8b,OAAQK,EAAIqgB,EAAKrgB,IACnD,GAAI67b,GAAWC,EAAc97b,GAAIyM,GAC/B,OAAOzM,EAGX,OAAQ,EAgDV,SAAS+7b,GAAap0T,EAAK6+P,EAAI5vW,GAG7B8/Z,KACA,IACE,GAAIlwD,EAAI,CACN,IAAIr/N,EAAMq/N,EACV,MAAQr/N,EAAMA,EAAIi/N,QAAU,CAC1B,IAAI2zD,EAAQ5yR,EAAIj1D,SAAS8pV,cACzB,GAAIjC,EACF,IAAK,IAAI/5b,EAAI,EAAGA,EAAI+5b,EAAMp6b,OAAQK,IAChC,IACE,IAAIqsY,GAAgD,IAAtC0tD,EAAM/5b,GAAGqC,KAAK8kK,EAAKx/B,EAAK6+P,EAAI5vW,GAC1C,GAAIy1W,EAAW,OACf,MAAOjhY,IACP6wb,GAAkB7wb,GAAG+7J,EAAK,wBAMpC80R,GAAkBt0T,EAAK6+P,EAAI5vW,GAC3B,QACA+/Z,MAIJ,SAASuF,GACPlqW,EACA2f,EACAxuF,EACAqjX,EACA5vW,GAEA,IAAIoO,EACJ,IACEA,EAAM7hB,EAAO6uE,EAAQlwF,MAAM6vG,EAASxuF,GAAQ6uE,EAAQ3vF,KAAKsvG,GACrD3sE,IAAQA,EAAI8zZ,QAAU/2T,EAAU/8F,KAASA,EAAIm3Z,WAC/Cn3Z,EAAIqxD,OAAM,SAAUjrF,GAAK,OAAO2wb,GAAY3wb,EAAGo7X,EAAI5vW,EAAO,uBAG1DoO,EAAIm3Z,UAAW,GAEjB,MAAO/wb,IACP2wb,GAAY3wb,GAAGo7X,EAAI5vW,GAErB,OAAOoO,EAGT,SAASi3Z,GAAmBt0T,EAAK6+P,EAAI5vW,GACnC,GAAI9N,EAAO4oV,aACT,IACE,OAAO5oV,EAAO4oV,aAAarvW,KAAK,KAAMslI,EAAK6+P,EAAI5vW,GAC/C,MAAOxrB,IAGHA,KAAMu8H,GACRy0T,GAAShxb,GAAG,KAAM,uBAIxBgxb,GAASz0T,EAAK6+P,EAAI5vW,GAGpB,SAASwla,GAAUz0T,EAAK6+P,EAAI5vW,GAK1B,IAAKi0W,IAAasqD,GAA8B,qBAAZ7qT,QAGlC,MAAM3C,EAFN2C,QAAQh/G,MAAMq8G,GAQlB,IAyBI00T,GAzBAC,IAAmB,EAEnBC,GAAY,GACZzqD,IAAU,EAEd,SAAS0qD,KACP1qD,IAAU,EACV,IAAI2qD,EAASF,GAAU5wb,MAAM,GAC7B4wb,GAAU58b,OAAS,EACnB,IAAK,IAAIK,EAAI,EAAGA,EAAIy8b,EAAO98b,OAAQK,IACjCy8b,EAAOz8b,KAwBX,GAAuB,qBAAZmpB,SAA2B4sa,GAAS5sa,SAAU,CACvD,IAAIpqB,GAAIoqB,QAAQC,UAChBiza,GAAY,WACVt9b,GAAE2qB,KAAK8ya,IAMH/G,IAASpqb,WAAW+nb,IAE1BkJ,IAAmB,OACd,GAAK5zY,IAAoC,qBAArBg0Y,mBACzB3G,GAAS2G,mBAEuB,yCAAhCA,iBAAiBptb,WAoBjB+sb,GAJiC,qBAAjBllQ,cAAgC4+P,GAAS5+P,cAI7C,WACVA,aAAaqlQ,KAIH,WACVnxb,WAAWmxb,GAAgB,QAzB5B,CAID,IAAIv3C,GAAU,EACVl2M,GAAW,IAAI2tP,iBAAiBF,IAChCG,GAAW9wb,SAASu6I,eAAe3wJ,OAAOwvZ,KAC9Cl2M,GAAS4pP,QAAQgE,GAAU,CACzBC,eAAe,IAEjBP,GAAY,WACVp3C,IAAWA,GAAU,GAAK,EAC1B03C,GAAS5ya,KAAOt0B,OAAOwvZ,KAEzBq3C,IAAmB,EAerB,SAASl2T,GAAUiC,EAAIyqT,GACrB,IAAI+J,EAiBJ,GAhBAN,GAAUjyb,MAAK,WACb,GAAI+9H,EACF,IACEA,EAAGhmI,KAAKywb,GACR,MAAO1nb,IACP2wb,GAAY3wb,GAAG0nb,EAAK,iBAEb+J,GACTA,EAAS/J,MAGRhhD,KACHA,IAAU,EACVuqD,OAGGh0T,GAAyB,qBAAZl/G,QAChB,OAAO,IAAIA,SAAQ,SAAUC,GAC3Byza,EAAWzza,KAwHjB,IAAI0za,GAAc,IAAI7G,GAOtB,SAAS8G,GAAU3ib,GACjB4ib,GAAU5ib,EAAK0ib,IACfA,GAAYt2b,QAGd,SAASw2b,GAAW5ib,EAAK6ib,GACvB,IAAIj9b,EAAG8S,EACHoqb,EAAMp+b,MAAM+nC,QAAQzsB,GACxB,MAAM8ib,IAAQ7+V,EAASjkF,IAASzb,OAAOq+F,SAAS5iF,IAAQA,aAAew8a,IAAvE,CAGA,GAAIx8a,EAAI69a,OAAQ,CACd,IAAIkF,EAAQ/ib,EAAI69a,OAAOE,IAAI3ub,GAC3B,GAAIyzb,EAAKxtO,IAAI0tO,GACX,OAEFF,EAAKlzb,IAAIozb,GAEX,GAAID,EAAK,CACPl9b,EAAIoa,EAAIza,OACR,MAAOK,IAAOg9b,GAAU5ib,EAAIpa,GAAIi9b,OAC3B,CACLnqb,EAAOnU,OAAOmU,KAAKsH,GACnBpa,EAAI8S,EAAKnT,OACT,MAAOK,IAAOg9b,GAAU5ib,EAAItH,EAAK9S,IAAKi9b,KAM1C,IAAIG,GAAiB7K,GAAO,SAAUh1b,GACpC,IAAIq/W,EAA6B,MAAnBr/W,EAAKkgB,OAAO,GAC1BlgB,EAAOq/W,EAAUr/W,EAAKoO,MAAM,GAAKpO,EACjC,IAAI8/b,EAA6B,MAAnB9/b,EAAKkgB,OAAO,GAC1BlgB,EAAO8/b,EAAU9/b,EAAKoO,MAAM,GAAKpO,EACjC,IAAI8uY,EAA6B,MAAnB9uY,EAAKkgB,OAAO,GAE1B,OADAlgB,EAAO8uY,EAAU9uY,EAAKoO,MAAM,GAAKpO,EAC1B,CACLA,KAAMA,EACNy0Y,KAAMqrD,EACNhxD,QAASA,EACTzvB,QAASA,MAIb,SAAS0gF,GAAiBC,EAAK/2D,GAC7B,SAASg3D,IACP,IAAIC,EAAc/9b,UAEd69b,EAAMC,EAAQD,IAClB,IAAIz+b,MAAM+nC,QAAQ02Z,GAOhB,OAAOrB,GAAwBqB,EAAK,KAAM79b,UAAW8mY,EAAI,gBALzD,IADA,IAAI1tQ,EAASykU,EAAI5xb,QACR3L,EAAI,EAAGA,EAAI84H,EAAOn5H,OAAQK,IACjCk8b,GAAwBpjU,EAAO94H,GAAI,KAAMy9b,EAAaj3D,EAAI,gBAQhE,OADAg3D,EAAQD,IAAMA,EACPC,EAGT,SAASE,GACPptX,EACAqtX,EACA5zb,EACA6zb,EACAC,EACAr3D,GAEA,IAAIjpY,EAAc4pK,EAAK4sI,EAAKpnS,EAC5B,IAAKpP,KAAQ+yE,EACF62F,EAAM72F,EAAG/yE,GAClBw2S,EAAM4pJ,EAAMpgc,GACZoP,EAAQywb,GAAe7/b,GACnBo0b,EAAQxqR,KAKDwqR,EAAQ59I,IACb49I,EAAQxqR,EAAIo2R,OACdp2R,EAAM72F,EAAG/yE,GAAQ+/b,GAAgBn2R,EAAKq/N,IAEpC0+C,EAAOv4a,EAAMqlY,QACf7qO,EAAM72F,EAAG/yE,GAAQsgc,EAAkBlxb,EAAMpP,KAAM4pK,EAAKx6J,EAAM0/X,UAE5DtiY,EAAI4C,EAAMpP,KAAM4pK,EAAKx6J,EAAM0/X,QAAS1/X,EAAMiwW,QAASjwW,EAAMkd,SAChDs9I,IAAQ4sI,IACjBA,EAAIwpJ,IAAMp2R,EACV72F,EAAG/yE,GAAQw2S,IAGf,IAAKx2S,KAAQogc,EACPhM,EAAQrhX,EAAG/yE,MACboP,EAAQywb,GAAe7/b,GACvBqgc,EAAUjxb,EAAMpP,KAAMogc,EAAMpgc,GAAOoP,EAAM0/X,UAO/C,SAASyxD,GAAgBl/T,EAAKm/T,EAASxsV,GAIrC,IAAIisV,EAHA5+T,aAAeg4T,KACjBh4T,EAAMA,EAAI70G,KAAKwnF,OAASqtB,EAAI70G,KAAKwnF,KAAO,KAG1C,IAAIysV,EAAUp/T,EAAIm/T,GAElB,SAASE,IACP1sV,EAAKzvG,MAAMlM,KAAM8J,WAGjBmE,EAAO25b,EAAQD,IAAKU,GAGlBtM,EAAQqM,GAEVR,EAAUF,GAAgB,CAACW,IAGvBj0D,EAAMg0D,EAAQT,MAAQrY,EAAO8Y,EAAQE,SAEvCV,EAAUQ,EACVR,EAAQD,IAAIjzb,KAAK2zb,IAGjBT,EAAUF,GAAgB,CAACU,EAASC,IAIxCT,EAAQU,QAAS,EACjBt/T,EAAIm/T,GAAWP,EAKjB,SAASW,GACPp0a,EACAisa,EACAn0W,GAKA,IAAIu5W,EAAcpF,EAAK7zb,QAAQq3B,MAC/B,IAAIm4Z,EAAQyJ,GAAZ,CAGA,IAAIp2Z,EAAM,GACN/3B,EAAQ8c,EAAK9c,MACbusB,EAAQzP,EAAKyP,MACjB,GAAIwwW,EAAM/8X,IAAU+8X,EAAMxwW,GACxB,IAAK,IAAI//B,KAAO2hc,EAAa,CAC3B,IAAI91U,EAASstU,EAAUn5b,GAiBvB2kc,GAAUp5Z,EAAKxL,EAAO//B,EAAK6rH,GAAQ,IACnC84U,GAAUp5Z,EAAK/3B,EAAOxT,EAAK6rH,GAAQ,GAGvC,OAAOtgF,GAGT,SAASo5Z,GACPp5Z,EACAslE,EACA7wG,EACA6rH,EACA+4U,GAEA,GAAIr0D,EAAM1/R,GAAO,CACf,GAAIgoV,EAAOhoV,EAAM7wG,GAKf,OAJAurC,EAAIvrC,GAAO6wG,EAAK7wG,GACX4kc,UACI/zV,EAAK7wG,IAEP,EACF,GAAI64b,EAAOhoV,EAAMgb,GAKtB,OAJAtgF,EAAIvrC,GAAO6wG,EAAKgb,GACX+4U,UACI/zV,EAAKgb,IAEP,EAGX,OAAO,EAiBT,SAASg5U,GAAyBpgb,GAChC,IAAK,IAAIle,EAAI,EAAGA,EAAIke,EAASve,OAAQK,IACnC,GAAIlB,MAAM+nC,QAAQ3oB,EAASle,IACzB,OAAOlB,MAAMK,UAAUmoC,OAAOxlC,MAAM,GAAIoc,GAG5C,OAAOA,EAOT,SAASqgb,GAAmBrgb,GAC1B,OAAO2za,EAAY3za,GACf,CAACy5a,GAAgBz5a,IACjBpf,MAAM+nC,QAAQ3oB,GACZsgb,GAAuBtgb,QACvB3iB,EAGR,SAASkjc,GAAYz/V,GACnB,OAAOgrS,EAAMhrS,IAASgrS,EAAMhrS,EAAK5nE,OAASw6Z,EAAQ5yV,EAAKq4V,WAGzD,SAASmH,GAAwBtgb,EAAUwgb,GACzC,IACI1+b,EAAGP,EAAG27P,EAAWzrJ,EADjB3qE,EAAM,GAEV,IAAKhlC,EAAI,EAAGA,EAAIke,EAASve,OAAQK,IAC/BP,EAAIye,EAASle,GACT2xb,EAAQlyb,IAAmB,mBAANA,IACzB27P,EAAYp2N,EAAIrlC,OAAS,EACzBgwG,EAAO3qE,EAAIo2N,GAEPt8P,MAAM+nC,QAAQpnC,GACZA,EAAEE,OAAS,IACbF,EAAI++b,GAAuB/+b,GAAKi/b,GAAe,IAAM,IAAM1+b,GAEvDy+b,GAAWh/b,EAAE,KAAOg/b,GAAW9uV,KACjC3qE,EAAIo2N,GAAau8L,GAAgBhoV,EAAKv4E,KAAQ33B,EAAE,GAAI23B,MACpD33B,EAAEkqB,SAEJqb,EAAI16B,KAAKxI,MAAMkjC,EAAKvlC,IAEboyb,EAAYpyb,GACjBg/b,GAAW9uV,GAIb3qE,EAAIo2N,GAAau8L,GAAgBhoV,EAAKv4E,KAAO33B,GAC9B,KAANA,GAETulC,EAAI16B,KAAKqtb,GAAgBl4b,IAGvBg/b,GAAWh/b,IAAMg/b,GAAW9uV,GAE9B3qE,EAAIo2N,GAAau8L,GAAgBhoV,EAAKv4E,KAAO33B,EAAE23B,OAG3C8tZ,EAAOhna,EAASygb,WAClB30D,EAAMvqY,EAAEoiF,MACR8vW,EAAQlyb,EAAEhG,MACVuwY,EAAM00D,KACNj/b,EAAEhG,IAAM,UAAYilc,EAAc,IAAM1+b,EAAI,MAE9CglC,EAAI16B,KAAK7K,KAIf,OAAOulC,EAKT,SAAS45Z,GAAap4D,GACpB,IAAIxsW,EAAUwsW,EAAGt0R,SAASl4E,QACtBA,IACFwsW,EAAGq4D,UAA+B,oBAAZ7ka,EAClBA,EAAQ33B,KAAKmkY,GACbxsW,GAIR,SAAS8ka,GAAgBt4D,GACvB,IAAI7sY,EAASolc,GAAcv4D,EAAGt0R,SAASpkD,OAAQ04U,GAC3C7sY,IACF2+b,IAAgB,GAChB35b,OAAOmU,KAAKnZ,GAAQ0vB,SAAQ,SAAU5vB,GAYlCs/b,GAAkBvyD,EAAI/sY,EAAKE,EAAOF,OAGtC6+b,IAAgB,IAIpB,SAASyG,GAAejxY,EAAQ04U,GAC9B,GAAI14U,EAAQ,CAOV,IALA,IAAIn0D,EAASgF,OAAOS,OAAO,MACvB0T,EAAOw/X,GACPxyY,QAAQo2b,QAAQpoY,GAChBnvD,OAAOmU,KAAKg7C,GAEP9tD,EAAI,EAAGA,EAAI8S,EAAKnT,OAAQK,IAAK,CACpC,IAAIvG,EAAMqZ,EAAK9S,GAEf,GAAY,WAARvG,EAAJ,CACA,IAAIulc,EAAalxY,EAAOr0D,GAAKulC,KACzBqmB,EAASmhV,EACb,MAAOnhV,EAAQ,CACb,GAAIA,EAAOw5Y,WAAavM,EAAOjtY,EAAOw5Y,UAAWG,GAAa,CAC5Drlc,EAAOF,GAAO4rD,EAAOw5Y,UAAUG,GAC/B,MAEF35Y,EAASA,EAAO+gV,QAElB,IAAK/gV,EACH,GAAI,YAAayI,EAAOr0D,GAAM,CAC5B,IAAIwlc,EAAiBnxY,EAAOr0D,GAAKyhC,QACjCvhC,EAAOF,GAAiC,oBAAnBwlc,EACjBA,EAAe58b,KAAKmkY,GACpBy4D,OACK,GAKf,OAAOtlc,GAWX,SAASulc,GACPhhb,EACAyzF,GAEA,IAAKzzF,IAAaA,EAASve,OACzB,MAAO,GAGT,IADA,IAAIq7B,EAAQ,GACHh7B,EAAI,EAAG/B,EAAIigB,EAASve,OAAQK,EAAI/B,EAAG+B,IAAK,CAC/C,IAAIs+C,EAAQpgC,EAASle,GACjB+pB,EAAOu0B,EAAMv0B,KAOjB,GALIA,GAAQA,EAAK9c,OAAS8c,EAAK9c,MAAMi/D,aAC5BniD,EAAK9c,MAAMi/D,KAIf5tB,EAAMqzD,UAAYA,GAAWrzD,EAAM24Y,YAActlV,IACpD5nF,GAAqB,MAAbA,EAAKmiD,MAUZlxC,EAAME,UAAYF,EAAME,QAAU,KAAK5wB,KAAKg0C,OAT7C,CACA,IAAI/gD,EAAOwsB,EAAKmiD,KACZA,EAAQlxC,EAAMz9B,KAAUy9B,EAAMz9B,GAAQ,IACxB,aAAd+gD,EAAMujC,IACR3V,EAAK5hE,KAAKxI,MAAMoqE,EAAM5tB,EAAMpgC,UAAY,IAExCguD,EAAK5hE,KAAKg0C,IAOhB,IAAK,IAAI6gZ,KAAUnka,EACbA,EAAMmka,GAAQh1X,MAAMi1X,YACfpka,EAAMmka,GAGjB,OAAOnka,EAGT,SAASoka,GAAcpgW,GACrB,OAAQA,EAAKq4V,YAAcr4V,EAAK+3V,cAA+B,MAAd/3V,EAAK5nE,KAKxD,SAASioa,GACPrka,EACAska,EACAC,GAEA,IAAIv6Z,EACAw6Z,EAAiB7gc,OAAOmU,KAAKwsb,GAAa3/b,OAAS,EACnD8/b,EAAWzka,IAAUA,EAAM0ka,SAAWF,EACtC/lc,EAAMuhC,GAASA,EAAM2ka,KACzB,GAAK3ka,EAEE,IAAIA,EAAMi0W,YAEf,OAAOj0W,EAAMi0W,YACR,GACLwwD,GACAF,GACAA,IAAc7N,GACdj4b,IAAQ8lc,EAAUI,OACjBH,IACAD,EAAUK,WAIX,OAAOL,EAGP,IAAK,IAAItF,KADTj1Z,EAAM,GACYhK,EACZA,EAAMi/Z,IAAuB,MAAbA,EAAM,KACxBj1Z,EAAIi1Z,GAAS4F,GAAoBP,EAAarF,EAAOj/Z,EAAMi/Z,UAnB/Dj1Z,EAAM,GAwBR,IAAK,IAAI86Z,KAASR,EACVQ,KAAS96Z,IACbA,EAAI86Z,GAASC,GAAgBT,EAAaQ,IAW9C,OANI9ka,GAASr8B,OAAOk6b,aAAa79Z,KAC/B,EAAQi0W,YAAcjqW,GAExB45F,EAAI55F,EAAK,UAAWy6Z,GACpB7gU,EAAI55F,EAAK,OAAQvrC,GACjBmlI,EAAI55F,EAAK,aAAcw6Z,GAChBx6Z,EAGT,SAAS66Z,GAAoBP,EAAa7lc,EAAKinC,GAC7C,IAAI25Z,EAAa,WACf,IAAIr1Z,EAAMtlC,UAAUC,OAAS+gC,EAAG5+B,MAAM,KAAMpC,WAAaghC,EAAG,IAI5D,OAHAsE,EAAMA,GAAsB,kBAARA,IAAqBlmC,MAAM+nC,QAAQ7B,GACnD,CAACA,GACDu5Z,GAAkBv5Z,GACfA,IACU,IAAfA,EAAIrlC,QACY,IAAfqlC,EAAIrlC,QAAgBqlC,EAAI,GAAGqyZ,gBAC1B97b,EACAypC,GAYN,OAPItE,EAAGw7E,OACLv9G,OAAOsB,eAAeq/b,EAAa7lc,EAAK,CACtCujC,IAAKq9Z,EACLnyV,YAAY,EACZC,cAAc,IAGXkyV,EAGT,SAAS0F,GAAgB/ka,EAAOvhC,GAC9B,OAAO,WAAc,OAAOuhC,EAAMvhC,IAQpC,SAASu2H,GACP51G,EACA/I,GAEA,IAAI6uB,EAAKlgC,EAAG/B,EAAG6U,EAAMrZ,EACrB,GAAIqF,MAAM+nC,QAAQzsB,IAAuB,kBAARA,EAE/B,IADA8lB,EAAM,IAAIphC,MAAMsb,EAAIza,QACfK,EAAI,EAAG/B,EAAImc,EAAIza,OAAQK,EAAI/B,EAAG+B,IACjCkgC,EAAIlgC,GAAKqR,EAAO+I,EAAIpa,GAAIA,QAErB,GAAmB,kBAARoa,EAEhB,IADA8lB,EAAM,IAAIphC,MAAMsb,GACXpa,EAAI,EAAGA,EAAIoa,EAAKpa,IACnBkgC,EAAIlgC,GAAKqR,EAAOrR,EAAI,EAAGA,QAEpB,GAAIq+F,EAASjkF,GAClB,GAAIk4X,IAAal4X,EAAIozK,OAAO+mN,UAAW,CACrCr0W,EAAM,GACN,IAAIq0W,EAAWn6X,EAAIozK,OAAO+mN,YACtB56Y,EAAS46Y,EAASn8P,OACtB,OAAQz+I,EAAOg/H,KACbz4F,EAAI51B,KAAK+G,EAAO1X,EAAOkC,MAAOqkC,EAAIvgC,SAClChG,EAAS46Y,EAASn8P,YAKpB,IAFAtlI,EAAOnU,OAAOmU,KAAKsH,GACnB8lB,EAAM,IAAIphC,MAAMgU,EAAKnT,QAChBK,EAAI,EAAG/B,EAAI6U,EAAKnT,OAAQK,EAAI/B,EAAG+B,IAClCvG,EAAMqZ,EAAK9S,GACXkgC,EAAIlgC,GAAKqR,EAAO+I,EAAI3gB,GAAMA,EAAKuG,GAQrC,OAJKgqY,EAAM9pW,KACTA,EAAM,IAER,EAAMy+Z,UAAW,EACVz+Z,EAQT,SAAS8/Z,GACPzic,EACA83Y,EACA77W,EACAyma,GAEA,IACI9+Q,EADA++Q,EAAetqc,KAAKuqc,aAAa5ic,GAEjC2ic,GACF1ma,EAAQA,GAAS,GACbyma,IAOFzma,EAAQ0mU,EAAOA,EAAO,GAAI+/F,GAAazma,IAEzC2nJ,EAAQ++Q,EAAa1ma,IAAU67W,GAE/Bl0N,EAAQvrL,KAAKqlC,OAAO19B,IAAS83Y,EAG/B,IAAI91Y,EAASi6B,GAASA,EAAM0yC,KAC5B,OAAI3sE,EACK3J,KAAKiwY,eAAe,WAAY,CAAE35T,KAAM3sE,GAAU4hL,GAElDA,EASX,SAASi/Q,GAAe52b,GACtB,OAAOsxb,GAAallc,KAAKs8G,SAAU,UAAW1oG,GAAI,IAAS6pb,EAK7D,SAASgN,GAAeC,EAAQ5oQ,GAC9B,OAAI54L,MAAM+nC,QAAQy5Z,IACmB,IAA5BA,EAAOx9b,QAAQ40L,GAEf4oQ,IAAW5oQ,EAStB,SAAS6oQ,GACPC,EACA/mc,EACAgnc,EACAC,EACAC,GAEA,IAAIC,EAAgB93a,EAAOwra,SAAS76b,IAAQgnc,EAC5C,OAAIE,GAAkBD,IAAiB53a,EAAOwra,SAAS76b,GAC9C4mc,GAAcM,EAAgBD,GAC5BE,EACFP,GAAcO,EAAeJ,GAC3BE,EACF9N,EAAU8N,KAAkBjnc,OAD9B,EAUT,SAASonc,GACP92a,EACA83D,EACAhmF,EACAilc,EACAC,GAEA,GAAIllc,EACF,GAAKwiG,EAASxiG,GAKP,CAIL,IAAIyuG,EAHAxrG,MAAM+nC,QAAQhrC,KAChBA,EAAQ8oK,EAAS9oK,IAGnB,IAAImlc,EAAO,SAAWvnc,GACpB,GACU,UAARA,GACQ,UAARA,GACA44b,EAAoB54b,GAEpB6wG,EAAOvgF,MACF,CACL,IAAItd,EAAOsd,EAAK9c,OAAS8c,EAAK9c,MAAMR,KACpC69F,EAAOw2V,GAAUh4a,EAAO8ra,YAAY/yW,EAAKp1E,EAAMhT,GAC3CswB,EAAKk3a,WAAal3a,EAAKk3a,SAAW,IAClCl3a,EAAK9c,QAAU8c,EAAK9c,MAAQ,IAElC,IAAIi0b,EAAezO,EAASh5b,GACxB0nc,EAAgBvO,EAAUn5b,GAC9B,KAAMync,KAAgB52V,MAAW62V,KAAiB72V,KAChDA,EAAK7wG,GAAOoC,EAAMpC,GAEdsnc,GAAQ,CACV,IAAIzwX,EAAKvmD,EAAKumD,KAAOvmD,EAAKumD,GAAK,IAC/BA,EAAI,UAAY72E,GAAQ,SAAU2nc,GAChCvlc,EAAMpC,GAAO2nc,KAMrB,IAAK,IAAI3nc,KAAOoC,EAAOmlc,EAAMvnc,QAGjC,OAAOswB,EAQT,SAASs3a,GACP32b,EACA42b,GAEA,IAAI/O,EAAS38b,KAAK2rc,eAAiB3rc,KAAK2rc,aAAe,IACnD52K,EAAO4nK,EAAO7nb,GAGlB,OAAIigR,IAAS22K,IAIb32K,EAAO4nK,EAAO7nb,GAAS9U,KAAKs8G,SAASjB,gBAAgBvmG,GAAOrI,KAC1DzM,KAAK4rc,aACL,KACA5rc,MAEF6rc,GAAW92K,EAAO,aAAejgR,GAAQ,IARhCigR,EAgBX,SAAS+2K,GACP/2K,EACAjgR,EACAjR,GAGA,OADAgoc,GAAW92K,EAAO,WAAajgR,GAASjR,EAAO,IAAMA,EAAO,KAAM,GAC3DkxR,EAGT,SAAS82K,GACP92K,EACAlxR,EACA89b,GAEA,GAAIz4b,MAAM+nC,QAAQ8jP,GAChB,IAAK,IAAI3qR,EAAI,EAAGA,EAAI2qR,EAAKhrR,OAAQK,IAC3B2qR,EAAK3qR,IAAyB,kBAAZ2qR,EAAK3qR,IACzB2hc,GAAeh3K,EAAK3qR,GAAKvG,EAAM,IAAMuG,EAAIu3b,QAI7CoK,GAAeh3K,EAAMlxR,EAAK89b,GAI9B,SAASoK,GAAgB3iW,EAAMvlG,EAAK89b,GAClCv4V,EAAK2qS,UAAW,EAChB3qS,EAAKvlG,IAAMA,EACXulG,EAAKu4V,OAASA,EAKhB,SAASqK,GAAqB73a,EAAMluB,GAClC,GAAIA,EACF,GAAK8xC,EAAc9xC,GAKZ,CACL,IAAIy0E,EAAKvmD,EAAKumD,GAAKvmD,EAAKumD,GAAK4vR,EAAO,GAAIn2U,EAAKumD,IAAM,GACnD,IAAK,IAAI72E,KAAOoC,EAAO,CACrB,IAAIy2G,EAAWhiC,EAAG72E,GACdooc,EAAOhmc,EAAMpC,GACjB62E,EAAG72E,GAAO64G,EAAW,GAAGhrE,OAAOgrE,EAAUuvV,GAAQA,QAIvD,OAAO93a,EAKT,SAAS+3a,GACPvE,EACAv4Z,EAEA+8Z,EACAC,GAEAh9Z,EAAMA,GAAO,CAAE06Z,SAAUqC,GACzB,IAAK,IAAI/hc,EAAI,EAAGA,EAAIu9b,EAAI59b,OAAQK,IAAK,CACnC,IAAIksE,EAAOqxX,EAAIv9b,GACXlB,MAAM+nC,QAAQqlC,GAChB41X,GAAmB51X,EAAMlnC,EAAK+8Z,GACrB71X,IAELA,EAAKgwC,QACPhwC,EAAKxrC,GAAGw7E,OAAQ,GAElBl3E,EAAIknC,EAAKzyE,KAAOyyE,EAAKxrC,IAMzB,OAHIsha,IACF,EAAMrC,KAAOqC,GAERh9Z,EAKT,SAASi9Z,GAAiBC,EAAS5yV,GACjC,IAAK,IAAItvG,EAAI,EAAGA,EAAIsvG,EAAO3vG,OAAQK,GAAK,EAAG,CACzC,IAAIvG,EAAM61G,EAAOtvG,GACE,kBAARvG,GAAoBA,IAC7Byoc,EAAQ5yV,EAAOtvG,IAAMsvG,EAAOtvG,EAAI,IASpC,OAAOkic,EAMT,SAASC,GAAiBtmc,EAAOq0T,GAC/B,MAAwB,kBAAVr0T,EAAqBq0T,EAASr0T,EAAQA,EAKtD,SAASumc,GAAsB7ic,GAC7BA,EAAO8ic,GAAKX,GACZnic,EAAO+ic,GAAKrQ,EACZ1yb,EAAOgjc,GAAKjzb,EACZ/P,EAAOuvR,GAAK9+J,GACZzwH,EAAOijc,GAAKxC,GACZzgc,EAAOkjc,GAAKjP,EACZj0b,EAAOuM,GAAKiob,EACZx0b,EAAOmjc,GAAKrB,GACZ9hc,EAAOg/H,GAAK6hU,GACZ7gc,EAAOsvR,GAAK0xK,GACZhhc,EAAOsD,GAAKg+b,GACZthc,EAAOojc,GAAKhL,GACZp4b,EAAO2+H,GAAKw5T,GACZn4b,EAAOqjc,GAAKd,GACZvic,EAAOi/H,GAAKojU,GACZric,EAAO0+H,GAAKgkU,GACZ1ic,EAAOsjc,GAAKV,GAKd,SAASW,GACP/4a,EACAyP,EACAtb,EACAkjC,EACA40Y,GAEA,IAKI+M,EALAn/T,EAAShuI,KAETuM,EAAU6zb,EAAK7zb,QAIfmwb,EAAOlxY,EAAQ,SACjB2hZ,EAAYpkc,OAAOS,OAAOgiD,GAE1B2hZ,EAAUC,UAAY5hZ,IAKtB2hZ,EAAY3hZ,EAEZA,EAASA,EAAO4hZ,WAElB,IAAIC,EAAa/d,EAAO/ib,EAAQqvG,WAC5B0xV,GAAqBD,EAEzBrtc,KAAKm0B,KAAOA,EACZn0B,KAAK4jC,MAAQA,EACb5jC,KAAKsoB,SAAWA,EAChBtoB,KAAKwrD,OAASA,EACdxrD,KAAKutc,UAAYp5a,EAAKumD,IAAMohX,EAC5B97b,KAAKwtc,WAAarE,GAAc58b,EAAQ2rD,OAAQ1M,GAChDxrD,KAAKolC,MAAQ,WAOX,OANK4oG,EAAO3oG,QACVoka,GACEt1a,EAAKs5a,YACLz/T,EAAO3oG,OAASika,GAAahhb,EAAUkjC,IAGpCwiF,EAAO3oG,QAGhBt8B,OAAOsB,eAAerK,KAAM,cAAe,CACzCsyG,YAAY,EACZlrE,IAAK,WACH,OAAOqia,GAAqBt1a,EAAKs5a,YAAaztc,KAAKolC,YAKnDioa,IAEFrtc,KAAKs8G,SAAW/vG,EAEhBvM,KAAKqlC,OAASrlC,KAAKolC,QACnBplC,KAAKuqc,aAAed,GAAqBt1a,EAAKs5a,YAAaztc,KAAKqlC,SAG9D94B,EAAQuvG,SACV97G,KAAKooI,GAAK,SAAUvtG,EAAG/xB,EAAGe,EAAG5H,GAC3B,IAAI6uY,EAAQtjY,GAAc2/b,EAAWtya,EAAG/xB,EAAGe,EAAG5H,EAAGqrc,GAKjD,OAJIx8D,IAAU5nY,MAAM+nC,QAAQ6/V,KAC1BA,EAAMywD,UAAYh1b,EAAQuvG,SAC1Bg1R,EAAMuwD,UAAY71Y,GAEbslV,GAGT9wY,KAAKooI,GAAK,SAAUvtG,EAAG/xB,EAAGe,EAAG5H,GAAK,OAAOuL,GAAc2/b,EAAWtya,EAAG/xB,EAAGe,EAAG5H,EAAGqrc,IAMlF,SAASI,GACPtN,EACAqF,EACAtxa,EACAg5a,EACA7kb,GAEA,IAAI/b,EAAU6zb,EAAK7zb,QACfq3B,EAAQ,GACR4ha,EAAcj5b,EAAQq3B,MAC1B,GAAIwwW,EAAMoxD,GACR,IAAK,IAAI3hc,KAAO2hc,EACd5ha,EAAM//B,GAAO0hc,GAAa1hc,EAAK2hc,EAAaC,GAAa3J,QAGvD1nD,EAAMjgX,EAAK9c,QAAUs2b,GAAW/pa,EAAOzP,EAAK9c,OAC5C+8X,EAAMjgX,EAAKyP,QAAU+pa,GAAW/pa,EAAOzP,EAAKyP,OAGlD,IAAIgqa,EAAgB,IAAIV,GACtB/4a,EACAyP,EACAtb,EACA6kb,EACA/M,GAGEtvD,EAAQvkY,EAAQkP,OAAOhP,KAAK,KAAMmhc,EAAcxlU,GAAIwlU,GAExD,GAAI98D,aAAiBkwD,GACnB,OAAO6M,GAA6B/8D,EAAO38W,EAAMy5a,EAAcpiZ,OAAQj/C,EAASqhc,GAC3E,GAAI1kc,MAAM+nC,QAAQ6/V,GAAQ,CAG/B,IAFA,IAAIg9D,EAASnF,GAAkB73D,IAAU,GACrC1hW,EAAM,IAAIlmC,MAAM4kc,EAAO/jc,QAClBK,EAAI,EAAGA,EAAI0jc,EAAO/jc,OAAQK,IACjCglC,EAAIhlC,GAAKyjc,GAA6BC,EAAO1jc,GAAI+pB,EAAMy5a,EAAcpiZ,OAAQj/C,EAASqhc,GAExF,OAAOx+Z,GAIX,SAASy+Z,GAA8B/8D,EAAO38W,EAAMg5a,EAAW5gc,EAASqhc,GAItE,IAAI9wZ,EAAQklZ,GAAWlxD,GASvB,OARAh0V,EAAMukZ,UAAY8L,EAClBrwZ,EAAMwkZ,UAAY/0b,EAId4nB,EAAKmiD,QACNx5B,EAAM3oB,OAAS2oB,EAAM3oB,KAAO,KAAKmiD,KAAOniD,EAAKmiD,MAEzCx5B,EAGT,SAAS6wZ,GAAYz8D,EAAI9nW,GACvB,IAAK,IAAIvlC,KAAOulC,EACd8nW,EAAG2rD,EAASh5b,IAAQulC,EAAKvlC,GA7D7B2oc,GAAqBU,GAAwB3jc,WA0E7C,IAAIwkc,GAAsB,CACxB9iU,KAAM,SAAe6lQ,EAAOk9D,GAC1B,GACEl9D,EAAMC,oBACLD,EAAMC,kBAAkBk9D,cACzBn9D,EAAM38W,KAAK+5a,UACX,CAEA,IAAIC,EAAcr9D,EAClBi9D,GAAoBl9D,SAASs9D,EAAaA,OACrC,CACL,IAAIzlZ,EAAQooV,EAAMC,kBAAoBq9D,GACpCt9D,EACAu9D,IAEF3lZ,EAAM4lZ,OAAON,EAAYl9D,EAAMmwD,SAAMt7b,EAAWqoc,KAIpDn9D,SAAU,SAAmB09D,EAAUz9D,GACrC,IAAIvkY,EAAUukY,EAAMowD,iBAChBx4Y,EAAQooV,EAAMC,kBAAoBw9D,EAASx9D,kBAC/Cy9D,GACE9lZ,EACAn8C,EAAQk5b,UACRl5b,EAAQghc,UACRz8D,EACAvkY,EAAQ+b,WAIZmkB,OAAQ,SAAiBqkW,GACvB,IAAI/0R,EAAU+0R,EAAM/0R,QAChBg1R,EAAoBD,EAAMC,kBACzBA,EAAkB09D,aACrB19D,EAAkB09D,YAAa,EAC/BC,GAAS39D,EAAmB,YAE1BD,EAAM38W,KAAK+5a,YACTnyV,EAAQ0yV,WAMVE,GAAwB59D,GAExB69D,GAAuB79D,GAAmB,KAKhDz2X,QAAS,SAAkBw2X,GACzB,IAAIC,EAAoBD,EAAMC,kBACzBA,EAAkBk9D,eAChBn9D,EAAM38W,KAAK+5a,UAGdW,GAAyB99D,GAAmB,GAF5CA,EAAkBhrW,cAQtB+oa,GAAe/lc,OAAOmU,KAAK6wb,IAE/B,SAASgB,GACP3O,EACAjsa,EACA4nF,EACAzzF,EACA2jE,GAEA,IAAI8vW,EAAQqE,GAAZ,CAIA,IAAI4O,EAAWjzV,EAAQO,SAASwoV,MAShC,GANIr8V,EAAS23V,KACXA,EAAO4O,EAAS1kG,OAAO81F,IAKL,oBAATA,EAAX,CAQA,IAAIe,EACJ,GAAIpF,EAAQqE,EAAKrpZ,OACfoqZ,EAAef,EACfA,EAAO6O,GAAsB9N,EAAc6N,QAC9Brpc,IAATy6b,GAIF,OAAO8O,GACL/N,EACAhta,EACA4nF,EACAzzF,EACA2jE,GAKN93D,EAAOA,GAAQ,GAIfg7a,GAA0B/O,GAGtBhsD,EAAMjgX,EAAKzL,QACb0mb,GAAehP,EAAK7zb,QAAS4nB,GAI/B,IAAIsxa,EAAY8C,GAA0Bp0a,EAAMisa,EAAMn0W,GAGtD,GAAIqjW,EAAO8Q,EAAK7zb,QAAQsvG,YACtB,OAAO6xV,GAA0BtN,EAAMqF,EAAWtxa,EAAM4nF,EAASzzF,GAKnE,IAAIilb,EAAYp5a,EAAKumD,GAKrB,GAFAvmD,EAAKumD,GAAKvmD,EAAKk7a,SAEX/f,EAAO8Q,EAAK7zb,QAAQ+ic,UAAW,CAKjC,IAAIh5X,EAAOniD,EAAKmiD,KAChBniD,EAAO,GACHmiD,IACFniD,EAAKmiD,KAAOA,GAKhBi5X,GAAsBp7a,GAGtB,IAAIxsB,EAAOy4b,EAAK7zb,QAAQ5E,MAAQskF,EAC5B6kT,EAAQ,IAAIkwD,GACb,iBAAoBZ,EAAQ,KAAKz4b,EAAQ,IAAMA,EAAQ,IACxDwsB,OAAMxuB,OAAWA,OAAWA,EAAWo2G,EACvC,CAAEqkV,KAAMA,EAAMqF,UAAWA,EAAW8H,UAAWA,EAAWthX,IAAKA,EAAK3jE,SAAUA,GAC9E64a,GAGF,OAAOrwD,IAGT,SAASs9D,GACPt9D,EACAtlV,GAEA,IAAIj/C,EAAU,CACZijc,cAAc,EACdj7D,aAAczD,EACdtlV,OAAQA,GAGNikZ,EAAiB3+D,EAAM38W,KAAKs7a,eAKhC,OAJIr7D,EAAMq7D,KACRljc,EAAQkP,OAASg0b,EAAeh0b,OAChClP,EAAQ8uG,gBAAkBo0V,EAAep0V,iBAEpC,IAAIy1R,EAAMowD,iBAAiBd,KAAK7zb,GAGzC,SAASgjc,GAAuBp7a,GAE9B,IADA,IAAIgwa,EAAQhwa,EAAKwnF,OAASxnF,EAAKwnF,KAAO,IAC7BvxG,EAAI,EAAGA,EAAI0kc,GAAa/kc,OAAQK,IAAK,CAC5C,IAAIvG,EAAMirc,GAAa1kc,GACnBsyG,EAAWynV,EAAMtgc,GACjB6rc,EAAU3B,GAAoBlqc,GAC9B64G,IAAagzV,GAAahzV,GAAYA,EAASizV,UACjDxL,EAAMtgc,GAAO64G,EAAWkzV,GAAYF,EAAShzV,GAAYgzV,IAK/D,SAASE,GAAaC,EAAIn+L,GACxB,IAAI42L,EAAS,SAAUzta,EAAG/xB,GAExB+mc,EAAGh1a,EAAG/xB,GACN4oQ,EAAG72O,EAAG/xB,IAGR,OADAw/b,EAAOqH,SAAU,EACVrH,EAKT,SAAS8G,GAAgB7ic,EAAS4nB,GAChC,IAAIhX,EAAQ5Q,EAAQmc,OAASnc,EAAQmc,MAAMvL,MAAS,QAChDpG,EAASxK,EAAQmc,OAASnc,EAAQmc,MAAM3R,OAAU,SACpDod,EAAK9c,QAAU8c,EAAK9c,MAAQ,KAAK8F,GAAQgX,EAAKzL,MAAMziB,MACtD,IAAIy0E,EAAKvmD,EAAKumD,KAAOvmD,EAAKumD,GAAK,IAC3BgiC,EAAWhiC,EAAG3jE,GACdswB,EAAWlT,EAAKzL,MAAM2e,SACtB+sW,EAAM13R,IAENxzG,MAAM+nC,QAAQyrE,IACsB,IAAhCA,EAASxvG,QAAQm6B,GACjBq1E,IAAar1E,KAEjBqzC,EAAG3jE,GAAS,CAACswB,GAAUqK,OAAOgrE,IAGhChiC,EAAG3jE,GAASswB,EAMhB,IAAIyoa,GAAmB,EACnBC,GAAmB,EAIvB,SAASvic,GACPuuG,EACA9vB,EACA93D,EACA7L,EACA0nb,EACAC,GAUA,OARI/mc,MAAM+nC,QAAQ9c,IAAS8na,EAAY9na,MACrC67a,EAAoB1nb,EACpBA,EAAW6L,EACXA,OAAOxuB,GAEL2pb,EAAO2gB,KACTD,EAAoBD,IAEfG,GAAen0V,EAAS9vB,EAAK93D,EAAM7L,EAAU0nb,GAGtD,SAASE,GACPn0V,EACA9vB,EACA93D,EACA7L,EACA0nb,GAEA,GAAI57D,EAAMjgX,IAASigX,EAAM,EAAOiuD,QAM9B,OAAOP,KAMT,GAHI1tD,EAAMjgX,IAASigX,EAAMjgX,EAAKnwB,MAC5BioF,EAAM93D,EAAKnwB,KAERioF,EAEH,OAAO61W,KA2BT,IAAIhxD,EAAOswD,EAELhB,GAdFl3b,MAAM+nC,QAAQ3oB,IACO,oBAAhBA,EAAS,KAEhB6L,EAAOA,GAAQ,GACfA,EAAKs5a,YAAc,CAAEnoa,QAAShd,EAAS,IACvCA,EAASve,OAAS,GAEhBimc,IAAsBD,GACxBznb,EAAWqgb,GAAkBrgb,GACpB0nb,IAAsBF,KAC/Bxnb,EAAWogb,GAAwBpgb,IAGlB,kBAAR2jE,IAETm1W,EAAMrlV,EAAQC,QAAUD,EAAQC,OAAOolV,IAAOlua,EAAO4ra,gBAAgB7yW,GASnE6kT,EARE59W,EAAOyra,cAAc1yW,GAQf,IAAI+0W,GACV9ta,EAAO6ra,qBAAqB9yW,GAAM93D,EAAM7L,OACxC3iB,OAAWA,EAAWo2G,GAEb5nF,GAASA,EAAK08J,MAAQujN,EAAMgsD,EAAO8E,GAAanpV,EAAQO,SAAU,aAAcrwB,IAOnF,IAAI+0W,GACV/0W,EAAK93D,EAAM7L,OACX3iB,OAAWA,EAAWo2G,GAPhBgzV,GAAgB3O,EAAMjsa,EAAM4nF,EAASzzF,EAAU2jE,IAYzD6kT,EAAQi+D,GAAgB9iX,EAAK93D,EAAM4nF,EAASzzF,GAE9C,OAAIpf,MAAM+nC,QAAQ6/V,GACTA,EACEsD,EAAMtD,IACXsD,EAAMgtD,IAAO+O,GAAQr/D,EAAOswD,GAC5BhtD,EAAMjgX,IAASi8a,GAAqBj8a,GACjC28W,GAEAgxD,KAIX,SAASqO,GAASr/D,EAAOswD,EAAIiP,GAO3B,GANAv/D,EAAMswD,GAAKA,EACO,kBAAdtwD,EAAM7kT,MAERm1W,OAAKz7b,EACL0qc,GAAQ,GAENj8D,EAAMtD,EAAMxoX,UACd,IAAK,IAAIle,EAAI,EAAG/B,EAAIyoY,EAAMxoX,SAASve,OAAQK,EAAI/B,EAAG+B,IAAK,CACrD,IAAIs+C,EAAQooV,EAAMxoX,SAASle,GACvBgqY,EAAM1rV,EAAMujC,OACd8vW,EAAQrzY,EAAM04Y,KAAQ9R,EAAO+gB,IAAwB,QAAd3nZ,EAAMujC,MAC7CkkX,GAAQznZ,EAAO04Y,EAAIiP,IAS3B,SAASD,GAAsBj8a,GACzBs0E,EAASt0E,EAAKpvB,QAChBoic,GAAShza,EAAKpvB,OAEZ0jG,EAASt0E,EAAKgkC,QAChBgvY,GAAShza,EAAKgkC,OAMlB,SAASggH,GAAYy4N,GACnBA,EAAG0/D,OAAS,KACZ1/D,EAAG+6D,aAAe,KAClB,IAAIp/b,EAAUqkY,EAAGt0R,SACbi0V,EAAc3/D,EAAG50R,OAASzvG,EAAQgoY,aAClCq5D,EAAgB2C,GAAeA,EAAYx0V,QAC/C60R,EAAGvrW,OAASika,GAAa/8b,EAAQikc,gBAAiB5C,GAClDh9D,EAAG25D,aAAezO,EAKlBlrD,EAAGxoQ,GAAK,SAAUvtG,EAAG/xB,EAAGe,EAAG5H,GAAK,OAAOuL,GAAcojY,EAAI/1W,EAAG/xB,EAAGe,EAAG5H,GAAG,IAGrE2uY,EAAGX,eAAiB,SAAUp1W,EAAG/xB,EAAGe,EAAG5H,GAAK,OAAOuL,GAAcojY,EAAI/1W,EAAG/xB,EAAGe,EAAG5H,GAAG,IAIjF,IAAImuR,EAAamgL,GAAeA,EAAYp8a,KAW1Cgva,GAAkBvyD,EAAI,SAAUxgH,GAAcA,EAAW/4Q,OAASykb,EAAa,MAAM,GACrFqH,GAAkBvyD,EAAI,aAAcrkY,EAAQkkc,kBAAoB3U,EAAa,MAAM,GAIvF,IAkQInyb,GAlQA+mc,GAA2B,KAE/B,SAASC,GAAa/pa,GAEpB4la,GAAqB5la,EAAIr9B,WAEzBq9B,EAAIr9B,UAAUuxY,UAAY,SAAUhwW,GAClC,OAAO0lG,GAAS1lG,EAAI9qC,OAGtB4mC,EAAIr9B,UAAUqnc,QAAU,WACtB,IAiBI9/D,EAjBAF,EAAK5wY,KACLivI,EAAM2hQ,EAAGt0R,SACT7gG,EAASwzH,EAAIxzH,OACb84X,EAAetlQ,EAAIslQ,aAEnBA,IACF3D,EAAG25D,aAAed,GAChBl1D,EAAapgX,KAAKs5a,YAClB78D,EAAGvrW,OACHurW,EAAG25D,eAMP35D,EAAG50R,OAASu4R,EAGZ,IAIEm8D,GAA2B9/D,EAC3BE,EAAQr1X,EAAOhP,KAAKmkY,EAAGg7D,aAAch7D,EAAGX,gBACxC,MAAOz6X,IACP2wb,GAAY3wb,GAAGo7X,EAAI,UAYjBE,EAAQF,EAAG0/D,OAEb,QACAI,GAA2B,KAmB7B,OAhBIxnc,MAAM+nC,QAAQ6/V,IAA2B,IAAjBA,EAAM/mY,SAChC+mY,EAAQA,EAAM,IAGVA,aAAiBkwD,KAQrBlwD,EAAQgxD,MAGVhxD,EAAMtlV,OAAS+oV,EACRzD,GAMX,SAAS+/D,GAAY1mF,EAAM5mL,GAOzB,OALE4mL,EAAKyyB,YACJF,IAA0C,WAA7BvyB,EAAKvyL,OAAO+kN,gBAE1BxyB,EAAOA,EAAK7kV,SAEPmjE,EAAS0hR,GACZ5mL,EAAK+mK,OAAO6f,GACZA,EAGN,SAAS+kF,GACPnvc,EACAo0B,EACA4nF,EACAzzF,EACA2jE,GAEA,IAAImd,EAAO04V,KAGX,OAFA14V,EAAK+3V,aAAephc,EACpBqpG,EAAKw4V,UAAY,CAAEzta,KAAMA,EAAM4nF,QAASA,EAASzzF,SAAUA,EAAU2jE,IAAKA,GACnEmd,EAGT,SAAS6lW,GACPlvc,EACAivc,GAEA,GAAI1f,EAAOvvb,EAAQ21B,QAAU0+W,EAAMr0Y,EAAQ+wc,WACzC,OAAO/wc,EAAQ+wc,UAGjB,GAAI18D,EAAMr0Y,EAAQw8Y,UAChB,OAAOx8Y,EAAQw8Y,SAGjB,IAAIw0D,EAAQL,GAMZ,GALIK,GAAS38D,EAAMr0Y,EAAQixc,UAA8C,IAAnCjxc,EAAQixc,OAAO9jc,QAAQ6jc,IAE3Dhxc,EAAQixc,OAAOt8b,KAAKq8b,GAGlBzhB,EAAOvvb,EAAQkxc,UAAY78D,EAAMr0Y,EAAQmxc,aAC3C,OAAOnxc,EAAQmxc,YAGjB,GAAIH,IAAU38D,EAAMr0Y,EAAQixc,QAAS,CACnC,IAAIA,EAASjxc,EAAQixc,OAAS,CAACD,GAC3B5+T,GAAO,EACPg/T,EAAe,KACfC,EAAe,KAElB,EAAQC,IAAI,kBAAkB,WAAc,OAAOpjc,EAAO+ic,EAAQD,MAEnE,IAAIO,EAAc,SAAUC,GAC1B,IAAK,IAAInnc,EAAI,EAAG/B,EAAI2oc,EAAOjnc,OAAQK,EAAI/B,EAAG+B,IACvC4mc,EAAO5mc,GAAIonc,eAGVD,IACFP,EAAOjnc,OAAS,EACK,OAAjBonc,IACFh8b,aAAag8b,GACbA,EAAe,MAEI,OAAjBC,IACFj8b,aAAai8b,GACbA,EAAe,QAKjB59a,EAAU4oX,GAAK,SAAUhtW,GAE3BrvC,EAAQw8Y,SAAWs0D,GAAWzha,EAAK4/Z,GAG9B78T,EAGH6+T,EAAOjnc,OAAS,EAFhBunc,GAAY,MAMZhoU,EAAS8yQ,GAAK,SAAUlsM,GAKtBkkM,EAAMr0Y,EAAQ+wc,aAChB/wc,EAAQ21B,OAAQ,EAChB47a,GAAY,OAIZlia,EAAMrvC,EAAQyzB,EAAS81G,GA+C3B,OA7CI7gC,EAASr5D,KACP+8F,EAAU/8F,GAER2sZ,EAAQh8b,EAAQw8Y,WAClBntW,EAAItb,KAAKN,EAAS81G,GAEX6C,EAAU/8F,EAAIvI,aACvBuI,EAAIvI,UAAU/S,KAAKN,EAAS81G,GAExB8qQ,EAAMhlW,EAAI1Z,SACZ31B,EAAQ+wc,UAAYD,GAAWzha,EAAI1Z,MAAOs5a,IAGxC56D,EAAMhlW,EAAI6ha,WACZlxc,EAAQmxc,YAAcL,GAAWzha,EAAI6ha,QAASjC,GAC5B,IAAd5/Z,EAAI/iC,MACNtM,EAAQkxc,SAAU,EAElBE,EAAe17b,YAAW,WACxB07b,EAAe,KACXpV,EAAQh8b,EAAQw8Y,WAAaw/C,EAAQh8b,EAAQ21B,SAC/C31B,EAAQkxc,SAAU,EAClBK,GAAY,MAEblia,EAAI/iC,OAAS,MAIhB+nY,EAAMhlW,EAAI+R,WACZiwZ,EAAe37b,YAAW,WACxB27b,EAAe,KACXrV,EAAQh8b,EAAQw8Y,WAClBjzQ,EAGM,QAGPl6F,EAAI+R,YAKbgxF,GAAO,EAEApyI,EAAQkxc,QACXlxc,EAAQmxc,YACRnxc,EAAQw8Y,UAMhB,SAASslD,GAAoBz4V,GAC3B,OAAOA,EAAKq4V,WAAar4V,EAAK+3V,aAKhC,SAASsQ,GAAwBnpb,GAC/B,GAAIpf,MAAM+nC,QAAQ3oB,GAChB,IAAK,IAAIle,EAAI,EAAGA,EAAIke,EAASve,OAAQK,IAAK,CACxC,IAAIP,EAAIye,EAASle,GACjB,GAAIgqY,EAAMvqY,KAAOuqY,EAAMvqY,EAAEq3b,mBAAqBW,GAAmBh4b,IAC/D,OAAOA,GAUf,SAAS6nc,GAAY9gE,GACnBA,EAAG+gE,QAAU5oc,OAAOS,OAAO,MAC3BonY,EAAGghE,eAAgB,EAEnB,IAAIrE,EAAY38D,EAAGt0R,SAASm0V,iBACxBlD,GACFsE,GAAyBjhE,EAAI28D,GAMjC,SAASp5b,GAAK4C,EAAO+zB,GACnBnhC,GAAO0nc,IAAIt6b,EAAO+zB,GAGpB,SAASgna,GAAU/6b,EAAO+zB,GACxBnhC,GAAOooc,KAAKh7b,EAAO+zB,GAGrB,SAASm9Z,GAAmBlxb,EAAO+zB,GACjC,IAAIkna,EAAUroc,GACd,OAAO,SAASsoc,IACd,IAAI7ia,EAAMtE,EAAG5+B,MAAM,KAAMpC,WACb,OAARslC,GACF4ia,EAAQD,KAAKh7b,EAAOk7b,IAK1B,SAASJ,GACPjhE,EACA28D,EACA2E,GAEAvoc,GAASinY,EACTk3D,GAAgByF,EAAW2E,GAAgB,GAAI/9b,GAAK29b,GAAU7J,GAAmBr3D,GACjFjnY,QAAShE,EAGX,SAASwsc,GAAavra,GACpB,IAAIwra,EAAS,SACbxra,EAAIr9B,UAAU8nc,IAAM,SAAUt6b,EAAO+zB,GACnC,IAAI8lW,EAAK5wY,KACT,GAAIkJ,MAAM+nC,QAAQl6B,GAChB,IAAK,IAAI3M,EAAI,EAAG/B,EAAI0O,EAAMhN,OAAQK,EAAI/B,EAAG+B,IACvCwmY,EAAGygE,IAAIt6b,EAAM3M,GAAI0gC,QAGlB8lW,EAAG+gE,QAAQ56b,KAAW65X,EAAG+gE,QAAQ56b,GAAS,KAAKrC,KAAKo2B,GAGjDsna,EAAO1yc,KAAKqX,KACd65X,EAAGghE,eAAgB,GAGvB,OAAOhhE,GAGThqW,EAAIr9B,UAAU8oc,MAAQ,SAAUt7b,EAAO+zB,GACrC,IAAI8lW,EAAK5wY,KACT,SAAS06E,IACPk2T,EAAGmhE,KAAKh7b,EAAO2jE,GACf5vC,EAAG5+B,MAAM0kY,EAAI9mY,WAIf,OAFA4wE,EAAG5vC,GAAKA,EACR8lW,EAAGygE,IAAIt6b,EAAO2jE,GACPk2T,GAGThqW,EAAIr9B,UAAUwoc,KAAO,SAAUh7b,EAAO+zB,GACpC,IAAI8lW,EAAK5wY,KAET,IAAK8J,UAAUC,OAEb,OADA6mY,EAAG+gE,QAAU5oc,OAAOS,OAAO,MACpBonY,EAGT,GAAI1nY,MAAM+nC,QAAQl6B,GAAQ,CACxB,IAAK,IAAIu7b,EAAM,EAAGjqc,EAAI0O,EAAMhN,OAAQuoc,EAAMjqc,EAAGiqc,IAC3C1hE,EAAGmhE,KAAKh7b,EAAMu7b,GAAMxna,GAEtB,OAAO8lW,EAGT,IASIn+P,EATAsrQ,EAAMnN,EAAG+gE,QAAQ56b,GACrB,IAAKgnY,EACH,OAAOnN,EAET,IAAK9lW,EAEH,OADA8lW,EAAG+gE,QAAQ56b,GAAS,KACb65X,EAIT,IAAIxmY,EAAI2zY,EAAIh0Y,OACZ,MAAOK,IAEL,GADAqoI,EAAKsrQ,EAAI3zY,GACLqoI,IAAO3nG,GAAM2nG,EAAG3nG,KAAOA,EAAI,CAC7BizW,EAAIhpY,OAAO3K,EAAG,GACd,MAGJ,OAAOwmY,GAGThqW,EAAIr9B,UAAU48B,MAAQ,SAAUpvB,GAC9B,IAAI65X,EAAK5wY,KAaL+9Y,EAAMnN,EAAG+gE,QAAQ56b,GACrB,GAAIgnY,EAAK,CACPA,EAAMA,EAAIh0Y,OAAS,EAAIuzb,EAAQv/C,GAAOA,EAGtC,IAFA,IAAIxwX,EAAO+va,EAAQxzb,UAAW,GAC1Bk3B,EAAO,sBAAyBjqB,EAAQ,IACnC3M,EAAI,EAAG/B,EAAI01Y,EAAIh0Y,OAAQK,EAAI/B,EAAG+B,IACrCk8b,GAAwBvoD,EAAI3zY,GAAIwmY,EAAIrjX,EAAMqjX,EAAI5vW,GAGlD,OAAO4vW,GAMX,IAAIy9D,GAAiB,KAGrB,SAASkE,GAAkB3hE,GACzB,IAAI4hE,EAAqBnE,GAEzB,OADAA,GAAiBz9D,EACV,WACLy9D,GAAiBmE,GAIrB,SAASC,GAAe7hE,GACtB,IAAIrkY,EAAUqkY,EAAGt0R,SAGb9wD,EAASj/C,EAAQi/C,OACrB,GAAIA,IAAWj/C,EAAQ+ic,SAAU,CAC/B,MAAO9jZ,EAAO8wD,SAASgzV,UAAY9jZ,EAAOglV,QACxChlV,EAASA,EAAOglV,QAElBhlV,EAAOknZ,UAAUh+b,KAAKk8X,GAGxBA,EAAGJ,QAAUhlV,EACbolV,EAAGv0R,MAAQ7wD,EAASA,EAAO6wD,MAAQu0R,EAEnCA,EAAG8hE,UAAY,GACf9hE,EAAG+hE,MAAQ,GAEX/hE,EAAGgiE,SAAW,KACdhiE,EAAGL,UAAY,KACfK,EAAGiiE,iBAAkB,EACrBjiE,EAAG69D,YAAa,EAChB79D,EAAGq9D,cAAe,EAClBr9D,EAAGkiE,mBAAoB,EAGzB,SAASC,GAAgBnsa,GACvBA,EAAIr9B,UAAUypc,QAAU,SAAUliE,EAAOk9D,GACvC,IAAIp9D,EAAK5wY,KACLizc,EAASriE,EAAGsiE,IACZC,EAAYviE,EAAG0/D,OACf8C,EAAwBb,GAAkB3hE,GAC9CA,EAAG0/D,OAASx/D,EAQVF,EAAGsiE,IALAC,EAKMviE,EAAGyiE,UAAUF,EAAWriE,GAHxBF,EAAGyiE,UAAUziE,EAAGsiE,IAAKpiE,EAAOk9D,GAAW,GAKlDoF,IAEIH,IACFA,EAAOnta,QAAU,MAEf8qW,EAAGsiE,MACLtiE,EAAGsiE,IAAIpta,QAAU8qW,GAGfA,EAAG50R,QAAU40R,EAAGJ,SAAWI,EAAG50R,SAAW40R,EAAGJ,QAAQ8/D,SACtD1/D,EAAGJ,QAAQ0iE,IAAMtiE,EAAGsiE,MAMxBtsa,EAAIr9B,UAAUioc,aAAe,WAC3B,IAAI5gE,EAAK5wY,KACL4wY,EAAGgiE,UACLhiE,EAAGgiE,SAASjma,UAIhB/F,EAAIr9B,UAAUw8B,SAAW,WACvB,IAAI6qW,EAAK5wY,KACT,IAAI4wY,EAAGkiE,kBAAP,CAGApE,GAAS99D,EAAI,iBACbA,EAAGkiE,mBAAoB,EAEvB,IAAItnZ,EAASolV,EAAGJ,SACZhlV,GAAWA,EAAOsnZ,mBAAsBliE,EAAGt0R,SAASgzV,UACtDrhc,EAAOu9C,EAAOknZ,UAAW9hE,GAGvBA,EAAGgiE,UACLhiE,EAAGgiE,SAASU,WAEd,IAAIlpc,EAAIwmY,EAAG2iE,UAAUxpc,OACrB,MAAOK,IACLwmY,EAAG2iE,UAAUnpc,GAAGkpc,WAId1iE,EAAGrgQ,MAAM8xT,QACXzxD,EAAGrgQ,MAAM8xT,OAAOM,UAGlB/xD,EAAGq9D,cAAe,EAElBr9D,EAAGyiE,UAAUziE,EAAG0/D,OAAQ,MAExB5B,GAAS99D,EAAI,aAEbA,EAAGmhE,OAECnhE,EAAGsiE,MACLtiE,EAAGsiE,IAAIpta,QAAU,MAGf8qW,EAAG50R,SACL40R,EAAG50R,OAAOxwD,OAAS,QAKzB,SAASgoZ,GACP5iE,EACAjxV,EACAquZ,GAyBA,IAAIyF,EA2CJ,OAlEA7iE,EAAGsiE,IAAMvzZ,EACJixV,EAAGt0R,SAAS7gG,SACfm1X,EAAGt0R,SAAS7gG,OAASqmb,IAmBvB4M,GAAS99D,EAAI,eAsBX6iE,EAAkB,WAChB7iE,EAAGoiE,QAAQpiE,EAAGggE,UAAW5C,IAO7B,IAAI0F,GAAQ9iE,EAAI6iE,EAAiBjW,EAAM,CACrClrT,OAAQ,WACFs+P,EAAG69D,aAAe79D,EAAGq9D,cACvBS,GAAS99D,EAAI,mBAGhB,GACHo9D,GAAY,EAIK,MAAbp9D,EAAG50R,SACL40R,EAAG69D,YAAa,EAChBC,GAAS99D,EAAI,YAERA,EAGT,SAAS49D,GACP59D,EACA60D,EACA8H,EACAgD,EACAoD,GAYA,IAAIC,EAAiBrD,EAAYp8a,KAAKs5a,YAClCoG,EAAiBjjE,EAAG25D,aACpBuJ,KACDF,IAAmBA,EAAe9J,SAClC+J,IAAmB/X,IAAgB+X,EAAe/J,SAClD8J,GAAkBhjE,EAAG25D,aAAaR,OAAS6J,EAAe7J,MAMzDgK,KACFJ,GACA/iE,EAAGt0R,SAASk0V,iBACZsD,GAkBF,GAfAljE,EAAGt0R,SAASi4R,aAAeg8D,EAC3B3/D,EAAG50R,OAASu0V,EAER3/D,EAAG0/D,SACL1/D,EAAG0/D,OAAO9kZ,OAAS+kZ,GAErB3/D,EAAGt0R,SAASk0V,gBAAkBmD,EAK9B/iE,EAAGojE,OAASzD,EAAYp8a,KAAK9c,OAASykb,EACtClrD,EAAGqjE,WAAa1G,GAAazR,EAGzB2J,GAAa70D,EAAGt0R,SAAS14E,MAAO,CAClC8+Z,IAAgB,GAGhB,IAFA,IAAI9+Z,EAAQgtW,EAAGo1D,OACXzha,EAAWqsW,EAAGt0R,SAAS43V,WAAa,GAC/B9pc,EAAI,EAAGA,EAAIm6B,EAASx6B,OAAQK,IAAK,CACxC,IAAIvG,EAAM0gC,EAASn6B,GACfo7b,EAAc50D,EAAGt0R,SAAS14E,MAC9BA,EAAM//B,GAAO0hc,GAAa1hc,EAAK2hc,EAAaC,EAAW70D,GAEzD8xD,IAAgB,GAEhB9xD,EAAGt0R,SAASmpV,UAAYA,EAI1B8H,EAAYA,GAAazR,EACzB,IAAIoW,EAAethE,EAAGt0R,SAASm0V,iBAC/B7/D,EAAGt0R,SAASm0V,iBAAmBlD,EAC/BsE,GAAyBjhE,EAAI28D,EAAW2E,GAGpC6B,IACFnjE,EAAGvrW,OAASika,GAAaqK,EAAgBpD,EAAYx0V,SACrD60R,EAAG4gE,gBAQP,SAAS2C,GAAkBvjE,GACzB,MAAOA,IAAOA,EAAKA,EAAGJ,SACpB,GAAII,EAAGL,UAAa,OAAO,EAE7B,OAAO,EAGT,SAASq+D,GAAwBh+D,EAAIwjE,GACnC,GAAIA,GAEF,GADAxjE,EAAGiiE,iBAAkB,EACjBsB,GAAiBvjE,GACnB,YAEG,GAAIA,EAAGiiE,gBACZ,OAEF,GAAIjiE,EAAGL,WAA8B,OAAjBK,EAAGL,UAAoB,CACzCK,EAAGL,WAAY,EACf,IAAK,IAAInmY,EAAI,EAAGA,EAAIwmY,EAAG8hE,UAAU3oc,OAAQK,IACvCwkc,GAAuBh+D,EAAG8hE,UAAUtoc,IAEtCskc,GAAS99D,EAAI,cAIjB,SAASi+D,GAA0Bj+D,EAAIwjE,GACrC,KAAIA,IACFxjE,EAAGiiE,iBAAkB,GACjBsB,GAAiBvjE,OAIlBA,EAAGL,UAAW,CACjBK,EAAGL,WAAY,EACf,IAAK,IAAInmY,EAAI,EAAGA,EAAIwmY,EAAG8hE,UAAU3oc,OAAQK,IACvCykc,GAAyBj+D,EAAG8hE,UAAUtoc,IAExCskc,GAAS99D,EAAI,gBAIjB,SAAS89D,GAAU99D,EAAIj1R,GAErBmlV,KACA,IAAI5qR,EAAW06N,EAAGt0R,SAASX,GACvB36E,EAAO26E,EAAO,QAClB,GAAIu6D,EACF,IAAK,IAAI9rK,EAAI,EAAG8iC,EAAIgpI,EAASnsK,OAAQK,EAAI8iC,EAAG9iC,IAC1Ck8b,GAAwBpwR,EAAS9rK,GAAIwmY,EAAI,KAAMA,EAAI5vW,GAGnD4vW,EAAGghE,eACLhhE,EAAGzqW,MAAM,QAAUw1E,GAErBolV,KAKF,IAEIhlD,GAAQ,GACRs4D,GAAoB,GACpBx6O,GAAM,GAENy6O,IAAU,EACVC,IAAW,EACXz/b,GAAQ,EAKZ,SAAS0/b,KACP1/b,GAAQinY,GAAMhyY,OAASsqc,GAAkBtqc,OAAS,EAClD8vN,GAAM,GAINy6O,GAAUC,IAAW,EAQvB,IAAIE,GAAwB,EAGxBC,GAASl0b,KAAK9X,IAQlB,GAAIusY,IAAcniV,GAAM,CACtB,IAAI6oV,GAAc1sY,OAAO0sY,YAEvBA,IAC2B,oBAApBA,GAAYjzY,KACnBgsc,KAAWz+b,SAASgR,YAAY,SAAS80B,YAMzC24Z,GAAS,WAAc,OAAO/4D,GAAYjzY,QAO9C,SAASisc,KAGP,IAAIC,EAAShhc,EAcb,IAhBA6gc,GAAwBC,KACxBH,IAAW,EAWXx4D,GAAMtuW,MAAK,SAAU5S,EAAG/xB,GAAK,OAAO+xB,EAAEjnB,GAAK9K,EAAE8K,MAIxCkB,GAAQ,EAAGA,GAAQinY,GAAMhyY,OAAQ+K,KACpC8/b,EAAU74D,GAAMjnY,IACZ8/b,EAAQtiU,QACVsiU,EAAQtiU,SAEV1+H,EAAKghc,EAAQhhc,GACbimN,GAAIjmN,GAAM,KACVghc,EAAQC,MAmBV,IAAIC,EAAiBT,GAAkBt+b,QACnCg/b,EAAeh5D,GAAMhmY,QAEzBy+b,KAGAQ,GAAmBF,GACnBG,GAAiBF,GAIbtlU,IAAYv8G,EAAOu8G,UACrBA,GAASjE,KAAK,SAIlB,SAASypU,GAAkBl5D,GACzB,IAAI3xY,EAAI2xY,EAAMhyY,OACd,MAAOK,IAAK,CACV,IAAIwqc,EAAU74D,EAAM3xY,GAChBwmY,EAAKgkE,EAAQhkE,GACbA,EAAGgiE,WAAagC,GAAWhkE,EAAG69D,aAAe79D,EAAGq9D,cAClDS,GAAS99D,EAAI,YASnB,SAAS+9D,GAAyB/9D,GAGhCA,EAAGL,WAAY,EACf8jE,GAAkB3/b,KAAKk8X,GAGzB,SAASokE,GAAoBj5D,GAC3B,IAAK,IAAI3xY,EAAI,EAAGA,EAAI2xY,EAAMhyY,OAAQK,IAChC2xY,EAAM3xY,GAAGmmY,WAAY,EACrBq+D,GAAuB7yD,EAAM3xY,IAAI,GASrC,SAAS8qc,GAAcN,GACrB,IAAIhhc,EAAKghc,EAAQhhc,GACjB,GAAe,MAAXimN,GAAIjmN,GAAa,CAEnB,GADAimN,GAAIjmN,IAAM,EACL2gc,GAEE,CAGL,IAAInqc,EAAI2xY,GAAMhyY,OAAS,EACvB,MAAOK,EAAI0K,IAASinY,GAAM3xY,GAAGwJ,GAAKghc,EAAQhhc,GACxCxJ,IAEF2xY,GAAMhnY,OAAO3K,EAAI,EAAG,EAAGwqc,QARvB74D,GAAMrnY,KAAKkgc,GAWRN,KACHA,IAAU,EAMV9jU,GAASmkU,MASf,IAAIQ,GAAQ,EAORzB,GAAU,SACZ9iE,EACAwkE,EACA3iU,EACAlmI,EACA8oc,GAEAr1c,KAAK4wY,GAAKA,EACNykE,IACFzkE,EAAGgiE,SAAW5yc,MAEhB4wY,EAAG2iE,UAAU7+b,KAAK1U,MAEduM,GACFvM,KAAKkyI,OAAS3lI,EAAQ2lI,KACtBlyI,KAAKs1c,OAAS/oc,EAAQ+oc,KACtBt1c,KAAKu1c,OAAShpc,EAAQgpc,KACtBv1c,KAAKmyI,OAAS5lI,EAAQ4lI,KACtBnyI,KAAKsyI,OAAS/lI,EAAQ+lI,QAEtBtyI,KAAKkyI,KAAOlyI,KAAKs1c,KAAOt1c,KAAKu1c,KAAOv1c,KAAKmyI,MAAO,EAElDnyI,KAAKyyI,GAAKA,EACVzyI,KAAK4T,KAAOuhc,GACZn1c,KAAKm9F,QAAS,EACdn9F,KAAKw1c,MAAQx1c,KAAKu1c,KAClBv1c,KAAKy1c,KAAO,GACZz1c,KAAK01c,QAAU,GACf11c,KAAK21c,OAAS,IAAItV,GAClBrgc,KAAK41c,UAAY,IAAIvV,GACrBrgc,KAAK61c,WAED,GAEmB,oBAAZT,EACTp1c,KAAKkxI,OAASkkU,GAEdp1c,KAAKkxI,OAASqkQ,EAAU6/D,GACnBp1c,KAAKkxI,SACRlxI,KAAKkxI,OAASssT,IASlBx9b,KAAKiG,MAAQjG,KAAKu1c,UACd5vc,EACA3F,KAAKonC,OAMXssa,GAAQnqc,UAAU69B,IAAM,WAEtB,IAAInhC,EADJ66b,GAAW9gc,MAEX,IAAI4wY,EAAK5wY,KAAK4wY,GACd,IACE3qY,EAAQjG,KAAKkxI,OAAOzkI,KAAKmkY,EAAIA,GAC7B,MAAOp7X,IACP,IAAIxV,KAAKs1c,KAGP,MAAM9/b,GAFN2wb,GAAY3wb,GAAGo7X,EAAK,uBAA2B5wY,KAAe,WAAI,KAIpE,QAGIA,KAAKkyI,MACPi1T,GAASlhc,GAEX86b,KACA/gc,KAAK81c,cAEP,OAAO7vc,GAMTytc,GAAQnqc,UAAUq3b,OAAS,SAAiB2B,GAC1C,IAAI3ub,EAAK2ub,EAAI3ub,GACR5T,KAAK41c,UAAU/7O,IAAIjmN,KACtB5T,KAAK41c,UAAUzhc,IAAIP,GACnB5T,KAAK01c,QAAQhhc,KAAK6tb,GACbvic,KAAK21c,OAAO97O,IAAIjmN,IACnB2ub,EAAI9B,OAAOzgc,QAQjB0zc,GAAQnqc,UAAUusc,YAAc,WAC9B,IAAI1rc,EAAIpK,KAAKy1c,KAAK1rc,OAClB,MAAOK,IAAK,CACV,IAAIm4b,EAAMvic,KAAKy1c,KAAKrrc,GACfpK,KAAK41c,UAAU/7O,IAAI0oO,EAAI3ub,KAC1B2ub,EAAI7B,UAAU1gc,MAGlB,IAAIisC,EAAMjsC,KAAK21c,OACf31c,KAAK21c,OAAS31c,KAAK41c,UACnB51c,KAAK41c,UAAY3pa,EACjBjsC,KAAK41c,UAAUhlc,QACfq7B,EAAMjsC,KAAKy1c,KACXz1c,KAAKy1c,KAAOz1c,KAAK01c,QACjB11c,KAAK01c,QAAUzpa,EACfjsC,KAAK01c,QAAQ3rc,OAAS,GAOxB2pc,GAAQnqc,UAAUojC,OAAS,WAErB3sC,KAAKu1c,KACPv1c,KAAKw1c,OAAQ,EACJx1c,KAAKmyI,KACdnyI,KAAK60c,MAELK,GAAal1c,OAQjB0zc,GAAQnqc,UAAUsrc,IAAM,WACtB,GAAI70c,KAAKm9F,OAAQ,CACf,IAAIl3F,EAAQjG,KAAKonC,MACjB,GACEnhC,IAAUjG,KAAKiG,OAIfwiG,EAASxiG,IACTjG,KAAKkyI,KACL,CAEA,IAAI/kB,EAAWntH,KAAKiG,MAEpB,GADAjG,KAAKiG,MAAQA,EACTjG,KAAKs1c,KACP,IACEt1c,KAAKyyI,GAAGhmI,KAAKzM,KAAK4wY,GAAI3qY,EAAOknH,GAC7B,MAAO33G,IACP2wb,GAAY3wb,GAAGxV,KAAK4wY,GAAK,yBAA6B5wY,KAAe,WAAI,UAG3EA,KAAKyyI,GAAGhmI,KAAKzM,KAAK4wY,GAAI3qY,EAAOknH,MAUrCumV,GAAQnqc,UAAUmiW,SAAW,WAC3B1rW,KAAKiG,MAAQjG,KAAKonC,MAClBpnC,KAAKw1c,OAAQ,GAMf9B,GAAQnqc,UAAUo3b,OAAS,WACzB,IAAIv2b,EAAIpK,KAAKy1c,KAAK1rc,OAClB,MAAOK,IACLpK,KAAKy1c,KAAKrrc,GAAGu2b,UAOjB+S,GAAQnqc,UAAU+pc,SAAW,WAC3B,GAAItzc,KAAKm9F,OAAQ,CAIVn9F,KAAK4wY,GAAGkiE,mBACX7kc,EAAOjO,KAAK4wY,GAAG2iE,UAAWvzc,MAE5B,IAAIoK,EAAIpK,KAAKy1c,KAAK1rc,OAClB,MAAOK,IACLpK,KAAKy1c,KAAKrrc,GAAGs2b,UAAU1gc,MAEzBA,KAAKm9F,QAAS,IAMlB,IAAI44W,GAA2B,CAC7BzjW,YAAY,EACZC,cAAc,EACdnrE,IAAKo2Z,EACLhoZ,IAAKgoZ,GAGP,SAASl3U,GAAO38G,EAAQqsc,EAAWnyc,GACjCkyc,GAAyB3ua,IAAM,WAC7B,OAAOpnC,KAAKg2c,GAAWnyc,IAEzBkyc,GAAyBvga,IAAM,SAAsBhxB,GACnDxkB,KAAKg2c,GAAWnyc,GAAO2gB,GAEzBzb,OAAOsB,eAAeV,EAAQ9F,EAAKkyc,IAGrC,SAASE,GAAWrlE,GAClBA,EAAG2iE,UAAY,GACf,IAAIv8D,EAAOpG,EAAGt0R,SACV06R,EAAKpzW,OAASsya,GAAUtlE,EAAIoG,EAAKpzW,OACjCozW,EAAKzxW,SAAW4wa,GAAYvlE,EAAIoG,EAAKzxW,SACrCyxW,EAAK7iX,KACPqxE,GAASorS,GAETmyD,GAAQnyD,EAAGrgQ,MAAQ,IAAI,GAErBymQ,EAAK9mQ,UAAYkmU,GAAaxlE,EAAIoG,EAAK9mQ,UACvC8mQ,EAAKnzW,OAASmzW,EAAKnzW,QAAUk8Z,IAC/BsW,GAAUzlE,EAAIoG,EAAKnzW,OAIvB,SAASqya,GAAWtlE,EAAI0lE,GACtB,IAAI7Q,EAAY70D,EAAGt0R,SAASmpV,WAAa,GACrC7ha,EAAQgtW,EAAGo1D,OAAS,GAGpB9ob,EAAO0zX,EAAGt0R,SAAS43V,UAAY,GAC/BxjU,GAAUkgQ,EAAGJ,QAEZ9/P,GACHgyT,IAAgB,GAElB,IAAI0I,EAAO,SAAWvnc,GACpBqZ,EAAKxI,KAAK7Q,GACV,IAAIoC,EAAQs/b,GAAa1hc,EAAKyyc,EAAc7Q,EAAW70D,GAuBrDuyD,GAAkBv/Z,EAAO//B,EAAKoC,GAK1BpC,KAAO+sY,GACXtqR,GAAMsqR,EAAI,SAAU/sY,IAIxB,IAAK,IAAIA,KAAOyyc,EAAclL,EAAMvnc,GACpC6+b,IAAgB,GAGlB,SAASl9V,GAAUorS,GACjB,IAAIz8W,EAAOy8W,EAAGt0R,SAASnoF,KACvBA,EAAOy8W,EAAGrgQ,MAAwB,oBAATp8G,EACrB8lB,GAAQ9lB,EAAMy8W,GACdz8W,GAAQ,GACP4jB,EAAc5jB,KACjBA,EAAO,IAQT,IAAIjX,EAAOnU,OAAOmU,KAAKiX,GACnByP,EAAQgtW,EAAGt0R,SAAS14E,MAEpBx5B,GADUwmY,EAAGt0R,SAAS/2E,QAClBroB,EAAKnT,QACb,MAAOK,IAAK,CACV,IAAIvG,EAAMqZ,EAAK9S,GACX,EAQAw5B,GAAS84Z,EAAO94Z,EAAO//B,IAMfs7b,EAAWt7b,IACrByiH,GAAMsqR,EAAI,QAAS/sY,GAIvBk/b,GAAQ5ua,GAAM,GAGhB,SAAS8lB,GAAS9lB,EAAMy8W,GAEtBkwD,KACA,IACE,OAAO3sa,EAAK1nB,KAAKmkY,EAAIA,GACrB,MAAOp7X,IAEP,OADA2wb,GAAY3wb,GAAGo7X,EAAI,UACZ,GACP,QACAmwD,MAIJ,IAAIwV,GAAyB,CAAEhB,MAAM,GAErC,SAASa,GAAcxlE,EAAI1gQ,GAEzB,IAAIsmU,EAAW5lE,EAAG6lE,kBAAoB1tc,OAAOS,OAAO,MAEhDktc,EAAQzW,KAEZ,IAAK,IAAIp8b,KAAOqsI,EAAU,CACxB,IAAIymU,EAAUzmU,EAASrsI,GACnBqtI,EAA4B,oBAAZylU,EAAyBA,EAAUA,EAAQvva,IAC3D,EAOCsva,IAEHF,EAAS3yc,GAAO,IAAI6vc,GAClB9iE,EACA1/P,GAAUssT,EACVA,EACA+Y,KAOE1yc,KAAO+sY,GACXgmE,GAAehmE,EAAI/sY,EAAK8yc,IAW9B,SAASC,GACPjtc,EACA9F,EACA8yc,GAEA,IAAIE,GAAe5W,KACI,oBAAZ0W,GACTZ,GAAyB3ua,IAAMyva,EAC3BC,GAAqBjzc,GACrBkzc,GAAoBJ,GACxBZ,GAAyBvga,IAAMgoZ,IAE/BuY,GAAyB3ua,IAAMuva,EAAQvva,IACnCyva,IAAiC,IAAlBF,EAAQzyW,MACrB4yW,GAAqBjzc,GACrBkzc,GAAoBJ,EAAQvva,KAC9Bo2Z,EACJuY,GAAyBvga,IAAMmha,EAAQnha,KAAOgoZ,GAWhDz0b,OAAOsB,eAAeV,EAAQ9F,EAAKkyc,IAGrC,SAASe,GAAsBjzc,GAC7B,OAAO,WACL,IAAI+wc,EAAU50c,KAAKy2c,mBAAqBz2c,KAAKy2c,kBAAkB5yc,GAC/D,GAAI+wc,EAOF,OANIA,EAAQY,OACVZ,EAAQlpG,WAEN80F,GAAI72b,QACNirc,EAAQjU,SAEHiU,EAAQ3uc,OAKrB,SAAS8wc,GAAoBjsa,GAC3B,OAAO,WACL,OAAOA,EAAGr+B,KAAKzM,KAAMA,OAIzB,SAASm2c,GAAavlE,EAAIrrW,GACZqrW,EAAGt0R,SAAS14E,MACxB,IAAK,IAAI//B,KAAO0hC,EAsBdqrW,EAAG/sY,GAA+B,oBAAjB0hC,EAAQ1hC,GAAsB25b,EAAOhvb,EAAK+2B,EAAQ1hC,GAAM+sY,GAI7E,SAASylE,GAAWzlE,EAAI/sW,GACtB,IAAK,IAAIhgC,KAAOggC,EAAO,CACrB,IAAIu4D,EAAUv4D,EAAMhgC,GACpB,GAAIqF,MAAM+nC,QAAQmrD,GAChB,IAAK,IAAIhyF,EAAI,EAAGA,EAAIgyF,EAAQryF,OAAQK,IAClC4sc,GAAcpmE,EAAI/sY,EAAKu4F,EAAQhyF,SAGjC4sc,GAAcpmE,EAAI/sY,EAAKu4F,IAK7B,SAAS46W,GACPpmE,EACAwkE,EACAh5W,EACA7vF,GASA,OAPIwrC,EAAcqkD,KAChB7vF,EAAU6vF,EACVA,EAAUA,EAAQA,SAEG,kBAAZA,IACTA,EAAUw0S,EAAGx0S,IAERw0S,EAAG3+P,OAAOmjU,EAASh5W,EAAS7vF,GAGrC,SAAS0qc,GAAYrwa,GAInB,IAAIswa,EAAU,CACd,IAAc,WAAc,OAAOl3c,KAAKuwI,QACpC4mU,EAAW,CACf,IAAe,WAAc,OAAOn3c,KAAKgmc,SAazCj9b,OAAOsB,eAAeu8B,EAAIr9B,UAAW,QAAS2tc,GAC9Cnuc,OAAOsB,eAAeu8B,EAAIr9B,UAAW,SAAU4tc,GAE/Cvwa,EAAIr9B,UAAU6tc,KAAO5ha,GACrB5O,EAAIr9B,UAAU8tc,QAAU5T,GAExB78Z,EAAIr9B,UAAU0oI,OAAS,SACrBmjU,EACA3iU,EACAlmI,GAEA,IAAIqkY,EAAK5wY,KACT,GAAI+3C,EAAc06F,GAChB,OAAOukU,GAAcpmE,EAAIwkE,EAAS3iU,EAAIlmI,GAExCA,EAAUA,GAAW,GACrBA,EAAQ+oc,MAAO,EACf,IAAIV,EAAU,IAAIlB,GAAQ9iE,EAAIwkE,EAAS3iU,EAAIlmI,GAC3C,GAAIA,EAAQ+qc,UACV,IACE7kU,EAAGhmI,KAAKmkY,EAAIgkE,EAAQ3uc,OACpB,MAAOyvB,GACPywa,GAAYzwa,EAAOk7W,EAAK,mCAAuCgkE,EAAkB,WAAI,KAGzF,OAAO,WACLA,EAAQtB,aAOd,IAAIiE,GAAQ,EAEZ,SAASC,GAAW5wa,GAClBA,EAAIr9B,UAAUyhI,MAAQ,SAAUz+H,GAC9B,IAAIqkY,EAAK5wY,KAET4wY,EAAG6mE,KAAOF,KAWV3mE,EAAGsyD,QAAS,EAER32b,GAAWA,EAAQijc,aAIrBkI,GAAsB9mE,EAAIrkY,GAE1BqkY,EAAGt0R,SAAWiwN,GACZ4iI,GAA0Bv+D,EAAGtnY,aAC7BiD,GAAW,GACXqkY,GAOFA,EAAGg7D,aAAeh7D,EAGpBA,EAAG+mE,MAAQ/mE,EACX6hE,GAAc7hE,GACd8gE,GAAW9gE,GACXz4N,GAAWy4N,GACX89D,GAAS99D,EAAI,gBACbs4D,GAAet4D,GACfqlE,GAAUrlE,GACVo4D,GAAYp4D,GACZ89D,GAAS99D,EAAI,WASTA,EAAGt0R,SAAS38D,IACdixV,EAAG09D,OAAO19D,EAAGt0R,SAAS38D,KAK5B,SAAS+3Z,GAAuB9mE,EAAIrkY,GAClC,IAAIyqY,EAAOpG,EAAGt0R,SAAWvzG,OAAOS,OAAOonY,EAAGtnY,YAAYiD,SAElDgkc,EAAchkc,EAAQgoY,aAC1ByC,EAAKxrV,OAASj/C,EAAQi/C,OACtBwrV,EAAKzC,aAAeg8D,EAEpB,IAAIqH,EAAwBrH,EAAYrP,iBACxClqD,EAAKyuD,UAAYmS,EAAsBnS,UACvCzuD,EAAKy5D,iBAAmBmH,EAAsBrK,UAC9Cv2D,EAAKw5D,gBAAkBoH,EAAsBtvb,SAC7C0uX,EAAK6gE,cAAgBD,EAAsB3rX,IAEvC1/E,EAAQkP,SACVu7X,EAAKv7X,OAASlP,EAAQkP,OACtBu7X,EAAK37R,gBAAkB9uG,EAAQ8uG,iBAInC,SAAS8zV,GAA2B/O,GAClC,IAAI7zb,EAAU6zb,EAAK7zb,QACnB,GAAI6zb,EAAK0X,MAAO,CACd,IAAIC,EAAe5I,GAA0B/O,EAAK0X,OAC9CE,EAAqB5X,EAAK2X,aAC9B,GAAIA,IAAiBC,EAAoB,CAGvC5X,EAAK2X,aAAeA,EAEpB,IAAIE,EAAkBC,GAAuB9X,GAEzC6X,GACF3tG,EAAO81F,EAAK+X,cAAeF,GAE7B1rc,EAAU6zb,EAAK7zb,QAAUggU,GAAawrI,EAAc3X,EAAK+X,eACrD5rc,EAAQ5E,OACV4E,EAAQmkY,WAAWnkY,EAAQ5E,MAAQy4b,IAIzC,OAAO7zb,EAGT,SAAS2rc,GAAwB9X,GAC/B,IAAIgY,EACAC,EAASjY,EAAK7zb,QACd+rc,EAASlY,EAAKmY,cAClB,IAAK,IAAI10c,KAAOw0c,EACVA,EAAOx0c,KAASy0c,EAAOz0c,KACpBu0c,IAAYA,EAAW,IAC5BA,EAASv0c,GAAOw0c,EAAOx0c,IAG3B,OAAOu0c,EAGT,SAASxxa,GAAKr6B,GAMZvM,KAAKgrI,MAAMz+H,GAWb,SAASisc,GAAS5xa,GAChBA,EAAIk6W,IAAM,SAAUvxQ,GAClB,IAAIkpU,EAAoBz4c,KAAK04c,oBAAsB14c,KAAK04c,kBAAoB,IAC5E,GAAID,EAAiBvrc,QAAQqiI,IAAW,EACtC,OAAOvvI,KAIT,IAAIutB,EAAO+va,EAAQxzb,UAAW,GAQ9B,OAPAyjB,EAAKoG,QAAQ3zB,MACiB,oBAAnBuvI,EAAO5oG,QAChB4oG,EAAO5oG,QAAQz6B,MAAMqjI,EAAQhiH,GACF,oBAAXgiH,GAChBA,EAAOrjI,MAAM,KAAMqhB,GAErBkrb,EAAiB/jc,KAAK66H,GACfvvI,MAMX,SAAS24c,GAAa/xa,GACpBA,EAAIkkG,MAAQ,SAAUA,GAEpB,OADA9qI,KAAKuM,QAAUggU,GAAavsU,KAAKuM,QAASu+H,GACnC9qI,MAMX,SAAS44c,GAAYhya,GAMnBA,EAAImQ,IAAM,EACV,IAAIA,EAAM,EAKVnQ,EAAI0jU,OAAS,SAAU6tG,GACrBA,EAAgBA,GAAiB,GACjC,IAAIU,EAAQ74c,KACR84c,EAAUD,EAAM9ha,IAChBgia,EAAcZ,EAAca,QAAUb,EAAca,MAAQ,IAChE,GAAID,EAAYD,GACd,OAAOC,EAAYD,GAGrB,IAAInxc,EAAOwwc,EAAcxwc,MAAQkxc,EAAMtsc,QAAQ5E,KAK/C,IAAIsxc,EAAM,SAAuB1sc,GAC/BvM,KAAKgrI,MAAMz+H,IA6Cb,OA3CA0sc,EAAI1vc,UAAYR,OAAOS,OAAOqvc,EAAMtvc,WACpC0vc,EAAI1vc,UAAUD,YAAc2vc,EAC5BA,EAAIlia,IAAMA,IACVkia,EAAI1sc,QAAUggU,GACZssI,EAAMtsc,QACN4rc,GAEFc,EAAI,SAAWJ,EAKXI,EAAI1sc,QAAQq3B,OACds1a,GAAYD,GAEVA,EAAI1sc,QAAQ2jI,UACdipU,GAAeF,GAIjBA,EAAI3uG,OAASuuG,EAAMvuG,OACnB2uG,EAAInuU,MAAQ+tU,EAAM/tU,MAClBmuU,EAAIn4D,IAAM+3D,EAAM/3D,IAIhBu9C,EAAY5qa,SAAQ,SAAU5c,GAC5Boic,EAAIpic,GAAQgic,EAAMhic,MAGhBlP,IACFsxc,EAAI1sc,QAAQmkY,WAAW/oY,GAAQsxc,GAMjCA,EAAIlB,aAAec,EAAMtsc,QACzB0sc,EAAId,cAAgBA,EACpBc,EAAIV,cAAgBjuG,EAAO,GAAI2uG,EAAI1sc,SAGnCwsc,EAAYD,GAAWG,EAChBA,GAIX,SAASC,GAAaE,GACpB,IAAIx1a,EAAQw1a,EAAK7sc,QAAQq3B,MACzB,IAAK,IAAI//B,KAAO+/B,EACd0iF,GAAM8yV,EAAK7vc,UAAW,SAAU1F,GAIpC,SAASs1c,GAAgBC,GACvB,IAAIlpU,EAAWkpU,EAAK7sc,QAAQ2jI,SAC5B,IAAK,IAAIrsI,KAAOqsI,EACd0mU,GAAewC,EAAK7vc,UAAW1F,EAAKqsI,EAASrsI,IAMjD,SAASw1c,GAAoBzya,GAI3By3Z,EAAY5qa,SAAQ,SAAU5c,GAC5B+vB,EAAI/vB,GAAQ,SACVjD,EACA0lc,GAEA,OAAKA,GAOU,cAATzic,GAAwBkhC,EAAcuha,KACxCA,EAAW3xc,KAAO2xc,EAAW3xc,MAAQiM,EACrC0lc,EAAat5c,KAAKuM,QAAQu4b,MAAMx6F,OAAOgvG,IAE5B,cAATzic,GAA8C,oBAAfyic,IACjCA,EAAa,CAAE9qc,KAAM8qc,EAAY3sa,OAAQ2sa,IAE3Ct5c,KAAKuM,QAAQsK,EAAO,KAAKjD,GAAM0lc,EACxBA,GAdAt5c,KAAKuM,QAAQsK,EAAO,KAAKjD,OAwBxC,SAAS2lc,GAAkBviE,GACzB,OAAOA,IAASA,EAAKopD,KAAK7zb,QAAQ5E,MAAQqvY,EAAK/qT,KAGjD,SAAS0wE,GAASpyI,EAAS5iB,GACzB,OAAIuB,MAAM+nC,QAAQ1mB,GACTA,EAAQrd,QAAQvF,IAAS,EACJ,kBAAZ4iB,EACTA,EAAQlqB,MAAM,KAAK6M,QAAQvF,IAAS,IAClCw0b,EAAS5xa,IACXA,EAAQ7qB,KAAKiI,GAMxB,SAAS6xc,GAAYC,EAAmBthb,GACtC,IAAI+rE,EAAQu1W,EAAkBv1W,MAC1BhnF,EAAOu8b,EAAkBv8b,KACzBozb,EAASmJ,EAAkBnJ,OAC/B,IAAK,IAAIzsc,KAAOqgG,EAAO,CACrB,IAAIw1W,EAAax1W,EAAMrgG,GACvB,GAAI61c,EAAY,CACd,IAAI/xc,EAAO4xc,GAAiBG,EAAWxY,kBACnCv5b,IAASwwB,EAAOxwB,IAClBgyc,GAAgBz1W,EAAOrgG,EAAKqZ,EAAMozb,KAM1C,SAASqJ,GACPz1W,EACArgG,EACAqZ,EACAiiB,GAEA,IAAIy6a,EAAY11W,EAAMrgG,IAClB+1c,GAAez6a,GAAWy6a,EAAU3tX,MAAQ9sD,EAAQ8sD,KACtD2tX,EAAU7oE,kBAAkBhrW,WAE9Bm+D,EAAMrgG,GAAO,KACboK,EAAOiP,EAAMrZ,GA/Mf2zc,GAAU5wa,IACVqwa,GAAWrwa,IACXura,GAAYvra,IACZmsa,GAAensa,IACf+pa,GAAY/pa,IA8MZ,IAAIiza,GAAe,CAACh6c,OAAQg3B,OAAQ3tB,OAEhC4wc,GAAY,CACdnyc,KAAM,aACN2nc,UAAU,EAEV1ra,MAAO,CACL67Q,QAASo6J,GACTE,QAASF,GACT34b,IAAK,CAACrhB,OAAQ27B,SAGhBuJ,QAAS,WACP/kC,KAAKkkG,MAAQn7F,OAAOS,OAAO,MAC3BxJ,KAAKkd,KAAO,IAGdw3X,UAAW,WACT,IAAK,IAAI7wY,KAAO7D,KAAKkkG,MACnBy1W,GAAgB35c,KAAKkkG,MAAOrgG,EAAK7D,KAAKkd,OAI1C88b,QAAS,WACP,IAAIhsU,EAAShuI,KAEbA,KAAKiyI,OAAO,WAAW,SAAUztH,GAC/Bg1b,GAAWxrU,GAAQ,SAAUrmI,GAAQ,OAAOg1J,GAAQn4I,EAAK7c,SAE3D3H,KAAKiyI,OAAO,WAAW,SAAUztH,GAC/Bg1b,GAAWxrU,GAAQ,SAAUrmI,GAAQ,OAAQg1J,GAAQn4I,EAAK7c,UAI9D8T,OAAQ,WACN,IAAI66D,EAAOt2E,KAAKqlC,OAAOC,QACnBwrW,EAAQ2gE,GAAuBn7X,GAC/B4qX,EAAmBpwD,GAASA,EAAMowD,iBACtC,GAAIA,EAAkB,CAEpB,IAAIv5b,EAAO4xc,GAAiBrY,GACxBjyT,EAAMjvI,KACNy/S,EAAUxwK,EAAIwwK,QACds6J,EAAU9qU,EAAI8qU,QAClB,GAEGt6J,KAAa93S,IAASg1J,GAAQ8iJ,EAAS93S,KAEvCoyc,GAAWpyc,GAAQg1J,GAAQo9S,EAASpyc,GAErC,OAAOmpY,EAGT,IAAImpE,EAAQj6c,KACRkkG,EAAQ+1W,EAAM/1W,MACdhnF,EAAO+8b,EAAM/8b,KACbrZ,EAAmB,MAAbitY,EAAMjtY,IAGZq9b,EAAiBd,KAAKrpZ,KAAOmqZ,EAAiBj1W,IAAO,KAAQi1W,EAAoB,IAAK,IACtFpwD,EAAMjtY,IACNqgG,EAAMrgG,IACRitY,EAAMC,kBAAoB7sS,EAAMrgG,GAAKktY,kBAErC9iY,EAAOiP,EAAMrZ,GACbqZ,EAAKxI,KAAK7Q,KAEVqgG,EAAMrgG,GAAOitY,EACb5zX,EAAKxI,KAAK7Q,GAEN7D,KAAKkhB,KAAOhE,EAAKnT,OAAS3B,SAASpI,KAAKkhB,MAC1Cy4b,GAAgBz1W,EAAOhnF,EAAK,GAAIA,EAAMld,KAAKswc,SAI/Cx/D,EAAM38W,KAAK+5a,WAAY,EAEzB,OAAOp9D,GAAUx6T,GAAQA,EAAK,KAI9B4jY,GAAoB,CACtBJ,UAAWA,IAKb,SAASK,GAAevza,GAEtB,IAAIwza,EAAY,CAChB,IAAgB,WAAc,OAAOlnb,IAQrCnqB,OAAOsB,eAAeu8B,EAAK,SAAUwza,GAKrCxza,EAAIs2L,KAAO,CACT9P,KAAMA,GACNk9I,OAAQA,EACR/9B,aAAcA,GACdkoE,eAAgB0uD,IAGlBv8Z,EAAI4O,IAAMA,GACV5O,EAAIisG,OAAS4wT,GACb78Z,EAAI4pG,SAAWA,GAGf5pG,EAAIyza,WAAa,SAAUzta,GAEzB,OADAm2Z,GAAQn2Z,GACDA,GAGThG,EAAIr6B,QAAUxD,OAAOS,OAAO,MAC5B60b,EAAY5qa,SAAQ,SAAU5c,GAC5B+vB,EAAIr6B,QAAQsK,EAAO,KAAO9N,OAAOS,OAAO,SAK1Co9B,EAAIr6B,QAAQu4b,MAAQl+Z,EAEpB0jU,EAAO1jU,EAAIr6B,QAAQmkY,WAAYwpE,IAE/B1B,GAAQ5xa,GACR+xa,GAAY/xa,GACZgya,GAAWhya,GACXyya,GAAmBzya,GAGrBuza,GAAcvza,IAEd79B,OAAOsB,eAAeu8B,GAAIr9B,UAAW,YAAa,CAChD69B,IAAK64Z,KAGPl3b,OAAOsB,eAAeu8B,GAAIr9B,UAAW,cAAe,CAClD69B,IAAK,WAEH,OAAOpnC,KAAKg8G,QAAUh8G,KAAKg8G,OAAOC,cAKtClzG,OAAOsB,eAAeu8B,GAAK,0BAA2B,CACpD3gC,MAAOinc,KAGTtma,GAAI3F,QAAU,SAMd,IAAI29Z,GAAiBtC,EAAQ,eAGzBge,GAAche,EAAQ,yCACtB0C,GAAc,SAAU/yW,EAAKp1E,EAAMga,GACrC,MACY,UAATA,GAAoBypb,GAAYruX,IAAkB,WAATp1E,GAChC,aAATga,GAA+B,WAARo7D,GACd,YAATp7D,GAA8B,UAARo7D,GACb,UAATp7D,GAA4B,UAARo7D,GAIrBsuX,GAAmBje,EAAQ,wCAE3Bke,GAA8Ble,EAAQ,sCAEtCme,GAAyB,SAAU52c,EAAKoC,GAC1C,OAAOy0c,GAAiBz0c,IAAoB,UAAVA,EAC9B,QAEQ,oBAARpC,GAA6B22c,GAA4Bv0c,GACvDA,EACA,QAGJ00c,GAAgBre,EAClB,wYAQEse,GAAU,+BAEVC,GAAU,SAAUlzc,GACtB,MAA0B,MAAnBA,EAAKkgB,OAAO,IAAmC,UAArBlgB,EAAKoO,MAAM,EAAG,IAG7C+kc,GAAe,SAAUnzc,GAC3B,OAAOkzc,GAAQlzc,GAAQA,EAAKoO,MAAM,EAAGpO,EAAKoC,QAAU,IAGlD2wc,GAAmB,SAAUl2b,GAC/B,OAAc,MAAPA,IAAuB,IAARA,GAKxB,SAASu2b,GAAkBjqE,GACzB,IAAI38W,EAAO28W,EAAM38W,KACb6zB,EAAa8oV,EACb/kP,EAAY+kP,EAChB,MAAOsD,EAAMroP,EAAUglP,mBACrBhlP,EAAYA,EAAUglP,kBAAkBu/D,OACpCvkT,GAAaA,EAAU53H,OACzBA,EAAO6mb,GAAejvT,EAAU53H,KAAMA,IAG1C,MAAOigX,EAAMpsV,EAAaA,EAAWwD,QAC/BxD,GAAcA,EAAW7zB,OAC3BA,EAAO6mb,GAAe7mb,EAAM6zB,EAAW7zB,OAG3C,OAAO8mb,GAAY9mb,EAAK+mb,YAAa/mb,EAAKgkC,OAG5C,SAAS6iZ,GAAgBtyZ,EAAO8C,GAC9B,MAAO,CACL0vZ,YAAaxpa,GAAOgX,EAAMwyZ,YAAa1vZ,EAAO0vZ,aAC9C/iZ,MAAOi8U,EAAM1rV,EAAMyP,OACf,CAACzP,EAAMyP,MAAO3M,EAAO2M,OACrB3M,EAAO2M,OAIf,SAAS8iZ,GACPC,EACAC,GAEA,OAAI/mE,EAAM8mE,IAAgB9mE,EAAM+mE,GACvBzpa,GAAOwpa,EAAaE,GAAeD,IAGrC,GAGT,SAASzpa,GAAQ7W,EAAG/xB,GAClB,OAAO+xB,EAAI/xB,EAAK+xB,EAAI,IAAM/xB,EAAK+xB,EAAK/xB,GAAK,GAG3C,SAASsyc,GAAgBn1c,GACvB,OAAIiD,MAAM+nC,QAAQhrC,GACTo1c,GAAep1c,GAEpBwiG,EAASxiG,GACJq1c,GAAgBr1c,GAEJ,kBAAVA,EACFA,EAGF,GAGT,SAASo1c,GAAgBp1c,GAGvB,IAFA,IACIs1c,EADAnsa,EAAM,GAEDhlC,EAAI,EAAG/B,EAAIpC,EAAM8D,OAAQK,EAAI/B,EAAG+B,IACnCgqY,EAAMmnE,EAAcH,GAAen1c,EAAMmE,MAAwB,KAAhBmxc,IAC/Cnsa,IAAOA,GAAO,KAClBA,GAAOmsa,GAGX,OAAOnsa,EAGT,SAASksa,GAAiBr1c,GACxB,IAAImpC,EAAM,GACV,IAAK,IAAIvrC,KAAOoC,EACVA,EAAMpC,KACJurC,IAAOA,GAAO,KAClBA,GAAOvrC,GAGX,OAAOurC,EAKT,IAAIosa,GAAe,CACjB7+Y,IAAK,6BACL8+Y,KAAM,sCAGJC,GAAYpf,EACd,snBAeEqf,GAAQrf,EACV,kNAGA,GAGEsf,GAAW,SAAU3vX,GAAO,MAAe,QAARA,GAEnC0yW,GAAgB,SAAU1yW,GAC5B,OAAOyvX,GAAUzvX,IAAQ0vX,GAAM1vX,IAGjC,SAAS6yW,GAAiB7yW,GACxB,OAAI0vX,GAAM1vX,GACD,MAIG,SAARA,EACK,YADT,EAKF,IAAI4vX,GAAsB9yc,OAAOS,OAAO,MACxC,SAASq1b,GAAkB5yW,GAEzB,IAAKgpT,EACH,OAAO,EAET,GAAI0pD,GAAc1yW,GAChB,OAAO,EAIT,GAFAA,EAAMA,EAAIlmF,cAEsB,MAA5B81c,GAAoB5vX,GACtB,OAAO4vX,GAAoB5vX,GAE7B,IAAItsC,EAAK1pC,SAASzI,cAAcy+E,GAChC,OAAIA,EAAI/+E,QAAQ,MAAQ,EAEd2uc,GAAoB5vX,GAC1BtsC,EAAGr2C,cAAgB2F,OAAO6sc,oBAC1Bn8Z,EAAGr2C,cAAgB2F,OAAOoE,YAGpBwoc,GAAoB5vX,GAAO,qBAAqBvsF,KAAKigD,EAAGjmC,YAIpE,IAAIqic,GAAkBzf,EAAQ,6CAO9B,SAASryZ,GAAO0V,GACd,GAAkB,kBAAPA,EAAiB,CAC1B,IAAItH,EAAWpiC,SAAS1B,cAAcorC,GACtC,OAAKtH,GAIIpiC,SAASzI,cAAc,OAIhC,OAAOmyC,EAMX,SAASq8Z,GAAiBlkc,EAASg5X,GACjC,IAAImwD,EAAMhrb,SAASzI,cAAcsK,GACjC,MAAgB,WAAZA,GAIAg5X,EAAM38W,MAAQ28W,EAAM38W,KAAK9c,YAAuC1R,IAA9BmrY,EAAM38W,KAAK9c,MAAM4kc,UACrDhb,EAAIhub,aAAa,WAAY,YAJtBgub,EASX,SAASjkY,GAAiB+wE,EAAWj2H,GACnC,OAAO7B,SAAS+mD,gBAAgBw+Y,GAAaztU,GAAYj2H,GAG3D,SAAS04I,GAAgBhvH,GACvB,OAAOvrB,SAASu6I,eAAehvH,GAGjC,SAAS06a,GAAe16a,GACtB,OAAOvrB,SAASimc,cAAc16a,GAGhC,SAASxU,GAAcg7B,EAAY0mO,EAASytL,GAC1Cn0Z,EAAWh7B,aAAa0hQ,EAASytL,GAGnC,SAAStnZ,GAAau0C,EAAM1gD,GAC1B0gD,EAAKv0C,YAAYnM,GAGnB,SAAS/6C,GAAay7F,EAAM1gD,GAC1B0gD,EAAKz7F,YAAY+6C,GAGnB,SAASV,GAAYohD,GACnB,OAAOA,EAAKphD,WAGd,SAASq6C,GAAa+G,GACpB,OAAOA,EAAK/G,YAGd,SAASvqF,GAASsxF,GAChB,OAAOA,EAAKtxF,QAGd,SAASskc,GAAgBhzW,EAAM5nE,GAC7B4nE,EAAKx8E,YAAc4U,EAGrB,SAAS66a,GAAejzW,EAAMoS,GAC5BpS,EAAKn2F,aAAauoG,EAAS,IAG7B,IAAI8gW,GAAuBvzc,OAAO4zL,OAAO,CACvCnvL,cAAewuc,GACfh/Y,gBAAiBA,GACjBwzF,eAAgBA,GAChB0rT,cAAeA,GACflvb,aAAcA,GACd6nC,YAAaA,GACblnD,YAAaA,GACbq6C,WAAYA,GACZq6C,YAAaA,GACbvqF,QAASA,GACTskc,eAAgBA,GAChBC,cAAeA,KAKbptU,GAAM,CACRzlI,OAAQ,SAAiBumY,EAAGe,GAC1ByrE,GAAYzrE,IAEdnkW,OAAQ,SAAiB4ha,EAAUz9D,GAC7By9D,EAASp6a,KAAK86G,MAAQ6hQ,EAAM38W,KAAK86G,MACnCstU,GAAYhO,GAAU,GACtBgO,GAAYzrE,KAGhBx2X,QAAS,SAAkBw2X,GACzByrE,GAAYzrE,GAAO,KAIvB,SAASyrE,GAAazrE,EAAO0rE,GAC3B,IAAI34c,EAAMitY,EAAM38W,KAAK86G,IACrB,GAAKmlQ,EAAMvwY,GAAX,CAEA,IAAI+sY,EAAKE,EAAM/0R,QACXkzB,EAAM6hQ,EAAMC,mBAAqBD,EAAMmwD,IACvCwb,EAAO7rE,EAAG+hE,MACV6J,EACEtzc,MAAM+nC,QAAQwra,EAAK54c,IACrBoK,EAAOwuc,EAAK54c,GAAMorI,GACTwtU,EAAK54c,KAASorI,IACvBwtU,EAAK54c,QAAO8B,GAGVmrY,EAAM38W,KAAKuob,SACRxzc,MAAM+nC,QAAQwra,EAAK54c,IAEb44c,EAAK54c,GAAKqJ,QAAQ+hI,GAAO,GAElCwtU,EAAK54c,GAAK6Q,KAAKu6H,GAHfwtU,EAAK54c,GAAO,CAACorI,GAMfwtU,EAAK54c,GAAOorI,GAiBlB,IAAI0tU,GAAY,IAAI3b,GAAM,GAAI,GAAI,IAE9BmD,GAAQ,CAAC,SAAU,WAAY,SAAU,SAAU,WAEvD,SAASyY,GAAW/hb,EAAG/xB,GACrB,OACE+xB,EAAEh3B,MAAQiF,EAAEjF,MAERg3B,EAAEoxD,MAAQnjF,EAAEmjF,KACZpxD,EAAE4ma,YAAc34b,EAAE24b,WAClBrtD,EAAMv5W,EAAE1G,QAAUigX,EAAMtrY,EAAEqrB,OAC1B0ob,GAAchib,EAAG/xB,IAEjBwmb,EAAOz0Z,EAAEgna,qBACThna,EAAEsma,eAAiBr4b,EAAEq4b,cACrBpF,EAAQjzb,EAAEq4b,aAAazra,QAM/B,SAASmnb,GAAehib,EAAG/xB,GACzB,GAAc,UAAV+xB,EAAEoxD,IAAmB,OAAO,EAChC,IAAI7hF,EACA0yc,EAAQ1oE,EAAMhqY,EAAIywB,EAAE1G,OAASigX,EAAMhqY,EAAIA,EAAEiN,QAAUjN,EAAEyM,KACrDkmc,EAAQ3oE,EAAMhqY,EAAItB,EAAEqrB,OAASigX,EAAMhqY,EAAIA,EAAEiN,QAAUjN,EAAEyM,KACzD,OAAOimc,IAAUC,GAAShB,GAAgBe,IAAUf,GAAgBgB,GAGtE,SAASC,GAAmB10b,EAAU20b,EAAUC,GAC9C,IAAI9yc,EAAGvG,EACHyL,EAAM,GACV,IAAKlF,EAAI6yc,EAAU7yc,GAAK8yc,IAAU9yc,EAChCvG,EAAMykB,EAASle,GAAGvG,IACduwY,EAAMvwY,KAAQyL,EAAIzL,GAAOuG,GAE/B,OAAOkF,EAGT,SAAS6tc,GAAqBC,GAC5B,IAAIhzc,EAAG8iC,EACH6wW,EAAM,GAENzwX,EAAU8vb,EAAQ9vb,QAClBgvb,EAAUc,EAAQd,QAEtB,IAAKlyc,EAAI,EAAGA,EAAI+5b,GAAMp6b,SAAUK,EAE9B,IADA2zY,EAAIomD,GAAM/5b,IAAM,GACX8iC,EAAI,EAAGA,EAAI5f,EAAQvjB,SAAUmjC,EAC5BknW,EAAM9mX,EAAQ4f,GAAGi3Z,GAAM/5b,MACzB2zY,EAAIomD,GAAM/5b,IAAIsK,KAAK4Y,EAAQ4f,GAAGi3Z,GAAM/5b,KAK1C,SAASizc,EAAapc,GACpB,OAAO,IAAID,GAAMsb,EAAQxkc,QAAQmpb,GAAKl7b,cAAe,GAAI,QAAIJ,EAAWs7b,GAG1E,SAASqc,EAAYC,EAAUhQ,GAC7B,SAASvF,IACuB,MAAxBA,EAAUuF,WACdhiL,EAAWgyL,GAIf,OADAvV,EAAUuF,UAAYA,EACfvF,EAGT,SAASz8K,EAAY5rO,GACnB,IAAI6L,EAAS8wZ,EAAQt0Z,WAAWrI,GAE5By0V,EAAM5oV,IACR8wZ,EAAQznZ,YAAYrJ,EAAQ7L,GAsBhC,SAAS69Z,EACP1sE,EACA2sE,EACAC,EACAC,EACAC,EACAC,EACA/oc,GAYA,GAVIs/X,EAAMtD,EAAMmwD,MAAQ7sD,EAAMypE,KAM5B/sE,EAAQ+sE,EAAW/oc,GAASktb,GAAWlxD,IAGzCA,EAAM0wD,cAAgBoc,GAClB7O,EAAgBj+D,EAAO2sE,EAAoBC,EAAWC,GAA1D,CAIA,IAAIxpb,EAAO28W,EAAM38W,KACb7L,EAAWwoX,EAAMxoX,SACjB2jE,EAAM6kT,EAAM7kT,IACZmoT,EAAMnoT,IAeR6kT,EAAMmwD,IAAMnwD,EAAMswD,GACdkb,EAAQt/Y,gBAAgB8zU,EAAMswD,GAAIn1W,GAClCqwX,EAAQ9uc,cAAcy+E,EAAK6kT,GAC/BgtE,EAAShtE,GAIPitE,EAAejtE,EAAOxoX,EAAUm1b,GAC5BrpE,EAAMjgX,IACR6pb,EAAkBltE,EAAO2sE,GAE3Bhxa,EAAOixa,EAAW5sE,EAAMmwD,IAAK0c,IAMtBruB,EAAOx+C,EAAM2wD,YACtB3wD,EAAMmwD,IAAMqb,EAAQJ,cAAcprE,EAAMtvW,MACxCiL,EAAOixa,EAAW5sE,EAAMmwD,IAAK0c,KAE7B7sE,EAAMmwD,IAAMqb,EAAQ9rT,eAAesgP,EAAMtvW,MACzCiL,EAAOixa,EAAW5sE,EAAMmwD,IAAK0c,KAIjC,SAAS5O,EAAiBj+D,EAAO2sE,EAAoBC,EAAWC,GAC9D,IAAIvzc,EAAI0mY,EAAM38W,KACd,GAAIigX,EAAMhqY,GAAI,CACZ,IAAI6zc,EAAgB7pE,EAAMtD,EAAMC,oBAAsB3mY,EAAE8jc,UAQxD,GAPI95D,EAAMhqY,EAAIA,EAAEuxG,OAASy4R,EAAMhqY,EAAIA,EAAE6gI,OACnC7gI,EAAE0mY,GAAO,GAMPsD,EAAMtD,EAAMC,mBAMd,OALAmtE,EAAcptE,EAAO2sE,GACrBhxa,EAAOixa,EAAW5sE,EAAMmwD,IAAK0c,GACzBruB,EAAO2uB,IACTE,EAAoBrtE,EAAO2sE,EAAoBC,EAAWC,IAErD,GAKb,SAASO,EAAeptE,EAAO2sE,GACzBrpE,EAAMtD,EAAM38W,KAAKiqb,iBACnBX,EAAmB/oc,KAAKxI,MAAMuxc,EAAoB3sE,EAAM38W,KAAKiqb,eAC7DttE,EAAM38W,KAAKiqb,cAAgB,MAE7BttE,EAAMmwD,IAAMnwD,EAAMC,kBAAkBmiE,IAChCmL,EAAYvtE,IACdktE,EAAkBltE,EAAO2sE,GACzBK,EAAShtE,KAITyrE,GAAYzrE,GAEZ2sE,EAAmB/oc,KAAKo8X,IAI5B,SAASqtE,EAAqBrtE,EAAO2sE,EAAoBC,EAAWC,GAClE,IAAIvzc,EAKAk0c,EAAYxtE,EAChB,MAAOwtE,EAAUvtE,kBAEf,GADAutE,EAAYA,EAAUvtE,kBAAkBu/D,OACpCl8D,EAAMhqY,EAAIk0c,EAAUnqb,OAASigX,EAAMhqY,EAAIA,EAAEm0c,YAAa,CACxD,IAAKn0c,EAAI,EAAGA,EAAI2zY,EAAIygE,SAASz0c,SAAUK,EACrC2zY,EAAIygE,SAASp0c,GAAGuyc,GAAW2B,GAE7Bb,EAAmB/oc,KAAK4pc,GACxB,MAKJ7xa,EAAOixa,EAAW5sE,EAAMmwD,IAAK0c,GAG/B,SAASlxa,EAAQ+e,EAAQy1Y,EAAKwd,GACxBrqE,EAAM5oV,KACJ4oV,EAAMqqE,GACJnC,EAAQt0Z,WAAWy2Z,KAAYjzZ,GACjC8wZ,EAAQtvb,aAAaw+B,EAAQy1Y,EAAKwd,GAGpCnC,EAAQ3uc,YAAY69C,EAAQy1Y,IAKlC,SAAS8c,EAAgBjtE,EAAOxoX,EAAUm1b,GACxC,GAAIv0c,MAAM+nC,QAAQ3oB,GAAW,CACvB,EAGJ,IAAK,IAAIle,EAAI,EAAGA,EAAIke,EAASve,SAAUK,EACrCozc,EAAUl1b,EAASle,GAAIqzc,EAAoB3sE,EAAMmwD,IAAK,MAAM,EAAM34a,EAAUle,QAErE6xb,EAAYnrD,EAAMtvW,OAC3B86a,EAAQ3uc,YAAYmjY,EAAMmwD,IAAKqb,EAAQ9rT,eAAe3wJ,OAAOixY,EAAMtvW,QAIvE,SAAS68a,EAAavtE,GACpB,MAAOA,EAAMC,kBACXD,EAAQA,EAAMC,kBAAkBu/D,OAElC,OAAOl8D,EAAMtD,EAAM7kT,KAGrB,SAAS+xX,EAAmBltE,EAAO2sE,GACjC,IAAK,IAAInL,EAAM,EAAGA,EAAMv0D,EAAIv0Y,OAAOO,SAAUuoc,EAC3Cv0D,EAAIv0Y,OAAO8oc,GAAKqK,GAAW7rE,GAE7B1mY,EAAI0mY,EAAM38W,KAAKwnF,KACXy4R,EAAMhqY,KACJgqY,EAAMhqY,EAAEZ,SAAWY,EAAEZ,OAAOmzc,GAAW7rE,GACvCsD,EAAMhqY,EAAEqiC,SAAWgxa,EAAmB/oc,KAAKo8X,IAOnD,SAASgtE,EAAUhtE,GACjB,IAAI1mY,EACJ,GAAIgqY,EAAMhqY,EAAI0mY,EAAMywD,WAClB+a,EAAQD,cAAcvrE,EAAMmwD,IAAK72b,OAC5B,CACL,IAAIs0c,EAAW5tE,EACf,MAAO4tE,EACDtqE,EAAMhqY,EAAIs0c,EAAS3iW,UAAYq4R,EAAMhqY,EAAIA,EAAEkyG,SAASR,WACtDwgW,EAAQD,cAAcvrE,EAAMmwD,IAAK72b,GAEnCs0c,EAAWA,EAASlzZ,OAIpB4oV,EAAMhqY,EAAIikc,KACZjkc,IAAM0mY,EAAM/0R,SACZ3xG,IAAM0mY,EAAMuwD,WACZjtD,EAAMhqY,EAAIA,EAAEkyG,SAASR,WAErBwgW,EAAQD,cAAcvrE,EAAMmwD,IAAK72b,GAIrC,SAASu0c,EAAWjB,EAAWC,EAAQ7P,EAAQl0W,EAAUsjX,EAAQO,GAC/D,KAAO7jX,GAAYsjX,IAAUtjX,EAC3B4jX,EAAU1P,EAAOl0W,GAAW6jX,EAAoBC,EAAWC,GAAQ,EAAO7P,EAAQl0W,GAItF,SAASglX,EAAmB9tE,GAC1B,IAAI1mY,EAAG8iC,EACH/Y,EAAO28W,EAAM38W,KACjB,GAAIigX,EAAMjgX,GAER,IADIigX,EAAMhqY,EAAI+pB,EAAKwnF,OAASy4R,EAAMhqY,EAAIA,EAAEkQ,UAAYlQ,EAAE0mY,GACjD1mY,EAAI,EAAGA,EAAI2zY,EAAIzjY,QAAQvQ,SAAUK,EAAK2zY,EAAIzjY,QAAQlQ,GAAG0mY,GAE5D,GAAIsD,EAAMhqY,EAAI0mY,EAAMxoX,UAClB,IAAK4kB,EAAI,EAAGA,EAAI4jW,EAAMxoX,SAASve,SAAUmjC,EACvC0xa,EAAkB9tE,EAAMxoX,SAAS4kB,IAKvC,SAAS2xa,EAAc/Q,EAAQl0W,EAAUsjX,GACvC,KAAOtjX,GAAYsjX,IAAUtjX,EAAU,CACrC,IAAIklX,EAAKhR,EAAOl0W,GACZw6S,EAAM0qE,KACJ1qE,EAAM0qE,EAAG7yX,MACX8yX,EAA0BD,GAC1BF,EAAkBE,IAElBvzL,EAAWuzL,EAAG7d,OAMtB,SAAS8d,EAA2BjuE,EAAOkuE,GACzC,GAAI5qE,EAAM4qE,IAAO5qE,EAAMtD,EAAM38W,MAAO,CAClC,IAAI/pB,EACAmjc,EAAYxvD,EAAI9vY,OAAOlE,OAAS,EAapC,IAZIqqY,EAAM4qE,GAGRA,EAAGzR,WAAaA,EAGhByR,EAAK1B,EAAWxsE,EAAMmwD,IAAKsM,GAGzBn5D,EAAMhqY,EAAI0mY,EAAMC,oBAAsBqD,EAAMhqY,EAAIA,EAAEkmc,SAAWl8D,EAAMhqY,EAAE+pB,OACvE4qb,EAA0B30c,EAAG40c,GAE1B50c,EAAI,EAAGA,EAAI2zY,EAAI9vY,OAAOlE,SAAUK,EACnC2zY,EAAI9vY,OAAO7D,GAAG0mY,EAAOkuE,GAEnB5qE,EAAMhqY,EAAI0mY,EAAM38W,KAAKwnF,OAASy4R,EAAMhqY,EAAIA,EAAE6D,QAC5C7D,EAAE0mY,EAAOkuE,GAETA,SAGFzzL,EAAWulH,EAAMmwD,KAIrB,SAASge,EAAgBvB,EAAWwB,EAAOC,EAAO1B,EAAoB2B,GACpE,IAQIC,EAAaC,EAAUC,EAAa5B,EARpC6B,EAAc,EACdC,EAAc,EACdC,EAAYR,EAAMn1c,OAAS,EAC3B41c,EAAgBT,EAAM,GACtBU,EAAcV,EAAMQ,GACpBG,EAAYV,EAAMp1c,OAAS,EAC3B+1c,EAAgBX,EAAM,GACtBY,EAAcZ,EAAMU,GAMpBG,GAAWZ,EAMf,MAAOI,GAAeE,GAAaD,GAAeI,EAC5C9jB,EAAQ4jB,GACVA,EAAgBT,IAAQM,GACfzjB,EAAQ6jB,GACjBA,EAAcV,IAAQQ,GACb9C,GAAU+C,EAAeG,IAClCG,EAAWN,EAAeG,EAAerC,EAAoB0B,EAAOM,GACpEE,EAAgBT,IAAQM,GACxBM,EAAgBX,IAAQM,IACf7C,GAAUgD,EAAaG,IAChCE,EAAWL,EAAaG,EAAatC,EAAoB0B,EAAOU,GAChED,EAAcV,IAAQQ,GACtBK,EAAcZ,IAAQU,IACbjD,GAAU+C,EAAeI,IAClCE,EAAWN,EAAeI,EAAatC,EAAoB0B,EAAOU,GAClEG,GAAW1D,EAAQtvb,aAAa0wb,EAAWiC,EAAc1e,IAAKqb,EAAQj6W,YAAYu9W,EAAY3e,MAC9F0e,EAAgBT,IAAQM,GACxBO,EAAcZ,IAAQU,IACbjD,GAAUgD,EAAaE,IAChCG,EAAWL,EAAaE,EAAerC,EAAoB0B,EAAOM,GAClEO,GAAW1D,EAAQtvb,aAAa0wb,EAAWkC,EAAY3e,IAAK0e,EAAc1e,KAC1E2e,EAAcV,IAAQQ,GACtBI,EAAgBX,IAAQM,KAEpB1jB,EAAQsjB,KAAgBA,EAAcrC,GAAkBkC,EAAOM,EAAaE,IAChFJ,EAAWlrE,EAAM0rE,EAAcj8c,KAC3Bw7c,EAAYS,EAAcj8c,KAC1Bq8c,EAAaJ,EAAeZ,EAAOM,EAAaE,GAChD3jB,EAAQujB,GACV9B,EAAUsC,EAAerC,EAAoBC,EAAWiC,EAAc1e,KAAK,EAAOke,EAAOM,IAEzFF,EAAcL,EAAMI,GAChB1C,GAAU2C,EAAaO,IACzBG,EAAWV,EAAaO,EAAerC,EAAoB0B,EAAOM,GAClEP,EAAMI,QAAY35c,EAClBq6c,GAAW1D,EAAQtvb,aAAa0wb,EAAW6B,EAAYte,IAAK0e,EAAc1e,MAG1Euc,EAAUsC,EAAerC,EAAoBC,EAAWiC,EAAc1e,KAAK,EAAOke,EAAOM,IAG7FK,EAAgBX,IAAQM,IAGxBD,EAAcE,GAChB/B,EAAS5hB,EAAQojB,EAAMU,EAAY,IAAM,KAAOV,EAAMU,EAAY,GAAG5e,IACrE0d,EAAUjB,EAAWC,EAAQwB,EAAOM,EAAaI,EAAWpC,IACnDgC,EAAcI,GACvBhB,EAAaK,EAAOM,EAAaE,GAsBrC,SAASQ,EAAc92W,EAAM81W,EAAOx1b,EAAOC,GACzC,IAAK,IAAIvf,EAAIsf,EAAOtf,EAAIuf,EAAKvf,IAAK,CAChC,IAAIP,EAAIq1c,EAAM90c,GACd,GAAIgqY,EAAMvqY,IAAM+yc,GAAUxzW,EAAMv/F,GAAM,OAAOO,GAIjD,SAAS61c,EACP1R,EACAz9D,EACA2sE,EACAI,EACA/oc,EACAsqc,GAEA,GAAI7Q,IAAaz9D,EAAjB,CAIIsD,EAAMtD,EAAMmwD,MAAQ7sD,EAAMypE,KAE5B/sE,EAAQ+sE,EAAW/oc,GAASktb,GAAWlxD,IAGzC,IAAImwD,EAAMnwD,EAAMmwD,IAAMsN,EAAStN,IAE/B,GAAI3R,EAAOif,EAAS1M,oBACdztD,EAAMtD,EAAMqwD,aAAa5kD,UAC3B4jE,EAAQ5R,EAAStN,IAAKnwD,EAAO2sE,GAE7B3sE,EAAM+wD,oBAAqB,OAS/B,GAAIvS,EAAOx+C,EAAMiD,WACfu7C,EAAOif,EAASx6D,WAChBjD,EAAMjtY,MAAQ0qc,EAAS1qc,MACtByrb,EAAOx+C,EAAM4wD,WAAapS,EAAOx+C,EAAM6wD,SAExC7wD,EAAMC,kBAAoBw9D,EAASx9D,sBALrC,CASA,IAAI3mY,EACA+pB,EAAO28W,EAAM38W,KACbigX,EAAMjgX,IAASigX,EAAMhqY,EAAI+pB,EAAKwnF,OAASy4R,EAAMhqY,EAAIA,EAAEymY,WACrDzmY,EAAEmkc,EAAUz9D,GAGd,IAAIouE,EAAQ3Q,EAASjmb,SACjBw2b,EAAKhuE,EAAMxoX,SACf,GAAI8rX,EAAMjgX,IAASkqb,EAAYvtE,GAAQ,CACrC,IAAK1mY,EAAI,EAAGA,EAAI2zY,EAAIpxW,OAAO5iC,SAAUK,EAAK2zY,EAAIpxW,OAAOviC,GAAGmkc,EAAUz9D,GAC9DsD,EAAMhqY,EAAI+pB,EAAKwnF,OAASy4R,EAAMhqY,EAAIA,EAAEuiC,SAAWviC,EAAEmkc,EAAUz9D,GAE7DirD,EAAQjrD,EAAMtvW,MACZ4yW,EAAM8qE,IAAU9qE,EAAM0qE,GACpBI,IAAUJ,GAAMG,EAAehe,EAAKie,EAAOJ,EAAIrB,EAAoB2B,GAC9DhrE,EAAM0qE,IAIX1qE,EAAMm6D,EAAS/sa,OAAS86a,EAAQF,eAAenb,EAAK,IACxD0d,EAAU1d,EAAK,KAAM6d,EAAI,EAAGA,EAAG/0c,OAAS,EAAG0zc,IAClCrpE,EAAM8qE,GACfL,EAAaK,EAAO,EAAGA,EAAMn1c,OAAS,GAC7BqqY,EAAMm6D,EAAS/sa,OACxB86a,EAAQF,eAAenb,EAAK,IAErBsN,EAAS/sa,OAASsvW,EAAMtvW,MACjC86a,EAAQF,eAAenb,EAAKnwD,EAAMtvW,MAEhC4yW,EAAMjgX,IACJigX,EAAMhqY,EAAI+pB,EAAKwnF,OAASy4R,EAAMhqY,EAAIA,EAAEg2c,YAAch2c,EAAEmkc,EAAUz9D,KAItE,SAASuvE,EAAkBvvE,EAAOiL,EAAOxwT,GAGvC,GAAI+jW,EAAO/jW,IAAY6oT,EAAMtD,EAAMtlV,QACjCslV,EAAMtlV,OAAOr3B,KAAKiqb,cAAgBriE,OAElC,IAAK,IAAI3xY,EAAI,EAAGA,EAAI2xY,EAAMhyY,SAAUK,EAClC2xY,EAAM3xY,GAAG+pB,KAAKwnF,KAAKlvE,OAAOsvW,EAAM3xY,IAKtC,IAKIk2c,EAAmBhkB,EAAQ,2CAG/B,SAAS6jB,EAASlf,EAAKnwD,EAAO2sE,EAAoB8C,GAChD,IAAIn2c,EACA6hF,EAAM6kT,EAAM7kT,IACZ93D,EAAO28W,EAAM38W,KACb7L,EAAWwoX,EAAMxoX,SAIrB,GAHAi4b,EAASA,GAAWpsb,GAAQA,EAAK08J,IACjCigN,EAAMmwD,IAAMA,EAER3R,EAAOx+C,EAAM2wD,YAAcrtD,EAAMtD,EAAMqwD,cAEzC,OADArwD,EAAM+wD,oBAAqB,GACpB,EAQT,GAAIztD,EAAMjgX,KACJigX,EAAMhqY,EAAI+pB,EAAKwnF,OAASy4R,EAAMhqY,EAAIA,EAAE6gI,OAAS7gI,EAAE0mY,GAAO,GACtDsD,EAAMhqY,EAAI0mY,EAAMC,oBAGlB,OADAmtE,EAAcptE,EAAO2sE,IACd,EAGX,GAAIrpE,EAAMnoT,GAAM,CACd,GAAImoT,EAAM9rX,GAER,GAAK24a,EAAI97C,gBAIP,GAAI/Q,EAAMhqY,EAAI+pB,IAASigX,EAAMhqY,EAAIA,EAAEihc,WAAaj3D,EAAMhqY,EAAIA,EAAEgJ,YAC1D,GAAIhJ,IAAM62b,EAAI7tb,UAWZ,OAAO,MAEJ,CAIL,IAFA,IAAIotc,GAAgB,EAChBz0T,EAAYk1S,EAAIhhZ,WACXqyZ,EAAM,EAAGA,EAAMhqb,EAASve,OAAQuoc,IAAO,CAC9C,IAAKvmT,IAAco0T,EAAQp0T,EAAWzjI,EAASgqb,GAAMmL,EAAoB8C,GAAS,CAChFC,GAAgB,EAChB,MAEFz0T,EAAYA,EAAU1pD,YAIxB,IAAKm+W,GAAiBz0T,EAUpB,OAAO,OAxCXgyT,EAAejtE,EAAOxoX,EAAUm1b,GA6CpC,GAAIrpE,EAAMjgX,GAAO,CACf,IAAIssb,GAAa,EACjB,IAAK,IAAI58c,KAAOswB,EACd,IAAKmsb,EAAiBz8c,GAAM,CAC1B48c,GAAa,EACbzC,EAAkBltE,EAAO2sE,GACzB,OAGCgD,GAActsb,EAAK,UAEtBgza,GAAShza,EAAK,gBAGT8sa,EAAI9sa,OAAS28W,EAAMtvW,OAC5By/Z,EAAI9sa,KAAO28W,EAAMtvW,MAEnB,OAAO,EAcT,OAAO,SAAgB+sa,EAAUz9D,EAAOk9D,EAAWoR,GACjD,IAAIrjB,EAAQjrD,GAAZ,CAKA,IAAI4vE,GAAiB,EACjBjD,EAAqB,GAEzB,GAAI1hB,EAAQwS,GAEVmS,GAAiB,EACjBlD,EAAU1sE,EAAO2sE,OACZ,CACL,IAAIkD,EAAgBvsE,EAAMm6D,EAASjlW,UACnC,IAAKq3W,GAAiB/D,GAAUrO,EAAUz9D,GAExCmvE,EAAW1R,EAAUz9D,EAAO2sE,EAAoB,KAAM,KAAM2B,OACvD,CACL,GAAIuB,EAAe,CAQjB,GAJ0B,IAAtBpS,EAASjlW,UAAkBilW,EAASj/a,aAAa8ua,KACnDmQ,EAASr7b,gBAAgBkrb,GACzB4P,GAAY,GAEV1e,EAAO0e,IACLmS,EAAQ5R,EAAUz9D,EAAO2sE,GAE3B,OADA4C,EAAiBvvE,EAAO2sE,GAAoB,GACrClP,EAaXA,EAAW8O,EAAY9O,GAIzB,IAAIqS,EAASrS,EAAStN,IAClByc,EAAYpB,EAAQt0Z,WAAW44Z,GAcnC,GAXApD,EACE1sE,EACA2sE,EAIAmD,EAAOC,SAAW,KAAOnD,EACzBpB,EAAQj6W,YAAYu+W,IAIlBxsE,EAAMtD,EAAMtlV,QAAS,CACvB,IAAIkzZ,EAAW5tE,EAAMtlV,OACjBs1Z,EAAYzC,EAAYvtE,GAC5B,MAAO4tE,EAAU,CACf,IAAK,IAAIt0c,EAAI,EAAGA,EAAI2zY,EAAIzjY,QAAQvQ,SAAUK,EACxC2zY,EAAIzjY,QAAQlQ,GAAGs0c,GAGjB,GADAA,EAASzd,IAAMnwD,EAAMmwD,IACjB6f,EAAW,CACb,IAAK,IAAIxO,EAAM,EAAGA,EAAMv0D,EAAIv0Y,OAAOO,SAAUuoc,EAC3Cv0D,EAAIv0Y,OAAO8oc,GAAKqK,GAAW+B,GAK7B,IAAIjya,EAASiya,EAASvqb,KAAKwnF,KAAKlvE,OAChC,GAAIA,EAAO67Z,OAET,IAAK,IAAIyY,EAAM,EAAGA,EAAMt0a,EAAOk7Z,IAAI59b,OAAQg3c,IACzCt0a,EAAOk7Z,IAAIoZ,UAIfxE,GAAYmC,GAEdA,EAAWA,EAASlzZ,QAKpB4oV,EAAMspE,GACRmB,EAAa,CAACtQ,GAAW,EAAG,GACnBn6D,EAAMm6D,EAAStiX,MACxB2yX,EAAkBrQ,IAMxB,OADA8R,EAAiBvvE,EAAO2sE,EAAoBiD,GACrC5vE,EAAMmwD,IAnGP7sD,EAAMm6D,IAAaqQ,EAAkBrQ,IAyG/C,IAAI3J,GAAa,CACfp7b,OAAQw3c,GACRr0a,OAAQq0a,GACR1mc,QAAS,SAA2Bw2X,GAClCkwE,GAAiBlwE,EAAO6rE,MAI5B,SAASqE,GAAkBzS,EAAUz9D,IAC/By9D,EAASp6a,KAAKywa,YAAc9zD,EAAM38W,KAAKywa,aACzCoO,GAAQzE,EAAUz9D,GAItB,SAASkiE,GAASzE,EAAUz9D,GAC1B,IAQIjtY,EAAKo9c,EAAQ79R,EARb89R,EAAW3S,IAAaoO,GACxBwE,EAAYrwE,IAAU6rE,GACtByE,EAAUC,GAAsB9S,EAASp6a,KAAKywa,WAAY2J,EAASxyV,SACnEulW,EAAUD,GAAsBvwE,EAAM38W,KAAKywa,WAAY9zD,EAAM/0R,SAE7DwlW,EAAiB,GACjBC,EAAoB,GAGxB,IAAK39c,KAAOy9c,EACVL,EAASG,EAAQv9c,GACjBu/K,EAAMk+R,EAAQz9c,GACTo9c,GAQH79R,EAAIj2D,SAAW8zV,EAAOh7c,MACtBm9K,EAAIq+R,OAASR,EAAO50U,IACpBq1U,GAAWt+R,EAAK,SAAU0tN,EAAOy9D,GAC7BnrR,EAAIp6C,KAAOo6C,EAAIp6C,IAAI24U,kBACrBH,EAAkB9sc,KAAK0uK,KAVzBs+R,GAAWt+R,EAAK,OAAQ0tN,EAAOy9D,GAC3BnrR,EAAIp6C,KAAOo6C,EAAIp6C,IAAIxtF,UACrB+la,EAAe7sc,KAAK0uK,IAa1B,GAAIm+R,EAAex3c,OAAQ,CACzB,IAAI63c,EAAa,WACf,IAAK,IAAIx3c,EAAI,EAAGA,EAAIm3c,EAAex3c,OAAQK,IACzCs3c,GAAWH,EAAen3c,GAAI,WAAY0mY,EAAOy9D,IAGjD2S,EACFhZ,GAAep3D,EAAO,SAAU8wE,GAEhCA,IAYJ,GARIJ,EAAkBz3c,QACpBm+b,GAAep3D,EAAO,aAAa,WACjC,IAAK,IAAI1mY,EAAI,EAAGA,EAAIo3c,EAAkBz3c,OAAQK,IAC5Cs3c,GAAWF,EAAkBp3c,GAAI,mBAAoB0mY,EAAOy9D,OAK7D2S,EACH,IAAKr9c,KAAOu9c,EACLE,EAAQz9c,IAEX69c,GAAWN,EAAQv9c,GAAM,SAAU0qc,EAAUA,EAAU4S,GAM/D,IAAIU,GAAiB94c,OAAOS,OAAO,MAEnC,SAAS63c,GACP1c,EACA/zD,GAEA,IAKIxmY,EAAGg5K,EALHh0I,EAAMrmC,OAAOS,OAAO,MACxB,IAAKm7b,EAEH,OAAOv1Z,EAGT,IAAKhlC,EAAI,EAAGA,EAAIu6b,EAAK56b,OAAQK,IAC3Bg5K,EAAMuhR,EAAKv6b,GACNg5K,EAAI0+R,YAEP1+R,EAAI0+R,UAAYD,IAElBzya,EAAI2ya,GAAc3+R,IAAQA,EAC1BA,EAAIp6C,IAAMk8T,GAAat0D,EAAGt0R,SAAU,aAAc8mE,EAAIz7K,MAAM,GAG9D,OAAOynC,EAGT,SAAS2ya,GAAe3+R,GACtB,OAAOA,EAAI4+R,SAAa5+R,EAAQ,KAAI,IAAOr6K,OAAOmU,KAAKkmK,EAAI0+R,WAAa,IAAIntc,KAAK,KAGnF,SAAS+sc,GAAYt+R,EAAKznE,EAAMm1R,EAAOy9D,EAAU4S,GAC/C,IAAIr2a,EAAKs4I,EAAIp6C,KAAOo6C,EAAIp6C,IAAIrtB,GAC5B,GAAI7wE,EACF,IACEA,EAAGgmW,EAAMmwD,IAAK79Q,EAAK0tN,EAAOy9D,EAAU4S,GACpC,MAAO3rc,IACP2wb,GAAY3wb,GAAGs7X,EAAM/0R,QAAU,aAAgBqnE,EAAQ,KAAI,IAAMznE,EAAO,UAK9E,IAAIsmW,GAAc,CAChBhzU,GACA21T,IAKF,SAASsd,GAAa3T,EAAUz9D,GAC9B,IAAIkG,EAAOlG,EAAMowD,iBACjB,KAAI9sD,EAAM4C,KAA4C,IAAnCA,EAAKopD,KAAK7zb,QAAQ41c,iBAGjCpmB,EAAQwS,EAASp6a,KAAK9c,SAAU0kb,EAAQjrD,EAAM38W,KAAK9c,QAAvD,CAGA,IAAIxT,EAAK0tK,EAAK4sI,EACV8iJ,EAAMnwD,EAAMmwD,IACZmhB,EAAW7T,EAASp6a,KAAK9c,OAAS,GAClCA,EAAQy5X,EAAM38W,KAAK9c,OAAS,GAMhC,IAAKxT,KAJDuwY,EAAM/8X,EAAMgrb,UACdhrb,EAAQy5X,EAAM38W,KAAK9c,MAAQizV,EAAO,GAAIjzV,IAG5BA,EACVk6J,EAAMl6J,EAAMxT,GACZs6S,EAAMikK,EAASv+c,GACXs6S,IAAQ5sI,GACVuiB,GAAQmtQ,EAAKp9b,EAAK0tK,GAStB,IAAK1tK,KAHAivD,IAAQ8sY,KAAWvob,EAAMpR,QAAUm8c,EAASn8c,OAC/C6tL,GAAQmtQ,EAAK,QAAS5pb,EAAMpR,OAElBm8c,EACNrmB,EAAQ1kb,EAAMxT,MACZg3c,GAAQh3c,GACVo9b,EAAIohB,kBAAkBzH,GAASE,GAAaj3c,IAClC02c,GAAiB12c,IAC3Bo9b,EAAI/tb,gBAAgBrP,KAM5B,SAASiwL,GAASn0I,EAAI97C,EAAKoC,GACrB05C,EAAG7nC,QAAQ5K,QAAQ,MAAQ,EAC7Bo1c,GAAY3ia,EAAI97C,EAAKoC,GACZ00c,GAAc92c,GAGnB62c,GAAiBz0c,GACnB05C,EAAGzsC,gBAAgBrP,IAInBoC,EAAgB,oBAARpC,GAA4C,UAAf87C,EAAG7nC,QACpC,OACAjU,EACJ87C,EAAG1sC,aAAapP,EAAKoC,IAEds0c,GAAiB12c,GAC1B87C,EAAG1sC,aAAapP,EAAK42c,GAAuB52c,EAAKoC,IACxC40c,GAAQh3c,GACb62c,GAAiBz0c,GACnB05C,EAAG0ia,kBAAkBzH,GAASE,GAAaj3c,IAE3C87C,EAAG4ia,eAAe3H,GAAS/2c,EAAKoC,GAGlCq8c,GAAY3ia,EAAI97C,EAAKoC,GAIzB,SAASq8c,GAAa3ia,EAAI97C,EAAKoC,GAC7B,GAAIy0c,GAAiBz0c,GACnB05C,EAAGzsC,gBAAgBrP,OACd,CAKL,GACEivD,KAAS6sY,IACM,aAAfhgZ,EAAG7nC,SACK,gBAARjU,GAAmC,KAAVoC,IAAiB05C,EAAG6ia,OAC7C,CACA,IAAIC,EAAU,SAAUjtc,GACtBA,EAAE84L,2BACF3uJ,EAAGi7B,oBAAoB,QAAS6nY,IAElC9ia,EAAGqB,iBAAiB,QAASyha,GAE7B9ia,EAAG6ia,QAAS,EAEd7ia,EAAG1sC,aAAapP,EAAKoC,IAIzB,IAAIoR,GAAQ,CACV7N,OAAQ04c,GACRv1a,OAAQu1a,IAKV,SAASQ,GAAanU,EAAUz9D,GAC9B,IAAInxV,EAAKmxV,EAAMmwD,IACX9sa,EAAO28W,EAAM38W,KACbwub,EAAUpU,EAASp6a,KACvB,KACE4na,EAAQ5na,EAAK+mb,cACbnf,EAAQ5na,EAAKgkC,SACX4jY,EAAQ4mB,IACN5mB,EAAQ4mB,EAAQzH,cAChBnf,EAAQ4mB,EAAQxqZ,SALtB,CAYA,IAAIyG,EAAMm8Y,GAAiBjqE,GAGvB8xE,EAAkBjja,EAAGkja,mBACrBzuE,EAAMwuE,KACRhkZ,EAAMltB,GAAOktB,EAAKw8Y,GAAewH,KAI/BhkZ,IAAQjf,EAAGmja,aACbnja,EAAG1sC,aAAa,QAAS2rD,GACzBjf,EAAGmja,WAAalkZ,IAIpB,IA4YIn0C,GAAK2wB,GAAK2na,GAAKC,GAASC,GAAeC,GA5YvCC,GAAQ,CACV35c,OAAQk5c,GACR/1a,OAAQ+1a,IAKNU,GAAsB,gBAE1B,SAAS/2I,GAAc3zR,GACrB,IAQI7uC,EAAGynK,EAAMlnK,EAAGyrc,EAAY9ma,EARxBs0a,GAAW,EACXC,GAAW,EACXC,GAAmB,EACnBC,GAAU,EACVC,EAAQ,EACRC,EAAS,EACTC,EAAQ,EACRC,EAAkB,EAGtB,IAAKx5c,EAAI,EAAGA,EAAIsuC,EAAI3uC,OAAQK,IAG1B,GAFAknK,EAAOznK,EACPA,EAAI6uC,EAAIra,WAAWj0B,GACfi5c,EACQ,KAANx5c,GAAuB,KAATynK,IAAiB+xS,GAAW,QACzC,GAAIC,EACC,KAANz5c,GAAuB,KAATynK,IAAiBgyS,GAAW,QACzC,GAAIC,EACC,KAAN15c,GAAuB,KAATynK,IAAiBiyS,GAAmB,QACjD,GAAIC,EACC,KAAN35c,GAAuB,KAATynK,IAAiBkyS,GAAU,QACxC,GACC,MAAN35c,GAC0B,MAA1B6uC,EAAIra,WAAWj0B,EAAI,IACO,MAA1BsuC,EAAIra,WAAWj0B,EAAI,IAClBq5c,GAAUC,GAAWC,EASjB,CACL,OAAQ95c,GACN,KAAK,GAAMy5c,GAAW,EAAM,MAC5B,KAAK,GAAMD,GAAW,EAAM,MAC5B,KAAK,GAAME,GAAmB,EAAM,MACpC,KAAK,GAAMI,IAAS,MACpB,KAAK,GAAMA,IAAS,MACpB,KAAK,GAAMD,IAAU,MACrB,KAAK,GAAMA,IAAU,MACrB,KAAK,IAAMD,IAAS,MACpB,KAAK,IAAMA,IAAS,MAEtB,GAAU,KAAN55c,EAAY,CAId,IAHA,IAAIqjC,EAAI9iC,EAAI,EACRjB,OAAI,EAED+jC,GAAK,EAAGA,IAEb,GADA/jC,EAAIuvC,EAAI7wB,OAAOqlB,GACL,MAAN/jC,EAAa,MAEdA,GAAMi6c,GAAoB1jd,KAAKyJ,KAClCq6c,GAAU,cA5BK79c,IAAfkwc,GAEF+N,EAAkBx5c,EAAI,EACtByrc,EAAan9Z,EAAI3iC,MAAM,EAAG3L,GAAGwK,QAE7Bivc,IAmCN,SAASA,KACN90a,IAAYA,EAAU,KAAKr6B,KAAKgkC,EAAI3iC,MAAM6tc,EAAiBx5c,GAAGwK,QAC/Dgvc,EAAkBx5c,EAAI,EAGxB,QAXmBzE,IAAfkwc,EACFA,EAAan9Z,EAAI3iC,MAAM,EAAG3L,GAAGwK,OACA,IAApBgvc,GACTC,IAQE90a,EACF,IAAK3kC,EAAI,EAAGA,EAAI2kC,EAAQhlC,OAAQK,IAC9Byrc,EAAaiO,GAAWjO,EAAY9ma,EAAQ3kC,IAIhD,OAAOyrc,EAGT,SAASiO,GAAYpra,EAAKvgB,GACxB,IAAI/tB,EAAI+tB,EAAOjrB,QAAQ,KACvB,GAAI9C,EAAI,EAEN,MAAQ,OAAU+tB,EAAS,MAASugB,EAAM,IAE1C,IAAI/wC,EAAOwwB,EAAOpiB,MAAM,EAAG3L,GACvBmjB,EAAO4K,EAAOpiB,MAAM3L,EAAI,GAC5B,MAAQ,OAAUzC,EAAO,MAAS+wC,GAAgB,MAATnrB,EAAe,IAAMA,EAAOA,GASzE,SAASw2b,GAAUvnE,EAAK54Q,GACtB8Q,QAAQh/G,MAAO,mBAAqB8mX,GAItC,SAASwnE,GACP12b,EACAzpB,GAEA,OAAOypB,EACHA,EAAQhe,KAAI,SAAUzN,GAAK,OAAOA,EAAEgC,MAASs0B,QAAO,SAAU43W,GAAK,OAAOA,KAC1E,GAGN,SAASk0E,GAAStka,EAAIh4C,EAAM1B,EAAO29H,EAAO5yG,IACvC2uB,EAAG/b,QAAU+b,EAAG/b,MAAQ,KAAKlvB,KAAKwvc,GAAa,CAAEv8c,KAAMA,EAAM1B,MAAOA,EAAO+qB,QAASA,GAAW4yG,IAChGjkF,EAAGwka,OAAQ,EAGb,SAASC,GAASzka,EAAIh4C,EAAM1B,EAAO29H,EAAO5yG,GACxC,IAAI3Z,EAAQ2Z,EACP2uB,EAAG0ka,eAAiB1ka,EAAG0ka,aAAe,IACtC1ka,EAAGtoC,QAAUsoC,EAAGtoC,MAAQ,IAC7BA,EAAM3C,KAAKwvc,GAAa,CAAEv8c,KAAMA,EAAM1B,MAAOA,EAAO+qB,QAASA,GAAW4yG,IACxEjkF,EAAGwka,OAAQ,EAIb,SAASG,GAAY3ka,EAAIh4C,EAAM1B,EAAO29H,GACpCjkF,EAAG4ka,SAAS58c,GAAQ1B,EACpB05C,EAAG6ka,UAAU9vc,KAAKwvc,GAAa,CAAEv8c,KAAMA,EAAM1B,MAAOA,GAAS29H,IAG/D,SAAS6gV,GACP9ka,EACAh4C,EACAq6c,EACA/7c,EACAomI,EACAq4U,EACA5C,EACAl+U,IAECjkF,EAAGilZ,aAAejlZ,EAAGilZ,WAAa,KAAKlwb,KAAKwvc,GAAa,CACxDv8c,KAAMA,EACNq6c,QAASA,EACT/7c,MAAOA,EACPomI,IAAKA,EACLq4U,aAAcA,EACd5C,UAAWA,GACVl+U,IACHjkF,EAAGwka,OAAQ,EAGb,SAASQ,GAAuBrqJ,EAAQ3yT,EAAMqpB,GAC5C,OAAOA,EACF,MAAQrpB,EAAO,KAAQ2yT,EAAS,KACjCA,EAAS3yT,EAGf,SAASi9c,GACPjla,EACAh4C,EACA1B,EACA67c,EACA+C,EACAz3P,EACAxpF,EACA5yG,GAiDA,IAAIy+C,EA/CJqyY,EAAYA,GAAahmB,EAiBrBgmB,EAAUx6c,MACR0pB,EACFrpB,EAAO,IAAMA,EAAO,8BAAgCA,EAAO,IACzC,UAATA,IACTA,EAAO,qBACAm6c,EAAUx6c,OAEVw6c,EAAU13S,SACfp5I,EACFrpB,EAAO,IAAMA,EAAO,0BAA4BA,EAAO,IACrC,UAATA,IACTA,EAAO,YAKPm6c,EAAUrrE,iBACLqrE,EAAUrrE,QACjB9uY,EAAOg9c,GAAsB,IAAKh9c,EAAMqpB,IAEtC8wb,EAAU1lE,cACL0lE,EAAU1lE,KACjBz0Y,EAAOg9c,GAAsB,IAAKh9c,EAAMqpB,IAGtC8wb,EAAU96F,iBACL86F,EAAU96F,QACjBr/W,EAAOg9c,GAAsB,IAAKh9c,EAAMqpB,IAItC8wb,EAAUgD,eACLhD,EAAUgD,OACjBr1Y,EAAS9vB,EAAGola,eAAiBpla,EAAGola,aAAe,KAE/Ct1Y,EAAS9vB,EAAG8vB,SAAW9vB,EAAG8vB,OAAS,IAGrC,IAAIu1Y,EAAad,GAAa,CAAEj+c,MAAOA,EAAM2O,OAAQoc,QAASA,GAAW4yG,GACrEk+U,IAAchmB,IAChBkpB,EAAWlD,UAAYA,GAGzB,IAAI5rS,EAAWzmG,EAAO9nE,GAElBuB,MAAM+nC,QAAQilI,GAChB2uS,EAAY3uS,EAASviJ,QAAQqxb,GAAc9uS,EAASxhK,KAAKswc,GAEzDv1Y,EAAO9nE,GADEuuK,EACM2uS,EAAY,CAACG,EAAY9uS,GAAY,CAACA,EAAU8uS,GAEhDA,EAGjBrla,EAAGwka,OAAQ,EAGb,SAASc,GACPtla,EACAh4C,GAEA,OAAOg4C,EAAGula,YAAY,IAAMv9c,IAC1Bg4C,EAAGula,YAAY,UAAYv9c,IAC3Bg4C,EAAGula,YAAYv9c,GAGnB,SAASw9c,GACPxla,EACAh4C,EACAy9c,GAEA,IAAIC,EACFC,GAAiB3la,EAAI,IAAMh4C,IAC3B29c,GAAiB3la,EAAI,UAAYh4C,GACnC,GAAoB,MAAhB09c,EACF,OAAOh5I,GAAag5I,GACf,IAAkB,IAAdD,EAAqB,CAC9B,IAAIG,EAAcD,GAAiB3la,EAAIh4C,GACvC,GAAmB,MAAf49c,EACF,OAAO11a,KAAKC,UAAUy1a,IAS5B,SAASD,GACP3la,EACAh4C,EACA69c,GAEA,IAAIhhc,EACJ,GAAiC,OAA5BA,EAAMm7B,EAAG4ka,SAAS58c,IAErB,IADA,IAAI64G,EAAO7gE,EAAG6ka,UACLp6c,EAAI,EAAG/B,EAAIm4G,EAAKz2G,OAAQK,EAAI/B,EAAG+B,IACtC,GAAIo2G,EAAKp2G,GAAGzC,OAASA,EAAM,CACzB64G,EAAKzrG,OAAO3K,EAAG,GACf,MAON,OAHIo7c,UACK7la,EAAG4ka,SAAS58c,GAEd6c,EAGT,SAASihc,GACP9la,EACAh4C,GAGA,IADA,IAAI64G,EAAO7gE,EAAG6ka,UACLp6c,EAAI,EAAG/B,EAAIm4G,EAAKz2G,OAAQK,EAAI/B,EAAG+B,IAAK,CAC3C,IAAIymB,EAAO2vF,EAAKp2G,GAChB,GAAIzC,EAAKjI,KAAKmxB,EAAKlpB,MAEjB,OADA64G,EAAKzrG,OAAO3K,EAAG,GACRymB,GAKb,SAASqzb,GACP9rb,EACAwrG,GAUA,OARIA,IACiB,MAAfA,EAAMl6G,QACR0O,EAAK1O,MAAQk6G,EAAMl6G,OAEJ,MAAbk6G,EAAMj6G,MACRyO,EAAKzO,IAAMi6G,EAAMj6G,MAGdyO,EAQT,SAASstb,GACP/la,EACA15C,EACA67c,GAEA,IAAI7yU,EAAM6yU,GAAa,GACnBn+c,EAASsrI,EAAItrI,OACbiR,EAAOq6H,EAAIr6H,KAEX+wc,EAAsB,MACtB5pH,EAAkB4pH,EAClB/wc,IACFmnV,EACE,WAAa4pH,EAAb,kBACOA,EADP,YAEOA,EAAsB,KAE7Bhid,IACFo4V,EAAkB,MAAQA,EAAkB,KAE9C,IAAI6pH,EAAaC,GAAkB5/c,EAAO81V,GAE1Cp8S,EAAGj3B,MAAQ,CACTziB,MAAQ,IAAMA,EAAQ,IACtB4vc,WAAYhma,KAAKC,UAAU7pC,GAC3BohC,SAAW,aAAes+a,EAAsB,MAAQC,EAAa,KAOzE,SAASC,GACP5/c,EACA2/c,GAEA,IAAIx2a,EAAM02a,GAAW7/c,GACrB,OAAgB,OAAZmpC,EAAIvrC,IACEoC,EAAQ,IAAM2/c,EAEd,QAAWx2a,EAAO,IAAI,KAAQA,EAAO,IAAI,KAAOw2a,EAAa,IAuBzE,SAASE,GAAYthc,GAMnB,GAHAA,EAAMA,EAAI5P,OACV6V,GAAMjG,EAAIza,OAENya,EAAItX,QAAQ,KAAO,GAAKsX,EAAIga,YAAY,KAAO/T,GAAM,EAEvD,OADAu4b,GAAUx+b,EAAIga,YAAY,KACtBwkb,IAAW,EACN,CACLtqa,IAAKl0B,EAAIzO,MAAM,EAAGitc,IAClBn/c,IAAK,IAAM2gB,EAAIzO,MAAMitc,GAAU,GAAK,KAG/B,CACLtqa,IAAKl0B,EACL3gB,IAAK,MAKXu3C,GAAM52B,EACNw+b,GAAUC,GAAgBC,GAAmB,EAE7C,OAAQ6C,KACNhD,GAAMvgU,KAEFwjU,GAAcjD,IAChBkD,GAAYlD,IACK,KAARA,IACTmD,GAAanD,IAIjB,MAAO,CACLrqa,IAAKl0B,EAAIzO,MAAM,EAAGktc,IAClBp/c,IAAK2gB,EAAIzO,MAAMktc,GAAgB,EAAGC,KAItC,SAAS1gU,KACP,OAAOpnG,GAAI/c,aAAa2kb,IAG1B,SAAS+C,KACP,OAAO/C,IAAWv4b,GAGpB,SAASu7b,GAAejD,GACtB,OAAe,KAARA,GAAwB,KAARA,EAGzB,SAASmD,GAAcnD,GACrB,IAAIoD,EAAY,EAChBlD,GAAgBD,GAChB,OAAQ+C,KAEN,GADAhD,EAAMvgU,KACFwjU,GAAcjD,GAChBkD,GAAYlD,QAKd,GAFY,KAARA,GAAgBoD,IACR,KAARpD,GAAgBoD,IACF,IAAdA,EAAiB,CACnBjD,GAAmBF,GACnB,OAKN,SAASiD,GAAalD,GACpB,IAAIqD,EAAcrD,EAClB,OAAQgD,KAEN,GADAhD,EAAMvgU,KACFugU,IAAQqD,EACV,MAWN,IAgMIC,GAhMAC,GAAc,MACdC,GAAuB,MAE3B,SAAS79b,GACPi3B,EACAyjI,EACAojS,GAESA,EACT,IAAIvgd,EAAQm9K,EAAIn9K,MACZ67c,EAAY1+R,EAAI0+R,UAChB71X,EAAMtsC,EAAGssC,IACTp1E,EAAO8oC,EAAG4ka,SAAS1tc,KAcvB,GAAI8oC,EAAG9Y,UAGL,OAFA6+a,GAAkB/la,EAAI15C,EAAO67c,IAEtB,EACF,GAAY,WAAR71X,EACTw6X,GAAU9ma,EAAI15C,EAAO67c,QAChB,GAAY,UAAR71X,GAA4B,aAATp1E,EAC5B6vc,GAAiB/ma,EAAI15C,EAAO67c,QACvB,GAAY,UAAR71X,GAA4B,UAATp1E,EAC5B8vc,GAAchna,EAAI15C,EAAO67c,QACpB,GAAY,UAAR71X,GAA2B,aAARA,EAC5B26X,GAAgBjna,EAAI15C,EAAO67c,OACtB,KAAK5ub,EAAOyra,cAAc1yW,GAG/B,OAFAy5X,GAAkB/la,EAAI15C,EAAO67c,IAEtB,EAYT,OAAO,EAGT,SAAS4E,GACP/ma,EACA15C,EACA67c,GAEA,IAAIn+c,EAASm+c,GAAaA,EAAUn+c,OAChCkjd,EAAe1B,GAAexla,EAAI,UAAY,OAC9Cmna,EAAmB3B,GAAexla,EAAI,eAAiB,OACvDona,EAAoB5B,GAAexla,EAAI,gBAAkB,QAC7Dska,GAAQtka,EAAI,UACV,iBAAmB15C,EAAnB,QACSA,EAAQ,IAAM4gd,EAAe,QACf,SAArBC,EACK,KAAO7gd,EAAQ,IACf,OAASA,EAAQ,IAAM6gd,EAAmB,MAGnDlC,GAAWjla,EAAI,SACb,WAAa15C,EAAb,yCAE2B6gd,EAAmB,MAAQC,EAFtD,qCAIgBpjd,EAAS,MAAQkjd,EAAe,IAAMA,GAJtD,6CAMiChB,GAAkB5/c,EAAO,qBAN1D,mBAOsB4/c,GAAkB5/c,EAAO,6CAP/C,WAQY4/c,GAAkB5/c,EAAO,OAAU,IAC/C,MAAM,GAIV,SAAS0gd,GACPhna,EACA15C,EACA67c,GAEA,IAAIn+c,EAASm+c,GAAaA,EAAUn+c,OAChCkjd,EAAe1B,GAAexla,EAAI,UAAY,OAClDkna,EAAeljd,EAAU,MAAQkjd,EAAe,IAAOA,EACvD5C,GAAQtka,EAAI,UAAY,MAAQ15C,EAAQ,IAAM4gd,EAAe,KAC7DjC,GAAWjla,EAAI,SAAUkma,GAAkB5/c,EAAO4gd,GAAe,MAAM,GAGzE,SAASJ,GACP9ma,EACA15C,EACA67c,GAEA,IAAIn+c,EAASm+c,GAAaA,EAAUn+c,OAChCkqa,EAAc,0JAGHlqa,EAAS,UAAY,OAAS,KAEzCiid,EAAa,4DACbr/b,EAAO,uBAAyBsnZ,EAAc,IAClDtnZ,EAAOA,EAAO,IAAOs/b,GAAkB5/c,EAAO2/c,GAC9ChB,GAAWjla,EAAI,SAAUp5B,EAAM,MAAM,GAGvC,SAASqgc,GACPjna,EACA15C,EACA67c,GAEA,IAAIjrc,EAAO8oC,EAAG4ka,SAAS1tc,KAiBnBo4H,EAAM6yU,GAAa,GACnBvM,EAAOtmU,EAAIsmU,KACX5xc,EAASsrI,EAAItrI,OACbiR,EAAOq6H,EAAIr6H,KACXoyc,GAAwBzR,GAAiB,UAAT1+b,EAChCE,EAAQw+b,EACR,SACS,UAAT1+b,EACEyvc,GACA,QAEFvqH,EAAkB,sBAClBnnV,IACFmnV,EAAkB,8BAEhBp4V,IACFo4V,EAAkB,MAAQA,EAAkB,KAG9C,IAAIx1U,EAAOs/b,GAAkB5/c,EAAO81V,GAChCirH,IACFzgc,EAAO,qCAAuCA,GAGhD09b,GAAQtka,EAAI,QAAU,IAAM15C,EAAQ,KACpC2+c,GAAWjla,EAAI5oC,EAAOwP,EAAM,MAAM,IAC9B3R,GAAQjR,IACVihd,GAAWjla,EAAI,OAAQ,kBAU3B,SAASsna,GAAiBvsY,GAExB,GAAI05T,EAAM15T,EAAG4rY,KAAe,CAE1B,IAAIvvc,EAAQ+7C,GAAO,SAAW,QAC9B4nB,EAAG3jE,GAAS,GAAG26B,OAAOgpC,EAAG4rY,IAAc5rY,EAAG3jE,IAAU,WAC7C2jE,EAAG4rY,IAKRlyE,EAAM15T,EAAG6rY,OACX7rY,EAAGjjC,OAAS,GAAG/F,OAAOgpC,EAAG6rY,IAAuB7rY,EAAGjjC,QAAU,WACtDijC,EAAG6rY,KAMd,SAASW,GAAqBnwc,EAAOqlF,EAASq6S,GAC5C,IAAIu7D,EAAUqU,GACd,OAAO,SAASpU,IACd,IAAI7ia,EAAMgtD,EAAQlwF,MAAM,KAAMpC,WAClB,OAARslC,GACF+3a,GAASpwc,EAAOk7b,EAAax7D,EAASu7D,IAQ5C,IAAIoV,GAAkB1gB,MAAsB5G,IAAQtka,OAAOska,GAAK,KAAO,IAEvE,SAASunB,GACP1/c,EACAy0F,EACAq6S,EACAzvB,GAQA,GAAIogG,GAAiB,CACnB,IAAIE,EAAoB7S,GACpB9ia,EAAWyqD,EACfA,EAAUzqD,EAAS41a,SAAW,SAAU/xc,GACtC,GAIEA,EAAE7L,SAAW6L,EAAE8H,eAEf9H,EAAEumC,WAAaura,GAIf9xc,EAAEumC,WAAa,GAIfvmC,EAAE7L,OAAO/D,gBAAkBqQ,SAE3B,OAAO07B,EAASzlC,MAAMlM,KAAM8J,YAIlCu8c,GAASrla,iBACPr5C,EACAy0F,EACA4jW,GACI,CAAEvpD,QAASA,EAASzvB,QAASA,GAC7ByvB,GAIR,SAAS0wE,GACPx/c,EACAy0F,EACAq6S,EACAu7D,IAECA,GAAWqU,IAAUzrY,oBACpBjzE,EACAy0F,EAAQmrX,UAAYnrX,EACpBq6S,GAIJ,SAAS+wE,GAAoBjZ,EAAUz9D,GACrC,IAAIirD,EAAQwS,EAASp6a,KAAKumD,MAAOqhX,EAAQjrD,EAAM38W,KAAKumD,IAApD,CAGA,IAAIA,EAAKo2T,EAAM38W,KAAKumD,IAAM,GACtBqtX,EAAQwG,EAASp6a,KAAKumD,IAAM,GAChC2rY,GAAWv1E,EAAMmwD,IACjBgmB,GAAgBvsY,GAChBotX,GAAgBptX,EAAIqtX,EAAOsf,GAAOF,GAAUD,GAAqBp2E,EAAM/0R,SACvEsqW,QAAW1gd,GAGb,IAOI8hd,GAPAh4Y,GAAS,CACXjmE,OAAQg+c,GACR76a,OAAQ66a,IAOV,SAASE,GAAgBnZ,EAAUz9D,GACjC,IAAIirD,EAAQwS,EAASp6a,KAAKk3a,YAAatP,EAAQjrD,EAAM38W,KAAKk3a,UAA1D,CAGA,IAAIxnc,EAAK0tK,EACL0vR,EAAMnwD,EAAMmwD,IACZnxS,EAAWy+S,EAASp6a,KAAKk3a,UAAY,GACrCzna,EAAQktW,EAAM38W,KAAKk3a,UAAY,GAMnC,IAAKxnc,KAJDuwY,EAAMxwW,EAAMy+Z,UACdz+Z,EAAQktW,EAAM38W,KAAKk3a,SAAW/gG,EAAO,GAAI1mU,IAG/BksH,EACJjsJ,KAAO+/B,IACXq9Z,EAAIp9b,GAAO,IAIf,IAAKA,KAAO+/B,EAAO,CAKjB,GAJA2tI,EAAM3tI,EAAM//B,GAIA,gBAARA,GAAiC,cAARA,EAAqB,CAEhD,GADIitY,EAAMxoX,WAAYwoX,EAAMxoX,SAASve,OAAS,GAC1CwnK,IAAQzhB,EAASjsJ,GAAQ,SAGC,IAA1Bo9b,EAAItma,WAAW5wB,QACjBk3b,EAAIpsY,YAAYosY,EAAItma,WAAW,IAInC,GAAY,UAAR92B,GAAmC,aAAhBo9b,EAAInpb,QAAwB,CAGjDmpb,EAAI0mB,OAASp2S,EAEb,IAAIq2S,EAAS7rB,EAAQxqR,GAAO,GAAK1xK,OAAO0xK,GACpCs2S,GAAkB5mB,EAAK2mB,KACzB3mB,EAAIh7b,MAAQ2hd,QAET,GAAY,cAAR/jd,GAAuB83c,GAAM1a,EAAInpb,UAAYikb,EAAQkF,EAAI7tb,WAAY,CAE9Eq0c,GAAeA,IAAgBxxc,SAASzI,cAAc,OACtDi6c,GAAar0c,UAAY,QAAUm+J,EAAM,SACzC,IAAI50G,EAAM8qZ,GAAaxna,WACvB,MAAOghZ,EAAIhhZ,WACTghZ,EAAIpsY,YAAYosY,EAAIhhZ,YAEtB,MAAO0c,EAAI1c,WACTghZ,EAAItzb,YAAYgvD,EAAI1c,iBAEjB,GAKLsxH,IAAQzhB,EAASjsJ,GAIjB,IACEo9b,EAAIp9b,GAAO0tK,EACX,MAAO/7J,QAQf,SAASqyc,GAAmB5mB,EAAKz1P,GAC/B,OAASy1P,EAAI6mB,YACK,WAAhB7mB,EAAInpb,SACJiwc,GAAqB9mB,EAAKz1P,IAC1Bw8Q,GAAqB/mB,EAAKz1P,IAI9B,SAASu8Q,GAAsB9mB,EAAKz1P,GAGlC,IAAIy8Q,GAAa,EAGjB,IAAMA,EAAahyc,SAAS8S,gBAAkBk4a,EAAO,MAAOzrb,KAC5D,OAAOyyc,GAAchnB,EAAIh7b,QAAUulM,EAGrC,SAASw8Q,GAAsB/mB,EAAK7zU,GAClC,IAAInnH,EAAQg7b,EAAIh7b,MACZ67c,EAAY7gB,EAAIinB,YACpB,GAAI9zE,EAAM0tE,GAAY,CACpB,GAAIA,EAAUn+c,OACZ,OAAO04b,EAASp2b,KAAWo2b,EAASjvU,GAEtC,GAAI00V,EAAUltc,KACZ,OAAO3O,EAAM2O,SAAWw4G,EAAOx4G,OAGnC,OAAO3O,IAAUmnH,EAGnB,IAAIi+U,GAAW,CACb7hc,OAAQk+c,GACR/6a,OAAQ+6a,IAKNS,GAAiBxrB,GAAO,SAAU5uV,GACpC,IAAI3+D,EAAM,GACNg5a,EAAgB,gBAChBC,EAAoB,QAOxB,OANAt6W,EAAQ1tG,MAAM+nd,GAAe30b,SAAQ,SAAU2E,GAC7C,GAAIA,EAAM,CACR,IAAI6T,EAAM7T,EAAK/3B,MAAMgod,GACrBp8a,EAAIliC,OAAS,IAAMqlC,EAAInD,EAAI,GAAGr3B,QAAUq3B,EAAI,GAAGr3B,YAG5Cw6B,KAIT,SAASk5a,GAAoBn0b,GAC3B,IAAIpvB,EAAQwjd,GAAsBp0b,EAAKpvB,OAGvC,OAAOovB,EAAKq0b,YACRl+G,EAAOn2U,EAAKq0b,YAAazjd,GACzBA,EAIN,SAASwjd,GAAuBE,GAC9B,OAAIv/c,MAAM+nC,QAAQw3a,GACT15S,EAAS05S,GAEU,kBAAjBA,EACFN,GAAeM,GAEjBA,EAOT,SAASC,GAAU53E,EAAO63E,GACxB,IACIC,EADAx5a,EAAM,GAGV,GAAIu5a,EAAY,CACd,IAAI58T,EAAY+kP,EAChB,MAAO/kP,EAAUglP,kBACfhlP,EAAYA,EAAUglP,kBAAkBu/D,OAEtCvkT,GAAaA,EAAU53H,OACtBy0b,EAAYN,GAAmBv8T,EAAU53H,QAE1Cm2U,EAAOl7T,EAAKw5a,IAKbA,EAAYN,GAAmBx3E,EAAM38W,QACxCm2U,EAAOl7T,EAAKw5a,GAGd,IAAI5ga,EAAa8oV,EACjB,MAAQ9oV,EAAaA,EAAWwD,OAC1BxD,EAAW7zB,OAASy0b,EAAYN,GAAmBtga,EAAW7zB,QAChEm2U,EAAOl7T,EAAKw5a,GAGhB,OAAOx5a,EAKT,IAyBIy5a,GAzBAC,GAAW,MACXC,GAAc,iBACdC,GAAU,SAAUrpa,EAAIh4C,EAAM6c,GAEhC,GAAIskc,GAASppd,KAAKiI,GAChBg4C,EAAG56C,MAAMitb,YAAYrqb,EAAM6c,QACtB,GAAIukc,GAAYrpd,KAAK8kB,GAC1Bm7B,EAAG56C,MAAMitb,YAAYgL,EAAUr1b,GAAO6c,EAAI/B,QAAQsmc,GAAa,IAAK,iBAC/D,CACL,IAAIE,EAAiBC,GAAUvhd,GAC/B,GAAIuB,MAAM+nC,QAAQzsB,GAIhB,IAAK,IAAIpa,EAAI,EAAGqgB,EAAMjG,EAAIza,OAAQK,EAAIqgB,EAAKrgB,IACzCu1C,EAAG56C,MAAMkkd,GAAkBzkc,EAAIpa,QAGjCu1C,EAAG56C,MAAMkkd,GAAkBzkc,IAK7B2kc,GAAc,CAAC,SAAU,MAAO,MAGhCD,GAAYvsB,GAAO,SAAUx/a,GAG/B,GAFA0rc,GAAaA,IAAc5yc,SAASzI,cAAc,OAAOzI,MACzDoY,EAAO0/a,EAAS1/a,GACH,WAATA,GAAsBA,KAAQ0rc,GAChC,OAAO1rc,EAGT,IADA,IAAIisc,EAAUjsc,EAAK0K,OAAO,GAAG8xH,cAAgBx8H,EAAKpH,MAAM,GAC/C3L,EAAI,EAAGA,EAAI++c,GAAYp/c,OAAQK,IAAK,CAC3C,IAAIzC,EAAOwhd,GAAY/+c,GAAKg/c,EAC5B,GAAIzhd,KAAQkhd,GACV,OAAOlhd,MAKb,SAAS0hd,GAAa9a,EAAUz9D,GAC9B,IAAI38W,EAAO28W,EAAM38W,KACbwub,EAAUpU,EAASp6a,KAEvB,KAAI4na,EAAQ5na,EAAKq0b,cAAgBzsB,EAAQ5na,EAAKpvB,QAC5Cg3b,EAAQ4mB,EAAQ6F,cAAgBzsB,EAAQ4mB,EAAQ59c,QADlD,CAMA,IAAIwsK,EAAK5pK,EACLg4C,EAAKmxV,EAAMmwD,IACXqoB,EAAiB3G,EAAQ6F,YACzBe,EAAkB5G,EAAQ6G,iBAAmB7G,EAAQ59c,OAAS,GAG9D0kd,EAAWH,GAAkBC,EAE7Bxkd,EAAQwjd,GAAsBz3E,EAAM38W,KAAKpvB,QAAU,GAKvD+rY,EAAM38W,KAAKq1b,gBAAkBp1E,EAAMrvY,EAAMs9b,QACrC/3F,EAAO,GAAIvlW,GACXA,EAEJ,IAAI2kd,EAAWhB,GAAS53E,GAAO,GAE/B,IAAKnpY,KAAQ8hd,EACP1tB,EAAQ2tB,EAAS/hd,KACnBqhd,GAAQrpa,EAAIh4C,EAAM,IAGtB,IAAKA,KAAQ+hd,EACXn4S,EAAMm4S,EAAS/hd,GACX4pK,IAAQk4S,EAAS9hd,IAEnBqhd,GAAQrpa,EAAIh4C,EAAa,MAAP4pK,EAAc,GAAKA,IAK3C,IAAIxsK,GAAQ,CACVyE,OAAQ6/c,GACR18a,OAAQ08a,IAKNM,GAAe,MAMnB,SAASxiG,GAAUxnU,EAAIif,GAErB,GAAKA,IAASA,EAAMA,EAAIhqD,QAKxB,GAAI+qC,EAAGx4C,UACDy3D,EAAI1xD,QAAQ,MAAQ,EACtB0xD,EAAIv+D,MAAMspd,IAAcl2b,SAAQ,SAAU5pB,GAAK,OAAO81C,EAAGx4C,UAAUgN,IAAItK,MAEvE81C,EAAGx4C,UAAUgN,IAAIyqD,OAEd,CACL,IAAI2yG,EAAM,KAAO5xH,EAAG3sC,aAAa,UAAY,IAAM,IAC/Cu+J,EAAIrkK,QAAQ,IAAM0xD,EAAM,KAAO,GACjCjf,EAAG1sC,aAAa,SAAUs+J,EAAM3yG,GAAKhqD,SAS3C,SAAS2yW,GAAa5nU,EAAIif,GAExB,GAAKA,IAASA,EAAMA,EAAIhqD,QAKxB,GAAI+qC,EAAGx4C,UACDy3D,EAAI1xD,QAAQ,MAAQ,EACtB0xD,EAAIv+D,MAAMspd,IAAcl2b,SAAQ,SAAU5pB,GAAK,OAAO81C,EAAGx4C,UAAU8G,OAAOpE,MAE1E81C,EAAGx4C,UAAU8G,OAAO2wD,GAEjBjf,EAAGx4C,UAAU4C,QAChB41C,EAAGzsC,gBAAgB,aAEhB,CACL,IAAIq+J,EAAM,KAAO5xH,EAAG3sC,aAAa,UAAY,IAAM,IAC/CyyO,EAAM,IAAM7mL,EAAM,IACtB,MAAO2yG,EAAIrkK,QAAQu4O,IAAQ,EACzBl0E,EAAMA,EAAI9uJ,QAAQgjO,EAAK,KAEzBl0E,EAAMA,EAAI38J,OACN28J,EACF5xH,EAAG1sC,aAAa,QAASs+J,GAEzB5xH,EAAGzsC,gBAAgB,UAOzB,SAAS02c,GAAmB/kB,GAC1B,GAAKA,EAAL,CAIA,GAAsB,kBAAXA,EAAqB,CAC9B,IAAIz1Z,EAAM,GAKV,OAJmB,IAAfy1Z,EAAOluB,KACTrsE,EAAOl7T,EAAKy6a,GAAkBhlB,EAAOl9b,MAAQ,MAE/C2iW,EAAOl7T,EAAKy1Z,GACLz1Z,EACF,MAAsB,kBAAXy1Z,EACTglB,GAAkBhlB,QADpB,GAKT,IAAIglB,GAAoBltB,GAAO,SAAUh1b,GACvC,MAAO,CACLmid,WAAanid,EAAO,SACpBoid,aAAepid,EAAO,YACtBqid,iBAAmBrid,EAAO,gBAC1Bsid,WAAatid,EAAO,SACpBuid,aAAevid,EAAO,YACtBwid,iBAAmBxid,EAAO,oBAI1Byid,GAAgBn1E,IAAc0qD,GAC9B0qB,GAAa,aACbC,GAAY,YAGZC,GAAiB,aACjBC,GAAqB,gBACrBC,GAAgB,YAChBC,GAAoB,eACpBN,UAE6Bzkd,IAA3BsJ,OAAO07c,sBACwBhld,IAAjCsJ,OAAO27c,wBAEPL,GAAiB,mBACjBC,GAAqB,4BAEO7kd,IAA1BsJ,OAAO47c,qBACuBlld,IAAhCsJ,OAAO67c,uBAEPL,GAAgB,kBAChBC,GAAoB,uBAKxB,IAAIK,GAAM91E,EACNhmY,OAAOgzC,sBACLhzC,OAAOgzC,sBAAsBzzC,KAAKS,QAClCwG,WACyB,SAAUq1B,GAAM,OAAOA,KAEtD,SAASkgb,GAAWlgb,GAClBigb,IAAI,WACFA,GAAIjgb,MAIR,SAASmgb,GAAoBtra,EAAIif,GAC/B,IAAIssZ,EAAoBvra,EAAGkja,qBAAuBlja,EAAGkja,mBAAqB,IACtEqI,EAAkBh+c,QAAQ0xD,GAAO,IACnCssZ,EAAkBx2c,KAAKkqD,GACvBuoT,GAASxnU,EAAIif,IAIjB,SAASusZ,GAAuBxra,EAAIif,GAC9Bjf,EAAGkja,oBACL50c,EAAO0xC,EAAGkja,mBAAoBjkZ,GAEhC2oT,GAAY5nU,EAAIif,GAGlB,SAASwsZ,GACPzra,EACA0ra,EACA54U,GAEA,IAAIxD,EAAMq8U,GAAkB3ra,EAAI0ra,GAC5Bx0c,EAAOo4H,EAAIp4H,KACXsqC,EAAU8tF,EAAI9tF,QACdoqa,EAAYt8U,EAAIs8U,UACpB,IAAK10c,EAAQ,OAAO47H,IACpB,IAAI17H,EAAQF,IAASwzc,GAAaG,GAAqBE,GACnDc,EAAQ,EACR7hc,EAAM,WACRg2B,EAAGi7B,oBAAoB7jE,EAAO00c,GAC9Bh5U,KAEEg5U,EAAQ,SAAUj2c,GAChBA,EAAE7L,SAAWg2C,KACT6ra,GAASD,GACb5hc,KAINlU,YAAW,WACL+1c,EAAQD,GACV5hc,MAEDw3B,EAAU,GACbxB,EAAGqB,iBAAiBjqC,EAAO00c,GAG7B,IAAIC,GAAc,yBAElB,SAASJ,GAAmB3ra,EAAI0ra,GAC9B,IASIx0c,EATAU,EAAStI,OAAOC,iBAAiBywC,GAEjCgsa,GAAoBp0c,EAAOgzc,GAAiB,UAAY,IAAIlqd,MAAM,MAClEurd,GAAuBr0c,EAAOgzc,GAAiB,aAAe,IAAIlqd,MAAM,MACxEwrd,EAAoBC,GAAWH,EAAkBC,GACjDG,GAAmBx0c,EAAOkzc,GAAgB,UAAY,IAAIpqd,MAAM,MAChE2rd,GAAsBz0c,EAAOkzc,GAAgB,aAAe,IAAIpqd,MAAM,MACtE4rd,EAAmBH,GAAWC,EAAiBC,GAG/C7qa,EAAU,EACVoqa,EAAY,EAEZF,IAAiBhB,GACfwB,EAAoB,IACtBh1c,EAAOwzc,GACPlpa,EAAU0qa,EACVN,EAAYK,EAAoB7hd,QAEzBshd,IAAiBf,GACtB2B,EAAmB,IACrBp1c,EAAOyzc,GACPnpa,EAAU8qa,EACVV,EAAYS,EAAmBjid,SAGjCo3C,EAAU1vC,KAAKyP,IAAI2qc,EAAmBI,GACtCp1c,EAAOsqC,EAAU,EACb0qa,EAAoBI,EAClB5B,GACAC,GACF,KACJiB,EAAY10c,EACRA,IAASwzc,GACPuB,EAAoB7hd,OACpBiid,EAAmBjid,OACrB,GAEN,IAAImid,EACFr1c,IAASwzc,IACTqB,GAAYhsd,KAAK6X,EAAOgzc,GAAiB,aAC3C,MAAO,CACL1zc,KAAMA,EACNsqC,QAASA,EACToqa,UAAWA,EACXW,aAAcA,GAIlB,SAASJ,GAAYK,EAAQC,GAE3B,MAAOD,EAAOpid,OAASqid,EAAUrid,OAC/Boid,EAASA,EAAOz6a,OAAOy6a,GAGzB,OAAO16c,KAAKyP,IAAIhV,MAAM,KAAMkgd,EAAU98c,KAAI,SAAUrN,EAAGmI,GACrD,OAAOiid,GAAKpqd,GAAKoqd,GAAKF,EAAO/hd,QAQjC,SAASiid,GAAM1qd,GACb,OAAkD,IAA3C65B,OAAO75B,EAAEoU,MAAM,GAAI,GAAG0M,QAAQ,IAAK,MAK5C,SAASiN,GAAOohX,EAAOw7E,GACrB,IAAI3sa,EAAKmxV,EAAMmwD,IAGX7sD,EAAMz0V,EAAGkha,YACXlha,EAAGkha,SAAS0L,WAAY,EACxB5sa,EAAGkha,YAGL,IAAI1sb,EAAOy1b,GAAkB94E,EAAM38W,KAAKoqb,YACxC,IAAIxiB,EAAQ5na,KAKRigX,EAAMz0V,EAAG6sa,WAA6B,IAAhB7sa,EAAG2pD,SAA7B,CAIA,IAAIqtU,EAAMxiZ,EAAKwiZ,IACX9/Z,EAAOsd,EAAKtd,KACZizc,EAAa31b,EAAK21b,WAClBC,EAAe51b,EAAK41b,aACpBC,EAAmB71b,EAAK61b,iBACxByC,EAAct4b,EAAKs4b,YACnBC,EAAgBv4b,EAAKu4b,cACrBC,EAAoBx4b,EAAKw4b,kBACzB5zE,EAAc5kX,EAAK4kX,YACnBrpX,EAAQyE,EAAKzE,MACbk9b,EAAaz4b,EAAKy4b,WAClBC,EAAiB14b,EAAK04b,eACtBC,EAAe34b,EAAK24b,aACpBC,EAAS54b,EAAK44b,OACdC,EAAc74b,EAAK64b,YACnBC,EAAkB94b,EAAK84b,gBACvB7gd,EAAW+nB,EAAK/nB,SAMhB2vG,EAAUsyV,GACV6e,EAAiB7e,GAAeryV,OACpC,MAAOkxW,GAAkBA,EAAe1ha,OACtCuwD,EAAUmxW,EAAenxW,QACzBmxW,EAAiBA,EAAe1ha,OAGlC,IAAI2ha,GAAYpxW,EAAQ0yV,aAAe39D,EAAM0wD,aAE7C,IAAI2rB,GAAaJ,GAAqB,KAAXA,EAA3B,CAIA,IAAIK,EAAaD,GAAYV,EACzBA,EACA3C,EACAltT,EAAcuwT,GAAYR,EAC1BA,EACA3C,EACAqD,EAAUF,GAAYT,EACtBA,EACA3C,EAEAuD,EAAkBH,GACjBL,GACD/zE,EACAw0E,EAAYJ,GACO,oBAAXJ,EAAwBA,EAChCr9b,EACA89b,EAAiBL,GAChBH,GACDJ,EACAa,EAAqBN,GACpBF,GACDJ,EAEAa,EAAwBrxB,EAC1B5zV,EAASr8F,GACLA,EAASsjB,MACTtjB,GAGF,EAIJ,IAAIuhd,GAAqB,IAARh3C,IAAkBgpB,GAC/BiuB,EAAmBC,GAAuBN,GAE1C96U,EAAK9yF,EAAG6sa,SAAWpwE,GAAK,WACtBuxE,IACFxC,GAAsBxra,EAAI0ta,GAC1BlC,GAAsBxra,EAAIi9G,IAExBnqB,EAAG85U,WACDoB,GACFxC,GAAsBxra,EAAIyta,GAE5BK,GAAsBA,EAAmB9ta,IAEzC6ta,GAAkBA,EAAe7ta,GAEnCA,EAAG6sa,SAAW,QAGX17E,EAAM38W,KAAK9b,MAEd6vb,GAAep3D,EAAO,UAAU,WAC9B,IAAItlV,EAAS7L,EAAGqI,WACZ8la,EAActia,GAAUA,EAAOuia,UAAYvia,EAAOuia,SAASj9E,EAAMjtY,KACjEiqd,GACFA,EAAY7hY,MAAQ6kT,EAAM7kT,KAC1B6hY,EAAY7sB,IAAI4f,UAEhBiN,EAAY7sB,IAAI4f,WAElB0M,GAAaA,EAAU5ta,EAAI8yF,MAK/B66U,GAAmBA,EAAgB3ta,GAC/Bgua,IACF1C,GAAmBtra,EAAIyta,GACvBnC,GAAmBtra,EAAIi9G,GACvBouT,IAAU,WACRG,GAAsBxra,EAAIyta,GACrB36U,EAAG85U,YACNtB,GAAmBtra,EAAI0ta,GAClBO,IACCI,GAAgBN,GAClBj4c,WAAWg9H,EAAIi7U,GAEftC,GAAmBzra,EAAI9oC,EAAM47H,SAOnCq+P,EAAM38W,KAAK9b,OACbi0c,GAAiBA,IACjBiB,GAAaA,EAAU5ta,EAAI8yF,IAGxBk7U,GAAeC,GAClBn7U,MAIJ,SAASw7U,GAAOn9E,EAAOkuE,GACrB,IAAIr/Z,EAAKmxV,EAAMmwD,IAGX7sD,EAAMz0V,EAAG6sa,YACX7sa,EAAG6sa,SAASD,WAAY,EACxB5sa,EAAG6sa,YAGL,IAAIr4b,EAAOy1b,GAAkB94E,EAAM38W,KAAKoqb,YACxC,GAAIxiB,EAAQ5na,IAAyB,IAAhBwrB,EAAG2pD,SACtB,OAAO01W,IAIT,IAAI5qE,EAAMz0V,EAAGkha,UAAb,CAIA,IAAIlqC,EAAMxiZ,EAAKwiZ,IACX9/Z,EAAOsd,EAAKtd,KACZozc,EAAa91b,EAAK81b,WAClBC,EAAe/1b,EAAK+1b,aACpBC,EAAmBh2b,EAAKg2b,iBACxB+D,EAAc/5b,EAAK+5b,YACnBD,EAAQ95b,EAAK85b,MACbE,EAAah6b,EAAKg6b,WAClBC,EAAiBj6b,EAAKi6b,eACtBC,EAAal6b,EAAKk6b,WAClBjid,EAAW+nB,EAAK/nB,SAEhBuhd,GAAqB,IAARh3C,IAAkBgpB,GAC/BiuB,EAAmBC,GAAuBI,GAE1CK,EAAwBjyB,EAC1B5zV,EAASr8F,GACLA,EAAS6hd,MACT7hd,GAGF,EAIJ,IAAIqmI,EAAK9yF,EAAGkha,SAAWzkE,GAAK,WACtBz8V,EAAGqI,YAAcrI,EAAGqI,WAAW+la,WACjCpua,EAAGqI,WAAW+la,SAASj9E,EAAMjtY,KAAO,MAElC8pd,IACFxC,GAAsBxra,EAAIuqa,GAC1BiB,GAAsBxra,EAAIwqa,IAExB13U,EAAG85U,WACDoB,GACFxC,GAAsBxra,EAAIsqa,GAE5BmE,GAAkBA,EAAezua,KAEjCq/Z,IACAmP,GAAcA,EAAWxua,IAE3BA,EAAGkha,SAAW,QAGZwN,EACFA,EAAWE,GAEXA,IAGF,SAASA,IAEH97U,EAAG85U,aAIFz7E,EAAM38W,KAAK9b,MAAQsnC,EAAGqI,cACxBrI,EAAGqI,WAAW+la,WAAapua,EAAGqI,WAAW+la,SAAW,KAAMj9E,EAAS,KAAKA,GAE3Eo9E,GAAeA,EAAYvua,GACvBgua,IACF1C,GAAmBtra,EAAIsqa,GACvBgB,GAAmBtra,EAAIwqa,GACvBa,IAAU,WACRG,GAAsBxra,EAAIsqa,GACrBx3U,EAAG85U,YACNtB,GAAmBtra,EAAIuqa,GAClB0D,IACCI,GAAgBM,GAClB74c,WAAWg9H,EAAI67U,GAEflD,GAAmBzra,EAAI9oC,EAAM47H,SAMvCw7U,GAASA,EAAMtua,EAAI8yF,GACdk7U,GAAeC,GAClBn7U,MAsBN,SAASu7U,GAAiBxpc,GACxB,MAAsB,kBAARA,IAAqBnB,MAAMmB,GAS3C,SAASqpc,GAAwB/ib,GAC/B,GAAIixZ,EAAQjxZ,GACV,OAAO,EAET,IAAI0jb,EAAa1jb,EAAG68Z,IACpB,OAAIvzD,EAAMo6E,GAEDX,GACL3kd,MAAM+nC,QAAQu9a,GACVA,EAAW,GACXA,IAGE1jb,EAAGsyZ,SAAWtyZ,EAAG/gC,QAAU,EAIvC,SAAS0kd,GAAQ1+E,EAAGe,IACM,IAApBA,EAAM38W,KAAK9b,MACbqX,GAAMohX,GAIV,IAAIytE,GAAatpE,EAAY,CAC3BzrY,OAAQild,GACRjQ,SAAUiQ,GACVxgd,OAAQ,SAAoB6iY,EAAOkuE,IAET,IAApBluE,EAAM38W,KAAK9b,KACb41c,GAAMn9E,EAAOkuE,GAEbA,MAGF,GAEA0P,GAAkB,CACpBr3c,GACA8rc,GACA1zY,GACA47X,GACAtmc,GACAw5c,IAOEjxb,GAAUohc,GAAgBh9a,OAAOuwa,IAEjC0M,GAAQxR,GAAoB,CAAEb,QAASA,GAAShvb,QAASA,KAQzDqya,IAEF1pb,SAAS+qC,iBAAiB,mBAAmB,WAC3C,IAAIrB,EAAK1pC,SAAS8S,cACd42B,GAAMA,EAAGiva,QACXr+c,GAAQovC,EAAI,YAKlB,IAAIkva,GAAY,CACdrza,SAAU,SAAmBmE,EAAIsjI,EAAS6tN,EAAOy9D,GAC7B,WAAdz9D,EAAM7kT,KAEJsiX,EAAStN,MAAQsN,EAAStN,IAAI6tB,UAChC5mB,GAAep3D,EAAO,aAAa,WACjC+9E,GAAUlN,iBAAiBhia,EAAIsjI,EAAS6tN,MAG1Ci+E,GAAYpva,EAAIsjI,EAAS6tN,EAAM/0R,SAEjCp8D,EAAGmva,UAAY,GAAGx/c,IAAI7C,KAAKkzC,EAAGpzC,QAAS2/B,MAChB,aAAd4kW,EAAM7kT,KAAsB8vX,GAAgBp8Z,EAAG9oC,SACxD8oC,EAAGuoa,YAAcjlS,EAAQ6+R,UACpB7+R,EAAQ6+R,UAAUvM,OACrB51Z,EAAGqB,iBAAiB,mBAAoBgua,IACxCrva,EAAGqB,iBAAiB,iBAAkBiua,IAKtCtva,EAAGqB,iBAAiB,SAAUiua,IAE1BtvB,KACFhgZ,EAAGiva,QAAS,MAMpBjN,iBAAkB,SAA2Bhia,EAAIsjI,EAAS6tN,GACxD,GAAkB,WAAdA,EAAM7kT,IAAkB,CAC1B8iY,GAAYpva,EAAIsjI,EAAS6tN,EAAM/0R,SAK/B,IAAImzW,EAAcvva,EAAGmva,UACjBK,EAAaxva,EAAGmva,UAAY,GAAGx/c,IAAI7C,KAAKkzC,EAAGpzC,QAAS2/B,IACxD,GAAIijb,EAAW50X,MAAK,SAAU7iD,EAAGttC,GAAK,OAAQwzb,EAAWlmZ,EAAGw3a,EAAY9kd,OAAS,CAG/E,IAAIgld,EAAYzva,EAAGs8Z,SACfh5R,EAAQh9K,MAAMs0F,MAAK,SAAU1d,GAAK,OAAOwyY,GAAoBxyY,EAAGsyY,MAChElsS,EAAQh9K,QAAUg9K,EAAQ91D,UAAYkiW,GAAoBpsS,EAAQh9K,MAAOkpd,GACzEC,GACF7+c,GAAQovC,EAAI,cAOtB,SAASova,GAAapva,EAAIsjI,EAAS2tN,GACjC0+E,GAAoB3va,EAAIsjI,EAAS2tN,IAE7B99U,IAAQ8sY,KACVnqb,YAAW,WACT65c,GAAoB3va,EAAIsjI,EAAS2tN,KAChC,GAIP,SAAS0+E,GAAqB3va,EAAIsjI,EAAS2tN,GACzC,IAAI3qY,EAAQg9K,EAAQh9K,MAChBs3E,EAAa59B,EAAGs8Z,SACpB,IAAI1+X,GAAer0E,MAAM+nC,QAAQhrC,GAAjC,CASA,IADA,IAAIoyC,EAAUunE,EACLx1G,EAAI,EAAG/B,EAAIs3C,EAAGpzC,QAAQxC,OAAQK,EAAI/B,EAAG+B,IAE5C,GADAw1G,EAASjgE,EAAGpzC,QAAQnC,GAChBmzE,EACFllC,EAAW8lZ,EAAal4b,EAAOimC,GAAS0zE,KAAY,EAChDA,EAAOvnE,WAAaA,IACtBunE,EAAOvnE,SAAWA,QAGpB,GAAIulZ,EAAW1xZ,GAAS0zE,GAAS35G,GAI/B,YAHI05C,EAAGo9G,gBAAkB3yJ,IACvBu1C,EAAGo9G,cAAgB3yJ,IAMtBmzE,IACH59B,EAAGo9G,eAAiB,IAIxB,SAASsyT,GAAqBppd,EAAOsG,GACnC,OAAOA,EAAQgoE,OAAM,SAAU78B,GAAK,OAAQkmZ,EAAWlmZ,EAAGzxC,MAG5D,SAASimC,GAAU0zE,GACjB,MAAO,WAAYA,EACfA,EAAO+nW,OACP/nW,EAAO35G,MAGb,SAAS+od,GAAoBx5c,GAC3BA,EAAE7L,OAAOm+c,WAAY,EAGvB,SAASmH,GAAkBz5c,GAEpBA,EAAE7L,OAAOm+c,YACdtyc,EAAE7L,OAAOm+c,WAAY,EACrBv3c,GAAQiF,EAAE7L,OAAQ,UAGpB,SAAS4G,GAASovC,EAAI9oC,GACpB,IAAIrB,EAAIS,SAASgR,YAAY,cAC7BzR,EAAE0R,UAAUrQ,GAAM,GAAM,GACxB8oC,EAAGx4B,cAAc3R,GAMnB,SAAS+5c,GAAYz+E,GACnB,OAAOA,EAAMC,mBAAuBD,EAAM38W,MAAS28W,EAAM38W,KAAKoqb,WAE1DztE,EADAy+E,GAAWz+E,EAAMC,kBAAkBu/D,QAIzC,IAAIj4b,GAAO,CACT7J,KAAM,SAAemxC,EAAIsvF,EAAK6hQ,GAC5B,IAAI7qY,EAAQgpI,EAAIhpI,MAEhB6qY,EAAQy+E,GAAWz+E,GACnB,IAAI0+E,EAAgB1+E,EAAM38W,MAAQ28W,EAAM38W,KAAKoqb,WACzCkR,EAAkB9va,EAAG+va,mBACF,SAArB/va,EAAG56C,MAAMyK,QAAqB,GAAKmwC,EAAG56C,MAAMyK,QAC1CvJ,GAASupd,GACX1+E,EAAM38W,KAAK9b,MAAO,EAClBqX,GAAMohX,GAAO,WACXnxV,EAAG56C,MAAMyK,QAAUigd,MAGrB9va,EAAG56C,MAAMyK,QAAUvJ,EAAQwpd,EAAkB,QAIjD9ib,OAAQ,SAAiBgT,EAAIsvF,EAAK6hQ,GAChC,IAAI7qY,EAAQgpI,EAAIhpI,MACZknH,EAAW8hB,EAAI9hB,SAGnB,IAAKlnH,KAAWknH,EAAhB,CACA2jR,EAAQy+E,GAAWz+E,GACnB,IAAI0+E,EAAgB1+E,EAAM38W,MAAQ28W,EAAM38W,KAAKoqb,WACzCiR,GACF1+E,EAAM38W,KAAK9b,MAAO,EACdpS,EACFypB,GAAMohX,GAAO,WACXnxV,EAAG56C,MAAMyK,QAAUmwC,EAAG+va,sBAGxBzB,GAAMn9E,GAAO,WACXnxV,EAAG56C,MAAMyK,QAAU,WAIvBmwC,EAAG56C,MAAMyK,QAAUvJ,EAAQ05C,EAAG+va,mBAAqB,SAIvDxmH,OAAQ,SACNvpT,EACAsjI,EACA6tN,EACAy9D,EACA4S,GAEKA,IACHxha,EAAG56C,MAAMyK,QAAUmwC,EAAG+va,sBAKxBC,GAAqB,CACvBjnc,MAAOmmc,GACPx2c,KAAMA,IAKJu3c,GAAkB,CACpBjod,KAAM9H,OACNktd,OAAQ55E,QACRwjC,IAAKxjC,QACL50S,KAAM1+F,OACNgX,KAAMhX,OACNiqd,WAAYjqd,OACZoqd,WAAYpqd,OACZkqd,aAAclqd,OACdqqd,aAAcrqd,OACdmqd,iBAAkBnqd,OAClBsqd,iBAAkBtqd,OAClB4sd,YAAa5sd,OACb8sd,kBAAmB9sd,OACnB6sd,cAAe7sd,OACfuM,SAAU,CAACovB,OAAQ37B,OAAQkJ,SAK7B,SAAS8md,GAAc/+E,GACrB,IAAIg/E,EAAch/E,GAASA,EAAMowD,iBACjC,OAAI4uB,GAAeA,EAAY1vB,KAAK7zb,QAAQ+ic,SACnCugB,GAAape,GAAuBqe,EAAYxnc,WAEhDwoX,EAIX,SAASi/E,GAAuB5lG,GAC9B,IAAIh2V,EAAO,GACP5nB,EAAU49W,EAAK7tQ,SAEnB,IAAK,IAAIz4G,KAAO0I,EAAQk5b,UACtBtxa,EAAKtwB,GAAOsmX,EAAKtmX,GAInB,IAAI0pc,EAAYhhc,EAAQkkc,iBACxB,IAAK,IAAIpM,KAASkJ,EAChBp5a,EAAK0oa,EAASwH,IAAUkJ,EAAUlJ,GAEpC,OAAOlwa,EAGT,SAASvS,GAAa7f,EAAGiud,GACvB,GAAI,iBAAiBtwd,KAAKswd,EAAS/jY,KACjC,OAAOlqF,EAAE,aAAc,CACrB6hC,MAAOosb,EAAS9uB,iBAAiBuE,YAKvC,SAASwqB,GAAqBn/E,GAC5B,MAAQA,EAAQA,EAAMtlV,OACpB,GAAIslV,EAAM38W,KAAKoqb,WACb,OAAO,EAKb,SAAS2R,GAAaxna,EAAOyna,GAC3B,OAAOA,EAAStsd,MAAQ6kD,EAAM7kD,KAAOssd,EAASlkY,MAAQvjC,EAAMujC,IAG9D,IAAImkY,GAAgB,SAAUvmd,GAAK,OAAOA,EAAEoiF,KAAO41W,GAAmBh4b,IAElEwmd,GAAmB,SAAUpud,GAAK,MAAkB,SAAXA,EAAE0F,MAE3C2od,GAAa,CACf3od,KAAM,aACNi8B,MAAOgsb,GACPtgB,UAAU,EAEV7zb,OAAQ,SAAiB1Z,GACvB,IAAIisI,EAAShuI,KAETsoB,EAAWtoB,KAAKqlC,OAAOC,QAC3B,GAAKhd,IAKLA,EAAWA,EAAS6P,OAAOi4b,IAEtB9nc,EAASve,QAAd,CAKI,EAQJ,IAAIw0F,EAAOv+F,KAAKu+F,KAGZ,EASJ,IAAIyxX,EAAW1nc,EAAS,GAIxB,GAAI2nc,GAAoBjwd,KAAKg8G,QAC3B,OAAOg0W,EAKT,IAAItna,EAAQmna,GAAaG,GAEzB,IAAKtna,EACH,OAAOsna,EAGT,GAAIhwd,KAAKuwd,SACP,OAAO3uc,GAAY7f,EAAGiud,GAMxB,IAAIp8c,EAAK,gBAAmB5T,KAAS,KAAI,IACzC0oD,EAAM7kD,IAAmB,MAAb6kD,EAAM7kD,IACd6kD,EAAM+4Y,UACJ7tb,EAAK,UACLA,EAAK80C,EAAMujC,IACbgwW,EAAYvzY,EAAM7kD,KACmB,IAAlChE,OAAO6oD,EAAM7kD,KAAKqJ,QAAQ0G,GAAY80C,EAAM7kD,IAAM+P,EAAK80C,EAAM7kD,IAC9D6kD,EAAM7kD,IAEZ,IAAIswB,GAAQu0B,EAAMv0B,OAASu0B,EAAMv0B,KAAO,KAAKoqb,WAAawR,GAAsB/vd,MAC5Ewwd,EAAcxwd,KAAKswc,OACnB6f,EAAWN,GAAaW,GAQ5B,GAJI9na,EAAMv0B,KAAKywa,YAAcl8Y,EAAMv0B,KAAKywa,WAAWrqW,KAAK81X,MACtD3na,EAAMv0B,KAAK9b,MAAO,GAIlB83c,GACAA,EAASh8b,OACR+7b,GAAYxna,EAAOyna,KACnBtuB,GAAmBsuB,MAElBA,EAASp/E,oBAAqBo/E,EAASp/E,kBAAkBu/D,OAAO7O,WAClE,CAGA,IAAIkhB,EAAUwN,EAASh8b,KAAKoqb,WAAaj0G,EAAO,GAAIn2U,GAEpD,GAAa,WAAToqE,EAOF,OALAv+F,KAAKuwd,UAAW,EAChBroB,GAAeya,EAAS,cAAc,WACpC30U,EAAOuiV,UAAW,EAClBviV,EAAOwjU,kBAEF5vb,GAAY7f,EAAGiud,GACjB,GAAa,WAATzxX,EAAmB,CAC5B,GAAIsjW,GAAmBn5Y,GACrB,OAAO8na,EAET,IAAIC,EACAlC,EAAe,WAAckC,KACjCvoB,GAAe/za,EAAM,aAAco6b,GACnCrmB,GAAe/za,EAAM,iBAAkBo6b,GACvCrmB,GAAeya,EAAS,cAAc,SAAUsL,GAASwC,EAAexC,MAI5E,OAAO+B,KAMPpsb,GAAQ0mU,EAAO,CACjBr+Q,IAAKpsF,OACL6wd,UAAW7wd,QACV+vd,WAEIhsb,GAAM26D,KAEb,IAAIoyX,GAAkB,CACpB/sb,MAAOA,GAEPgtb,YAAa,WACX,IAAI5iV,EAAShuI,KAET2sC,EAAS3sC,KAAKgzc,QAClBhzc,KAAKgzc,QAAU,SAAUliE,EAAOk9D,GAC9B,IAAIoF,EAAwBb,GAAkBvkU,GAE9CA,EAAOqlU,UACLrlU,EAAOsiU,OACPtiU,EAAO6iV,MACP,GACA,GAEF7iV,EAAOsiU,OAAStiU,EAAO6iV,KACvBzd,IACAzma,EAAOlgC,KAAKuhI,EAAQ8iQ,EAAOk9D,KAI/Bvyb,OAAQ,SAAiB1Z,GAQvB,IAPA,IAAIkqF,EAAMjsF,KAAKisF,KAAOjsF,KAAKg8G,OAAO7nF,KAAK83D,KAAO,OAC1C38E,EAAMvG,OAAOS,OAAO,MACpBsnd,EAAe9wd,KAAK8wd,aAAe9wd,KAAKsoB,SACxCyoc,EAAc/wd,KAAKqlC,OAAOC,SAAW,GACrChd,EAAWtoB,KAAKsoB,SAAW,GAC3B0oc,EAAiBjB,GAAsB/vd,MAElCoK,EAAI,EAAGA,EAAI2md,EAAYhnd,OAAQK,IAAK,CAC3C,IAAIP,EAAIknd,EAAY3md,GACpB,GAAIP,EAAEoiF,IACJ,GAAa,MAATpiF,EAAEhG,KAAoD,IAArChE,OAAOgK,EAAEhG,KAAKqJ,QAAQ,WACzCob,EAAS5T,KAAK7K,GACdyF,EAAIzF,EAAEhG,KAAOgG,GACXA,EAAEsqB,OAAStqB,EAAEsqB,KAAO,KAAKoqb,WAAayS,QAS9C,GAAIF,EAAc,CAGhB,IAFA,IAAID,EAAO,GACP7xD,EAAU,GACLszC,EAAM,EAAGA,EAAMwe,EAAa/md,OAAQuoc,IAAO,CAClD,IAAI2e,EAAMH,EAAaxe,GACvB2e,EAAI98b,KAAKoqb,WAAayS,EACtBC,EAAI98b,KAAKtuB,IAAMord,EAAIhwB,IAAI56b,wBACnBiJ,EAAI2hd,EAAIptd,KACVgtd,EAAKn8c,KAAKu8c,GAEVjyD,EAAQtqZ,KAAKu8c,GAGjBjxd,KAAK6wd,KAAO9ud,EAAEkqF,EAAK,KAAM4kY,GACzB7wd,KAAKg/Z,QAAUA,EAGjB,OAAOj9Z,EAAEkqF,EAAK,KAAM3jE,IAGtB6c,QAAS,WACP,IAAI7c,EAAWtoB,KAAK8wd,aAChBJ,EAAY1wd,KAAK0wd,YAAe1wd,KAAK2H,MAAQ,KAAO,QACnD2gB,EAASve,QAAW/J,KAAKkxd,QAAQ5oc,EAAS,GAAG24a,IAAKyvB,KAMvDpoc,EAASmL,QAAQ09b,IACjB7oc,EAASmL,QAAQ29b,IACjB9oc,EAASmL,QAAQ49b,IAKjBrxd,KAAKsxd,QAAUr7c,SAASnP,KAAKiL,aAE7BuW,EAASmL,SAAQ,SAAU5pB,GACzB,GAAIA,EAAEsqB,KAAK4tW,MAAO,CAChB,IAAIpiV,EAAK91C,EAAEo3b,IACPt/b,EAAIg+C,EAAG56C,MACXkmd,GAAmBtra,EAAI+wa,GACvB/ud,EAAE6tG,UAAY7tG,EAAE4vd,gBAAkB5vd,EAAE8+N,mBAAqB,GACzD9gL,EAAGqB,iBAAiBwpa,GAAoB7qa,EAAG6xa,QAAU,SAAS/+U,EAAIj9H,GAC5DA,GAAKA,EAAE7L,SAAWg2C,GAGjBnqC,IAAK,aAAa9V,KAAK8V,EAAE63W,gBAC5B1tU,EAAGi7B,oBAAoB4vY,GAAoB/3U,GAC3C9yF,EAAG6xa,QAAU,KACbrG,GAAsBxra,EAAI+wa,YAOpCnrb,QAAS,CACP2rb,QAAS,SAAkBvxa,EAAI+wa,GAE7B,IAAKtG,GACH,OAAO,EAGT,GAAIpqd,KAAKyxd,SACP,OAAOzxd,KAAKyxd,SAOd,IAAI30a,EAAQ6C,EAAGzwB,YACXywB,EAAGkja,oBACLlja,EAAGkja,mBAAmBpvb,SAAQ,SAAUmrC,GAAO2oT,GAAYzqU,EAAO8hB,MAEpEuoT,GAASrqU,EAAO4za,GAChB5za,EAAM/3C,MAAMyK,QAAU,OACtBxP,KAAKkzc,IAAIvlc,YAAYmvC,GACrB,IAAI9b,EAAOsqb,GAAkBxua,GAE7B,OADA98C,KAAKkzc,IAAIr+Y,YAAY/X,GACb98C,KAAKyxd,SAAWzwb,EAAKkrb,gBAKnC,SAASiF,GAAgBtnd,GAEnBA,EAAEo3b,IAAIuwB,SACR3nd,EAAEo3b,IAAIuwB,UAGJ3nd,EAAEo3b,IAAIurB,UACR3id,EAAEo3b,IAAIurB,WAIV,SAAS4E,GAAgBvnd,GACvBA,EAAEsqB,KAAKva,OAAS/P,EAAEo3b,IAAI56b,wBAGxB,SAASgrd,GAAkBxnd,GACzB,IAAI6nd,EAAS7nd,EAAEsqB,KAAKtuB,IAChB+T,EAAS/P,EAAEsqB,KAAKva,OAChB+3c,EAAKD,EAAO/sd,KAAOiV,EAAOjV,KAC1Bitd,EAAKF,EAAO9sd,IAAMgV,EAAOhV,IAC7B,GAAI+sd,GAAMC,EAAI,CACZ/nd,EAAEsqB,KAAK4tW,OAAQ,EACf,IAAIpgY,EAAIkI,EAAEo3b,IAAIl8b,MACdpD,EAAE6tG,UAAY7tG,EAAE4vd,gBAAkB,aAAeI,EAAK,MAAQC,EAAK,MACnEjwd,EAAE8+N,mBAAqB,MAI3B,IAAIoxP,GAAqB,CACvBvB,WAAYA,GACZK,gBAAiBA,IAMnB/pb,GAAI1T,OAAO8ra,YAAcA,GACzBp4Z,GAAI1T,OAAOyra,cAAgBA,GAC3B/3Z,GAAI1T,OAAO0ra,eAAiBA,GAC5Bh4Z,GAAI1T,OAAO4ra,gBAAkBA,GAC7Bl4Z,GAAI1T,OAAO2ra,iBAAmBA,GAG9Bv0F,EAAO1jU,GAAIr6B,QAAQq4b,WAAY+qB,IAC/BrlH,EAAO1jU,GAAIr6B,QAAQmkY,WAAYmhF,IAG/Bjrb,GAAIr9B,UAAU8pc,UAAYp+D,EAAY05E,GAAQnxB,EAG9C52Z,GAAIr9B,UAAU+kc,OAAS,SACrB3uZ,EACAquZ,GAGA,OADAruZ,EAAKA,GAAMs1V,EAAYhrW,GAAM0V,QAAMh6C,EAC5B6tc,GAAexzc,KAAM2/C,EAAIquZ,IAK9B/4D,GACFx/X,YAAW,WACLyd,EAAOu8G,UACLA,IACFA,GAASjE,KAAK,OAAQ5kG,MAsBzB,GAKL,IAAIkrb,GAAe,2BACfC,GAAgB,yBAEhBC,GAAar1B,GAAO,SAAUs1B,GAChC,IAAI3jd,EAAO2jd,EAAW,GAAGxvc,QAAQsvc,GAAe,QAC5Ctjd,EAAQwjd,EAAW,GAAGxvc,QAAQsvc,GAAe,QACjD,OAAO,IAAIl7b,OAAOvoB,EAAO,gBAAkBG,EAAO,QAKpD,SAASyjd,GACP1wb,EACAywb,GAEA,IAAIE,EAAQF,EAAaD,GAAWC,GAAcH,GAClD,GAAKK,EAAMzyd,KAAK8hC,GAAhB,CAGA,IAGIr5B,EAAO2M,EAAOs9c,EAHd/7E,EAAS,GACTg8E,EAAY,GACZ7sN,EAAY2sN,EAAM3sN,UAAY,EAElC,MAAQr9P,EAAQgqd,EAAM9ud,KAAKm+B,GAAQ,CACjC1sB,EAAQ3M,EAAM2M,MAEVA,EAAQ0wP,IACV6sN,EAAU39c,KAAK09c,EAAa5wb,EAAKzrB,MAAMyvP,EAAW1wP,IAClDuhY,EAAO3hY,KAAKm7B,KAAKC,UAAUsib,KAG7B,IAAI15a,EAAM2zR,GAAalkU,EAAM,GAAGyM,QAChCyhY,EAAO3hY,KAAM,MAAQgkC,EAAM,KAC3B25a,EAAU39c,KAAK,CAAE,WAAYgkC,IAC7B8sN,EAAY1wP,EAAQ3M,EAAM,GAAG4B,OAM/B,OAJIy7P,EAAYhkO,EAAKz3B,SACnBsod,EAAU39c,KAAK09c,EAAa5wb,EAAKzrB,MAAMyvP,IACvC6wI,EAAO3hY,KAAKm7B,KAAKC,UAAUsib,KAEtB,CACLvc,WAAYx/D,EAAO1hY,KAAK,KACxB0hY,OAAQg8E,IAMZ,SAASC,GAAe3ya,EAAIpzC,GACfA,EAAQ6gN,KAAnB,IACI8tP,EAAcoK,GAAiB3la,EAAI,SAanCu7Z,IACFv7Z,EAAGu7Z,YAAcrra,KAAKC,UAAUora,IAElC,IAAIqX,EAAepN,GAAexla,EAAI,SAAS,GAC3C4ya,IACF5ya,EAAG4ya,aAAeA,GAItB,SAASC,GAAS7ya,GAChB,IAAIxrB,EAAO,GAOX,OANIwrB,EAAGu7Z,cACL/mb,GAAQ,eAAkBwrB,EAAc,YAAI,KAE1CA,EAAG4ya,eACLp+b,GAAQ,SAAYwrB,EAAe,aAAI,KAElCxrB,EAGT,IAAIs+b,GAAU,CACZ90B,WAAY,CAAC,eACb20B,cAAeA,GACfE,QAASA,IAKX,SAASE,GAAiB/ya,EAAIpzC,GACjBA,EAAQ6gN,KAAnB,IACIo7P,EAAclD,GAAiB3la,EAAI,SACnC6oa,IAcF7oa,EAAG6oa,YAAc34a,KAAKC,UAAUq4a,GAAeK,KAGjD,IAAImK,EAAexN,GAAexla,EAAI,SAAS,GAC3Cgza,IACFhza,EAAGgza,aAAeA,GAItB,SAASC,GAAWjza,GAClB,IAAIxrB,EAAO,GAOX,OANIwrB,EAAG6oa,cACLr0b,GAAQ,eAAkBwrB,EAAc,YAAI,KAE1CA,EAAGgza,eACLx+b,GAAQ,UAAawrB,EAAe,aAAI,MAEnCxrB,EAGT,IAQI0+b,GARAC,GAAU,CACZn1B,WAAY,CAAC,eACb20B,cAAeI,GACfF,QAASI,IAOPG,GAAK,CACP9tQ,OAAQ,SAAiBprE,GAGvB,OAFAg5U,GAAUA,IAAW58c,SAASzI,cAAc,OAC5Cqld,GAAQz/c,UAAYymI,EACbg5U,GAAQjmc,cAMfomc,GAAa12B,EACf,6FAME22B,GAAmB32B,EACrB,2DAKE42B,GAAmB52B,EACrB,mSAYE1ra,GAAY,4EACZuic,GAAsB,wGACtBC,GAAS,6BAAgCl0B,EAAoB,OAAI,KACjEm0B,GAAe,OAASD,GAAS,QAAUA,GAAS,IACpDE,GAAe,IAAIz8b,OAAQ,KAAOw8b,IAClCE,GAAgB,aAChBC,GAAS,IAAI38b,OAAQ,QAAUw8b,GAAe,UAC9CI,GAAU,qBAEVC,GAAU,SACVC,GAAqB,QAGrBC,GAAqBt3B,EAAQ,yBAAyB,GACtDu3B,GAAU,GAEVC,GAAc,CAChB,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,IACT,QAAS,KACT,OAAQ,KACR,QAAS,KAEPC,GAAc,4BACdC,GAA0B,mCAG1BC,GAAqB33B,EAAQ,gBAAgB,GAC7C43B,GAA2B,SAAUjoY,EAAK4tD,GAAQ,OAAO5tD,GAAOgoY,GAAmBhoY,IAAoB,OAAZ4tD,EAAK,IAEpG,SAASs6U,GAAYlud,EAAOmud,GAC1B,IAAIj9E,EAAKi9E,EAAuBJ,GAA0BD,GAC1D,OAAO9td,EAAMwc,QAAQ00X,GAAI,SAAUhvY,GAAS,OAAO2rd,GAAY3rd,MAGjE,SAASksd,GAAWx6U,EAAMttI,GACxB,IAKIwtG,EAAMu6W,EALNl2T,EAAQ,GACRm2T,EAAahod,EAAQgod,WACrBC,EAAgBjod,EAAQymd,YAAc7xL,EACtCszL,EAAsBlod,EAAQ0md,kBAAoB9xL,EAClDrsR,EAAQ,EAEZ,MAAO+kI,EAAM,CAGX,GAFA9/B,EAAO8/B,EAEFy6U,GAAYV,GAAmBU,GAkF7B,CACL,IAAII,EAAe,EACfC,EAAaL,EAAQvud,cACrB6ud,EAAef,GAAQc,KAAgBd,GAAQc,GAAc,IAAI99b,OAAO,kBAAoB89b,EAAa,UAAW,MACpHE,EAASh7U,EAAKp3H,QAAQmyc,GAAc,SAAUriV,EAAK/wG,EAAMgyb,GAa3D,OAZAkB,EAAelB,EAAOzpd,OACjB6pd,GAAmBe,IAA8B,aAAfA,IACrCnzb,EAAOA,EACJ/e,QAAQ,sBAAuB,MAC/BA,QAAQ,4BAA6B,OAEtCyxc,GAAyBS,EAAYnzb,KACvCA,EAAOA,EAAKzrB,MAAM,IAEhBxJ,EAAQuod,OACVvod,EAAQuod,MAAMtzb,GAET,MAET1sB,GAAS+kI,EAAK9vI,OAAS8qd,EAAO9qd,OAC9B8vI,EAAOg7U,EACPE,EAAYJ,EAAY7/c,EAAQ4/c,EAAc5/c,OAvGF,CAC5C,IAAIkgd,EAAUn7U,EAAK3sI,QAAQ,KAC3B,GAAgB,IAAZ8nd,EAAe,CAEjB,GAAItB,GAAQh0d,KAAKm6I,GAAO,CACtB,IAAIo7U,EAAap7U,EAAK3sI,QAAQ,UAE9B,GAAI+nd,GAAc,EAAG,CACf1od,EAAQ2od,mBACV3od,EAAQmnd,QAAQ75U,EAAKp7G,UAAU,EAAGw2b,GAAangd,EAAOA,EAAQmgd,EAAa,GAE7EE,EAAQF,EAAa,GACrB,UAKJ,GAAItB,GAAmBj0d,KAAKm6I,GAAO,CACjC,IAAIu7U,EAAiBv7U,EAAK3sI,QAAQ,MAElC,GAAIkod,GAAkB,EAAG,CACvBD,EAAQC,EAAiB,GACzB,UAKJ,IAAIC,EAAex7U,EAAK1xI,MAAMsrd,IAC9B,GAAI4B,EAAc,CAChBF,EAAQE,EAAa,GAAGtrd,QACxB,SAIF,IAAIurd,EAAcz7U,EAAK1xI,MAAMqrd,IAC7B,GAAI8B,EAAa,CACf,IAAIpkG,EAAWp8W,EACfqgd,EAAQG,EAAY,GAAGvrd,QACvBgrd,EAAYO,EAAY,GAAIpkG,EAAUp8W,GACtC,SAIF,IAAIygd,EAAgBC,IACpB,GAAID,EAAe,CACjBE,EAAeF,GACXrB,GAAyBqB,EAAcz9c,QAAS+hI,IAClDs7U,EAAQ,GAEV,UAIJ,IAAI3zb,OAAO,EAAUk0b,OAAO,EAAUlzU,OAAO,EAC7C,GAAIwyU,GAAW,EAAG,CAChBU,EAAO77U,EAAK9jI,MAAMi/c,GAClB,OACGxB,GAAO9zd,KAAKg2d,KACZpC,GAAa5zd,KAAKg2d,KAClBhC,GAAQh0d,KAAKg2d,KACb/B,GAAmBj0d,KAAKg2d,GACzB,CAGA,GADAlzU,EAAOkzU,EAAKxod,QAAQ,IAAK,GACrBs1I,EAAO,EAAK,MAChBwyU,GAAWxyU,EACXkzU,EAAO77U,EAAK9jI,MAAMi/c,GAEpBxzb,EAAOq4G,EAAKp7G,UAAU,EAAGu2b,GAGvBA,EAAU,IACZxzb,EAAOq4G,GAGLr4G,GACF2zb,EAAQ3zb,EAAKz3B,QAGXwC,EAAQuod,OAAStzb,GACnBj1B,EAAQuod,MAAMtzb,EAAM1sB,EAAQ0sB,EAAKz3B,OAAQ+K,GA0B7C,GAAI+kI,IAAS9/B,EAAM,CACjBxtG,EAAQuod,OAASvod,EAAQuod,MAAMj7U,GAI/B,OAOJ,SAASs7U,EAAS1xd,GAChBqR,GAASrR,EACTo2I,EAAOA,EAAKp7G,UAAUh7B,GAGxB,SAAS+xd,IACP,IAAI9rc,EAAQmwH,EAAK1xI,MAAMmrd,IACvB,GAAI5pc,EAAO,CACT,IAMIC,EAAKkH,EANL1oB,EAAQ,CACV2P,QAAS4R,EAAM,GACfrS,MAAO,GACPqS,MAAO5U,GAETqgd,EAAQzrc,EAAM,GAAG3f,QAEjB,QAAS4f,EAAMkwH,EAAK1xI,MAAMord,OAAoB1ic,EAAOgpH,EAAK1xI,MAAMgrd,KAAwBt5U,EAAK1xI,MAAMyoB,KACjGC,EAAKnH,MAAQ5U,EACbqgd,EAAQtkc,EAAK,GAAG9mB,QAChB8mB,EAAKlH,IAAM7U,EACX3M,EAAMkP,MAAM3C,KAAKmc,GAEnB,GAAIlH,EAIF,OAHAxhB,EAAMwtd,WAAahsc,EAAI,GACvBwrc,EAAQxrc,EAAI,GAAG5f,QACf5B,EAAMwhB,IAAM7U,EACL3M,GAKb,SAASstd,EAAgBttd,GACvB,IAAI2P,EAAU3P,EAAM2P,QAChB69c,EAAaxtd,EAAMwtd,WAEnBpB,IACc,MAAZD,GAAmBpB,GAAiBp7c,IACtCi9c,EAAYT,GAEVG,EAAoB38c,IAAYw8c,IAAYx8c,GAC9Ci9c,EAAYj9c,IAQhB,IAJA,IAAI89c,EAAQpB,EAAc18c,MAAc69c,EAEpCttd,EAAIF,EAAMkP,MAAMtN,OAChBsN,EAAQ,IAAInO,MAAMb,GACb+B,EAAI,EAAGA,EAAI/B,EAAG+B,IAAK,CAC1B,IAAImjB,EAAOplB,EAAMkP,MAAMjN,GACnBnE,EAAQsnB,EAAK,IAAMA,EAAK,IAAMA,EAAK,IAAM,GACzC6mc,EAAmC,MAAZt8c,GAA+B,SAAZyV,EAAK,GAC/ChhB,EAAQspd,4BACRtpd,EAAQ6nd,qBACZ/8c,EAAMjN,GAAK,CACTzC,KAAM4lB,EAAK,GACXtnB,MAAOkud,GAAWlud,EAAOmud,IAQxBwB,IACHx3T,EAAM1pJ,KAAK,CAAEu3E,IAAKn0E,EAASg+c,cAAeh+c,EAAQ/R,cAAesR,MAAOA,EAAOqS,MAAOvhB,EAAMuhB,MAAOC,IAAKxhB,EAAMwhB,MAC9G2qc,EAAUx8c,GAGRvL,EAAQmd,OACVnd,EAAQmd,MAAM5R,EAAST,EAAOu+c,EAAOztd,EAAMuhB,MAAOvhB,EAAMwhB,KAI5D,SAASorc,EAAaj9c,EAAS4R,EAAOC,GACpC,IAAI9jB,EAAKkwd,EAKT,GAJa,MAATrsc,IAAiBA,EAAQ5U,GAClB,MAAP6U,IAAeA,EAAM7U,GAGrBgD,GAEF,IADAi+c,EAAoBj+c,EAAQ/R,cACvBF,EAAMu4J,EAAMr0J,OAAS,EAAGlE,GAAO,EAAGA,IACrC,GAAIu4J,EAAMv4J,GAAKiwd,gBAAkBC,EAC/B,WAKJlwd,EAAM,EAGR,GAAIA,GAAO,EAAG,CAEZ,IAAK,IAAIuE,EAAIg0J,EAAMr0J,OAAS,EAAGK,GAAKvE,EAAKuE,IAUnCmC,EAAQod,KACVpd,EAAQod,IAAIy0I,EAAMh0J,GAAG6hF,IAAKviE,EAAOC,GAKrCy0I,EAAMr0J,OAASlE,EACfyud,EAAUzud,GAAOu4J,EAAMv4J,EAAM,GAAGomF,QACD,OAAtB8pY,EACLxpd,EAAQmd,OACVnd,EAAQmd,MAAM5R,EAAS,IAAI,EAAM4R,EAAOC,GAEX,MAAtBosc,IACLxpd,EAAQmd,OACVnd,EAAQmd,MAAM5R,EAAS,IAAI,EAAO4R,EAAOC,GAEvCpd,EAAQod,KACVpd,EAAQod,IAAI7R,EAAS4R,EAAOC,IA1HlCorc,IAkIF,IAuBIiB,GACA/D,GACAgE,GACAC,GACAC,GACAC,GACAC,GACAC,GA9BAC,GAAO,YACPC,GAAQ,eACRC,GAAa,qCACbC,GAAgB,iCAChBC,GAAgB,WAChBC,GAAe,WAEfC,GAAQ,SACRC,GAAS,kBACTC,GAAa,wBAEbC,GAAS,kBAETC,GAAc,SACdC,GAAiB,OAIjBC,GAAmBx6B,EAAOo2B,GAAG9tQ,QAE7BmyQ,GAAsB,UAa1B,SAASC,GACPprY,EACA50E,EACAm0C,GAEA,MAAO,CACL30C,KAAM,EACNo1E,IAAKA,EACLu4X,UAAWntc,EACXktc,SAAU+S,GAAajgd,GACvB6tc,YAAa,GACb15Z,OAAQA,EACRljC,SAAU,IAOd,SAASynB,GACPoY,EACA57C,GAEAypd,GAASzpd,EAAQ6gN,MAAQ22P,GAEzBqS,GAAmB7pd,EAAQqvc,UAAYz6K,EACvCk1L,GAAsB9pd,EAAQyyb,aAAe79J,EAC7Cm1L,GAA0B/pd,EAAQuyb,iBAAmB39J,EACrD,IAAIw9J,EAAgBpyb,EAAQoyb,eAAiBx9J,GAC5B,SAAUxhP,GAAM,QAASA,EAAG9Y,YAAc83Z,EAAch/Y,EAAGssC,OAE5EgqY,GAAajS,GAAoBz3c,EAAQ+gB,QAAS,iBAClD4oc,GAAgBlS,GAAoBz3c,EAAQ+gB,QAAS,oBACrD6oc,GAAiBnS,GAAoBz3c,EAAQ+gB,QAAS,qBAEtD2kc,GAAa1ld,EAAQ0ld,WAErB,IAGIp+c,EACA2vM,EAJAplD,EAAQ,GACRm5T,GAAoD,IAA/Bhrd,EAAQgrd,mBAC7BC,EAAmBjrd,EAAQkrd,WAG3BlX,GAAS,EACTmX,GAAQ,EAUZ,SAASC,EAAcvzd,GAyBrB,GAxBAwzd,EAAqBxzd,GAChBm8c,GAAWn8c,EAAQ4rE,YACtB5rE,EAAUyzd,GAAezzd,EAASmI,IAG/B6xJ,EAAMr0J,QAAU3F,IAAYyP,GAE3BA,EAAKikd,KAAO1zd,EAAQ2zd,QAAU3zd,EAAQ4zd,OAIxCC,GAAepkd,EAAM,CACnB6kC,IAAKt0C,EAAQ2zd,OACbG,MAAO9zd,IAWTo/M,IAAkBp/M,EAAQ+zd,UAC5B,GAAI/zd,EAAQ2zd,QAAU3zd,EAAQ4zd,KAC5BI,GAAoBh0d,EAASo/M,OACxB,CACL,GAAIp/M,EAAQi0d,UAAW,CAIrB,IAAI1wd,EAAOvD,EAAQk0d,YAAc,aAC/B90Q,EAAciqP,cAAgBjqP,EAAciqP,YAAc,KAAK9lc,GAAQvD,EAE3Eo/M,EAAcl7L,SAAS5T,KAAKtQ,GAC5BA,EAAQonD,OAASg4J,EAMrBp/M,EAAQkkB,SAAWlkB,EAAQkkB,SAAS6P,QAAO,SAAUtuB,GAAK,OAAQ,EAAIwud,aAEtET,EAAqBxzd,GAGjBA,EAAQysL,MACV0vR,GAAS,GAEP6V,GAAiBhyd,EAAQ6nF,OAC3ByrY,GAAQ,GAGV,IAAK,IAAIttd,EAAI,EAAGA,EAAI+rd,GAAepsd,OAAQK,IACzC+rd,GAAe/rd,GAAGhG,EAASmI,GAI/B,SAASqrd,EAAsBj4a,GAG3B,IAAIojK,EADN,IAAK20Q,EAEH,OACG30Q,EAAWpjK,EAAGr3B,SAASq3B,EAAGr3B,SAASve,OAAS,KAC3B,IAAlBg5M,EAASlsM,MACS,MAAlBksM,EAASvhL,KAETme,EAAGr3B,SAASklC,MAyNlB,OAnMA6ma,GAAUlsa,EAAU,CAClBilK,KAAM4oQ,GACNzB,WAAYhod,EAAQgod,WACpBvB,WAAYzmd,EAAQymd,WACpBC,iBAAkB1md,EAAQ0md,iBAC1BmB,qBAAsB7nd,EAAQ6nd,qBAC9ByB,4BAA6Btpd,EAAQspd,4BACrCX,kBAAmB3od,EAAQ0+T,SAC3BstJ,kBAAmBhsd,EAAQgsd,kBAC3B7uc,MAAO,SAAgBuiE,EAAK50E,EAAOu+c,EAAO4C,EAAS7uc,GAGjD,IAAIy3a,EAAM59O,GAAiBA,EAAc49O,IAAOk1B,GAAwBrqY,GAIpEn5B,IAAe,QAAPsuY,IACV/pb,EAAQohd,GAAcphd,IAGxB,IAAIjT,EAAUizd,GAAiBprY,EAAK50E,EAAOmsM,GACvC49O,IACFh9b,EAAQg9b,GAAKA,GA0BXs3B,GAAet0d,KAAa67b,OAC9B77b,EAAQ+zd,WAAY,GAUtB,IAAK,IAAI/td,EAAI,EAAGA,EAAI8rd,GAAcnsd,OAAQK,IACxChG,EAAU8xd,GAAc9rd,GAAGhG,EAASmI,IAAYnI,EAG7Cm8c,IACHoY,GAAWv0d,GACPA,EAAQysL,MACV0vR,GAAS,IAGT6V,GAAiBhyd,EAAQ6nF,OAC3ByrY,GAAQ,GAENnX,EACFqY,GAAgBx0d,GACNA,EAAQ4rE,YAElB6oZ,GAAWz0d,GACX00d,GAAU10d,GACV20d,GAAY30d,IAGTyP,IACHA,EAAOzP,GAMJwxd,EAIH+B,EAAavzd,IAHbo/M,EAAgBp/M,EAChBg6J,EAAM1pJ,KAAKtQ,KAMfulB,IAAK,SAAcsiE,EAAKviE,EAAOsvc,GAC7B,IAAI50d,EAAUg6J,EAAMA,EAAMr0J,OAAS,GAEnCq0J,EAAMr0J,QAAU,EAChBy5M,EAAgBplD,EAAMA,EAAMr0J,OAAS,GAIrC4td,EAAavzd,IAGf0wd,MAAO,SAAgBtzb,EAAM9X,EAAOC,GAClC,GAAK65L,KAkBD1wJ,IACoB,aAAtB0wJ,EAAcv3H,KACdu3H,EAAc+gQ,SAAS3ic,cAAgB4f,GAFzC,CAMA,IAsBM4N,EACAsZ,EAvBFpgC,EAAWk7L,EAAcl7L,SAiB7B,GAfEkZ,EADEk2b,GAASl2b,EAAK5sB,OACTqkd,GAAUz1Q,GAAiBhiL,EAAO21b,GAAiB31b,GAChDlZ,EAASve,OAGVytd,EACgB,aAArBA,GAGKP,GAAYv3d,KAAK8hC,GAAQ,GAEzB,IAGF+1b,EAAqB,IAAM,GAV3B,GAYL/1b,EACGk2b,GAA8B,aAArBF,IAEZh2b,EAAOA,EAAK/e,QAAQy0c,GAAgB,OAIjC3W,GAAmB,MAAT/+a,IAAiB4N,EAAM8ib,GAAU1wb,EAAMywb,KACpDvpa,EAAQ,CACN7xC,KAAM,EACNg/b,WAAYzma,EAAIyma,WAChBx/D,OAAQjnW,EAAIinW,OACZ70W,KAAMA,GAEU,MAATA,GAAiBlZ,EAASve,QAAiD,MAAvCue,EAASA,EAASve,OAAS,GAAGy3B,OAC3EknB,EAAQ,CACN7xC,KAAM,EACN2qB,KAAMA,IAGNknB,GAKFpgC,EAAS5T,KAAKg0C,KAIpBgra,QAAS,SAAkBlyb,EAAM9X,EAAOC,GAGtC,GAAI65L,EAAe,CACjB,IAAI96J,EAAQ,CACV7xC,KAAM,EACN2qB,KAAMA,EACNiga,WAAW,GAET,EAIJj+O,EAAcl7L,SAAS5T,KAAKg0C,OAI3B70C,EAGT,SAAS8kd,GAAYh5a,GACkB,MAAjC2la,GAAiB3la,EAAI,WACvBA,EAAGkxI,KAAM,GAIb,SAAS+nS,GAAiBj5a,GACxB,IAAI6gE,EAAO7gE,EAAG6ka,UACV/5b,EAAM+1F,EAAKz2G,OACf,GAAI0gB,EAEF,IADA,IAAIpT,EAAQsoC,EAAGtoC,MAAQ,IAAInO,MAAMuhB,GACxBrgB,EAAI,EAAGA,EAAIqgB,EAAKrgB,IACvBiN,EAAMjN,GAAK,CACTzC,KAAM64G,EAAKp2G,GAAGzC,KACd1B,MAAO4pC,KAAKC,UAAU0wE,EAAKp2G,GAAGnE,QAEX,MAAjBu6G,EAAKp2G,GAAGsf,QACVrS,EAAMjN,GAAGsf,MAAQ82F,EAAKp2G,GAAGsf,MACzBrS,EAAMjN,GAAGuf,IAAM62F,EAAKp2G,GAAGuf,UAGjBg2B,EAAGkxI,MAEblxI,EAAGwka,OAAQ,GAIf,SAAS0T,GACPzzd,EACAmI,GAEA2sd,GAAW90d,GAIXA,EAAQ+/c,OACL//c,EAAQP,MACRO,EAAQqpc,cACRrpc,EAAQogd,UAAUz6c,OAGrBovd,GAAW/0d,GACXg1d,GAAmBh1d,GACnBi1d,GAAkBj1d,GAClBk1d,GAAiBl1d,GACjB,IAAK,IAAIgG,EAAI,EAAGA,EAAI6rd,GAAWlsd,OAAQK,IACrChG,EAAU6xd,GAAW7rd,GAAGhG,EAASmI,IAAYnI,EAG/C,OADAm1d,GAAan1d,GACNA,EAGT,SAAS80d,GAAYv5a,GACnB,IAAIjH,EAAMysa,GAAexla,EAAI,OACzBjH,IAqBFiH,EAAG97C,IAAM60C,GAIb,SAASygb,GAAYx5a,GACnB,IAAIsvF,EAAMk2U,GAAexla,EAAI,OACzBsvF,IACFtvF,EAAGsvF,IAAMA,EACTtvF,EAAG+8Z,SAAW8c,GAAW75a,IAI7B,SAASk5a,GAAYl5a,GACnB,IAAIjH,EACJ,GAAKA,EAAM4sa,GAAiB3la,EAAI,SAAW,CACzC,IAAIvQ,EAAMqqb,GAAS/gb,GACftJ,GACFk7T,EAAO3qT,EAAIvQ,IAYjB,SAASqqb,GAAU/gb,GACjB,IAAIghb,EAAUhhb,EAAIvwC,MAAMsud,IACxB,GAAKiD,EAAL,CACA,IAAItqb,EAAM,GACVA,EAAIgrM,IAAMs/O,EAAQ,GAAG9kd,OACrB,IAAIqkY,EAAQygF,EAAQ,GAAG9kd,OAAO6N,QAAQk0c,GAAe,IACjDgD,EAAgB1gF,EAAM9wY,MAAMuud,IAUhC,OATIiD,GACFvqb,EAAI6pW,MAAQA,EAAMx2X,QAAQi0c,GAAe,IAAI9hd,OAC7Cw6B,EAAIwqb,UAAYD,EAAc,GAAG/kd,OAC7B+kd,EAAc,KAChBvqb,EAAIyqb,UAAYF,EAAc,GAAG/kd,SAGnCw6B,EAAI6pW,MAAQA,EAEP7pW,GAGT,SAAS0pb,GAAWn5a,GAClB,IAAIjH,EAAM4sa,GAAiB3la,EAAI,QAC/B,GAAIjH,EACFiH,EAAGm4a,GAAKp/a,EACRu/a,GAAet4a,EAAI,CACjBjH,IAAKA,EACLw/a,MAAOv4a,QAEJ,CACiC,MAAlC2la,GAAiB3la,EAAI,YACvBA,EAAGq4a,MAAO,GAEZ,IAAID,EAASzS,GAAiB3la,EAAI,aAC9Bo4a,IACFp4a,EAAGo4a,OAASA,IAKlB,SAASK,GAAqBz4a,EAAI6L,GAChC,IAAI8lH,EAAOwoT,GAAgBtua,EAAOljC,UAC9BgpJ,GAAQA,EAAKwmT,IACfG,GAAe3mT,EAAM,CACnB54H,IAAKiH,EAAGo4a,OACRG,MAAOv4a,IAWb,SAASm6a,GAAiBxxc,GACxB,IAAIle,EAAIke,EAASve,OACjB,MAAOK,IAAK,CACV,GAAyB,IAArBke,EAASle,GAAGyM,KACd,OAAOyR,EAASle,GAShBke,EAASklC,OAKf,SAASyqa,GAAgBt4a,EAAI3K,GACtB2K,EAAGo6a,eACNp6a,EAAGo6a,aAAe,IAEpBp6a,EAAGo6a,aAAarld,KAAKsgC,GAGvB,SAAS+jb,GAAap5a,GACpB,IAAI8nZ,EAAU6d,GAAiB3la,EAAI,UACpB,MAAX8nZ,IACF9nZ,EAAGy8V,MAAO,GAMd,SAASg9E,GAAoBz5a,GAC3B,IAAI04a,EACW,aAAX14a,EAAGssC,KACLosY,EAAY/S,GAAiB3la,EAAI,SAYjCA,EAAG04a,UAAYA,GAAa/S,GAAiB3la,EAAI,gBACvC04a,EAAY/S,GAAiB3la,EAAI,iBAW3CA,EAAG04a,UAAYA,GAIjB,IAAIC,EAAanT,GAAexla,EAAI,QAalC,GAZE24a,IACF34a,EAAG24a,WAA4B,OAAfA,EAAsB,YAAcA,EACpD34a,EAAGq6a,qBAAuBr6a,EAAG4ka,SAAS,WAAY5ka,EAAG4ka,SAAS,gBAG/C,aAAX5ka,EAAGssC,KAAuBtsC,EAAG04a,WAC/BjU,GAAQzka,EAAI,OAAQ24a,EAAYrT,GAAkBtla,EAAI,UAMzC,aAAXA,EAAGssC,IAAoB,CAEzB,IAAIguY,EAAcxU,GAAwB9la,EAAIq3a,IAC9C,GAAIiD,EAAa,CACX,EAeJ,IAAIhrV,EAAMirV,GAAYD,GAClBtyd,EAAOsnI,EAAItnI,KACXqpB,EAAUi+G,EAAIj+G,QAClB2uB,EAAG24a,WAAa3wd,EAChBg4C,EAAGq6a,kBAAoBhpc,EACvB2uB,EAAG04a,UAAY4B,EAAYh0d,OAASmxd,QAEjC,CAEL,IAAI+C,EAAgB1U,GAAwB9la,EAAIq3a,IAChD,GAAImD,EAAe,CACb,EAsBJ,IAAI/0b,EAAQua,EAAG8tZ,cAAgB9tZ,EAAG8tZ,YAAc,IAC5CwM,EAAQigB,GAAYC,GACpB5wB,EAAS0Q,EAAMtyc,KACfyyd,EAAYngB,EAAMjpb,QAClBqpc,EAAgBj1b,EAAMmka,GAAU8tB,GAAiB,WAAY,GAAI13a,GACrE06a,EAAc/B,WAAa/uB,EAC3B8wB,EAAcL,kBAAoBI,EAClCC,EAAc/xc,SAAWq3B,EAAGr3B,SAAS6P,QAAO,SAAUtuB,GACpD,IAAKA,EAAEwud,UAEL,OADAxud,EAAE2hD,OAAS6ua,GACJ,KAGXA,EAAchC,UAAY8B,EAAcl0d,OAASmxd,GAEjDz3a,EAAGr3B,SAAW,GAEdq3B,EAAGwka,OAAQ,IAMnB,SAAS+V,GAAaj3S,GACpB,IAAIt7K,EAAOs7K,EAAQt7K,KAAK8a,QAAQu0c,GAAQ,IAWxC,OAVKrvd,GACqB,MAApBs7K,EAAQt7K,KAAK,KACfA,EAAO,WAQJivd,GAAal3d,KAAKiI,GAErB,CAAEA,KAAMA,EAAKoO,MAAM,GAAI,GAAIib,SAAS,GAEpC,CAAErpB,KAAO,IAAOA,EAAO,IAAOqpB,SAAS,GAI7C,SAASqoc,GAAmB15a,GACX,SAAXA,EAAGssC,MACLtsC,EAAG26a,SAAWnV,GAAexla,EAAI,SAYrC,SAAS25a,GAAkB35a,GACzB,IAAIsjI,GACCA,EAAUkiS,GAAexla,EAAI,SAChCA,EAAG9Y,UAAYo8I,GAE8B,MAA3CqiS,GAAiB3la,EAAI,qBACvBA,EAAG8vZ,gBAAiB,GAIxB,SAAS8pB,GAAc55a,GACrB,IACIv1C,EAAG/B,EAAGV,EAAMq6c,EAAS/7c,EAAO67c,EAAWyY,EAASt3c,EADhDu9F,EAAO7gE,EAAG6ka,UAEd,IAAKp6c,EAAI,EAAG/B,EAAIm4G,EAAKz2G,OAAQK,EAAI/B,EAAG+B,IAAK,CAGvC,GAFAzC,EAAOq6c,EAAUxhW,EAAKp2G,GAAGzC,KACzB1B,EAAQu6G,EAAKp2G,GAAGnE,MACZuwd,GAAM92d,KAAKiI,GASb,GAPAg4C,EAAG66a,aAAc,EAEjB1Y,EAAY2Y,GAAe9yd,EAAK8a,QAAQ+zc,GAAO,KAE3C1U,IACFn6c,EAAOA,EAAK8a,QAAQs0c,GAAY,KAE9BD,GAAOp3d,KAAKiI,GACdA,EAAOA,EAAK8a,QAAQq0c,GAAQ,IAC5B7wd,EAAQomU,GAAapmU,GACrBgd,EAAY2zc,GAAal3d,KAAKiI,GAC1Bsb,IACFtb,EAAOA,EAAKoO,MAAM,GAAI,IAUpB+rc,IACEA,EAAU3kc,OAAS8F,IACrBtb,EAAOk1b,EAASl1b,GACH,cAATA,IAAwBA,EAAO,cAEjCm6c,EAAU4Y,QAAUz3c,IACtBtb,EAAOk1b,EAASl1b,IAEdm6c,EAAU3vU,OACZooV,EAAU1U,GAAkB5/c,EAAO,UAC9Bgd,EAuBH2hc,GACEjla,EACC,cAAkBh4C,EAAO,IAC1B4yd,EACA,MACA,EACAvE,GACAx1W,EAAKp2G,IACL,IA9BFw6c,GACEjla,EACC,UAAak9Y,EAASl1b,GACvB4yd,EACA,MACA,EACAvE,GACAx1W,EAAKp2G,IAEH4yb,EAAUr1b,KAAUk1b,EAASl1b,IAC/Bi9c,GACEjla,EACC,UAAaq9Y,EAAUr1b,GACxB4yd,EACA,MACA,EACAvE,GACAx1W,EAAKp2G,OAkBV03c,GAAaA,EAAU3kc,OACzBwiC,EAAG9Y,WAAawvb,GAAoB12a,EAAGssC,IAAKtsC,EAAG4ka,SAAS1tc,KAAMlP,GAE/Ds8c,GAAQtka,EAAIh4C,EAAM1B,EAAOu6G,EAAKp2G,GAAI6Y,GAElCmhc,GAAQzka,EAAIh4C,EAAM1B,EAAOu6G,EAAKp2G,GAAI6Y,QAE/B,GAAIszc,GAAK72d,KAAKiI,GACnBA,EAAOA,EAAK8a,QAAQ8zc,GAAM,IAC1Btzc,EAAY2zc,GAAal3d,KAAKiI,GAC1Bsb,IACFtb,EAAOA,EAAKoO,MAAM,GAAI,IAExB6uc,GAAWjla,EAAIh4C,EAAM1B,EAAO67c,GAAW,EAAOkU,GAAQx1W,EAAKp2G,GAAI6Y,OAC1D,CACLtb,EAAOA,EAAK8a,QAAQ+zc,GAAO,IAE3B,IAAImE,EAAWhzd,EAAKQ,MAAM0ud,IACtBxqV,EAAMsuV,GAAYA,EAAS,GAC/B13c,GAAY,EACRopH,IACF1kI,EAAOA,EAAKoO,MAAM,IAAKs2H,EAAItiI,OAAS,IAChC6sd,GAAal3d,KAAK2sI,KACpBA,EAAMA,EAAIt2H,MAAM,GAAI,GACpBkN,GAAY,IAGhBwhc,GAAa9ka,EAAIh4C,EAAMq6c,EAAS/7c,EAAOomI,EAAKppH,EAAW6+b,EAAWthW,EAAKp2G,SAmBzEg6c,GAAQzka,EAAIh4C,EAAMkoC,KAAKC,UAAU7pC,GAAQu6G,EAAKp2G,KAGzCu1C,EAAG9Y,WACK,UAATl/B,GACA0ud,GAAoB12a,EAAGssC,IAAKtsC,EAAG4ka,SAAS1tc,KAAMlP,IAChDs8c,GAAQtka,EAAIh4C,EAAM,OAAQ64G,EAAKp2G,KAMvC,SAASovd,GAAY75a,GACnB,IAAI6L,EAAS7L,EACb,MAAO6L,EAAQ,CACb,QAAmB7lD,IAAf6lD,EAAO4uL,IACT,OAAO,EAET5uL,EAASA,EAAOA,OAElB,OAAO,EAGT,SAASiva,GAAgB9yd,GACvB,IAAIQ,EAAQR,EAAKQ,MAAM4ud,IACvB,GAAI5ud,EAAO,CACT,IAAImiC,EAAM,GAEV,OADAniC,EAAMsrB,SAAQ,SAAU5xB,GAAKyoC,EAAIzoC,EAAEkU,MAAM,KAAM,KACxCu0B,GAIX,SAASgtb,GAAcjgd,GAErB,IADA,IAAI/H,EAAM,GACDlF,EAAI,EAAG/B,EAAIgP,EAAMtN,OAAQK,EAAI/B,EAAG+B,IAOvCkF,EAAI+H,EAAMjN,GAAGzC,MAAQ0P,EAAMjN,GAAGnE,MAEhC,OAAOqJ,EAIT,SAAS2pd,GAAWt5a,GAClB,MAAkB,WAAXA,EAAGssC,KAA+B,UAAXtsC,EAAGssC,IAGnC,SAASysY,GAAgB/4a,GACvB,MACa,UAAXA,EAAGssC,KACS,WAAXtsC,EAAGssC,OACDtsC,EAAG4ka,SAAS1tc,MACQ,oBAArB8oC,EAAG4ka,SAAS1tc,MAKlB,IAAI+jd,GAAU,eACVC,GAAa,UAGjB,SAASpC,GAAephd,GAEtB,IADA,IAAI+3B,EAAM,GACDhlC,EAAI,EAAGA,EAAIiN,EAAMtN,OAAQK,IAAK,CACrC,IAAIymB,EAAOxZ,EAAMjN,GACZwwd,GAAQl7d,KAAKmxB,EAAKlpB,QACrBkpB,EAAKlpB,KAAOkpB,EAAKlpB,KAAK8a,QAAQo4c,GAAY,IAC1Czrb,EAAI16B,KAAKmc,IAGb,OAAOue,EAsBT,SAAS0rb,GAAkBn7a,EAAIpzC,GAC7B,GAAe,UAAXozC,EAAGssC,IAAiB,CACtB,IAKI8uY,EALAzrd,EAAMqwC,EAAG4ka,SACb,IAAKj1c,EAAI,WACP,OAWF,IAPIA,EAAI,UAAYA,EAAI,kBACtByrd,EAAc5V,GAAexla,EAAI,SAE9BrwC,EAAIuH,MAASkkd,IAAezrd,EAAI,YACnCyrd,EAAc,IAAOzrd,EAAI,UAAa,UAGpCyrd,EAAa,CACf,IAAIC,EAAc1V,GAAiB3la,EAAI,QAAQ,GAC3Cs7a,EAAmBD,EAAe,MAAQA,EAAc,IAAO,GAC/DE,EAAkD,MAAxC5V,GAAiB3la,EAAI,UAAU,GACzCw7a,EAAkB7V,GAAiB3la,EAAI,aAAa,GAEpDy7a,EAAUC,GAAgB17a,GAE9Bk5a,GAAWuC,GACX9W,GAAW8W,EAAS,OAAQ,YAC5BvD,GAAeuD,EAAS7ud,GACxB6ud,EAAQprZ,WAAY,EACpBorZ,EAAQtD,GAAK,IAAMiD,EAAc,iBAAmBE,EACpDhD,GAAemD,EAAS,CACtB1ib,IAAK0ib,EAAQtD,GACbI,MAAOkD,IAGT,IAAIE,EAAUD,GAAgB17a,GAC9B2la,GAAiBgW,EAAS,SAAS,GACnChX,GAAWgX,EAAS,OAAQ,SAC5BzD,GAAeyD,EAAS/ud,GACxB0rd,GAAemD,EAAS,CACtB1ib,IAAK,IAAMqib,EAAc,cAAgBE,EACzC/C,MAAOoD,IAGT,IAAIC,EAAUF,GAAgB17a,GAe9B,OAdA2la,GAAiBiW,EAAS,SAAS,GACnCjX,GAAWiX,EAAS,QAASR,GAC7BlD,GAAe0D,EAAShvd,GACxB0rd,GAAemD,EAAS,CACtB1ib,IAAKsib,EACL9C,MAAOqD,IAGLL,EACFE,EAAQpD,MAAO,EACNmD,IACTC,EAAQrD,OAASoD,GAGZC,IAKb,SAASC,GAAiB17a,GACxB,OAAO03a,GAAiB13a,EAAGssC,IAAKtsC,EAAG6ka,UAAUzuc,QAAS4pC,EAAG6L,QAG3D,IAAIgwa,GAAU,CACZV,iBAAkBA,IAGhBW,GAAY,CACdhJ,GACAK,GACA0I,IAKF,SAASh6b,GAAMme,EAAIyjI,GACbA,EAAIn9K,OACNg+c,GAAQtka,EAAI,cAAgB,MAASyjI,EAAS,MAAI,IAAMA,GAM5D,SAASvpC,GAAMl6F,EAAIyjI,GACbA,EAAIn9K,OACNg+c,GAAQtka,EAAI,YAAc,MAASyjI,EAAS,MAAI,IAAMA,GAI1D,IAuBIs4S,GACAC,GAxBAC,GAAe,CACjBlzc,MAAOA,GACP8Y,KAAMA,GACNq4G,KAAMA,IAKJgiV,GAAc,CAChBtH,YAAY,EACZjnc,QAASmuc,GACT72B,WAAYg3B,GACZhgB,SAAUA,GACVoX,WAAYA,GACZh0B,YAAaA,GACbi0B,iBAAkBA,GAClBt0B,cAAeA,GACfG,gBAAiBA,GACjBnB,WAAYD,EAAc+9B,KAQxBK,GAAsBn/B,EAAOo/B,IAajC,SAASC,GAAUnod,EAAMtH,GAClBsH,IACL6nd,GAAcI,GAAoBvvd,EAAQoxb,YAAc,IACxDg+B,GAAwBpvd,EAAQoyb,eAAiBx9J,EAEjD86L,GAAapod,GAEbqod,GAAgBrod,GAAM,IAGxB,SAASkod,GAAiB7+c,GACxB,OAAOo/a,EACL,iFACCp/a,EAAO,IAAMA,EAAO,KAIzB,SAAS++c,GAAc7yX,GAErB,GADAA,EAAK+yX,OAASpoF,GAAS3qS,GACL,IAAdA,EAAKvyF,KAAY,CAInB,IACG8kd,GAAsBvyX,EAAKnd,MACf,SAAbmd,EAAKnd,KAC+B,MAApCmd,EAAKm7W,SAAS,mBAEd,OAEF,IAAK,IAAIn6c,EAAI,EAAG/B,EAAI+gG,EAAK9gF,SAASve,OAAQK,EAAI/B,EAAG+B,IAAK,CACpD,IAAIs+C,EAAQ0gD,EAAK9gF,SAASle,GAC1B6xd,GAAavza,GACRA,EAAMyza,SACT/yX,EAAK+yX,QAAS,GAGlB,GAAI/yX,EAAK2wX,aACP,IAAK,IAAIznB,EAAM,EAAG8pB,EAAMhzX,EAAK2wX,aAAahwd,OAAQuoc,EAAM8pB,EAAK9pB,IAAO,CAClE,IAAI4lB,EAAQ9uX,EAAK2wX,aAAaznB,GAAK4lB,MACnC+D,GAAa/D,GACRA,EAAMiE,SACT/yX,EAAK+yX,QAAS,KAOxB,SAASD,GAAiB9yX,EAAMsiW,GAC9B,GAAkB,IAAdtiW,EAAKvyF,KAAY,CAOnB,IANIuyF,EAAK+yX,QAAU/yX,EAAKgzS,QACtBhzS,EAAKizX,YAAc3wB,GAKjBtiW,EAAK+yX,QAAU/yX,EAAK9gF,SAASve,SACN,IAAzBq/F,EAAK9gF,SAASve,QACY,IAA1Bq/F,EAAK9gF,SAAS,GAAGzR,MAGjB,YADAuyF,EAAKkzX,YAAa,GAKpB,GAFElzX,EAAKkzX,YAAa,EAEhBlzX,EAAK9gF,SACP,IAAK,IAAIle,EAAI,EAAG/B,EAAI+gG,EAAK9gF,SAASve,OAAQK,EAAI/B,EAAG+B,IAC/C8xd,GAAgB9yX,EAAK9gF,SAASle,GAAIshc,KAAatiW,EAAKgxI,KAGxD,GAAIhxI,EAAK2wX,aACP,IAAK,IAAIznB,EAAM,EAAG8pB,EAAMhzX,EAAK2wX,aAAahwd,OAAQuoc,EAAM8pB,EAAK9pB,IAC3D4pB,GAAgB9yX,EAAK2wX,aAAaznB,GAAK4lB,MAAOxsB,IAMtD,SAAS33D,GAAU3qS,GACjB,OAAkB,IAAdA,EAAKvyF,OAGS,IAAduyF,EAAKvyF,SAGCuyF,EAAKynF,MACZznF,EAAKoxX,aACLpxX,EAAK0uX,IAAO1uX,EAAKgxI,KACjBoiN,EAAapzV,EAAKnd,OACnB0vY,GAAsBvyX,EAAKnd,MAC1BswY,GAA2BnzX,KAC5BrgG,OAAOmU,KAAKksF,GAAM70B,MAAMmnZ,OAI5B,SAASa,GAA4BnzX,GACnC,MAAOA,EAAK59C,OAAQ,CAElB,GADA49C,EAAOA,EAAK59C,OACK,aAAb49C,EAAKnd,IACP,OAAO,EAET,GAAImd,EAAKgxI,IACP,OAAO,EAGX,OAAO,EAKT,IAAIoiP,GAAU,0DACVC,GAAa,gBACbC,GAAe,+FAGfh+B,GAAW,CACbi+B,IAAK,GACLjsc,IAAK,EACLhB,MAAO,GACP+1K,MAAO,GACPD,GAAI,GACJ7gM,KAAM,GACN2C,MAAO,GACPi+L,KAAM,GACN,OAAU,CAAC,EAAG,KAIZ05D,GAAW,CAEb09N,IAAK,CAAC,MAAO,UACbjsc,IAAK,MACLhB,MAAO,QAEP+1K,MAAO,CAAC,IAAK,YAEbD,GAAI,CAAC,KAAM,WACX7gM,KAAM,CAAC,OAAQ,aACf2C,MAAO,CAAC,QAAS,cACjBi+L,KAAM,CAAC,OAAQ,aAEf,OAAU,CAAC,YAAa,SAAU,QAMhCq3R,GAAW,SAAU5nb,GAAa,MAAQ,MAAQA,EAAY,iBAE9D6nb,GAAe,CACjBnld,KAAM,4BACN4W,QAAS,2BACTm5M,KAAMm1P,GAAS,0CACfE,KAAMF,GAAS,mBACf7oc,MAAO6oc,GAAS,oBAChBG,IAAKH,GAAS,kBACd3qF,KAAM2qF,GAAS,mBACfj4d,KAAMi4d,GAAS,6CACfxyT,OAAQwyT,GAAS,6CACjBt1d,MAAOs1d,GAAS,8CAGlB,SAASI,GACPvtZ,EACA0wX,GAEA,IAAI7oF,EAAS6oF,EAAW,YAAc,MAClC88B,EAAiB,GACjBC,EAAkB,GACtB,IAAK,IAAIv1d,KAAQ8nE,EAAQ,CACvB,IAAI0tZ,EAAcC,GAAW3tZ,EAAO9nE,IAChC8nE,EAAO9nE,IAAS8nE,EAAO9nE,GAAMqpB,QAC/Bksc,GAAmBv1d,EAAO,IAAMw1d,EAAc,IAE9CF,GAAkB,IAAOt1d,EAAO,KAAQw1d,EAAc,IAI1D,OADAF,EAAiB,IAAOA,EAAelnd,MAAM,GAAI,GAAM,IACnDmnd,EACK5lH,EAAS,MAAQ2lH,EAAiB,KAAQC,EAAgBnnd,MAAM,GAAI,GAAM,KAE1EuhW,EAAS2lH,EAIpB,SAASG,GAAYhhY,GACnB,IAAKA,EACH,MAAO,eAGT,GAAIlzF,MAAM+nC,QAAQmrD,GAChB,MAAQ,IAAOA,EAAQ9sF,KAAI,SAAU8sF,GAAW,OAAOghY,GAAWhhY,MAAaznF,KAAK,KAAQ,IAG9F,IAAI0od,EAAeX,GAAah9d,KAAK08F,EAAQn2F,OACzCq3d,EAAuBd,GAAQ98d,KAAK08F,EAAQn2F,OAC5Cs3d,EAAuBb,GAAah9d,KAAK08F,EAAQn2F,MAAMwc,QAAQg6c,GAAY,KAE/E,GAAKrgY,EAAQ0lX,UAKN,CACL,IAAIv7b,EAAO,GACPi3c,EAAkB,GAClBtgd,EAAO,GACX,IAAK,IAAIrZ,KAAOu4F,EAAQ0lX,UACtB,GAAI+a,GAAah5d,GACf25d,GAAmBX,GAAah5d,GAE5B66b,GAAS76b,IACXqZ,EAAKxI,KAAK7Q,QAEP,GAAY,UAARA,EAAiB,CAC1B,IAAIi+c,EAAa1lX,EAAiB,UAClCohY,GAAmBZ,GACjB,CAAC,OAAQ,QAAS,MAAO,QACtBzkc,QAAO,SAAUslc,GAAe,OAAQ3b,EAAU2b,MAClDnud,KAAI,SAAUmud,GAAe,MAAQ,UAAYA,EAAc,SAC/D9od,KAAK,YAGVuI,EAAKxI,KAAK7Q,GAGVqZ,EAAKnT,SACPwc,GAAQm3c,GAAaxgd,IAGnBsgd,IACFj3c,GAAQi3c,GAEV,IAAIL,EAAcE,EACb,UAAajhY,EAAa,MAAI,WAC/BkhY,EACG,WAAclhY,EAAa,MAAI,YAChCmhY,EACG,UAAanhY,EAAa,MAC3BA,EAAQn2F,MAChB,MAAQ,oBAAsBsgB,EAAO42c,EAAc,IAzCnD,OAAIE,GAAgBC,EACXlhY,EAAQn2F,MAET,qBAAuBs3d,EAAwB,UAAanhY,EAAa,MAAKA,EAAQn2F,OAAS,IA0C3G,SAASy3d,GAAcxgd,GACrB,MAIE,mCACCA,EAAK5N,IAAIqud,IAAehpd,KAAK,MAAS,gBAI3C,SAASgpd,GAAe95d,GACtB,IAAIkwL,EAAS3rL,SAASvE,EAAK,IAC3B,GAAIkwL,EACF,MAAQ,oBAAsBA,EAEhC,IAAIz4K,EAAUojb,GAAS76b,GACnB+5d,EAAU3+N,GAASp7P,GACvB,MACE,qBACCgsC,KAAKC,UAAUjsC,GAAQ,IACvBgsC,KAAKC,UAAUx0B,GAFhB,eAIMu0B,KAAKC,UAAU8tb,GACrB,IAMJ,SAASljZ,GAAI/6B,EAAIyjI,GAIfzjI,EAAGk+a,cAAgB,SAAUt3c,GAAQ,MAAQ,MAAQA,EAAO,IAAO68J,EAAS,MAAI,KAKlF,SAAS06S,GAAQn+a,EAAIyjI,GACnBzjI,EAAGo+a,SAAW,SAAUx3c,GACtB,MAAQ,MAAQA,EAAO,KAAQo5B,EAAM,IAAI,KAAQyjI,EAAS,MAAI,KAAOA,EAAI0+R,WAAa1+R,EAAI0+R,UAAU3kc,KAAO,OAAS,UAAYimK,EAAI0+R,WAAa1+R,EAAI0+R,UAAU3vU,KAAO,QAAU,IAAM,KAM1L,IAAI6rV,GAAiB,CACnBtjZ,GAAIA,GACJlsE,KAAMsvd,GACNG,MAAOzgC,GASL0gC,GAAe,SAAuB3xd,GACxCvM,KAAKuM,QAAUA,EACfvM,KAAKotN,KAAO7gN,EAAQ6gN,MAAQ22P,GAC5B/jd,KAAKi2d,WAAajS,GAAoBz3c,EAAQ+gB,QAAS,iBACvDttB,KAAKm+d,WAAana,GAAoBz3c,EAAQ+gB,QAAS,WACvDttB,KAAK4kc,WAAat6F,EAAOA,EAAO,GAAI0zH,IAAiBzxd,EAAQq4b,YAC7D,IAAIjG,EAAgBpyb,EAAQoyb,eAAiBx9J,EAC7CnhS,KAAKo+d,eAAiB,SAAUz+a,GAAM,QAASA,EAAG9Y,YAAc83Z,EAAch/Y,EAAGssC,MACjFjsF,KAAKq+d,OAAS,EACdr+d,KAAKq7G,gBAAkB,GACvBr7G,KAAK6wL,KAAM,GAKb,SAASv9B,GACPgrU,EACA/xd,GAEA,IAAIqtC,EAAQ,IAAIskb,GAAa3xd,GACzBga,EAAO+3c,EAAMC,GAAWD,EAAK1kb,GAAS,YAC1C,MAAO,CACLn+B,OAAS,qBAAuB8K,EAAO,IACvC80F,gBAAiBzhE,EAAMyhE,iBAI3B,SAASkjX,GAAY5+a,EAAI/F,GAKvB,GAJI+F,EAAG6L,SACL7L,EAAGkxI,IAAMlxI,EAAGkxI,KAAOlxI,EAAG6L,OAAOqlI,KAG3BlxI,EAAG28a,aAAe38a,EAAG6+a,gBACvB,OAAOC,GAAU9+a,EAAI/F,GAChB,GAAI+F,EAAGy8V,OAASz8V,EAAG++a,cACxB,OAAOC,GAAQh/a,EAAI/F,GACd,GAAI+F,EAAGy6L,MAAQz6L,EAAGi/a,aACvB,OAAOC,GAAOl/a,EAAI/F,GACb,GAAI+F,EAAGm4a,KAAOn4a,EAAGm/a,YACtB,OAAOC,GAAMp/a,EAAI/F,GACZ,GAAe,aAAX+F,EAAGssC,KAAuBtsC,EAAG24a,YAAe1+a,EAAMi3I,IAEtD,IAAe,SAAXlxI,EAAGssC,IACZ,OAAO+yY,GAAQr/a,EAAI/F,GAGnB,IAAIrzB,EACJ,GAAIo5B,EAAG9Y,UACLtgB,EAAO04c,GAAat/a,EAAG9Y,UAAW8Y,EAAI/F,OACjC,CACL,IAAIzlB,IACCwrB,EAAGwka,OAAUxka,EAAGkxI,KAAOj3I,EAAMwkb,eAAez+a,MAC/CxrB,EAAO+qc,GAAUv/a,EAAI/F,IAGvB,IAAItxB,EAAWq3B,EAAG8vZ,eAAiB,KAAO0vB,GAAYx/a,EAAI/F,GAAO,GACjErzB,EAAO,OAAUo5B,EAAM,IAAI,KAAOxrB,EAAQ,IAAMA,EAAQ,KAAO7L,EAAY,IAAMA,EAAY,IAAM,IAGrG,IAAK,IAAIle,EAAI,EAAGA,EAAIwvC,EAAMq8a,WAAWlsd,OAAQK,IAC3Cmc,EAAOqzB,EAAMq8a,WAAW7rd,GAAGu1C,EAAIp5B,GAEjC,OAAOA,EArBP,OAAO44c,GAAYx/a,EAAI/F,IAAU,SA0BrC,SAAS6kb,GAAW9+a,EAAI/F,GACtB+F,EAAG6+a,iBAAkB,EAIrB,IAAIY,EAAmBxlb,EAAMi3I,IAM7B,OALIlxI,EAAGkxI,MACLj3I,EAAMi3I,IAAMlxI,EAAGkxI,KAEjBj3I,EAAMyhE,gBAAgB3mG,KAAM,qBAAwB6pd,GAAW5+a,EAAI/F,GAAU,KAC7EA,EAAMi3I,IAAMuuS,EACJ,OAASxlb,EAAMyhE,gBAAgBtxG,OAAS,IAAM41C,EAAG08a,YAAc,QAAU,IAAM,IAIzF,SAASsC,GAASh/a,EAAI/F,GAEpB,GADA+F,EAAG++a,eAAgB,EACf/+a,EAAGm4a,KAAOn4a,EAAGm/a,YACf,OAAOC,GAAMp/a,EAAI/F,GACZ,GAAI+F,EAAG08a,YAAa,CACzB,IAAIx4d,EAAM,GACN2nD,EAAS7L,EAAG6L,OAChB,MAAOA,EAAQ,CACb,GAAIA,EAAO4uL,IAAK,CACdv2O,EAAM2nD,EAAO3nD,IACb,MAEF2nD,EAASA,EAAOA,OAElB,OAAK3nD,EAOG,MAAS06d,GAAW5+a,EAAI/F,GAAU,IAAOA,EAAMykb,SAAY,IAAMx6d,EAAM,IAFtE06d,GAAW5+a,EAAI/F,GAIxB,OAAO6kb,GAAU9+a,EAAI/F,GAIzB,SAASmlb,GACPp/a,EACA/F,EACAylb,EACAC,GAGA,OADA3/a,EAAGm/a,aAAc,EACVS,GAAgB5/a,EAAGo6a,aAAahkd,QAAS6jC,EAAOylb,EAAQC,GAGjE,SAASC,GACPC,EACA5lb,EACAylb,EACAC,GAEA,IAAKE,EAAWz1d,OACd,OAAOu1d,GAAY,OAGrB,IAAItqb,EAAYwqb,EAAWzrc,QAC3B,OAAIihB,EAAU0D,IACJ,IAAO1D,EAAa,IAAI,KAAQyqb,EAAczqb,EAAUkjb,OAAU,IAAOqH,GAAgBC,EAAY5lb,EAAOylb,EAAQC,GAEpH,GAAMG,EAAczqb,EAAUkjb,OAIxC,SAASuH,EAAe9/a,GACtB,OAAO0/a,EACHA,EAAO1/a,EAAI/F,GACX+F,EAAGy8V,KACDuiF,GAAQh/a,EAAI/F,GACZ2kb,GAAW5+a,EAAI/F,IAIzB,SAASilb,GACPl/a,EACA/F,EACAylb,EACAK,GAEA,IAAIhnb,EAAMiH,EAAGy6L,IACT6+J,EAAQt5V,EAAGs5V,MACX2gF,EAAYj6a,EAAGi6a,UAAa,IAAOj6a,EAAY,UAAK,GACpDk6a,EAAYl6a,EAAGk6a,UAAa,IAAOl6a,EAAY,UAAK,GAkBxD,OADAA,EAAGi/a,cAAe,GACVc,GAAa,MAAQ,KAAOhnb,EAA7B,cACSugW,EAAQ2gF,EAAYC,EAD7B,aAEWwF,GAAUd,IAAY5+a,EAAI/F,GAC1C,KAGJ,SAASslb,GAAWv/a,EAAI/F,GACtB,IAAIzlB,EAAO,IAIPwwa,EAAOg7B,GAAchgb,EAAI/F,GACzB+qZ,IAAQxwa,GAAQwwa,EAAO,KAGvBhlZ,EAAG97C,MACLswB,GAAQ,OAAUwrB,EAAM,IAAI,KAG1BA,EAAGsvF,MACL96G,GAAQ,OAAUwrB,EAAM,IAAI,KAE1BA,EAAG+8Z,WACLvob,GAAQ,kBAGNwrB,EAAGkxI,MACL18J,GAAQ,aAGNwrB,EAAG9Y,YACL1S,GAAQ,QAAYwrB,EAAM,IAAI,MAGhC,IAAK,IAAIv1C,EAAI,EAAGA,EAAIwvC,EAAMukb,WAAWp0d,OAAQK,IAC3C+pB,GAAQylB,EAAMukb,WAAW/zd,GAAGu1C,GA+B9B,GA5BIA,EAAGtoC,QACL8c,GAAQ,SAAYyrc,GAASjgb,EAAGtoC,OAAU,KAGxCsoC,EAAG/b,QACLzP,GAAQ,YAAeyrc,GAASjgb,EAAG/b,OAAU,KAG3C+b,EAAG8vB,SACLt7C,GAAS6oc,GAAYr9a,EAAG8vB,QAAQ,GAAU,KAExC9vB,EAAGola,eACL5wb,GAAS6oc,GAAYr9a,EAAGola,cAAc,GAAS,KAI7Cpla,EAAG24a,aAAe34a,EAAG04a,YACvBlkc,GAAQ,QAAWwrB,EAAa,WAAI,KAGlCA,EAAG8tZ,cACLt5a,GAAS0rc,GAAelgb,EAAIA,EAAG8tZ,YAAa7zZ,GAAU,KAGpD+F,EAAGj3B,QACLyL,GAAQ,gBAAmBwrB,EAAGj3B,MAAW,MAAI,aAAgBi3B,EAAGj3B,MAAc,SAAI,eAAkBi3B,EAAGj3B,MAAgB,WAAI,MAGzHi3B,EAAG8vZ,eAAgB,CACrB,IAAIA,EAAiBqwB,GAAkBngb,EAAI/F,GACvC61Z,IACFt7a,GAAQs7a,EAAiB,KAkB7B,OAfAt7a,EAAOA,EAAK1R,QAAQ,KAAM,IAAM,IAI5Bk9B,EAAG0ka,eACLlwb,EAAO,MAAQA,EAAO,KAASwrB,EAAM,IAAI,KAASigb,GAASjgb,EAAG0ka,cAAiB,KAG7E1ka,EAAGo+a,WACL5pc,EAAOwrB,EAAGo+a,SAAS5pc,IAGjBwrB,EAAGk+a,gBACL1pc,EAAOwrB,EAAGk+a,cAAc1pc,IAEnBA,EAGT,SAASwrc,GAAehgb,EAAI/F,GAC1B,IAAI+qZ,EAAOhlZ,EAAGilZ,WACd,GAAKD,EAAL,CACA,IAEIv6b,EAAG/B,EAAG+6K,EAAK28S,EAFX3wb,EAAM,eACN4wb,GAAa,EAEjB,IAAK51d,EAAI,EAAG/B,EAAIs8b,EAAK56b,OAAQK,EAAI/B,EAAG+B,IAAK,CACvCg5K,EAAMuhR,EAAKv6b,GACX21d,GAAc,EACd,IAAIE,EAAMrmb,EAAMgrZ,WAAWxhR,EAAIz7K,MAC3Bs4d,IAGFF,IAAgBE,EAAItgb,EAAIyjI,EAAKxpI,EAAMwzK,OAEjC2yQ,IACFC,GAAa,EACb5wb,GAAO,UAAcg0I,EAAQ,KAAI,cAAmBA,EAAW,QAAI,KAAQA,EAAIn9K,MAAS,WAAcm9K,EAAS,MAAI,gBAAmBvzI,KAAKC,UAAUszI,EAAIn9K,OAAW,KAAOm9K,EAAI/2C,IAAO,SAAW+2C,EAAIshS,aAAethS,EAAI/2C,IAAO,IAAQ+2C,EAAO,IAAI,KAAU,KAAOA,EAAI0+R,UAAa,cAAiBjya,KAAKC,UAAUszI,EAAI0+R,WAAe,IAAM,MAGjV,OAAIke,EACK5wb,EAAIr5B,MAAM,GAAI,GAAK,SAD5B,GAKF,SAAS+pd,GAAmBngb,EAAI/F,GAC9B,IAAI0kb,EAAM3+a,EAAGr3B,SAAS,GAStB,GAAIg2c,GAAoB,IAAbA,EAAIznd,KAAY,CACzB,IAAIqpd,EAAkB5sU,GAASgrU,EAAK1kb,EAAMrtC,SAC1C,MAAQ,qCAAwC2zd,EAAsB,OAAI,sBAAyBA,EAAgB7kX,gBAAgB/rG,KAAI,SAAUiX,GAAQ,MAAQ,cAAgBA,EAAO,OAAS5R,KAAK,KAAQ,MAIlN,SAASkrd,GACPlgb,EACAva,EACAwU,GAMA,IAAIm6Z,EAAmBp0Z,EAAGy6L,KAAOrxO,OAAOmU,KAAKkoB,GAAOm1D,MAAK,SAAU12F,GACjE,IAAIyyE,EAAOlxC,EAAMvhC,GACjB,OACEyyE,EAAK0jZ,mBACL1jZ,EAAKwhZ,IACLxhZ,EAAK8jK,KACL+lP,GAAkB7pZ,MAQlB8pZ,IAAazgb,EAAGm4a,GAOpB,IAAK/jB,EAAkB,CACrB,IAAIvoZ,EAAS7L,EAAG6L,OAChB,MAAOA,EAAQ,CACb,GACGA,EAAO6sa,WAAa7sa,EAAO6sa,YAAcjB,IAC1C5ra,EAAO4uL,IACP,CACA25N,GAAmB,EACnB,MAEEvoZ,EAAOssa,KACTsI,GAAW,GAEb50a,EAASA,EAAOA,QAIpB,IAAI60a,EAAiBt3d,OAAOmU,KAAKkoB,GAC9B91B,KAAI,SAAUzL,GAAO,OAAOy8d,GAAcl7b,EAAMvhC,GAAM+1C,MACtDjlC,KAAK,KAER,MAAQ,mBAAqB0rd,EAAiB,KAAOtsB,EAAmB,aAAe,MAAQA,GAAoBqsB,EAAY,eAAkB1rX,GAAK2rX,GAAoB,IAAM,IAGlL,SAAS3rX,GAAKt5D,GACZ,IAAIs5D,EAAO,KACPtqG,EAAIgxC,EAAIrxC,OACZ,MAAMK,EACJsqG,EAAe,GAAPA,EAAat5D,EAAI/c,aAAaj0B,GAExC,OAAOsqG,IAAS,EAGlB,SAASyrX,GAAmBxgb,GAC1B,OAAgB,IAAZA,EAAG9oC,OACU,SAAX8oC,EAAGssC,KAGAtsC,EAAGr3B,SAASiyE,KAAK4lY,KAK5B,SAASG,GACP3gb,EACA/F,GAEA,IAAI2mb,EAAiB5gb,EAAG4ka,SAAS,cACjC,GAAI5ka,EAAGm4a,KAAOn4a,EAAGm/a,cAAgByB,EAC/B,OAAOxB,GAAMp/a,EAAI/F,EAAO0mb,GAAe,QAEzC,GAAI3gb,EAAGy6L,MAAQz6L,EAAGi/a,aAChB,OAAOC,GAAOl/a,EAAI/F,EAAO0mb,IAE3B,IAAIjI,EAAY14a,EAAG04a,YAAcjB,GAC7B,GACAv3d,OAAO8/C,EAAG04a,WACVvtb,EAAK,YAAcutb,EAAd,aACiB,aAAX14a,EAAGssC,IACZtsC,EAAGm4a,IAAMyI,EACN,IAAO5gb,EAAK,GAAI,MAAQw/a,GAAYx/a,EAAI/F,IAAU,aAAe,aAClEulb,GAAYx/a,EAAI/F,IAAU,YAC5B2kb,GAAW5+a,EAAI/F,IAAU,IAE3B4mb,EAAenI,EAAY,GAAK,cACpC,MAAQ,SAAW14a,EAAG24a,YAAc,aAAiB,OAASxtb,EAAK01b,EAAe,IAGpF,SAASrB,GACPx/a,EACA/F,EACA6mb,EACAC,EACAC,GAEA,IAAIr4c,EAAWq3B,EAAGr3B,SAClB,GAAIA,EAASve,OAAQ,CACnB,IAAI62d,EAAOt4c,EAAS,GAEpB,GAAwB,IAApBA,EAASve,QACX62d,EAAKxmP,KACQ,aAAbwmP,EAAK30Y,KACQ,SAAb20Y,EAAK30Y,IACL,CACA,IAAI+jX,EAAoBywB,EACpB7mb,EAAMwkb,eAAewC,GAAQ,KAAO,KACpC,GACJ,MAAQ,IAAOF,GAAiBnC,IAAYqC,EAAMhnb,GAAUo2Z,EAE9D,IAAI6wB,EAAsBJ,EACtBK,GAAqBx4c,EAAUsxB,EAAMwkb,gBACrC,EACA6B,EAAMU,GAAcI,GACxB,MAAQ,IAAOz4c,EAAShZ,KAAI,SAAUzF,GAAK,OAAOo2d,EAAIp2d,EAAG+vC,MAAWjlC,KAAK,KAAQ,KAAOksd,EAAuB,IAAMA,EAAuB,KAQhJ,SAASC,GACPx4c,EACA81c,GAGA,IADA,IAAIhvb,EAAM,EACDhlC,EAAI,EAAGA,EAAIke,EAASve,OAAQK,IAAK,CACxC,IAAIu1C,EAAKr3B,EAASle,GAClB,GAAgB,IAAZu1C,EAAG9oC,KAAP,CAGA,GAAImqd,GAAmBrhb,IAClBA,EAAGo6a,cAAgBp6a,EAAGo6a,aAAax/X,MAAK,SAAU1wF,GAAK,OAAOm3d,GAAmBn3d,EAAEqud,UAAa,CACnG9ob,EAAM,EACN,OAEEgvb,EAAez+a,IACdA,EAAGo6a,cAAgBp6a,EAAGo6a,aAAax/X,MAAK,SAAU1wF,GAAK,OAAOu0d,EAAev0d,EAAEqud,aAClF9ob,EAAM,IAGV,OAAOA,EAGT,SAAS4xb,GAAoBrhb,GAC3B,YAAkBh6C,IAAXg6C,EAAGy6L,KAAgC,aAAXz6L,EAAGssC,KAAiC,SAAXtsC,EAAGssC,IAG7D,SAAS80Y,GAAS33X,EAAMxvD,GACtB,OAAkB,IAAdwvD,EAAKvyF,KACA0nd,GAAWn1X,EAAMxvD,GACD,IAAdwvD,EAAKvyF,MAAcuyF,EAAKq4V,UAC1Bw/B,GAAW73X,GAEX83X,GAAQ93X,GAInB,SAAS83X,GAAS1/b,GAChB,MAAQ,OAAuB,IAAdA,EAAK3qB,KAClB2qB,EAAKq0a,WACLsrB,GAAyBtxb,KAAKC,UAAUtO,EAAKA,QAAU,IAG7D,SAASy/b,GAAYvN,GACnB,MAAQ,MAAS7jb,KAAKC,UAAU4jb,EAAQlyb,MAAS,IAGnD,SAASw9b,GAASr/a,EAAI/F,GACpB,IAAI0gb,EAAW36a,EAAG26a,UAAY,YAC1Bhyc,EAAW62c,GAAYx/a,EAAI/F,GAC3BxK,EAAM,MAAQkrb,GAAYhyc,EAAY,IAAMA,EAAY,IACxDjR,EAAQsoC,EAAGtoC,OAASsoC,EAAG0ka,aACvBub,IAAUjgb,EAAGtoC,OAAS,IAAIq6B,OAAOiO,EAAG0ka,cAAgB,IAAI/0c,KAAI,SAAUuhB,GAAQ,MAAO,CAEnFlpB,KAAMk1b,EAAShsa,EAAKlpB,MACpB1B,MAAO4qB,EAAK5qB,MACZ+qB,QAASH,EAAKG,aAEhB,KACAowc,EAAUzhb,EAAG4ka,SAAS,UAU1B,OATKltc,IAAS+pd,GAAa94c,IACzB8mB,GAAO,SAEL/3B,IACF+3B,GAAO,IAAM/3B,GAEX+pd,IACFhyb,IAAQ/3B,EAAQ,GAAK,SAAW,IAAM+pd,GAEjChyb,EAAM,IAIf,SAAS6vb,GACP5oG,EACA12U,EACA/F,GAEA,IAAItxB,EAAWq3B,EAAG8vZ,eAAiB,KAAO0vB,GAAYx/a,EAAI/F,GAAO,GACjE,MAAQ,MAAQy8U,EAAgB,IAAO6oG,GAAUv/a,EAAI/F,IAAWtxB,EAAY,IAAMA,EAAY,IAAM,IAGtG,SAASs3c,GAAUh8b,GAGjB,IAFA,IAAIy9b,EAAc,GACdC,EAAe,GACVl3d,EAAI,EAAGA,EAAIw5B,EAAM75B,OAAQK,IAAK,CACrC,IAAI+S,EAAOymB,EAAMx5B,GACbnE,EAAQk7d,GAAyBhkd,EAAKlX,OACtCkX,EAAK6T,QACPswc,GAAiBnkd,EAAS,KAAI,IAAMlX,EAAQ,IAE5Co7d,GAAe,IAAQlkd,EAAS,KAAI,KAAQlX,EAAQ,IAIxD,OADAo7d,EAAc,IAAOA,EAAYtrd,MAAM,GAAI,GAAM,IAC7Curd,EACM,MAAQD,EAAc,KAAQC,EAAavrd,MAAM,GAAI,GAAM,KAE5Dsrd,EAKX,SAASF,GAA0B3/b,GACjC,OAAOA,EACJ/e,QAAQ,UAAW,WACnBA,QAAQ,UAAW,WASE,IAAIoU,OAAO,MAAQ,iMAI3Cx2B,MAAM,KAAKsU,KAAK,WAAa,OAGR,IAAIkiB,OAAO,MAAQ,qBAExCx2B,MAAM,KAAKsU,KAAK,yBAA2B,qBA0K7C,SAAS4sd,GAAgBh7c,EAAMurW,GAC7B,IACE,OAAO,IAAIv3U,SAASh0B,GACpB,MAAOwrH,GAEP,OADA+/O,EAAOp9W,KAAK,CAAEq9H,IAAKA,EAAKxrH,KAAMA,IACvBi3a,GAIX,SAASgkC,GAA2B79F,GAClC,IAAIz/R,EAAQn7F,OAAOS,OAAO,MAE1B,OAAO,SACL2+C,EACA57C,EACAqkY,GAEArkY,EAAU+9V,EAAO,GAAI/9V,GACPA,EAAQ6gN,YACf7gN,EAAQ6gN,KAqBf,IAAIvpN,EAAM0I,EAAQ0ld,WACdpyd,OAAO0M,EAAQ0ld,YAAc9pa,EAC7BA,EACJ,GAAI+7C,EAAMrgG,GACR,OAAOqgG,EAAMrgG,GAIf,IAAI49d,EAAW99F,EAAQx7U,EAAU57C,GA+BjC,IAAI6iC,EAAM,GACNsyb,EAAc,GAyBlB,OAxBAtyb,EAAI3zB,OAAS8ld,GAAeE,EAAShmd,OAAQimd,GAC7Ctyb,EAAIisE,gBAAkBomX,EAASpmX,gBAAgB/rG,KAAI,SAAUiX,GAC3D,OAAOg7c,GAAeh7c,EAAMm7c,MAsBtBx9X,EAAMrgG,GAAOurC,GAMzB,SAASuyb,GAAuBC,GAC9B,OAAO,SAAyB/F,GAC9B,SAASl4F,EACPx7U,EACA57C,GAEA,IAAIs1d,EAAe94d,OAAOS,OAAOqyd,GAC7B/pG,EAAS,GACTgwG,EAAO,GAEP10Q,EAAO,SAAUovL,EAAK54Q,EAAOr2H,IAC9BA,EAAMu0d,EAAOhwG,GAAQp9W,KAAK8nY,IAG7B,GAAIjwY,EA+BF,IAAK,IAAI1I,KAZL0I,EAAQ+gB,UACVu0c,EAAav0c,SACVuuc,EAAYvuc,SAAW,IAAIokB,OAAOnlC,EAAQ+gB,UAG3C/gB,EAAQq4b,aACVi9B,EAAaj9B,WAAat6F,EACxBvhW,OAAOS,OAAOqyd,EAAYj3B,YAAc,MACxCr4b,EAAQq4b,aAIIr4b,EACF,YAAR1I,GAA6B,eAARA,IACvBg+d,EAAah+d,GAAO0I,EAAQ1I,IAKlCg+d,EAAaz0Q,KAAOA,EAEpB,IAAIq0Q,EAAWG,EAAYz5a,EAASvzC,OAAQitd,GAM5C,OAFAJ,EAAS3vG,OAASA,EAClB2vG,EAASK,KAAOA,EACTL,EAGT,MAAO,CACL99F,QAASA,EACTo+F,mBAAoBP,GAA0B79F,KAUpD,IAyBIhoJ,GAzBAqmP,GAAiBL,IAAsB,SACzCx5a,EACA57C,GAEA,IAAI+xd,EAAMvub,GAAMoY,EAASvzC,OAAQrI,IACR,IAArBA,EAAQyvd,UACVA,GAASsC,EAAK/xd,GAEhB,IAAIga,EAAO+sI,GAASgrU,EAAK/xd,GACzB,MAAO,CACL+xd,IAAKA,EACL7id,OAAQ8K,EAAK9K,OACb4/F,gBAAiB90F,EAAK80F,oBAMtB4+V,GAAQ+nB,GAAenG,IAEvBkG,IADU9nB,GAAMt2E,QACKs2E,GAAM8nB,oBAM/B,SAASE,GAAiBx2a,GAGxB,OAFAkwL,GAAMA,IAAO1lO,SAASzI,cAAc,OACpCmuO,GAAIvoO,UAAYq4C,EAAO,iBAAqB,gBACrCkwL,GAAIvoO,UAAUlG,QAAQ,SAAW,EAI1C,IAAIknd,KAAuBn/E,GAAYgtF,IAAgB,GAEnDpM,KAA8B5gF,GAAYgtF,IAAgB,GAI1DC,GAAevlC,GAAO,SAAU/ob,GAClC,IAAI+rC,EAAK1V,GAAMr2B,GACf,OAAO+rC,GAAMA,EAAGvsC,aAGdgiX,GAAQxuV,GAAIr9B,UAAU+kc,OA0E1B,SAAS6zB,GAAcxib,GACrB,GAAIA,EAAGnxB,UACL,OAAOmxB,EAAGnxB,UAEV,IAAI3W,EAAY5B,SAASzI,cAAc,OAEvC,OADAqK,EAAUlK,YAAYgyC,EAAGzwB,WAAU,IAC5BrX,EAAUzE,UA/ErBwzB,GAAIr9B,UAAU+kc,OAAS,SACrB3uZ,EACAquZ,GAKA,GAHAruZ,EAAKA,GAAM1V,GAAM0V,GAGbA,IAAO1pC,SAASnP,MAAQ64C,IAAO1pC,SAASpP,gBAI1C,OAAO7G,KAGT,IAAIuM,EAAUvM,KAAKs8G,SAEnB,IAAK/vG,EAAQkP,OAAQ,CACnB,IAAI0sC,EAAW57C,EAAQ47C,SACvB,GAAIA,EACF,GAAwB,kBAAbA,EACkB,MAAvBA,EAAStgC,OAAO,KAClBsgC,EAAW+5a,GAAa/5a,QASrB,KAAIA,EAASmhD,SAMlB,OAAOtpG,KALPmoD,EAAWA,EAAS/0C,eAObusC,IACTwI,EAAWg6a,GAAaxib,IAE1B,GAAIwI,EAAU,CAER,EAIJ,IAAI8mF,EAAM8yV,GAAmB55a,EAAU,CACrCowa,mBAAmB,EACnBnE,qBAAsBA,GACtByB,4BAA6BA,GAC7B5D,WAAY1ld,EAAQ0ld,WACpBhnJ,SAAU1+T,EAAQ0+T,UACjBjrU,MACCyb,EAASwzH,EAAIxzH,OACb4/F,EAAkB4zB,EAAI5zB,gBAC1B9uG,EAAQkP,OAASA,EACjBlP,EAAQ8uG,gBAAkBA,GAS9B,OAAO+5Q,GAAM3oX,KAAKzM,KAAM2/C,EAAIquZ,IAiB9Bpna,GAAI+8V,QAAUo+F,GAEC,iB,wDCxtXf,kGAAIn5d,EAAwC,WACxC,IAAIC,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAoBxC0iO,EAAY,EAIZq2P,EAA4B,SAAUn2d,GAEtC,SAASm2d,EAAW52a,GAChB,IAAIh/C,EAAQP,EAAOQ,KAAKzM,KAAMwrD,IAAWxrD,KAezC,OAdAwM,EAAM0gO,eAAiB,GACvB1gO,EAAM61d,kBAAoB,EAC1B71d,EAAMihO,oBAAsB,GAC5BjhO,EAAM4/N,WAAa,MACnB5/N,EAAMpI,QAAUoI,EAAMg/C,OAAOokB,WAAW0qI,WACxC9tM,EAAMgjC,OAAShjC,EAAMg/C,OAAOukB,YAC5BvjE,EAAMq5C,UAAYr5C,EAAMg/C,OAAOipB,cAAc6tZ,kBAAoB91d,EAAMg/C,OAAOipB,cAAcq6J,kBACpFtiO,EAAMg/C,OAAOm7B,cACrBn6E,EAAMokO,cAAgBpkO,EAAMg/C,OAAOipB,cAAc6tZ,iBAAmB91d,EAAMg/C,OAAOipB,cAAcq6J,kBACvFtiO,EAAMg/C,OAAOm7B,cACrBn6E,EAAMuiO,eAAkBviO,EAAMq5C,WAAar5C,EAAMokO,cACjDpkO,EAAMihO,oBACDjhO,EAAMg/C,OAAOm7B,eAAiBn6E,EAAMg/C,OAAOipB,cAAc4xF,iBAAoB,EAAI75J,EAAMihO,oBAC5FjhO,EAAMw0C,mBACCx0C,EA8pBX,OA/qBA5D,EAAUw5d,EAAYn2d,GAmBtBm2d,EAAW74d,UAAUg5d,mBAAqB,SAAUC,GAChD,GAAIA,EAAWz4d,OAAS,EAAG,CACvBy4d,EAA0C,UAA5Bxie,KAAKwrD,OAAO/hC,cAA6BzpB,KAAKwrD,OAAOokB,WAAWoxF,mBACzEhhK,KAAKwrD,OAAO4nB,kBAAkB4rF,UAAU5oG,OAAWosa,EAAa,CAACA,EAAW,IACjF,IAAK,IAAItsd,EAAK,EAAGusd,EAAeD,EAAYtsd,EAAKusd,EAAa14d,OAAQmM,IAAM,CACxE,IAAIykD,EAAO8na,EAAavsd,GACpBykD,EAAKt1D,eAAiBs1D,EAAKt1D,cAAc2iD,YACzC,gBAAO2S,EAAKt1D,kBAK5B+8d,EAAW74d,UAAU01J,mBAAqB,WAClCj/J,KAAKwrD,OAAOgwB,mBACZx7E,KAAKwrD,OAAOgwB,kBAAkB6+S,cAElCr6X,KAAK6hF,wBAA0B7hF,KAAKwrD,OAAOm9M,2BAC3C,IAAInnG,EAAUxhK,KAAKwrD,OAAOpnD,QAAQmQ,cAAc,IAAM,QAClDvU,KAAKwrD,OAAOm7B,gBACZ3mF,KAAKwrD,OAAOglB,cAAc5rE,IAAM48J,EAAQp8J,UACxCpF,KAAKwrD,OAAOglB,cAAc7rE,KAAO68J,EAAQr8J,YAE7C,IAAI88E,EAAqB,GAAGlsE,MAAMtJ,KAAKzM,KAAKoE,QAAQ8lB,iBAAiB,IAAM,SAC3E,GAAIlqB,KAAKwrD,OAAOqlB,YAAc7wE,KAAKwrD,OAAOqlB,WAAWC,QAAQ90B,aACzD,IAAK,IAAI5xC,EAAI,EAAGqgB,EAAMzqB,KAAKwrD,OAAOqlB,WAAWC,QAAQ48J,YAAY3jO,OAAQK,EAAIqgB,EAAKrgB,IAAK,CACnF,IAAIo4d,EAAa,GAAGzsd,MAAMtJ,KAAKzM,KAAKoE,QAAQ8lB,iBAAiB,6CACzDlqB,KAAKwrD,OAAOqlB,WAAWC,QAAQ48J,YAAYtlO,SAASgC,EAAEsP,WAAY,KAAKksE,WAAa,OAExF,GADA5lF,KAAKuie,mBAAmBC,GACpBxie,KAAKwrD,OAAOqlB,WAAWC,QAAQxhB,YAAYlnD,SAASgC,EAAEsP,WAAY,MAClE1Z,KAAKwrD,OAAOqlB,WAAWC,QAAQ48J,YAAYtlO,SAASgC,EAAEsP,WAAY,KAAKksE,aACnE5lF,KAAKwrD,OAAOqlB,WAAWC,QAAQxhB,YAAYlnD,SAASgC,EAAEsP,WAAY,KAAKksE,WAAY,CACvF,IAAI//C,EAAM,GAAG9vB,MAAMtJ,KAAKzM,KAAKoE,QAAQ8lB,iBAAiB,6CAClDlqB,KAAKwrD,OAAOqlB,WAAWC,QAAQxhB,YAAYlnD,SAASgC,EAAEsP,WAAY,KAAKksE,WAAa,OACxF5lF,KAAKuie,mBAAmB18b,SAKhC,IAAK,IAAI3vB,EAAK,EAAGwsd,EAAuBzgZ,EAAoB/rE,EAAKwsd,EAAqB34d,OAAQmM,IAAM,CAChG,IAAIykD,EAAO+na,EAAqBxsd,GAChC,gBAAOykD,GAIf,GADA36D,KAAKwtO,qBAAqB,QACrBxtO,KAAKoE,QAAQmQ,cAAc,IAAM,SAAtC,CAGA,GAAgC,UAA5BvU,KAAKwrD,OAAO/hC,YAAyB,CACrC,IAAIs+B,EAAU,eAAc,MAAO,CAAEt6C,UAAW,SAC5CsgO,EAAS/tO,KAAKwrD,OAAOpnD,QAAQmQ,cAAc,IAAM,SACrDw5N,EAAOpgO,YAAYo6C,GACnB/nD,KAAKqie,kBAAoBt6a,EAAQ7iD,UAAY6oO,EAAO7oO,UACpD6oO,EAAOl5K,YAAY9M,GAEvB/nD,KAAKqmF,YAAc,OAA+BrmF,KAAKoE,QAAS,QAChE,IAAIslD,EAAW,IAAM,OAA0B,YAC/C1pD,KAAKomF,cAAc18B,EAAU1pD,KAAKqmF,YAA0C,UAA5BrmF,KAAKwrD,OAAO/hC,YAA0BsiN,EAAY,EAAI/rO,KAAKqie,kBAAmBrie,KAAKytO,qBACnI,IAAIroO,EAAYo8J,EAAQp8J,UAcxB,GAbIpF,KAAKwrD,OAAOm7B,eAAiB3mF,KAAKwrD,OAAOw4G,sBAAwBhkK,KAAKwrD,OAAOw4G,oBAAoBygF,qBAC7F,eAAkBzkP,KAAKwrD,OAAOkxB,iBAClC8kF,EAAQp8J,UAAYo8J,EAAQp8J,UAAY,GAExCpF,KAAKwrD,OAAO4nB,kBAAkB7pC,MAAM8pC,UAAUtpE,OAAS,GACvD/J,KAAKutO,uBACDvtO,KAAKwrD,OAAOw4G,qBACZhkK,KAAKwrD,OAAOw4G,oBAAoBwiG,yBAIpCxmQ,KAAK2tO,oBAAoB3tO,KAAKwrD,OAAOokB,WAAWiyF,YAAa7hK,KAAKwrD,OAAO4nB,kBAAkB0uF,UAE3F9hK,KAAKwrD,OAAOm7B,cAAe,CAC3B3mF,KAAKsxO,sBACL,IAAIn9M,EAAO,CACPisI,cAAepgK,KAAKwrD,OAAOg0K,mBAC3B7/N,OAAQK,KAAKwrD,OAAO5uC,gBACpB8jJ,uBAAuB,EACvBysO,eAAgB,CAAExoY,KAAM3E,KAAKwrD,OAAOglB,cAAc7rE,KAAMC,IAAK5E,KAAKwrD,OAAOglB,cAAc5rE,MAe3F,GAbI5E,KAAKwrD,OAAOw4G,sBAAwBhkK,KAAKwrD,OAAOw4G,oBAAoBygF,qBAChEzkP,KAAKwrD,OAAOkxB,eACZ8kF,EAAQp8J,UAAYA,EACpBpF,KAAKwrD,OAAOkxB,cAAgB,MAG5B18E,KAAKwrD,OAAOw4G,oBAAoB4/F,6BAGnC5jQ,KAAKwrD,OAAOy7B,mBACbjnF,KAAKwrD,OAAO/pC,OAAO,OAAqB,IAE5CzhB,KAAKwrD,OAAO/pC,OAAO,OAAuB0S,GACV,UAA5Bn0B,KAAKwrD,OAAO/hC,aAA2BzpB,KAAKwrD,OAAOs7B,eAAgB,CACnE,IAAI67Y,EAAe,GAAG5sd,MAAMtJ,KAAKzM,KAAKwrD,OAAOpnD,QAAQ8lB,iBAAiB,4CAClE04c,EAAkB,GAAG7sd,MAAMtJ,KAAKzM,KAAKwrD,OAAOpnD,QAAQ8lB,iBAAiB,IAAM,UAC/E04c,EAAgBnvc,SAAQ,SAAU+mE,EAAMpwF,GACpC,IAAInD,EAAS07d,EAAav6d,SAASgC,EAAEsP,WAAY,KAAK3H,aACtD,gBAAkByoF,EAAM,CAAE,OAAUvzF,EAAS,UAEjDjH,KAAKwrD,OAAOpnD,QAAQmQ,cAAc,IAAM,SAA+BnP,UACnEpF,KAAKwrD,OAAOpnD,QAAQmQ,cAAc,IAAM,QAAwBnP,WAG5EpF,KAAKwrD,OAAOuyI,oBAEhBqkS,EAAW74d,UAAUokO,oBAAsB,SAAU13J,EAAY6rF,EAAUvmH,GAEvE,IAAIi3L,EACAqwP,EAFJ7ie,KAAKktO,eAAiB,GAGtB,IAAItrJ,EAAW,EAgBf,GAfIrmC,GACAqmC,EAAWrmC,EAAQqqC,WACnB5lF,KAAK+S,SAAWwoC,EAAQxoC,SACxB/S,KAAKq0E,WAAa94B,EAAQ84B,WAC1Bm+J,EAAaxyO,KAAKwrD,OAAO68G,UAAUp0F,uBAAuB14B,EAASv7C,KAAKwrD,OAAO2lB,iBAC/E0xZ,EAAY7ie,KAAKwrD,OAAO68G,UAAUp0F,uBAAuB14B,EAASv7C,KAAKwrD,OAAOymB,gBAC9EjyE,KAAK2jK,UAAY,GAAG5tJ,MAAMtJ,KAAKzM,KAAKoE,QAAQ8lB,iBAAiB,IAAM,QAAuB,sBAAwB03D,EAAW,SAG7H4wJ,EAAaxyO,KAAKwrD,OAAO2lB,gBACzB0xZ,EAAY7ie,KAAKwrD,OAAOymB,eACxBjyE,KAAK2jK,UAAY,GAAG5tJ,MAAMtJ,KAAKzM,KAAKoE,QAAQ8lB,iBAAiB,IAAM,WAEvElqB,KAAK+0E,eAAey9J,GACpBxyO,KAAK+0E,eAAe8tZ,GACY,UAA5B7ie,KAAKwrD,OAAO/hC,aAA2BzpB,KAAKwrD,OAAOm7B,eAA0E,IAAzD3mF,KAAKwrD,OAAO4nB,kBAAkB7pC,MAAM8pC,UAAUtpE,OAAc,CAChI,IAAI+4d,EAAa,GAAG/sd,MAAMtJ,KAAKzM,KAAKwrD,OAAOpnD,QAAQ8lB,iBAAiB,4CAChEsqZ,EAAWx0a,KAAKwrD,OAAOpnD,QAAQmQ,cAAc,IAAM,QAAyB3C,aAAekxd,EAAW/4d,OAC1G+4d,EAAWrvc,SAAQ,SAAU+mE,GACzB,gBAAkBA,EAAM,CAAE,OAAUg6U,EAAW,UAGvD,IAAIuuD,EAAa/ie,KAAK2jK,UAAU3jK,KAAKwrD,OAAOokB,WAAWoxF,iBAAmB,EAAIhhK,KAAK2jK,UAAU55J,OAAS,GACtG/J,KAAKwsO,UAAY,OAAqBu2P,GACtC/ie,KAAKgvO,WAAa,OAAsB+zP,GACxC/ie,KAAKi2E,WAAaA,EAClB,IAAIgO,EAAgBjkF,KAAK42E,iBAAiBX,GAC1Cj2E,KAAKusO,aAAazqE,GAAY9hK,KAAKwrD,OAAO4nB,kBAAkB0uF,UAC5D9hK,KAAKgje,mBAAmBH,EAAWjhZ,EAAUrmC,GAE7C,IADA,IAAIk0B,EAAS,GACJv5D,EAAK,EAAG+sd,EAAezwP,EAAYt8N,EAAK+sd,EAAal5d,OAAQmM,IAAM,CACxE,IAAIk6D,EAAU6yZ,EAAa/sd,GACvBlW,KAAKwrD,OAAO2kB,eAAiB50B,IAC7Bv7C,KAAK+S,SAAW/S,KAAKwrD,OAAO2kB,aAAakpI,YAAYjpI,IAEzDX,EAASA,EAAO/9B,OAAO1xC,KAAKg2E,WAAW5F,EAAS6T,GAAiBjkF,KAAKi2E,aAE1E,IAAK,IAAItqC,EAAQ,EAAGA,EAAQ3rC,KAAKolC,MAAMr7B,OAAQ4hC,IAAS,CACpD3rC,KAAKktO,eAAiB,GAItB,IAHA,IAAI52J,EAAOt2E,KAAKolC,MAAMh9B,SAASujC,EAAMjyB,WAAY,KAC7Co2D,EAAU,OAAa,IAAItvD,KAAK81D,EAAKA,EAAKvsE,OAAS,IAAK,GACxDyqO,EAAgBx0O,KAAK0xE,aAAa,IAAIlxD,KAAK81D,EAAK,IAAKxG,EAASL,GACzDziE,EAAK,EAAGynO,EAAkBD,EAAexnO,EAAKynO,EAAgB1qO,OAAQiD,IAAM,CACjF,IAAIslE,EAAUmiK,EAAgBznO,GAC9B,GAAIhN,KAAK6lD,UAAW,CAChB,IAAIq9a,EAAoC,UAA5Blje,KAAKwrD,OAAO/hC,YAA0B6oD,EAAQtyE,KAAKwvC,OAAO2vB,WAClEn/D,KAAK4tO,aAAat7J,EAASA,EAAQn+C,MACvC,GAAIn0B,KAAK8tD,SAASo1a,GAAS,EACvB,SAGRlje,KAAKmje,oBAAoB7wZ,GACzBtyE,KAAK++J,aAAazsF,EAASsP,EAAU4wJ,IAG7CxyO,KAAK+S,SAAW,KAChB/S,KAAKq0E,WAAa,MAEtB+tZ,EAAW74d,UAAUy5d,mBAAqB,SAAUxvZ,EAAaoO,EAAUrmC,GACvE,IAAK,IAAIrlC,EAAK,EAAGu9D,EAAgBD,EAAat9D,EAAKu9D,EAAc1pE,OAAQmM,IAAM,CAC3E,IAAIsqE,EAAU/M,EAAcv9D,GACxBlW,KAAKwrD,OAAO2kB,eAAiB50B,IAC7Bv7C,KAAK+S,SAAW/S,KAAKwrD,OAAO2kB,aAAakpI,YAAY74H,IAEzD,IAAI4iZ,EAAmB,GACvB,GAAwB,QAApBpje,KAAKosO,YAAyB5rJ,EAAQxgF,KAAKwvC,OAAOsiC,UAsBlDsxZ,EAAiB1ud,KAAK8rE,OAtBuC,CAC7D,IAAI/xC,EAAO,eAAO,GAAI+xC,EAAS,MAAM,GACjC6iZ,EAAarje,KAAKqje,WAAW50b,EAAKzuC,KAAKwvC,OAAO2vB,WAAY1wB,EAAKzuC,KAAKwvC,OAAOwiC,UAE/E,GADAvjC,EAAK60b,YAAcD,GACdA,GAAc,OAAiB50b,EAAKzuC,KAAKwvC,OAAO2vB,YAAc,EAAG,CAClE,IAAI3pD,EAAI,eAAO,GAAIgrE,EAAS,MAAM,GAClChrE,EAAExV,KAAKwvC,OAAOwiC,SAAW,OAAa,OAAe,IAAIxxD,KAAKggE,EAAQxgF,KAAKwvC,OAAO2vB,WAAa,KAAM,GACrG3pD,EAAE8td,aAAc,EAChB70b,EAAKzuC,KAAKwvC,OAAO2vB,WAAa3pD,EAAExV,KAAKwvC,OAAOwiC,SAC5CoxZ,EAAiB1ud,KAAKc,GAG1B,GADA6td,EAAarje,KAAKqje,WAAW50b,EAAKzuC,KAAKwvC,OAAO2vB,WAAY1wB,EAAKzuC,KAAKwvC,OAAOwiC,WACtEqxZ,GAAc,OAAiB50b,EAAKzuC,KAAKwvC,OAAOwiC,UAAY,EAAG,CAC5Dx8D,EAAI,eAAO,GAAIgrE,EAAS,MAAM,GAClChrE,EAAExV,KAAKwvC,OAAO2vB,WAAa,OAAe,IAAI3+C,KAAKggE,EAAQxgF,KAAKwvC,OAAOwiC,SAAW,KAClFx8D,EAAE8td,aAAc,EAChBF,EAAiB1ud,KAAKc,GACtBi5B,EAAKzuC,KAAKwvC,OAAOwiC,SAAWx8D,EAAExV,KAAKwvC,OAAO2vB,WAE9Cika,EAAiB1ud,KAAK+5B,GAK1B,IAAK,IAAIzhC,EAAK,EAAGu2d,EAAqBH,EAAkBp2d,EAAKu2d,EAAmBx5d,OAAQiD,IAGpF,IAFA,IAAIw2d,EAAaD,EAAmBv2d,GAChCwnO,EAAgBx0O,KAAKg2E,WAAWwtZ,EAAYxje,KAAKi2E,YAC5ChpE,EAAK,EAAGw2d,EAAkBjvP,EAAevnO,EAAKw2d,EAAgB15d,OAAQkD,IAAM,CACjF,IAAIyzE,EAAU+iZ,EAAgBx2d,GAC9BjN,KAAK0je,kBAAkBhjZ,EAASkB,IAAY4hZ,EAAWF,gBAKvElB,EAAW74d,UAAU85d,WAAa,SAAU35c,EAAOC,GAC/C,OAAO,IAAInJ,MAAMkJ,GAAOmB,SAAS,EAAG,EAAG,EAAG,KAAO,IAAIrK,MAAMmJ,GAAKkB,SAAS,EAAG,EAAG,EAAG,IAEtFu3c,EAAW74d,UAAUm6d,kBAAoB,SAAU3sd,EAAO6qE,EAAU+hZ,GAChE,IAAInyZ,EAAYz6D,EAAMod,KAClBgrC,EAAYn/D,KAAK4tO,aAAa72N,EAAOy6D,GACrCQ,EAAUhyE,KAAK6tO,WAAW92N,EAAOy6D,GACjCt/C,EAAMlyB,KAAKwrD,OAAO24G,eAAenkK,KAAKi2E,WAAY,OAAe,IAAIz1D,KAAK2+C,EAAUt+C,aACxF,KAAIqR,EAAM,GAAKitC,EAAY6S,GAA3B,CAGA,IAAI+7J,EAAS/tO,KAAKguO,UAAU97M,GACxBltB,EAAWhF,KAAK0uO,YAAYvvK,EAAW6S,EAASj7D,EAAM/W,KAAKwvC,OAAOsiC,UAAW5/C,GACjF,GAAKyxc,EAgBD3je,KAAK4yO,qBAAqB7E,EAAQ/oO,EAAU48E,OAhBnC,CACT,IAAIwsJ,EAAa58J,EAAU9nC,MACvB4kM,EAAWtuO,KAAKuuO,cAAcpvK,EAAW6S,EAASj7D,EAAM/W,KAAKwvC,OAAOsiC,UAAWs8J,GACnFE,EAAYA,GAAY,EAAKtuO,KAAKwsO,UAAY8B,EAC9C,IAAIE,EAAWxuO,KAAKwrD,OAAgB,UAAI,EAAIxmD,EACxCypO,EAAYzuO,KAAKwrD,OAAgB,UAAIxmD,EAAW,EAChDmpO,EAAYnuO,KAAKgvO,WAAahvO,KAAKqie,kBACnCzzP,EAAS5uO,KAAK2uO,UAAU/sJ,GACxBu/H,EAAenhN,KAAK0hF,8BAA8B3qE,EAAO6qE,EAAU5hF,KAAK6hF,yBAC5E,gBAAkBs/H,EAAc,CAC5B,MAASmtB,EAAW,KAAM,OAAUH,EAAY,KAAM,KAAQK,EAAU,KACxE,MAASC,EAAW,KAAM,IAAOG,EAAS,OAE9C5uO,KAAKuvO,mBAAmBx4N,EAAOoqM,EAAc4sB,MAOrDq0P,EAAW74d,UAAUqpO,qBAAuB,SAAU7E,EAAQ/oO,EAAU48E,GACpE,IAAI4vJ,EAAiB,eAAc,MAAO,CAAE/jO,UAAW,WAAa,SAChE,eAAkBsgO,EAAOx5N,cAAc,IAAM,UAC7Cw5N,EAAOpgO,YAAY6jO,IAI3B4wP,EAAW74d,UAAUqkO,aAAe,SAAU72N,EAAOy6D,GACjD,OAAOz6D,EAAM/W,KAAKwvC,OAAO2vB,YAG7Bija,EAAW74d,UAAUskO,WAAa,SAAU92N,EAAOy6D,GAC/C,OAAOz6D,EAAM/W,KAAKwvC,OAAOwiC,UAE7BowZ,EAAW74d,UAAUykO,UAAY,SAAU97M,GACvC,OAAOlyB,KAAK2jK,UAAUv7J,SAAS8pB,EAAIxY,WAAY,MAEnD0od,EAAW74d,UAAUglO,cAAgB,SAAU1+J,EAAWC,EAASgC,EAAUpoC,GACzE,OAAOA,EAAQ1pC,KAAKwsO,UAAY,GAGpC41P,EAAW74d,UAAUmlO,YAAc,SAAUvvK,EAAW6S,EAASF,EAAU5/C,GACvE,OAAO,GAGXkwc,EAAW74d,UAAUolO,UAAY,SAAU/sJ,GACvC,OAAO,GAEXwgZ,EAAW74d,UAAU45d,oBAAsB,SAAUpsd,GACjD,IAAqD,IAAjD/W,KAAKwrD,OAAO/hC,YAAYvc,QAAQ,aAAkD,kBAA5BlN,KAAKwrD,OAAO/hC,cAC/D1S,EAAM/W,KAAKwvC,OAAOsiC,UADzB,CAIA,IAAI8xZ,EAAY7sd,EAAMod,KAClBzK,EAAQ1pB,KAAKwrD,OAAOokB,WAAWyzF,eAC/B15I,EAAM3pB,KAAKwrD,OAAOokB,WAAW0zF,aAC7B7+E,EAAY,OAAsB1tE,EAAM/W,KAAKwvC,OAAO2vB,WAAYz1C,EAAOC,GACvE+6D,EAAU,OAAsB3tE,EAAM/W,KAAKwvC,OAAOwiC,SAAUtoD,EAAOC,GACnEk6c,EAAkBD,EAAU5je,KAAKwvC,OAAO2vB,WACxCyyK,EAAgBgyP,EAAU5je,KAAKwvC,OAAOwiC,SAG1C,GAFA4xZ,EAAU1sZ,OAAS0sZ,EAAU1sZ,QAAU2sZ,EAAgBhjd,UAAY4jE,EAAUA,UAAU5jE,UACvF+id,EAAUzsZ,QAAUysZ,EAAUzsZ,SAAWy6J,EAAc/wN,UAAY6jE,EAAQA,QAAQ7jE,UAC/E,OAAegjd,GAAiBhjd,YAAc,OAAe+wN,GAAe/wN,UAAW,CACvF,IAAIijd,EAAkBr/Y,EAAUA,UAC5Bs/Y,EAAgBr/Y,EAAQA,QACxBvlB,EAAY,IAAI3+C,KAAK,OAAeqjd,IAIxC,GAHA1ka,EAAUt0C,SAASk5c,EAAcj5c,WAAYi5c,EAAch5c,aAAcg5c,EAAc/4c,cACvF44c,EAAU1sZ,OAAS0sZ,EAAU1sZ,QAAU2sZ,EAAgBhjd,YAAcijd,EAAgBn4X,YAAclnB,EAAUC,QAAQinB,UACjHxsC,EAAUt+C,UAAY,OAAas+C,EAAW,GAAGt+C,WACjD+wN,EAAc/wN,YAAc,OAAe+wN,GAAe/wN,UAAW,CACrE,IAAImxD,EAAU,IAAIxxD,KAAK,OAAeoxN,IACtCgyP,EAAUzsZ,QAAUysZ,EAAUzsZ,SAAWy6J,EAAc/wN,WACnDmxD,EAAQnnD,SAASi5c,EAAgBh5c,WAAYg5c,EAAgB/4c,aAAc+4c,EAAgB94c,kBAI3Go3c,EAAW74d,UAAUgkO,qBAAuB,WACxC,IAAIl6J,EAAYrzE,KAAKwrD,OAAOglB,cAAc+xF,gBACtC,CAACviK,KAAKwrD,OAAO2kB,aAAaoD,kBAAkBvzE,KAAKwrD,OAAOglB,cAAcoV,aACtE5lF,KAAKwrD,OAAO2kB,aAAa+zF,kBAC7B,GAAIlkK,KAAKwrD,OAAOqlB,YAAc7wE,KAAKwrD,OAAOqlB,WAAWC,QAAQ90B,aAAc,CACvE,IAAK,IAAI5xC,EAAI,EAAGqgB,EAAMzqB,KAAKwrD,OAAOqlB,WAAWC,QAAQ48J,YAAY3jO,OAAQK,EAAIqgB,EAAKrgB,IAAK,CACnF,IAAI45d,EAAYhke,KAAKwrD,OAAOqlB,WAAWC,QAAQ48J,YAAYtlO,SAASgC,EAAEsP,WAAY,KAElF,GADA1Z,KAAK2tO,oBAAoBq2P,EAAUniU,YAAamiU,EAAUliU,SAAUkiU,GAChEhke,KAAKwrD,OAAOqlB,WAAWC,QAAQ48J,YAAYtlO,SAASgC,EAAEsP,WAAY,KAAKksE,aACvE5lF,KAAKwrD,OAAOqlB,WAAWC,QAAQxhB,YAAYlnD,SAASgC,EAAEsP,WAAY,KAAKksE,WAAY,CACnF,IAAIj8E,EAAS3J,KAAKwrD,OAAOqlB,WAAWC,QAAQxhB,YAAYlnD,SAASgC,EAAEsP,WAAY,KAC/E1Z,KAAK2tO,oBAAoBhkO,EAAOk4J,YAAal4J,EAAOm4J,SAAUn4J,IAGtE3J,KAAKwrD,OAAOqlB,WAAWC,QAAQ90B,cAAe,OAG9C,IAAK,IAAI9lC,EAAK,EAAG+td,EAAc5wZ,EAAWn9D,EAAK+td,EAAYl6d,OAAQmM,IAAM,CACrE,IAAI8gR,EAAWitM,EAAY/td,GAC3BlW,KAAK2tO,oBAAoBqpD,EAASn1H,YAAam1H,EAASl1H,SAAUk1H,KAI9EorM,EAAW74d,UAAUgjO,aAAe,SAAUzqE,GAC1C9hK,KAAKolC,MAAQ,GACb,IAAI84C,EAAQl+E,KAAKi2E,WAAW3mE,KAAI,SAAUgb,GAAQ,OAAQA,KACtDwiF,GAAY9sG,KAAKwrD,OAAO4nB,kBAAkBoD,aAAgBx2E,KAAKwrD,OAAO4nB,kBAAkB7pC,MAAMgtC,QAC9Fv2E,KAAKwrD,OAAO4nB,kBAAkB7pC,MAAM04H,mBAAsBH,EAAS/3J,OAAS,OAChF,MAAOm0E,EAAMn0E,OAAS,EAClB/J,KAAKolC,MAAM1wB,KAAKwpE,EAAMnpE,OAAO,EAAG+3F,KAGxCs1X,EAAW74d,UAAU4lO,yBAA2B,SAAUxtJ,EAAQC,EAAUsiZ,QACjD,IAAnBA,IAA6BA,GAAiB,GAClD,IAAIniZ,EAAgBJ,EAAO3hF,KAAKwvC,OAAOwyC,UAAYhiF,KAAKwrD,OAAOipB,cAAcjlC,OAAOwyC,QAAQ18C,SACxFtlC,KAAKwrD,OAAOgyC,UAAUl7E,YAAY,YAClC6hd,EAAY,eAAO,GAAIxiZ,EAAQA,EAAOxtD,MAAM,GAC5C9c,EAAQ,CACR,UAAW,eAAiBsqE,EAAO3hF,KAAKwvC,OAAO57B,IAC/C,KAAQ,SAAU,SAAY,IAC9B,gBAAiB5T,KAAKwrD,OAAO68G,UAAU1lF,qBAAqBhB,GAC5D,aAAc3hF,KAAKwrD,OAAO+yL,sBAAsB4lP,EAAWpiZ,IAE1DmiZ,IACD7sd,EAAM,aAAesqE,EAAOvQ,MAE5BpxE,KAAKwrD,OAAO4nB,kBAAkB7pC,MAAM8pC,UAAUtpE,OAAS,IACvDsN,EAAM,oBAAsBuqE,EAASloE,YAEzC,IAAIuoE,EAAqB,eAAc,MAAO,CAAEx0E,UAAW,OAAuB4J,MAAOA,IACpF,eAAkBrX,KAAK+S,WACxB,eAAS,CAACkvE,GAAqBjiF,KAAK+S,UAEpC4uE,EAAO3hF,KAAKwvC,OAAOyrC,aACnB,eAAS,CAACgH,GAAqB,eAEnC,IAEIH,EAFAsiZ,EAAqB,eAAc,MAAO,CAAE32d,UAAW,SAC3Dw0E,EAAmBt0E,YAAYy2d,GAE/B,IAAI5yZ,EAAYmQ,EAAOxtD,KACnB09C,EAAW7xE,KAAKqke,aAAa1iZ,GACjC,GAAK,eAAkB3hF,KAAKwrD,OAAO4nB,kBAAkB8O,eAOhD,CACD,IAAIoiZ,EAAiB3iZ,EAAO3hF,KAAKwvC,OAAOgK,WAAax5C,KAAKwrD,OAAOipB,cAAcjlC,OAAOgK,SAASlU,SAAW,GACtG68C,EAAqB,eAAc,MAAO,CAAE10E,UAAW,UAC3DzN,KAAKwrD,OAAOh4C,SAAUuuE,GAAgBuiZ,EAAgB,KAAOA,EAAgB,IAAMniZ,GACnF,IAAIoiZ,EAAuB,eAAc,MAAO,CAC5C92d,UAAW,QAAwBzN,KAAKwrD,OAAO2vB,WAAa,IAAM,QAAoB,IACtF/nE,UAAWpT,KAAKwrD,OAAOu5G,cAAcvzF,EAAUxxE,KAAKwvC,OAAO2vB,cAE3Dqla,EAAqB,eAAc,MAAO,CAC1C/2d,UAAW,QAAwBzN,KAAKwrD,OAAO2vB,WAAa,IAAM,QAAoB,IACtF/nE,UAAWpT,KAAKwrD,OAAOu5G,cAAcvzF,EAAUxxE,KAAKwvC,OAAOwiC,YAE/D,GAAgC,UAA5BhyE,KAAKwrD,OAAO/hC,YACRk4D,EAAO3hF,KAAKwvC,OAAOsiC,WACnBgQ,EAAkB,CAACK,GACnB,eAAS,CAACA,GAAqB,kBAE1B3Q,EAAU9nC,OAAS,IAAM8nC,EAAU0F,SAAW1F,EAAU2F,QAC7D2K,EAAkB,CAACyiZ,EAAsBpiZ,IAGzCL,EAAkB,GAClB,eAAS,CAACK,GAAqB,iBAC1B3Q,EAAU0F,QACX4K,EAAgBptE,KAAK6vd,GAEzBziZ,EAAgBptE,KAAKytE,GAChB3Q,EAAU2F,SACX2K,EAAgBptE,KAAK8vd,QAI5B,CACD,IAAIvxC,OAAe,EACnB,GAAItxW,EAAO3hF,KAAKwvC,OAAOsiC,UAAW,CAC9B,IAAI2yZ,EAAe,eAAc,MAAO,CACpCh3d,UAAW,OAAsB2F,UAAWpT,KAAKwrD,OAAOgyC,UAAUl7E,YAAY,YAElF2wa,EAAe,CAAC9wW,EAAoBsiZ,OAEnC,CACD,IAAIxhM,EAAajjS,KAAKwrD,OAAOu5G,cAAcvzF,EAAUxxE,KAAKwvC,OAAO2vB,YAC3D,MAAQn/D,KAAKwrD,OAAOu5G,cAAcvzF,EAAUxxE,KAAKwvC,OAAOwiC,UAC1D0yZ,EAAU,eAAc,MAAO,CAC/Bj3d,UAAW,QAAwBzN,KAAKwrD,OAAO2vB,WAAa,IAAM,QAAoB,IAAK/nE,UAAW6vR,IAEtG0hM,EAAc,eAAc,MAAO,CAAEl3d,UAAW,UACpDzN,KAAKwrD,OAAOh4C,SAAS8wd,EAAeK,GACpC1xC,EAAe,CAAC9wW,EAAoBuiZ,EAASC,GAEjD,IAAIhqa,EAAO,eAAc,MAAO,CAAEltD,UAAW,iBAC7C,eAAOwlb,EAAct4X,GACrBmnB,EAAkB,CAACnnB,QA3D0C,CACjE,IAAIynB,EAAapiF,KAAKwrD,OAAOpnD,QAAQwP,GAAK,IACtCyuE,EAAWriF,KAAKwrD,OAAO4nB,kBAAkBkP,kBACzCC,EAAaH,EAAaC,EAAW,gBACrCH,EAAgB,iBAAmBliF,KAAK6hF,wBAA0B,IAAMD,EAAW,IACvFE,EAAkB9hF,KAAKwrD,OAAOi3B,wBAAZziF,CAAqC6xE,EAAU7xE,KAAKwrD,OAAQ02B,EAAeK,GAAY,GA4D7G,OAHA,eAAOT,EAAiBsiZ,GACxBpke,KAAK4ke,iBAAiBjjZ,EAAQyiZ,GAC9Bpke,KAAK07E,oBAAoBuG,EAAoBN,EAAOxtD,KAAMwtD,EAAO3hF,KAAKwvC,OAAOyrC,aACtEgH,GAEXmgZ,EAAW74d,UAAUq7d,iBAAmB,SAAUjjZ,EAAQyiZ,GACtD,IAAI5yZ,EAAYmQ,EAAOxtD,KACvB,IAAK,eAAkBwtD,EAAO3hF,KAAKwvC,OAAOmhC,mBAAqB,eAAkBgR,EAAO3hF,KAAKwvC,OAAOohC,eAAgB,CAChH,IAAI8c,EAAa/L,EAAO3hF,KAAKwvC,OAAO57B,MAAQ+tE,EAAO3hF,KAAKwvC,OAAOohC,cAC3D,QAAkC,QACtCwzZ,EAAmBz2d,YAAY,eAAc,MAAO,CAChDF,UAAW,QAAW,IAAMigF,GAAa1tF,KAAKwrD,OAAO2vB,WAAa,IAAM,QAAoB,OAGpG,GAAI3J,EAAU0F,OAAQ,CAClB,IAAI+O,EAAW,eAAc,MAAO,CAChCx4E,UAAW,QAA4B,IAAM,QAAW,IAAM,UAElE,gBAAQ,CAACw4E,GAAWm+Y,GAExB,GAAI5yZ,EAAU2F,QAAS,CACnB,IAAI1rD,EAAY,eAAc,MAAO,CACjChe,UAAW,QAA4B,IAAM,QAAW,IAAM,UAElE,eAAO,CAACge,GAAY24c,KAI5BhC,EAAW74d,UAAUw1J,aAAe,SAAUhoJ,EAAO6qE,EAAU4wJ,GAC3D,IAAIrzK,EAAYpoD,EAAM/W,KAAKwvC,OAAO2vB,WAC9B6S,EAAUj7D,EAAM/W,KAAKwvC,OAAOwiC,SAC5B9/C,EAAMlyB,KAAKwrD,OAAO24G,eAAenkK,KAAKi2E,WAAY,OAAe9W,IACrE,KAAKjtC,EAAM,GAAOitC,EAAUt+C,UAAY7gB,KAAKwrD,OAAO44B,QAAQvjE,WAAemxD,EAAQnxD,UAAY7gB,KAAKwrD,OAAO64B,QAAQxjE,WAAnH,CAGA,IAAIotN,EAAejuO,KAAKwrD,OAAOm7B,cAAgB,EAAI3mF,KAAKwrD,OAAO4nB,kBAAkBsT,gBAC7EwnJ,EAAeluO,KAAK8tD,SAASqR,GACjCpoD,EAAMs2N,MAAQa,EACd,IAAIE,EAAar3N,EAAMod,KAAKuV,MAC5B,GAAIy1B,EAAUt+C,WAAamxD,EAAQnxD,UAAW,CAC1C,IAAIytN,EAAYF,EAAapuO,KAAKwsO,UAAa,EAC3CuB,EAAS/tO,KAAK2jK,UAAUv7J,SAAS8pB,EAAIxY,WAAY,KACjDk1N,EAAUV,GAAgBluO,KAAKqmF,YAAc0lJ,GAC7C9kO,EAASjH,KAAKqie,mBAAsBn0P,EAAe,IAAMluO,KAAKqmF,YAAc0lJ,GAAc/rO,KAAKytO,oBAC/Fo3P,GAAkB7ke,KAAKwrD,OAAO4nB,kBAAkBsT,iBAAoB1mF,KAAKwrD,OAAOm7B,eAC/E3mF,KAAKwrD,OAAOipB,cAAcq6J,gBAAgD9uO,KAAK+uO,eAAiBb,EAAe,EAC/FluO,KAAKgvO,WAAa/nO,EADUinO,EAAeD,EAEhE,GAAIjuO,KAAKwrD,OAAOm7B,eAAiBk+Y,EAAiB,CAC9C7ke,KAAKktO,eAAex4N,KAAK,eAAO,GAAIqC,EAAO,MAAM,IACjD,IAAIk4N,OAAqB,EAWzB,GATIA,EADAjvO,KAAKkvO,YACgBlvO,KAAKwrD,OAAO+3K,aAAa6L,iCAGzBpvO,KAAKmvO,yBAAyBp4N,EAAO6qE,GAE9D5hF,KAAKohF,mBAAmB6tJ,EAAoBl4N,EAAO,kBAAmB/W,KAAKq0E,YAC3Er0E,KAAK86E,sBAAsBm0J,EAAoBl4N,GAC/C,gBAAkBk4N,EAAoB,CAAE,MAASX,EAAW,KAAM,IAAOM,EAAS,OAClF5uO,KAAKuvO,mBAAmBx4N,EAAOk4N,EAAoBlB,GAC/C/tO,KAAKwrD,OAAOm7B,cAAe,CAC3B,IAAI1mC,EAAa8tL,EAAO1oO,cAAc8jB,kBACtCnpB,KAAKyvO,iBAAiBxvL,EAAYh5C,SAItC,IAAK,IAAImD,EAAI,EAAGA,EAAIgkO,EAAYhkO,IAC5B,GAAIpK,KAAK2jK,UAAUzxI,EAAM9nB,GAAI,CACzB,IAAIm6J,EAAYvkK,KAAK2jK,UAAUzxI,EAAM9nB,GAAGmK,cAAc,IAAM,SAC5D,GAAIgwJ,EAAW,CACX,IAAI76H,EAAQthC,SAASm8J,EAAUvxJ,aAAa,cAAe,IAAM,EACjEuxJ,EAAUtxJ,aAAa,aAAcy2B,EAAMhwB,YAC3C6qJ,EAAUnxJ,UAAYpT,KAAK8ke,qBAAqBp7b,OAE/C,CACD,IAAImmC,EAAY,IAAIrvD,KAAKxgB,KAAKi2E,WAAW/jD,EAAM9nB,GAAGyW,WAC9CivD,EAAU,OAAa9vE,KAAKi2E,WAAW/jD,EAAM9nB,GAAI,GACjDw7E,EAAa5lF,KAAK2jK,UAAUzxI,EAAM9nB,GAAG4I,aAAa,oBAClD89N,EAAuB9wO,KAAK+wO,wBAAwB,EAAGlhK,EAAWC,GACjE,eAAkB8V,IACnBkrJ,EAAqB79N,aAAa,mBAAoB2yE,GAE1DkrJ,EAAqB/rO,MAAMH,IAAO5E,KAAKgvO,WAAahvO,KAAKqie,kBAAoBrie,KAAKytO,oBAAuB,KACzGqD,EAAqB/rO,MAAMsC,MAAQrH,KAAKwsO,UAAY,EAAI,KACxDxsO,KAAKgxO,cAAchxO,KAAK2jK,UAAUzxI,EAAM9nB,GAAI0mO,GAC5C,OAAa38N,IAAI28N,EAAsB,QAAS9wO,KAAKixO,mBAAoBjxO,WAOjGoie,EAAW74d,UAAUkmO,iBAAmB,SAAUj1I,EAAMvzF,GAC/CA,EAASuzF,EAAKzoF,cACf,gBAAkByoF,EAAM,CAAE,OAAUvzF,EAAS,QAGrDm7d,EAAW74d,UAAU+nO,oBAAsB,WAEvC,IADA,IAAInwB,EAAe,GAAGprM,MAAMtJ,KAAKzM,KAAKoE,QAAQ8lB,iBAAiB,IAAM,SAC5DhU,EAAK,EAAGq7N,EAAiBpwB,EAAcjrM,EAAKq7N,EAAexnO,OAAQmM,IAAM,CAC9E,IAAI9R,EAAUmtO,EAAer7N,GACzBvM,EAAS,eAAQvF,EAAS,MAC9BpE,KAAKqie,kBAAoBj+d,EAAQU,aAAaI,UAAYyE,EAAOzE,UACjEd,EAAQW,MAAMkC,OAAW0C,EAAOoI,aAAe,EAAK/R,KAAKqie,kBAAqB,KAC9E,IAAIpib,EAAat2C,EAAOwf,kBACpB9hB,EAAQoK,KAAKC,MAAMtN,EAAQ0N,YAAcmuC,EAAWnuC,aACxD1N,EAAQW,MAAMsC,MAAS44C,EAAWnuC,YAAczK,EAAS,OAIjE+6d,EAAW74d,UAAUkpO,kBAAoB,SAAU5iK,EAAWC,EAAS8V,EAAY4sJ,GAC/E,IAAIp+J,EACJ,GAAI,eAAkBwR,GAClBxR,EAAiBp0E,KAAK0xE,aAAa7B,EAAWC,OAE7C,CACD,IAAI37C,EAAOn0B,KAAKwrD,OAAO2kB,aAAaoD,kBAAkBnrE,SAASw9E,EAAY,KAC3ExR,EAAiBp0E,KAAK0xE,aAAa7B,EAAWC,EAAS,eAAkB0iK,QAAc7sO,EAAY6sO,EAAYr+M,GAEnH,OAAOigD,GAEXguZ,EAAW74d,UAAUmjO,iBAAmB,SAAUpiN,EAAMspD,GAGpD,IAFA,IAAI+4J,EAAmB,GACnBt1L,EAAW,OAAe/sB,GAAMzJ,UAC3B3K,EAAK,EAAG02N,EAAiBh5J,EAAc19D,EAAK02N,EAAe7iO,OAAQmM,IAAM,CAC9E,IAAIg7D,EAAM07J,EAAe12N,GACpB,OAAeg7D,EAAIlxE,KAAKwvC,OAAO2vB,YAAYt+C,WAAaw2B,GACxD,OAAe65B,EAAIlxE,KAAKwvC,OAAOwiC,UAAUnxD,WAAaw2B,GACvDs1L,EAAiBj4N,KAAKw8D,GAG9B,OAAOy7J,GAEXy1P,EAAW74d,UAAUukD,SAAW,SAAUxjC,GACtC,IAAI2iN,GAAY,EACZr5J,EAAe5zE,KAAKktO,eACxB,GAAIt5J,EAAa7pE,OAAS,EAAG,CACzB,IAAI4iO,EAAmB3sO,KAAK0sO,iBAAiBpiN,EAAMspD,GAC/Cw5J,EAAWT,EAAiBr9N,KAAI,SAAUs9B,GAAO,OAAOA,EAAIygM,SAChEJ,EAAYG,EAASrjO,OAAS,EAAK/J,KAAKw1E,yBAAyB43J,GAAY,EAEjF,OAAsB,IAAdH,EAAmB,EAAIA,GAEnCm1P,EAAW74d,UAAU0nO,mBAAqB,SAAUl6N,GAChD,IAAIvK,EAAQxM,KACR2J,EAAS,eAAQoN,EAAMpN,OAAQ,IAAM,SACrCkmE,EAAY,IAAIrvD,KAAKpY,SAASuB,EAAOqJ,aAAa,mBAAoB,KACtE88D,EAAU,IAAItvD,KAAKpY,SAASuB,EAAOqJ,aAAa,iBAAkB,KAClE4yE,EAAaj8E,EAAOqJ,aAAa,oBACjC+xd,EAAW,CACXjud,QAAQ,EAAOC,MAAOA,EAAO3S,QAASuF,EAAQ66G,aAAa,EAC3DrlD,UAAW0Q,EAAWmC,QAASlC,EAASuS,SAAUriF,KAAKwrD,OAAOs5K,mBAE9Dl/I,IACAm/Y,EAASn/Y,WAAax9E,SAASw9E,EAAY,KAE/C5lF,KAAKwrD,OAAOj7C,QAAQ,OAAwBw0d,GAAU,SAAU73N,GAC5D,IAAKA,EAAUp2P,OACX,GAAIo2P,EAAU1oJ,YAAa,CACvB,IAAIpwC,EAAiB5nE,EAAMimO,kBAAkB5iK,EAAWC,EAAS8V,GAC7Do/Y,EAAa,CAAE16c,KAAMulD,EAAW94D,MAAOq9D,EAAgBhwE,QAAS2S,EAAMpN,QAC1E6C,EAAMg/C,OAAOywB,WAAWgnK,eAAe+hP,EAAYl1Z,EAAS8V,QAG5Dp5E,EAAMg/C,OAAOj4C,cAAc,CAAE4lI,aAActpE,IAAa,GACxDrjE,EAAMg/C,OAAOizK,WAAWyuC,EAAU7qL,SAAUtrE,OAK5Dqrd,EAAW74d,UAAUgmO,mBAAqB,SAAUx4N,EAAOk4N,EAAoBlB,GAC3E,IAAIvhO,EAAQxM,KACRile,EAAYh2P,EAAmB9nO,UAAUC,SAAS,QAA+B,aAAe,QAChG89d,EAAgBj2P,EAAmB9nO,UAAUC,SAAS,QACtDyqE,EAAW7xE,KAAKqke,aAAattd,GAC7BwW,EAAO,CAAE4G,KAAM09C,EAAUztE,QAAS6qO,EAAoBn4N,QAAQ,EAAOD,KAAMoud,GAC/Ejle,KAAKwrD,OAAOj7C,QAAQ,OAAsBgd,GAAM,SAAUO,GAClDA,EAAUhX,OACVtK,EAAM0gO,eAAe1/K,MAGrBhhD,EAAMwkO,cAAcjD,EAAQkB,EAAoBi2P,OAI5D9C,EAAW74d,UAAU86d,aAAe,SAAUttd,GAC1C,IAAI86D,EAAW,eAAO,GAAI96D,EAAO,MAAM,GAGvC,OAFA86D,EAAS7xE,KAAKwvC,OAAO2vB,WAAapoD,EAAMod,KAAKn0B,KAAKwvC,OAAO2vB,WACzD0S,EAAS7xE,KAAKwvC,OAAOwiC,SAAWj7D,EAAMod,KAAKn0B,KAAKwvC,OAAOwiC,SAChDH,GAEXuwZ,EAAW74d,UAAUynO,cAAgB,SAAUjD,EAAQ3pO,EAAS8ge,QACtC,IAAlBA,IAA4BA,GAAgB,GAC5Clle,KAAK+uO,gBAAkBm2P,GACvBlle,KAAK6yO,kBAAkBzuO,EAAS2pO,GAEpC,IAAIo3P,EAAap3P,EAAOx5N,cAAc,IAAM,QAC5C,GAAI4wd,EACAA,EAAWx3d,YAAYvJ,OAEtB,CACD,IAAI2jD,EAAU,eAAc,MAAO,CAAEt6C,UAAW,SAChDs6C,EAAQp6C,YAAYvJ,GACpB2pO,EAAOpgO,YAAYo6C,KAG3Bq6a,EAAW74d,UAAUwnO,wBAA0B,SAAUrnM,EAAOmmC,EAAWC,GACvE,IAAIghK,EAAuB,eAAc,MAAO,CAC5CrjO,UAAW,QACX2F,UAAWpT,KAAK8ke,qBAAqBp7b,GACrCryB,MAAO,CACH,KAAQ,SACR,SAAY,IACZ,aAAcrX,KAAKwrD,OAAOrpC,UAAUoe,aAAamJ,GAAS,UACnD1pC,KAAKwrD,OAAO2vB,WAAa,GAAKn7E,KAAKwrD,OAAOgyC,UAAUl7E,YAAY,SACvE,aAAconB,EAAMhwB,WACpB,kBAAmBm2D,EAAUhvD,UAAUnH,WACvC,gBAAiBo2D,EAAQjvD,UAAUnH,cAG3C,OAAOo3N,GAEXsxP,EAAW74d,UAAUu7d,qBAAuB,SAAUp7b,GAClD,MAAO,IAAM1pC,KAAKwrD,OAAOrpC,UAAUoe,aAAamJ,GAAS,UAAY1pC,KAAKwrD,OAAO2vB,WAAa,GAAKn7E,KAAKwrD,OAAOgyC,UAAUl7E,YAAY,UAEzI8/c,EAAW74d,UAAUikO,qBAAuB,SAAU9jL,GAElD,IADA,IAAIk9B,EAAO,GAAG7wE,MAAMtJ,KAAKzM,KAAKoE,QAAQ8lB,iBAAiB,IAAMw/B,EAAW,cAC/DxzC,EAAK,EAAG6wE,EAASH,EAAM1wE,EAAK6wE,EAAOh9E,OAAQmM,IAAM,CACtD,IAAI8wE,EAAMD,EAAO7wE,GACjB8wE,EAAI79D,kBAAkBpkB,MAAMkC,OAAS,KAG7Cm7d,EAAW74d,UAAUspO,kBAAoB,SAAU97N,EAAOyjF,GACtD,IAAIjU,EAAe,OAAoBiU,EAAKjmF,cAAc,IAAM,SAC5DtN,EAAUuzF,EAAKzoF,aAAew0E,GAAiBvmF,KAAK6lD,UAAY,EAAI7lD,KAAKytO,qBAC7E,gBAAkB12N,EAAO,CAAE,OAAU9P,EAAS,KAAM,cAAe,YAEvEm7d,EAAW74d,UAAU+Q,QAAU,WAC3Bta,KAAKoE,QAAU,KACfpE,KAAKwvC,OAAS,KACdxvC,KAAK6lD,UAAY,KACjB7lD,KAAK4wO,cAAgB,KACrB5wO,KAAK+uO,eAAiB,KACtB/uO,KAAKytO,oBAAsB,KAC3BztO,KAAK46E,sBACL3uE,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,OAE3Boie,EAhrBoB,CAirB7B,S,sBCjsBA,SAAUtie,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAI8uF,EAAa,SAAUtrF,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVurF,EAAU,CACNrtF,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJE,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJE,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGR4sF,EAAY,SAAUC,GAClB,OAAO,SAAUvrF,EAAQC,EAAeurF,EAAQrrF,GAC5C,IAAIsrF,EAAIL,EAAWprF,GACfy3C,EAAM4zC,EAAQE,GAAGH,EAAWprF,IAIhC,OAHU,IAANyrF,IACAh0C,EAAMA,EAAIx3C,EAAgB,EAAI,IAE3Bw3C,EAAI34B,QAAQ,MAAO9e,KAGlCvD,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGJgle,EAAOnle,EAAOE,aAAa,QAAS,CACpCC,OAAQA,EACRE,YAAaF,EACbG,SAAU,sDAAsDF,MAAM,KACtEG,cAAe,wCAAwCH,MAAM,KAC7DI,YAAa,gBAAgBJ,MAAM,KACnCw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV4B,cAAe,MACf6F,KAAM,SAAUP,GACZ,MAAO,MAAQA,GAEnBnF,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,IAEA,KAGf7B,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNC,EAAGstF,EAAU,KACbrtF,GAAIqtF,EAAU,KACdptF,EAAGotF,EAAU,KACbntF,GAAImtF,EAAU,KACdltF,EAAGktF,EAAU,KACbjtF,GAAIitF,EAAU,KACdhtF,EAAGgtF,EAAU,KACb/sF,GAAI+sF,EAAU,KACd9sF,EAAG8sF,EAAU,KACb7sF,GAAI6sF,EAAU,KACd5sF,EAAG4sF,EAAU,KACb3sF,GAAI2sF,EAAU,MAElBM,WAAY,SAAUJ,GAClB,OAAOA,EAAO1sE,QAAQ,KAAM,MAEhClgB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAO2ie,M,mBCpKX,IAAIrib,EAAOtxC,KAAKsxC,KACZub,EAAQ7sD,KAAK6sD,MAIjB3+D,EAAOC,QAAU,SAAU+9I,GACzB,OAAOt6H,MAAMs6H,GAAYA,GAAY,GAAKA,EAAW,EAAIr/E,EAAQvb,GAAM46F,K,kCCNzE,0KAiBI0nV,EAAoC,WAOpC,SAASA,EAAmB75a,GACxBxrD,KAAKsle,gBAAiB,EACtBtle,KAAKule,kBAAoB,GACzBvle,KAAKwle,gBAAkB,IAAI,OAE3Bxle,KAAKyle,aAAc,EACnBzle,KAAK05G,OAAS,GACd15G,KAAKqxZ,aAAc,EACnBrxZ,KAAK0le,0BAA2B,EAChC1le,KAAK2le,mBAAoB,EAEzB3le,KAAK4le,qBAAsB,EAC3B5le,KAAK6le,yBAA0B,EAC/B7le,KAAK8le,2BAA6B,GAClC9le,KAAK+le,+BAAgC,EACrC/le,KAAKgme,gBAAkB,EACvBhme,KAAKime,yBAA2B,EAChCjme,KAAKkme,4BAA8B,GACnClme,KAAKmme,mBAAqB,GAC1Bnme,KAAKome,kBAAoB,EACzBpme,KAAKqme,wBAAyB,EAC9Brme,KAAKsme,+BAAgC,EACrCtme,KAAKume,kCAAmC,EACxCvme,KAAKwme,iCAAmC,GACxCxme,KAAKwrD,OAASA,EACdxrD,KAAK4T,GAAK5T,KAAKwrD,OAAOpnD,QAAQwP,GAC9B5T,KAAKysK,eAAiB,IAAI,OAAezsK,KAAKwrD,OAAOppC,QACrDpiB,KAAKyme,SAAW,eAAezme,KAAKwrD,OAAOh+C,eAAe,EAAO,CAAEo8F,SAAS,EAAM5uC,MAAO,MACzFh7D,KAAK0me,UAAY,eAAe1me,KAAKwrD,OAAOh+C,eAAe,EAAO,CAAEo8F,SAAS,EAAO5uC,MAAO,MAC3Fh7D,KAAKyme,SAASz5c,aAAahtB,KAAKwrD,OAAOh+C,cAAc,QAAS,CAC1DC,UAAW,eAAgB4J,MAAO,CAAER,KAAM,cAC1C7W,KAAKyme,SAASxmb,YAClBjgD,KAAK0me,UAAU15c,aAAahtB,KAAKwrD,OAAOh+C,cAAc,QAAS,CAC3DC,UAAW,eAAgB4J,MAAO,CAAE,KAAQ,cAC5CrX,KAAK0me,UAAUzmb,YACnBjgD,KAAK0me,UAAUnyd,cAAc,YAAYpN,UAAUgN,IAAI,aACnDnU,KAAKwrD,OAAOn9C,WACZ,eAAS,CAACrO,KAAKyme,SAAUzme,KAAK0me,WAAY,CAAC,UAE3C1me,KAAKwrD,OAAOz4C,YAC+B,IAAvC/S,KAAKwrD,OAAOz4C,SAAS7F,QAAQ,KAC7B,eAAS,CAAClN,KAAKyme,SAAUzme,KAAK0me,WAAY1me,KAAKwrD,OAAOz4C,SAAS1S,MAAM,MAGrE,eAAS,CAACL,KAAKyme,SAAUzme,KAAK0me,WAAY,CAAC1me,KAAKwrD,OAAOz4C,YAwtDnE,OAhtDAsyd,EAAmB97d,UAAU+Q,QAAU,WACnCta,KAAK0zN,eAET2xQ,EAAmB97d,UAAUmS,WAAa,WACtC,OAAavH,IAAInU,KAAK2me,IAAK,QAAS3me,KAAKupD,aAAcvpD,MACvD,OAAamU,IAAInU,KAAK2me,IAAK,QAAS3me,KAAK0lB,aAAc1lB,MACvDA,KAAK4me,cAAgB,eAAS5me,KAAK6me,eAAgB,KACnD,IAAIrnb,EAAOx/C,KAAK25K,UAAUv1K,QAAQmQ,cAAc,kBAC5CirC,IACA,OAAarrC,IAAIqrC,EAAM,QAASx/C,KAAK4me,cAAe5me,MACpD,OAAamU,IAAIqrC,EAAM,QAASx/C,KAAK4me,cAAe5me,QAG5Dqle,EAAmB97d,UAAUwrD,aAAe,WACxC,OAAa9mD,OAAOjO,KAAK2me,IAAK,QAAS3me,KAAKupD,cAC5C,OAAat7C,OAAOjO,KAAK2me,IAAK,QAAS3me,KAAK0lB,cAC5C,IAAI85B,EAAOx/C,KAAK25K,UAAUv1K,QAAQmQ,cAAc,kBAC5CirC,IACA,OAAavxC,OAAOuxC,EAAM,QAASx/C,KAAK4me,eACxC,OAAa34d,OAAOuxC,EAAM,QAASx/C,KAAK4me,iBAGhDvB,EAAmB97d,UAAUu9d,iBAAmB,SAAUv5c,EAAMw5c,EAAOC,GACnE,IAAIx6d,EAAQxM,KACR6oI,EAAa,GACbo+V,EAAmB,GACnBh9b,EAAQjqC,KAAKwle,gBAAgB1ob,QACjC98C,KAAKuM,QAAQ2mF,OAAOppD,WAChB+2F,aAAa52F,EAAMN,MAAMq9b,IAAalzc,MAAK,SAAUte,GACrDhJ,EAAMD,QAAQ2mF,OAAOw1C,WAAalzH,EAAEzR,OACpCyI,EAAMg/C,OAAO/pC,OAAO,QAAsB,CAAEuyB,UAAW60F,EAAY31C,OAAQ1mF,EAAMD,QAAQ2mF,SACzF3lE,EAAK25c,YAAcr+V,EAAW70F,UAAUc,WAExC,IADA,IAAIqyb,EAAQt+V,EAAW70F,UAAUc,WACxB1qC,EAAI,EAAGA,EAAI+8d,EAAMp9d,OAAQK,IAC9B68d,EAAiBvyd,KAAK,CAClBq2B,MAAOo8b,EAAM/+d,SAASgC,EAAEsP,WAAY,KAAKqxB,MACzCiJ,UAAW,KACXsvF,UAAW6jW,EAAM/+d,SAASgC,EAAEsP,WAAY,KAAK2zB,WAC7CC,aAAc65b,EAAM/+d,SAASgC,EAAEsP,WAAY,KAAK4zB,aAChDmC,SAAU03b,EAAM/+d,SAASgC,EAAEsP,WAAY,KAAK+1B,SAC5CxpC,MAAOkhe,EAAM/+d,SAASgC,EAAEsP,WAAY,KAAKzT,MACzC4Q,KAAMrK,EAAMD,QAAQsK,OAG5B0W,EAAK05c,iBAAmBA,EAAiBl9d,OAASk9d,EAC9CF,EAAM5uc,QAAO,SAAUutD,GAAO,OAAOA,EAAI36C,MAAQv+B,EAAMD,QAAQw+B,SACnEv+B,EAAMD,QAAQ6vF,QAAQ7uE,OAG9B83c,EAAmB97d,UAAU69d,cAAgB,SAAU75c,EAAMtnB,GACzD,IAAIwpC,EAAWzvC,KAAKuM,QAAQ6yF,SACM,WAA7Bp/F,KAAKuM,QAAQ2mF,OAAOr8E,KAAoB,WAAa,QAAY7W,KAAKuM,QAAQ2mF,OAAOr8E,KAAO,WAAa,QAC1Gwwd,EAAkB,IAAI,OAAUrne,KAAKuM,QAAQ2mF,OAAOo0C,gBAAiB73F,EAAUxpC,GAAO,EAAMjG,KAAKuM,QAAQ+gC,cAC7GttC,KAAK8me,iBAAiBv5c,EAAM,CAACA,EAAK05c,kBAAmBI,IAEzDhC,EAAmB97d,UAAU+9d,eAAiB,SAAU9xd,GACpD,IAAI7L,EAAS6L,EAAE7L,OACXA,EAAOxC,UAAUC,SAAS,mBAC1BpH,KAAKune,OAAOthe,MAAQ0D,EAAOxC,UAAUC,SAAS,oBAAsB,GAAKpH,KAAKune,OAAOthe,MACjFjG,KAAK0le,yBACL1le,KAAKwrD,OAAO/pC,OAAO,kBAAmB,CAAE1K,MAAOvB,IAG/CxV,KAAKwne,oBAETxne,KAAKyne,mBACLzne,KAAKune,OAAO9/c,UAGpB49c,EAAmB97d,UAAUs9d,eAAiB,SAAUrxd,IAChD,eAAkBA,KAAiB,YAAVA,EAAE3R,KAA+B,cAAV2R,EAAE3R,KAAiC,QAAV2R,EAAE3R,KAA6B,QAAV2R,EAAE3R,KAAiB2R,EAAEmlK,YAC9G,eAAkB36K,KAAKwrD,OAAO84P,mBAAoE,YAA/CtkT,KAAKwrD,OAAO84P,iBAAiB+rG,eACjFrwZ,KAAKwrD,OAAO+kW,iBAAY5qZ,EAAW3F,KAAK25K,UAAUv1K,SAElDpE,KAAK0le,yBACL1le,KAAKwrD,OAAO/pC,OAAO,kBAAmB,CAAE1K,MAAOvB,IAG/CxV,KAAKwne,oBAETxne,KAAKyne,qBAGbpC,EAAmB97d,UAAUk+d,iBAAmB,WACxCzne,KAAKune,OAAOthe,MAAM8D,QAClB,eAAU/J,KAAK0ne,MAAO,CAAC,oBAAqB,CAAC,kBACxC,eAAkBzxd,SAASnP,KAAKyN,cAAc,uBAC/C0B,SAASnP,KAAKyN,cAAc,qBAAqBtB,aAAa,QAASjT,KAAKw9F,UAAUl7E,YAAY,YAItG,eAAUtiB,KAAK0ne,MAAO,CAAC,iBAAkB,CAAC,qBACrC,eAAkBzxd,SAASnP,KAAKyN,cAAc,kCAC/C0B,SAASnP,KAAKyN,cAAc,gCAAgCtB,aAAa,QAASjT,KAAKw9F,UAAUl7E,YAAY,aAUzH+id,EAAmB97d,UAAUo+d,kBAAoB,SAAU9je,GACvD,OAAO7D,KAAKw9F,UAAUl7E,YAAYze,IAEtCwhe,EAAmB97d,UAAUu2H,iBAAmB,WAC5C,IAAIh2F,EAAa9pC,KAAKuM,QAAQu9B,WAC1BsR,EAAM,SACV,KAAMtR,aAAsB,QACxB,IAAK,IAAI1/B,EAAI,EAAGA,EAAI0/B,EAAW//B,OAAQK,IAEnC,UAAW0/B,IAAesR,EAAK,CAC3B,IAAIxO,EAAM,GACVA,EAAI5sC,KAAKuM,QAAQw+B,OAASjB,EAAW1hC,SAASgC,EAAEsP,WAAY,KAC5DowB,EAAW1hC,SAASgC,EAAEsP,WAAY,KAAOkzB,IAKzDy4b,EAAmB97d,UAAUksF,YAAc,SAAUlpF,GACjDvM,KAAKuM,QAAUA,EACfvM,KAAKule,kBAAoBh5d,EAAQq7d,iBAAmB,GACpD5ne,KAAKuM,QAAQu9B,WAAav9B,EAAQu9B,WAClC9pC,KAAKuM,QAAQ89B,YAAc99B,EAAQ89B,YAAc99B,EAAQ89B,YAAc99B,EAAQu9B,WAC/E9pC,KAAK8/H,mBACL9/H,KAAKuM,QAAQsK,KAAOtK,EAAQsK,KAC5B7W,KAAKuM,QAAQ2X,OAAS3X,EAAQ2X,QAAU,GACxClkB,KAAKuM,QAAQ+gC,aAAe/gC,EAAQ+gC,eAAgB,EACpDttC,KAAKuM,QAAQs7d,gBAAkBt7d,EAAQs7d,iBAAmB7ne,KAAKwrD,OAAOwtC,eAAepF,QACrF5zF,KAAKuM,QAAQ09B,MAAQ19B,EAAQ09B,OAAS,IAAI,OAC1CjqC,KAAKuM,QAAQu7d,mBAAqBv7d,EAAQu7d,qBAAsB,EAChE9ne,KAAKuM,QAAQq/B,IAAMr/B,EAAQ2mF,OAAOtnD,IAClC5rC,KAAKuM,QAAQu9F,kBAAoBv9F,EAAQ2mF,OAAO4W,oBAAqB,EACrE9pG,KAAK05G,OAAS,GACd15G,KAAKw9F,UAAYjxF,EAAQixF,UACzBx9F,KAAKspH,WAAa/8G,EAAQs7d,gBAAgB99d,OAC1C/J,KAAK2le,qBAAoB3le,KAAKwrD,OAAOwtC,iBAAkBh5F,KAAKwrD,OAAOwtC,eAAee,yBAClF/5F,KAAK+ne,8BAAgC/ne,KAAK2le,mBAAqB3le,KAAKule,kBAAkBvle,KAAKuM,QAAQ2mF,OAAOnoD,OAAS/qC,KAAKule,kBAAkBvle,KAAKuM,QAAQ2mF,OAAOnoD,OAAOh1B,QAAU,IAEnLsvd,EAAmB97d,UAAUy+d,iBAAmB,SAAUz7d,GAOtD,GANAvM,KAAK2me,IAAM3me,KAAKwrD,OAAOh+C,cAAc,MAAO,CACxCoG,GAAI5T,KAAK4T,GAAK5T,KAAKuM,QAAQsK,KAAO,YAClCQ,MAAO,CAAEu0B,IAAK5rC,KAAKuM,QAAQ2mF,OAAOtnD,KAClCn+B,UAAW,oCAEfzN,KAAKioe,KAAOjoe,KAAKwrD,OAAOh+C,cAAc,MAAO,CAAEC,UAAW,uBACrDlB,EAAQ27d,cAAe,CACxBloe,KAAKune,OAASvne,KAAKwrD,OAAOh+C,cAAc,QAAS,CAC7CoG,GAAI5T,KAAK4T,GAAK,aACdnG,UAAW,kBAEfzN,KAAK0ne,MAAQ1ne,KAAKwrD,OAAOh+C,cAAc,OAAQ,CAC3CC,UAAW,yDAA0D4J,MAAO,CACxER,KAAM,OAAQy5C,MAAOtwD,KAAK2ne,kBAAkB,aAGpD3ne,KAAKqsM,UAAYrsM,KAAKwrD,OAAOh+C,cAAc,OAAQ,CAAEC,UAAW,yBAChEzN,KAAKqsM,UAAU1+L,YAAY3N,KAAKune,QAChCvne,KAAKioe,KAAKt6d,YAAY3N,KAAKqsM,WAC3B,IAAI87R,EAAY,CACZ/je,QAASpE,KAAKune,OAAQ3nd,eAAgB,QAASgD,WAAY,CACvDhB,YAAa5hB,KAAK2ne,kBAAkB,UACpC50d,SAAU/S,KAAKwrD,OAAOz4C,WAG9B,OAAM2O,YAAYymd,EAAWnoe,KAAKwrD,OAAOh+C,eACzCxN,KAAKqsM,UAAU93L,cAAc,kBAAkB5G,YAAY3N,KAAK0ne,OASpE,OAPA1ne,KAAKooe,QAAUpoe,KAAKwrD,OAAOh+C,cAAc,MAAO,CAAEC,UAAW,cAC7DzN,KAAKqoe,KAAOroe,KAAKwrD,OAAOh+C,cAAc,MAAO,CACzCoG,GAAI5T,KAAK4T,GAAK5T,KAAKuM,QAAQsK,KAAO,gBAClCpJ,UAAW,4BAEfzN,KAAKooe,QAAQz6d,YAAY3N,KAAKqoe,MAC9Broe,KAAKioe,KAAKt6d,YAAY3N,KAAKooe,SACpBpoe,KAAKioe,MAEhB5C,EAAmB97d,UAAU6pN,WAAa,SAAU7mN,GAChD,IAAIghB,EAAO,CACP+Y,YAAa,QACb4uD,WAAYl1F,KAAKuM,QAAQw+B,MAAOu9b,WAAYtoe,KAAKuM,QAAQsK,KAAMC,QAAQ,GAEvEyxd,EAAc,cAGlB,GAFAh7c,EAAK,GAAKg7c,GAAevoe,KACzBA,KAAKwrD,OAAO/pC,OAAO,OAAsB8L,GACrCA,EAAKzW,OACLvK,EAAQuK,OAASyW,EAAKzW,WAD1B,CAIA9W,KAAK25K,UAAY,IAAI,OAAO,CACxB5gG,SAAS,EAAO5lE,QAASnT,KAAKioe,KAC9Bx5d,MAAOzO,KAAK0zN,YAAYllN,KAAKxO,MAC7BqO,UAAWrO,KAAKwrD,OAAOn9C,UACvBhH,OAAS,eAAkB,gBAAakF,EAAQ5C,OAAQ,cACjD3J,KAAKwrD,OAAOpnD,QAAQ+C,UAAUC,SAAS,YAAc,IAAM,IAClEuC,OAAQ3J,KAAKwrD,OAAOpnD,QAAS6sD,kBAAmB,CAAE9kD,OAAQ,QAC1D6T,QAAS,CAAC,CACF8gC,MAAO9gD,KAAKwoe,SAASh6d,KAAKxO,MAC1Bm7K,YAAa,CACThoK,QAASnT,KAAK2ne,kBAAkB3ne,KAAKm/S,QAAU,WAAa,gBAC5DpsS,SAAU/S,KAAKwrD,OAAOz4C,SAAW,aAAoB/S,KAAKwrD,OAAOz4C,SAAW,YAC5EqoK,WAAW,IAGnB,CACIt6H,MAAO9gD,KAAKwoe,SAASh6d,KAAKxO,MAC1Bm7K,YAAa,CAAEpoK,SAAU/S,KAAKwrD,OAAOz4C,SAAW,UAAiB/S,KAAKwrD,OAAOz4C,SAAW,SACpFI,QAASnT,KAAK2ne,kBAAkB3ne,KAAKm/S,QAAU,eAAiB,kBAE5Ep6Q,QAAS/kC,KAAK83Z,cAActpZ,KAAKxO,MACjCsO,KAAMtO,KAAK2gL,WAAWnyK,KAAKxO,MAC3B+S,SAAU/S,KAAKwrD,OAAOz4C,SAAW/S,KAAKwrD,OAAOz4C,SAAW,KAE5D,IAAIojH,EAAmB,mBACvBn2H,KAAK25K,UAAU,GAAKxjD,IAAoB,EACxCn2H,KAAKyoe,uBAAuBl8d,GAC5B,IAAIm8d,EAAc1oe,KAAKwrD,OAAOwtC,gBAAsD,aAApCh5F,KAAKwrD,OAAOwtC,eAAeniF,KACvE7W,KAAK2ne,kBAAkB,4BAA8B3ne,KAAK2ne,kBAAkB,yBAEhF,GADA3ne,KAAK2me,IAAI1zd,aAAa,aAAcy1d,GAChCn8d,EAAQo8d,mBAAoB,CAC5B,IAAIC,EAAgB3yd,SAAS1B,cAAc,4DAC3Cq0d,EAAcj7d,YAAY3N,KAAK2me,UAG/B3me,KAAKwrD,OAAOpnD,QAAQuJ,YAAY3N,KAAK2me,KAEzC3me,KAAK25K,UAAU9rJ,SAAS7tB,KAAK2me,KAC7B3me,KAAK25K,UAAUv1K,QAAQW,MAAM8gD,UAAYt5C,EAAQo8d,mBAAqB,OAAS3oe,KAAKuM,QAAQtF,OAAS,KACrGjH,KAAK25K,UAAUthK,OACf,IAAIlF,EAAUnT,KAAK25K,UAAUv1K,QAAQmQ,cAAc,kBACnDpB,EAAQxF,YAAY3N,KAAKioe,MACzBjoe,KAAK0b,aACA,eAAkB1b,KAAKwrD,OAAO84P,mBAAoE,YAA/CtkT,KAAKwrD,OAAO84P,iBAAiB+rG,eAC7ErwZ,KAAK2le,kBAGJ3le,KAAK2le,mBAAqB3le,KAAKwrD,OAAOwtC,gBAAkE,YAAhDh5F,KAAKwrD,OAAOwtC,eAAesrN,iBACxFtkT,KAAK6oe,YAGD7oe,KAAK2le,oBACL3le,KAAKqoe,KAAKtje,MAAMypG,UAAYxuG,KAAKuhI,cAAcvhI,KAAKqoe,MAAQ,MAEhE,eAAc,CAAE1+d,OAAQ3J,KAAKooe,QAASr1d,SAAU/S,KAAKwrD,OAAOz4C,SAAW/S,KAAKwrD,OAAOz4C,SAAW,MAAQ/S,KAAKwrD,OAAOh+C,eAClH,eAAYxN,KAAKooe,UAVjBpoe,KAAKwrD,OAAO+kW,iBAAY5qZ,EAAW3F,KAAK25K,UAAUv1K,SAYtDpE,KAAK8oe,eAETzD,EAAmB97d,UAAUk/d,uBAAyB,SAAUl8d,GACxDA,EAAQo8d,qBACR3oe,KAAK25K,UAAU35J,QAAU,CAAC,IAC1BhgB,KAAK25K,UAAU30K,SAAW,CAAEmJ,EAAG,GAAIC,EAAG,IACtCpO,KAAK25K,UAAUhwK,OAASsM,SAAS1B,cAAc,oDAC/CvU,KAAK25K,UAAUtyK,MAAQ,SAG/Bg+d,EAAmB97d,UAAUuuZ,cAAgB,SAAUtiZ,GAC/CxV,KAAKuM,QAAQo8d,mBACb3oe,KAAK25K,UAAUv1K,QAAQW,MAAMJ,KAAO,MAG/B,OAAQoT,SAIT/X,KAAK25K,UAAU30K,SAAW,CAAEmJ,EAAG,SAAUC,EAAG,UAH5C,eAAqBpO,KAAKuM,QAAQ5C,OAAQ3J,KAAK25K,WAMnD35K,KAAKuM,QAAQ2mF,OAAOqK,gBACpBv9F,KAAKwrD,OAAO/pC,OAAO,QAA4BjM,IAGvD6vd,EAAmB97d,UAAU+tZ,WAAa,SAAU/qZ,GAChDvM,KAAKy1F,YAAYlpF,GACjBvM,KAAKgoe,iBAAiBz7d,GACtBvM,KAAKozN,WAAW7mN,IAEpB84d,EAAmB97d,UAAUmqN,YAAc,WAIvC,GAHI1zN,KAAK2le,mBAAqB3le,KAAK8le,2BAA2B/7d,SAAW/J,KAAKuM,QAAQ6yF,WAClFp/F,KAAKuM,QAAQu9B,WAAWA,WAAWU,KAAOxqC,KAAK8le,4BAE/C9le,KAAK25K,YAAc35K,KAAK25K,UAAU3jF,YAAa,CAC/Ch2F,KAAK+oe,UAAW,EAChB,IAAIC,EAAoBhpe,KAAKuM,QAAQqnF,QAAQz7D,QAAO,SAAUutD,GAAO,OAAOA,EAAI6oF,2BAE5EmoB,EAAqB12L,KAAKwrD,OAAOkrI,mBACjCsyS,EAAkBj/d,SAAW,eAAkB2sL,IAAuBA,EAAmBuyS,oBACzFjpe,KAAKwrD,OAAOszC,gBAAgB,CAAC,wBAE5B9+F,KAAKwrD,OAAO/6C,SAAWzQ,KAAKwrD,OAAOn0B,aAA0C1xB,IAAhC3F,KAAKwrD,OAAOszC,iBAC1D,eAAuB9+F,KAAKwrD,OAAQ,CAAC,uBAEzCxrD,KAAKwrD,OAAO/pC,OAAO,QAAwB,CAAEspB,MAAO/qC,KAAKuM,QAAQw+B,QACjE/qC,KAAK+0D,eACL/0D,KAAK25K,UAAUr/J,UACf,gBAAOta,KAAK2me,KACZ3me,KAAK2me,IAAM,KACX3me,KAAKwrD,OAAO/pC,OAAO,QAA0B,MAQrD4jd,EAAmB97d,UAAU2/d,YAAc,SAAUxjZ,GAEjD,IAAIn4D,EAAO,CAAEyM,SAAUh6B,KAAMo8F,QAASp8F,KAAKkpe,YAAapyd,QAAQ,GAChE9W,KAAKwrD,OAAO/pC,OAAO,QAAoB8L,GACnCA,EAAKzW,QAGT9W,KAAKuM,QAAQ6vF,QAAQ,CAAE/zE,OAAQ,eAAgB0iB,MAAO26C,EAAMA,EAAI36C,MAAQ/qC,KAAKuM,QAAQw+B,SAEzFs6b,EAAmB97d,UAAUi/d,SAAW,SAAUhzd,GAC9C,GAAIxV,KAAKyle,YAAa,CAClB,GAAwC,UAAnCjwd,EAAE7L,OAAOmO,QAAQ/R,eAA6ByP,EAAE7L,OAAOxC,UAAUC,SAAS,kBAC7D,KAAdoO,EAAE8F,QACGtb,KAAK0le,0BACN1le,KAAKmpe,qBAGR,CACD,IAAI3nc,EAAOhsB,EAAE7L,OAAOs2C,WAAWrzB,YAAY7mB,cACvC/F,KAAK2ne,kBAAkB3ne,KAAKm/S,QAAU,WAAa,gBAAgBp5S,gBAAkBy7B,EAChFxhC,KAAK0le,0BACN1le,KAAKmpe,iBAGJnpe,KAAK2ne,kBAAkB,eAAe5he,gBAAkBy7B,GAC7DxhC,KAAKkpe,cAGblpe,KAAK0zN,mBAEAl+M,EAAE7L,QAAU6L,EAAE7L,OAAOs2C,YAC1BzqC,EAAE7L,OAAOs2C,WAAWrzB,YAAY7mB,gBAAkB/F,KAAK2ne,kBAAkB,gBAAgB5he,cACzF/F,KAAK0zN,cAEqC,UAAnCl+M,EAAE7L,OAAOmO,QAAQ/R,gBACxB/F,KAAKkpe,cACLlpe,KAAK0zN,eAEL1zN,KAAKuM,QAAQ2mF,OAAOqK,gBACpBv9F,KAAKwrD,OAAO/pC,OAAO,OAAmC,KAO9D4jd,EAAmB97d,UAAU4/d,eAAiB,WAC1C,IAAI38d,EAAQxM,KACRA,KAAK2le,oBACL3le,KAAKqoe,KAAKj1d,UAAY,GACtB,eAAepT,KAAKqoe,KAAMroe,KAAKmme,mBAAmBpwd,UAEtD,IAQIqzd,EARAx/X,EAAU,GAAG7zF,MAAMtJ,KAAKzM,KAAKqoe,KAAKn+c,iBAAiB,mDACnDgtP,EAAQttK,EACRy/X,EAAO,QACPC,EAAWtpe,KAAK25K,UAAUv1K,QAAQmQ,cAAc,mBAChD+0d,IACAtpe,KAAKuM,QAAQkjC,SAAW45b,EAAOC,EAAS1gT,cAAc,GAAG3iL,OAE7DjG,KAAKupe,eAA2C,aAA1Bvpe,KAAKuM,QAAQkjC,SAE9BzvC,KAAKuM,QAAQ27d,gBACdkB,EAAcppe,KAAKqsM,UAAU93L,cAAc,mBAE/C,IAYItO,EACAue,EACAza,EACAy/d,EAfAC,EAAUzpe,KAAKuM,QAAQu7d,mBACvBh1c,EAAW,CACXiY,MAAO/qC,KAAKuM,QAAQw+B,MAAOiJ,UAAWh0C,KAAKupe,eAAiB,MAAQ,KAAM39b,IAAK5rC,KAAKuM,QAAQq/B,IAC5F6D,SAAU45b,EAAMxyd,KAAM7W,KAAKuM,QAAQsK,KAAMysH,UAAWmmW,EAASn8b,aAActtC,KAAKuM,QAAQ+gC,cAExFo8b,EAAa1pe,KAAK2pe,WAAa//X,EAAQ7/F,QAAU/J,KAAK2pe,SAAW//X,EAAQ7/F,OAAS6/F,EAAQ7/F,OAC1F2/d,GAAcN,GAAqC,KAAtBA,EAAYnje,QACzCoje,EAAOrpe,KAAKupe,eAAiB,QAAU,WACvC3/X,EAAU,GAAG7zF,MAAMtJ,KAAKzM,KAAKqoe,KAAKn+c,iBAAiB,iCACnD4I,EAASkhB,UAAYh0C,KAAKupe,eAAiB,KAAO,MAClDz2c,EAAS2c,SAAW45b,GAMxB,IAAIO,EAAO,GACX,GAAKhgY,EAAQ7/F,SAAW/J,KAAK2pe,UAAaP,GAAeA,EAAYnje,OAA+B,KAAtBmje,EAAYnje,OACnFjG,KAAK2le,kBAAmB,CAC3B,GAAK3le,KAAK2le,kBAgBD3le,KAAK2le,mBACV3le,KAAK6pe,uBAAuBD,QAhB5B,IAAK,IAAIx/d,EAAI,EAAGA,EAAIw/F,EAAQ7/F,OAAQK,IAChCnE,EAAQjG,KAAK05G,OAAO,gBAAa9P,EAAQxhG,SAASgC,EAAEsP,WAAY,KAAM,YAAY1G,aAAa,QAC/Fw2d,EAAO,eAAO,GAAI,CAAEvje,MAAOA,GAAS6sB,GAChC7sB,IAAUA,EAAMyT,WAAW3P,SAC3By/d,EAAK/5b,SAAWi6b,EAAa,WAAa,SAEhC,KAAVzje,GAAgB,eAAkBA,GAClC2je,EAAOA,EAAKl4b,OAAO2zb,EAAmByE,4BAA4Bh3c,IAGlE82c,EAAKl1d,KAAK80d,GAEdxpe,KAAK+pe,sBAAsBP,GAMR,SAAtBxpe,KAAKuM,QAAQsK,MAAyC,aAAtB7W,KAAKuM,QAAQsK,OAAwBqgQ,EAAMntQ,SAC5EA,EAASmtQ,EAAMntQ,OAAS,EACxBya,EAAMxkB,KAAK05G,OAAO,gBAAaw9J,EAAM9uQ,SAAS2B,EAAO2P,WAAY,KAAM,YAAY1G,aAAa,QAC5F,eAAkBwR,IAAQkld,GAC1BE,EAAKl1d,KAAK,CACNq2B,MAAOjY,EAASiY,MAAOu4F,UAAWxwG,EAASwwG,UAAW7zF,SAAU,QAChEuE,UAAW,MAAO/tC,MAAO,QAIrC,IAAI+je,EAAmBhqe,KAAK2le,kBAAoB3le,KAAKioe,KAAK1zd,cAAc,kBACpEvU,KAAKqoe,KAAK9zd,cAAc,kBAC5B,GAAIy1d,GAAoBA,EAAiB7ie,UAAUC,SAAS,WAAY,CACpE,IAAI6ie,EAAsBjqe,KAAKule,kBAAkBvle,KAAKuM,QAAQw+B,OAC9D,IAAIk/b,EAcA,OALA,IARA,IAAI1wb,EAAU,SAAUrM,GACf08b,EAAKrvY,MAAK,SAAUpmE,GACrB,OAAOA,EACFluB,QAAUgke,EAAoB7he,SAAS8kC,EAAExzB,WAAY,KAAKzT,UAE/D2je,EAAKl1d,KAAKu1d,EAAoB7he,SAAS8kC,EAAExzB,WAAY,OAGpDwzB,EAAI,EAAGA,EAAI+8b,EAAoBlge,OAAQmjC,IAC5CqM,EAAQrM,GAOpB,GAAKltC,KAAK2le,mBAGL,GAAIiE,EAAK7/d,OACV/J,KAAKkqe,eAAeN,QAEnB,GAAI5pe,KAAKioe,KAAK1zd,cAAc,gBAAgBpN,UAAUC,SAAS,aAAewie,EAAK7/d,OAAQ,CAC5F,IAAIoge,EAAgBnqe,KAAKuM,QAAQs7d,gBAAgBttY,MAAK,SAAUt0F,GAC5D,OAAOuG,EAAMD,QAAQw+B,QAAU9kC,EAAM8kC,SAErCo/b,GACAnqe,KAAKkpe,oBAVTlpe,KAAKkqe,eAAeN,OAcvB,CACGO,EAAgBnqe,KAAKuM,QAAQs7d,gBAAgBttY,MAAK,SAAUt0F,GAC5D,OAAOuG,EAAMD,QAAQw+B,QAAU9kC,EAAM8kC,SAErCo/b,GACAnqe,KAAKkpe,gBAIjB7D,EAAmB97d,UAAUsge,uBAAyB,SAAUD,GAC5D,IAAI3je,EACJ,GAAIjG,KAAKwme,iCAAiCz8d,OACtC,IAAK,IAAIK,EAAI,EAAGA,EAAIpK,KAAKwme,iCAAiCz8d,OAAQK,IAAK,CACnE,IAAIk2F,EAAOtgG,KAAKwme,iCAAiCp8d,GAEjD,GADAnE,EAAQq6F,EAAKr6F,MAAQ,GACP,KAAVA,GAAgB,eAAkBA,GAAQ,CAC1C,IAAImke,EAAgB,CAAEp2b,UAAWssD,EAAKtsD,UAAWjJ,MAAOu1D,EAAKv1D,MAAOl0B,KAAMypF,EAAKzpF,KAAM+0B,IAAK00D,EAAK10D,IAAK6D,SAAU6wD,EAAK7wD,SAC/G6zF,UAAWhjC,EAAKgjC,UAAWh2F,aAAcgzD,EAAKhzD,cAClDs8b,EAAKl1d,KAAKxI,MAAM09d,EAAMvE,EAAmByE,4BAA4BM,SAGrER,EAAKl1d,KAAK1U,KAAKwme,iCAAiCp8d,IAEpDpK,KAAK+pe,sBAAsB/pe,KAAKwme,iCAAiCp8d,IAGzE,IAAKpK,KAAKsme,+BAAuD,KAAtBtme,KAAKune,OAAOthe,QAAmBjG,KAAKuM,QAAQ89d,6BAA8BT,EAAK7/d,QACtH,IAASK,EAAI,EAAGA,EAAIpK,KAAK+ne,8BAA8Bh+d,OAAQK,IAC3Dw/d,EAAKj2c,QAAQ3zB,KAAK+ne,8BAA8B39d,IAChDpK,KAAK+pe,sBAAsB/pe,KAAKule,kBAAkBvle,KAAKuM,QAAQw+B,OAAO3gC,IAGpD,KAAtBpK,KAAKune,OAAOthe,OAAkBjG,KAAKsme,gCAAiCtme,KAAKqme,yBACzErme,KAAKsqe,mBAAmB,aAAe,KACvCV,EAAKj2c,QAAQ3zB,KAAKsqe,oBAClBtqe,KAAK+pe,sBAAsB/pe,KAAKsqe,sBAGxCjF,EAAmB97d,UAAUwge,sBAAwB,SAAU/1b,GAC3D,IAAIzmB,EAAO,CACPyM,SAAUh6B,KAAMo8F,QAASp8F,KAAKmpe,eAAgB9sY,KAAMroD,EAAUjJ,MAAOw/b,KAAMv2b,EAAUA,UAAWw2b,KAAMx2b,EAAUvE,SAChHg7b,KAAMz2b,EAAUsvF,UAAWonW,KAAM12b,EAAU1G,aAAcq9b,KAAM32b,EAAU/tC,MAAO6Q,QAAQ,GAE5F9W,KAAKwrD,OAAO/pC,OAAO,QAAoB8L,GACnCA,EAAKzW,QAMbuud,EAAmByE,4BAA8B,SAAUh3c,GACvD,IAAI82c,EAAO,GAeX,MAdsB,WAAlB92c,EAASjc,MACT+yd,EAAKl1d,KAAK,CACNq2B,MAAOjY,EAASiY,MAAOuC,aAAcxa,EAASwa,aAAcg2F,UAAWxwG,EAASwwG,UAChF7zF,SAAU3c,EAAS2c,SAAUuE,UAAWlhB,EAASkhB,UAAW/tC,MAAO,KAG3E2je,EAAKl1d,KAAK,CACNq2B,MAAOjY,EAASiY,MAChBu4F,UAAWxwG,EAASwwG,UAAW7zF,SAAU3c,EAAS2c,SAAUuE,UAAWlhB,EAASkhB,UAAW/tC,MAAO,OAEtG2je,EAAKl1d,KAAK,CACNq2B,MAAOjY,EAASiY,MAAOu4F,UAAWxwG,EAASwwG,UAAW7zF,SAAU3c,EAAS2c,SACzEuE,UAAWlhB,EAASkhB,UAAW/tC,WAAON,IAEnCike,GAIXvE,EAAmB97d,UAAU2ge,eAAiB,SAAUnD,GACpD,IACI/yb,EADA42b,EAAW7D,EAAM,GAErB,IAAK,eAAkB6D,GAAW,CAC9B52b,EAAY42b,EAAS1D,YAAc0D,EAAS1D,YACxC,IAAI,OAAU0D,EAAS7/b,MAAO6/b,EAASn7b,SAAUm7b,EAAS3ke,OAAQ2ke,EAAStnW,UAAWsnW,EAASt9b,cACnG,IAAK,IAAIJ,EAAI,EAAGA,EAAI65b,EAAMh9d,OAAQmjC,IAC9B8G,OAA8DruC,IAAlDohe,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAKwtd,YAC1Clzb,EAAU+yb,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAKs6B,WAAW+yb,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAKwtd,aACzFlzb,EAAU+yb,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAKs6B,WAAW+yb,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAKqxB,MAAOg8b,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAK+1B,SAAUs3b,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAKzT,OAAQ8ge,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAK4pH,UAAWyjW,EAAM3+d,SAAS8kC,EAAExzB,WAAY,KAAK4zB,cAE7Q,IAAI/f,EAAO,CACPlF,OAAQ,YAAa4+c,iBAAkBF,EAAOh8b,MAAO/qC,KAAKuM,QAAQw+B,MAClEm8b,YAAa,OAAUt0b,GAAGoB,IAE9Bh0C,KAAKuM,QAAQ6vF,QAAQ7uE,KAG7B83c,EAAmB97d,UAAUu9H,gBAAkB,SAAUphD,GACrD,QAAOA,EAAIohD,iBAAkBphD,EAAIohD,mBAErCu+V,EAAmB97d,UAAUi+d,kBAAoB,WAC7C,IAAIh7d,EAAQxM,KACRwkB,EAAMxkB,KAAKune,OAAOthe,MAClBitF,EAASlzF,KAAKuM,QAAQ2mF,OACtBjpD,EAAQjqC,KAAK8mI,gBAAgB5zC,GAAUlzF,KAAKwle,gBAAgB1ob,QAAU98C,KAAKuM,QAAQ09B,MAAM6S,QACzF+tb,EAAe7qe,KAAKuM,QAAQ09B,MAAM6S,QAClCwjD,EAAOr2D,EAAMY,QAAQ1S,QAAO,SAAU3iB,GAAK,OAAOA,GAAc,YAATA,EAAEs1B,MAAqB,GAClFb,EAAMY,QAAU,GAChBggc,EAAahgc,QAAU,GACvB,IAAI+Q,EAAgC,WAAtB57C,KAAKuM,QAAQsK,MAAqBtH,WAAWiV,GAAQjV,WAAWiV,GAAOA,EACjFirB,EAAWzvC,KAAKuM,QAAQ6yF,SACD,WAAtBp/F,KAAKuM,QAAQsK,KAAoB,WAAa,QAAY7W,KAAKuM,QAAQsK,KAAO,WAAa,QAC5FysH,GAAY,EACZh2F,EAAettC,KAAKuM,QAAQ+gC,aAC5BvC,EAAQ/qC,KAAK8mI,gBAAgB5zC,GAAUA,EAAOo0C,gBAAkBp0C,EAAOnoD,MAC3E6Q,EAAqB,KAAXA,QAA4Bj2C,IAAXi2C,OAAwBj2C,EAAYi2C,EAC/D,IAKIkvb,EALAlB,EAAO,GACP92c,EAAW,CACXiY,MAAOA,EAAOiJ,UAAW,KAAMpI,IAAK5rC,KAAKuM,QAAQq/B,IACjD6D,SAAU,QAAS54B,KAAM7W,KAAKuM,QAAQsK,KAAMysH,UAAWA,EAAWh2F,aAAcA,GAGhFhuB,EAAatf,KAAKuM,QAAQ89B,YAAYyR,QAAQl/B,cAsBlD,GArB0B,YAAtB5c,KAAKuM,QAAQsK,YACElR,IAAXi2C,IACsF,IAAtF57C,KAAK2ne,kBAAkB,cAAc5he,cAAcmH,QAAQ0uC,EAAO71C,eAClE61C,EAAS,YAEOj2C,IAAXi2C,IACkF,IAAvF57C,KAAK2ne,kBAAkB,eAAe5he,cAAcmH,QAAQ0uC,EAAO71C,iBACnE61C,EAAS,cAEEj2C,IAAXi2C,IACsF,IAAtF57C,KAAK2ne,kBAAkB,cAAc5he,cAAcmH,QAAQ0uC,EAAO71C,gBAAyBuZ,GAEjFA,IAAVs8B,GAAiE,QAEjDj2C,IAAXi2C,IACkF,IAAvF57C,KAAK2ne,kBAAkB,eAAe5he,cAAcmH,QAAQ0uC,EAAO71C,gBAAyBuZ,IAElFA,IAAVs8B,GAAiE,GAErEnM,EAAW,UAEY,SAAtBzvC,KAAKuM,QAAQsK,MAAyC,aAAtB7W,KAAKuM,QAAQsK,MAA6C,aAAtB7W,KAAKuM,QAAQsK,OAAwB7W,KAAKuM,QAAQ2X,OAAQ,CAC/H,IAAI43R,EAAO,IAAI,OACX53R,EAA0C,kBAAzBlkB,KAAKuM,QAAc,OAAiBvM,KAAKuM,QAAQ2X,OAClElkB,KAAKuM,QAAQ2X,OAAOA,OAEpB03B,EADA13B,GACS43R,EAAKh3R,UAAUN,EAAK,CAAEN,OAAQA,KAG9B,IAAI1D,KAAKgE,GAEI,aAAtBxkB,KAAKuM,QAAQsK,OACb+kC,EAASA,EAAO56B,cAAgB,IAAM,gBAAQ46B,EAAOmwD,WAAa,GAAK,IAAM,gBAAQnwD,EAAO+vD,YAGpG3rG,KAAK6le,yBAA0B,EAC/B7le,KAAKmme,mBAAqB,GAC1Bnme,KAAKqme,wBAAyB,EAC9Brme,KAAKsme,+BAAgC,EACrCtme,KAAKume,kCAAmC,EACxCvme,KAAKgme,gBAAkB,EACvBhme,KAAKome,kBAAoB,EACzBpme,KAAKwme,iCAAmC,GACd,KAAtBxme,KAAKune,OAAOthe,OACZjG,KAAK+ne,8BAAgC/ne,KAAK2le,mBAAqB3le,KAAKule,kBAAkBvle,KAAKuM,QAAQ2mF,OAAOnoD,OAAS/qC,KAAKule,kBAAkBvle,KAAKuM,QAAQ2mF,OAAOnoD,OAAOh1B,QAAU,GAC/K/V,KAAKuM,QAAQw+d,qBAAuB/qe,KAAKuM,QAAQw+d,sBAGjD/qe,KAAK+ne,8BAAgC,GAEzC/ne,KAAKgre,YAAY/gc,GACjB,IAAI1c,EAAO,CACP+Y,YAAa,QACbiic,YAAavoe,KAAMk1F,WAAYnqD,EAAOmoD,OAAQA,EAC9CzjD,SAAUA,EAAU6zF,UAAWA,EAAWh2F,aAAcA,EAAc29b,kBAAmB,KACzFhhc,MAAOA,EAAOhkC,MAAO21C,GAErB57C,KAAK2le,mBAAqB3le,KAAKwrD,OAAOwtC,eAAem3D,aACrD5iI,EAAK09c,kBAAoBjre,KAAKwrD,OAAOwtC,eAAem3D,YAExDnwJ,KAAKwrD,OAAOj7C,QAAQ,OAAoBgd,GAAM,SAAU29c,GAIpD,GAFAA,EAAWz7b,SAAWy7b,EAAWz7b,SACjCq7b,EAAW,IAAI,OAAU//b,EAAOmgc,EAAWz7b,SAAUliB,EAAKtnB,MAAOile,EAAW5nW,UAAW4nW,EAAW59b,cACvE,SAAvB9gC,EAAMD,QAAQsK,MAA0C,aAAvBrK,EAAMD,QAAQsK,MAA8C,aAAvBrK,EAAMD,QAAQsK,KAAqB,CACzG44B,EAAW,QACX,IAAI07b,EAAY,CACZpgc,MAAOA,EAAO0E,SAAUA,EAAUxpC,MAAO21C,EAAQ0nF,UAAWA,EAC5Dh2F,aAAcA,GAEb,eAAkBsO,KACnBkvb,EAAW,eAAiBK,EAAW3+d,EAAMD,QAAQsK,OAG7D,GAAI2N,GAAsB,kBAARA,GAAoBhY,EAAMu8d,UACxCv8d,EAAMm7d,kBAAkB,UAAU5he,cAAcmH,QAAQsX,EAAIze,gBAAkB,EAAG,CACjF6je,EAAOA,EAAKl4b,OAAO2zb,EAAmByE,4BAA4Bh3c,IAClE,IAAIs4c,EAAmB/F,EAAmBgG,kBAAkBzB,GAC5DwB,EAAiBt2b,WAAWpgC,KAAKo2d,GACjCA,EAAWM,EACXnhc,EAAMN,MAAMyhc,QAEP5md,EAAIza,QACT+ge,EAAY,eAAkBxqY,GAA+BwqY,EAAvBA,EAASpnZ,IAAI4c,EAAK9qF,GACxDy0B,EAAMN,MAAMmhc,IAEN,eAAkBxqY,KACxBwqY,EAAWxqY,EAAK9qF,EAChBy0B,EAAMN,MAAM22D,EAAK9qF,IAErBhJ,EAAM89d,mBAAqBQ,EAC3BI,EAAWD,kBAAqB,eAAkBC,EAAWD,mBAAoD,IAA/BC,EAAWD,kBACzFz+d,EAAMm5d,mBAAqBn5d,EAAMg/C,OAAOwtC,eAAem3D,aAAe+6U,EAAWD,oBACjFz+d,EAAMg/C,OAAOwtC,eAAem3D,WAAa5iI,EAAK09c,mBAElD,IAAIpiW,EAAa,GAGjB,GAFA,eAAYr8H,EAAM47d,SAClB57d,EAAM6kZ,aAAc,EAChB7kZ,EAAMs6H,gBAAgB5zC,IAAW1uE,EAAIza,OAAQ,CAC7C,IAAIuhe,EAAW,WAAYp4Y,EAAOppD,WAAc,IAAI,OAAYopD,EAAOppD,WAAW/lC,QAC9EmvF,EAAOppD,WAEXwhc,EAAQzqW,aAAa52F,GAAOnW,MAAK,SAAUte,GACvC,IAAIkzH,EAAal8H,EAAMD,QAAQ2mF,OAAOw1C,WACtCl8H,EAAMD,QAAQ2mF,OAAOw1C,WAAalzH,EAAEzR,OACpCyI,EAAMg/C,OAAO/pC,OAAO,QAAsB,CAAEuyB,UAAW60F,EAAY31C,OAAQA,IACvE21C,EAAW70F,UAAUc,WAAW/qC,OAChC8ge,EAAalhc,MAAMk/F,EAAW70F,WAG9BxnC,EAAM6kZ,aAAc,EAExB7kZ,EAAMD,QAAQ2mF,OAAOw1C,WAAaA,EAC9Bl8H,EAAMm5d,mBACNn5d,EAAMo5d,sBAAsB,eAAkBp5d,EAAM++d,UACpD/+d,EAAMg/d,0BAA0BX,GAChCA,EAAaxvY,iBAGbwvY,EAAarhc,KAAK0hc,EAAWD,mBAEjCz+d,EAAMi9B,OAAOyhc,EAAYL,WAIzBr+d,EAAMm5d,mBAAqBn5d,EAAMg/C,OAAOwtC,eAAem3D,YACvD3jJ,EAAMo5d,sBAAsB,eAAkBp5d,EAAM++d,UACpD/+d,EAAMg/d,0BAA0Bvhc,GAChCA,EAAMoxD,iBAGNpxD,EAAMT,KAAK0hc,EAAWD,mBAE1Bz+d,EAAMi9B,OAAOyhc,EAAYjhc,OAIrCo7b,EAAmB97d,UAAUkgC,OAAS,SAAUlc,EAAM0c,GAC9CjqC,KAAKwrD,OAAO1hB,YAAc,WAAY9pC,KAAKwrD,OAAO1hB,WAClD9pC,KAAKyre,YAAYl+c,EAAM0c,GAGvBjqC,KAAK0re,cAAczhc,IAG3Bo7b,EAAmB97d,UAAUoie,qBAAuB,SAAU/3Y,EAAS0xY,GAMnE,IALA,IAAIxwb,EAAauwb,EAAmBx+X,aAAajT,EAAS0xY,GACtD/kY,EAAgB,GAChBsoC,EAAa,GACb+iW,OAA8Cjme,IAArC3F,KAAKwrD,OAAO67E,qBACrBO,EAAgBgkW,EAAS5re,KAAKwrD,OAAO67E,uBAAyB,GACzDnxH,EAAK,EAAGlJ,EAAKjE,OAAOmU,KAAK43B,GAAa5+B,EAAKlJ,EAAGjD,OAAQmM,IAAM,CACjE,IAAIiH,EAAOnQ,EAAGkJ,GACVwvE,OAAM,EACNkmZ,IAAW5re,KAAKwrD,OAAO2nC,iBAAiBh2E,KACxCuoE,EAAM,eAA2BvoE,EAAMyqH,IAEvCliD,GACA1lF,KAAKwrD,OAAO/pC,OAAO,QAAsB,CAAEuyB,UAAW60F,EAAY31C,OAAQxN,IACtEmjD,EAAW70F,UAAUc,WAAW/qC,QAChCw2F,EAAc7rF,KAAK,OAAUk+B,GAAGi2F,EAAW70F,UAAUc,cAIzDyrD,EAAc7rF,KAAKogC,EAAW,GAAK33B,IAG3C,OAAOojF,EAAcx2F,QAAU,OAAU25E,IAAI6c,IAEjD8kY,EAAmB97d,UAAU0xC,SAAW,WACpC,OAAOj7C,KAAKwrD,OAAOvQ,SAAWj7C,KAAKwrD,OAAOvQ,WAAW6B,QAAU,IAAI,QAEvEuob,EAAmB97d,UAAUu/d,WAAa,WACtC,IAAIt8d,EAAQxM,KACZA,KAAK6re,aAAc,EACnB,IAAI5hc,EAAQjqC,KAAKi7C,WACjBhR,EAAMoxD,gBACNr7F,KAAKgre,YAAY/gc,GACjB,IAAI1c,EAAO,CACP+Y,YAAa,QAA4B2D,MAAOA,EAAOghc,kBAAmB,MAE1E1C,EAAc,cAClBh7c,EAAK,GAAKg7c,GAAevoe,KACrBA,KAAK2le,mBAAqB3le,KAAKwrD,OAAOwtC,eAAem3D,aACrD5iI,EAAK09c,kBAAoBjre,KAAKwrD,OAAOwtC,eAAem3D,YAExDnwJ,KAAKwrD,OAAOj7C,QAAQ,OAAoBgd,GAAM,SAAUA,GACpDA,EAAK09c,kBAAqB,eAAkB19c,EAAK09c,mBAA8C,IAAzB19c,EAAK09c,kBACvEz+d,EAAMm5d,mBAAqBn5d,EAAMg/C,OAAOwtC,eAAem3D,aAAe5iI,EAAK09c,oBAC3Ez+d,EAAMg/C,OAAOwtC,eAAem3D,WAAa5iI,EAAK09c,mBAE7Cz+d,EAAMm5d,mBACP17b,EAAMT,KAAKjc,EAAK09c,mBAEf19c,EAAK0c,MAAMsG,UAAUxmC,SAAUyC,EAAMm5d,oBACtCn5d,EAAMq/d,aAAc,EACpBr/d,EAAMs/d,cAAc7hc,IAEpBz9B,EAAMm5d,oBACNn5d,EAAMo5d,sBAAsB,eAAkBp5d,EAAM++d,UACpD/+d,EAAMg/d,0BAA0Bvhc,IAEhCz9B,EAAMg/C,OAAO1hB,YAAc,WAAYt9B,EAAMg/C,OAAO1hB,WACpDt9B,EAAMi/d,YAAYl+c,EAAM0c,GAGxBz9B,EAAMu/d,qBAAqB9hc,GAAO,OAI9Co7b,EAAmB97d,UAAUyhe,YAAc,SAAU/gc,GACjD,IACIj9B,EADAR,EAAQxM,KAERgse,EAAiB,OAAS5oW,SAASpjI,KAAKuM,QAAQs7d,gBAAiB,SAOrE,GANImE,EAAe9+d,QAAQlN,KAAKuM,QAAQ2mF,OAAOnoD,SAAW,IACtDihc,EAAiBA,EAAet6b,OAAO1xC,KAAKuM,QAAQ2mF,OAAOnoD,QAE1D/qC,KAAK2le,mBACN17b,EAAMm5F,SAAS4oW,GAEfhse,KAAK2le,oBAAsB3le,KAAKuM,QAAQ6yF,UAAkC,KAAtBp/F,KAAKune,OAAOthe,MAChEjG,KAAKuM,QAAQu9B,WAAa9pC,KAAKuM,QAAQu9B,sBAAsB,OACzD9pC,KAAKuM,QAAQu9B,WAAa,IAAI,OAAY9pC,KAAKuM,QAAQu9B,YAC3D9pC,KAAK8le,2BAA6B9le,KAAKuM,QAAQu9B,WAAWA,WAAWU,KAAKz0B,QAC1E/V,KAAKuM,QAAQu9B,WAAWA,WAAWU,KAAO,OAAS44F,UAAUp2H,EAAKhN,KAAKuM,QAAQ0/d,4BAA4Bv6b,OAAOxlC,MAAMc,EAAIhN,KAAK8le,4BAA6B9le,KAAKuM,QAAQ2mF,OAAOnoD,OAAO,GACrL/qC,KAAK8mI,gBAAgB9mI,KAAKuM,QAAQ2mF,UAClClzF,KAAKuM,QAAQ2mF,OAAOppD,WAAa9pC,KAAKuM,QAAQ2mF,OAAOppD,sBAAsB,OACvE9pC,KAAKuM,QAAQ2mF,OAAOppD,WAAa,IAAI,OAAY9pC,KAAKuM,QAAQ2mF,OAAOppD,YACzE9pC,KAAKuM,QAAQu9B,WAAWA,WAAWU,KAAOxqC,KAAKuM,QAAQu9B,WAAWA,WAAWU,KAAKl7B,KAAI,SAAU8oB,EAAMhuB,GAClG,OAAOrB,OAAOiqD,OAAO,GAAI56B,EAAM5rB,EAAMD,QAAQ2mF,OAAOppD,WAAWA,WAAWU,KAAKpgC,aAItF,GAAIpK,KAAK2le,mBAAqB3le,KAAKuM,QAAQ6yF,SAAU,CACtDn1D,EAAMha,OAAOjwB,KAAKuM,QAAQ2mF,OAAOnoD,OACjCd,EAAMZ,OAAOrpC,KAAKuM,QAAQ2mF,OAAOnoD,MAAO,aACxC,IAAIzrB,EAAatf,KAAKuM,QAAQ89B,YAAYyR,QAAQl/B,cAC9C0C,GAAcA,MAAkC,mBAAjBA,KAAsD,kBAAjBA,KAChD,sBAAjBA,KAAyD,mBAAjBA,KAAsD,iBAAjBA,MAChF2qB,EAAMm5F,SAAS4oW,GAGvB,OAAO/hc,GAEXo7b,EAAmB97d,UAAUkie,YAAc,SAAUl+c,EAAM0c,GACvD,IAAIz9B,EAAQxM,KACRkse,EAAS,eAAa3+c,EAAM0c,GAChCjqC,KAAKwrD,OAAOj7C,QAAQ,QAAwB27d,EAAOtyb,OACnD,IAAIovF,EAAMkjW,EAAO/qS,SACjBn4D,EAAI11G,QAAQQ,MAAK,SAAUte,GACvBhJ,EAAM8/Z,YAAY92Z,OAG1B6vd,EAAmB97d,UAAU4ie,kCAAoC,WAC7D,OAAal+d,OAAOjO,KAAKqoe,KAAM,SAAUroe,KAAKose,wBAElD/G,EAAmB97d,UAAU8ie,gCAAkC,SAAU72d,GACrE,IAAIhJ,EAAQxM,KACZ,OAAamU,IAAInU,KAAKqoe,KAAM,SAAUroe,KAAKose,sBAAuBpse,MAClE,IAAI2J,EAAS3J,KAAKqoe,KACd1+d,EAAO2e,SAASve,OAAS,IAAMJ,EAAOvE,WAAauE,EAAO07C,aAAe17C,EAAOoI,cAAgBpI,EAAOvE,WAAa,IACpHpF,KAAKose,wBAET,OAAO/8a,MAAQ55C,YAAW,WAAcjJ,EAAM+8C,aAAa/zC,GAAI,OAAO65C,MAAQ,OAAS,IAE3Fg2a,EAAmB97d,UAAUg4H,cAAgB,SAAUn9H,GACnD,IAAIkoe,EAAU,eAAc,MAAO,CAAE7+d,UAAW,WAAY8J,OAAQ,uBACpE+0d,EAAQl5d,UAAY,4FACpBhP,EAAQuJ,YAAY2+d,GACpB,IAAIjmI,EAAOimI,EAAQjme,wBACnBjC,EAAQywD,YAAYy3a,GACpB,IAAI/+R,EAAa97L,KAAKC,MAAM20V,EAAKp/V,QACjC,OAAOsmM,GAEX83R,EAAmB97d,UAAUs7a,mBAAqB,WAC9C,MAAO,0EAEXwgD,EAAmB97d,UAAUs/d,SAAW,WACpC,IACI0D,EADA5nD,EAAe,EAEf6nD,EAAWxse,KAAKwrD,OAAOh+C,cAAc,MAAO,CAAEoG,GAAI5T,KAAK4T,GAAK5T,KAAKuM,QAAQsK,KAAO,oBAChFpJ,UAAW,qDAAsD8J,OAAQ,iBACzEk1d,EAAczse,KAAKqoe,KAEvB,GADAroe,KAAK0se,aACDD,EAAa,CACb,IAAIz9d,EAAgBE,iBAAiBu9d,GACjCxle,EAASwle,EAAYnkd,SAASve,OAAS3B,SAAS4G,EAAc/H,QAC9DwK,KAAK6sD,MAAMl2D,SAAS4G,EAAc/H,OAAO5G,MAAM,MAAM,KAAO,EAC5D68M,GAAkBl9M,KAAKm/S,SAAYstL,EAAYnkd,SAASve,QAAW/J,KAAK2me,IAAIx/d,UAAUC,SAAS,iBAC1F8H,iBAAiBlP,KAAK2me,IAAIpyd,cAAc,mBAAmB2oM,gBAAhE,GACJsvR,EAASzne,MAAMgpG,QAAU,UAAY/+F,EAAc3H,MAAQ,iBAAmB2H,EAAcq+C,UAAY,aACpGpmD,EAAS,eAAiB+H,EAAc4iD,OAAS,mBAAqB5iD,EAAc29d,YAAc,mBAChG39d,EAAc+/I,YAAc,mBAAqB//I,EAAc49d,YAAc,2CAC/E1vR,EAAkB,IACtB,IAAItvD,EAAW5tJ,KAAKuhI,cAAckrW,GAClC9nD,EAAelza,KAAK6sD,MAAMr3D,EAAS2mJ,GACnC+2R,EAAe8nD,EAAYnkd,SAASve,OAAS46a,EAAe8nD,EAAYnkd,SAASve,OAAS46a,EAC1F4nD,EAAiB3+U,EAAW,KAEhC,IAAIg3R,EAAe,kEAAoE2nD,EAApE,uFAEbvse,KAAK6kb,qBAAuB7kb,KAAK6kb,qBAAuB,eAE9D,GADA2nD,EAASp5d,UAAY,IAChBq5d,EAAYnkd,SAASve,OAAQ,CAC9B/J,KAAKooe,QAAQzoT,mBAAmB,cAAeilQ,GAC/C,IAAIE,EAAW,GAAG/ua,MAAMtJ,KAAKzM,KAAKooe,QAAQ/ie,cACrC6kB,iBAAiB,yFACtB46Z,EAAS,GAAG39a,UAAUgN,IAAI,iCAC1B2wa,EAAS,GAAG39a,UAAUgN,IAAI,sCAE9BnU,KAAKooe,QAAQp7c,aAAaw/c,EAAUxse,KAAKqoe,MACzC,IAAK,IAAIj+d,EAAI,EAAGu6a,GAAgBv6a,EAAIu6a,EAAcv6a,IAAK,CACnDoie,EAASp5d,WAAawxa,EAClBE,EAAW,GAAG/ua,MAAMtJ,KAAK+/d,EACxBtid,iBAAiB,yFACtB46Z,EAAS,GAAG39a,UAAUgN,IAAI,iCAC1B2wa,EAAS,GAAG39a,UAAUgN,IAAI,sCAE1BnU,KAAKqoe,OACLmE,EAASpne,UAAYpF,KAAKqoe,KAAKjje,YAGvCige,EAAmB97d,UAAUmje,WAAa,WACtC,IAAIG,EAAY7se,KAAK25K,UAAUv1K,QAAQ8lB,iBAAiB,kBACxD,GAAI2id,EAAU9ie,OACV,IAAK,IAAIK,EAAI,EAAGA,EAAIyie,EAAU9ie,OAAQK,IAClC,gBAAOyie,EAAUzie,IAGzB,IAAI0ie,EAAa9se,KAAK25K,UAAUv1K,QAAQmQ,cAAc,8BAClDu4d,GACA,gBAAO9se,KAAK25K,UAAUv1K,QAAQmQ,cAAc,gCAGpD8wd,EAAmB97d,UAAU6ie,sBAAwB,WACjD,IAAIzie,EAAS3J,KAAKqoe,KACd1+d,EAAOvE,WAAauE,EAAO07C,aAAe17C,EAAOoI,eAAiB/R,KAAK+le,+BACpE/le,KAAKmme,mBAAmBp8d,QAAW/J,KAAKgme,gBAAkBhme,KAAKwrD,OAAOwtC,eAAem3D,YACrFnwJ,KAAKqoe,KAAK//c,SAASve,SAAmD,EAAxC/J,KAAKwrD,OAAOwtC,eAAem3D,cACvDnwJ,KAAKome,mBAAqBpme,KAAKome,kBAAqBpme,KAAKgme,gBAAkBhme,KAAKwrD,OAAOwtC,eAAem3D,aAC3GnwJ,KAAKwre,4BACLxre,KAAKkme,4BAA8B,QAE9Bv8d,EAAOvE,WAAauE,EAAO07C,aAAe17C,EAAOoI,eAAiB/R,KAAK+le,+BACzE/le,KAAKmme,mBAAmBp8d,OAAU/J,KAAKgme,gBAAkBhme,KAAKwrD,OAAOwtC,eAAem3D,YACpFnwJ,KAAKqoe,KAAK//c,SAASve,SAAmD,EAAxC/J,KAAKwrD,OAAOwtC,eAAem3D,YAC5DnwJ,KAAK+se,uBAAwB,GAAGh3d,MAAMtJ,KAAKzM,KAAKqoe,KAAK//c,UAAWvT,OAAO,EAAG/U,KAAKwrD,OAAOwtC,eAAem3D,aACrGnwJ,KAAKgme,iBAAwD,SAArChme,KAAKkme,4BAAyClme,KAAKwrD,OAAOwtC,eAAem3D,WACpD,EAAxCnwJ,KAAKwrD,OAAOwtC,eAAem3D,WAChC,eAAenwJ,KAAKqoe,KAAMroe,KAAKmme,mBAAmBpwd,MAAM/V,KAAKgme,gBAAiBhme,KAAKwrD,OAAOwtC,eAAem3D,WAAanwJ,KAAKgme,kBAC3Hhme,KAAKkme,4BAA8B,QAET,IAArBv8d,EAAOvE,YAAoBpF,KAAK4le,sBAAwB5le,KAAK6le,yBAA2B7le,KAAKgme,iBAC/Fhme,KAAKmme,mBAAmBp8d,QAAU/J,KAAKmme,mBAAmBp8d,OAAiD,EAAxC/J,KAAKwrD,OAAOwtC,eAAem3D,YAC9FnwJ,KAAKqoe,KAAK//c,SAASve,SAAmD,EAAxC/J,KAAKwrD,OAAOwtC,eAAem3D,YAC5DnwJ,KAAK+se,uBAAwB,GAAGh3d,MAAMtJ,KAAKzM,KAAKqoe,KAAK//c,UAAWvT,OAAgD,EAAxC/U,KAAKwrD,OAAOwtC,eAAem3D,WAAiBnwJ,KAAKwrD,OAAOwtC,eAAem3D,aAC/InwJ,KAAKgme,iBAAwD,OAArChme,KAAKkme,4BAAuClme,KAAKwrD,OAAOwtC,eAAem3D,WAClD,EAAxCnwJ,KAAKwrD,OAAOwtC,eAAem3D,WAChCnwJ,KAAKgte,uBAAuB,GAAGj3d,MAAMtJ,KAAKzM,KAAKmme,mBAAmBpwd,MAAM/V,KAAKgme,gBAAiBhme,KAAKgme,gBAAkBhme,KAAKwrD,OAAOwtC,eAAem3D,cAChJnwJ,KAAKqoe,KAAKjje,UAAYpF,KAAKime,yBAC3Bjme,KAAKkme,4BAA8B,MAET,IAArBv8d,EAAOvE,YAAoBpF,KAAK4le,sBAAwB5le,KAAK6le,yBAA2B7le,KAAKgme,iBAC/Fhme,KAAKmme,mBAAmBp8d,QAAU/J,KAAKqoe,KAAK//c,SAASve,OAAiD,EAAxC/J,KAAKwrD,OAAOwtC,eAAem3D,aAC5FnwJ,KAAK+se,uBAAwB,GAAGh3d,MAAMtJ,KAAKzM,KAAKqoe,KAAK//c,UAAWvT,OAAgD,EAAxC/U,KAAKwrD,OAAOwtC,eAAem3D,WAAiBnwJ,KAAKome,kBAAoBpme,KAAKwrD,OAAOwtC,eAAem3D,aACxKnwJ,KAAKgme,iBAAmBv0d,KAAK6sD,MAAMt+D,KAAKome,kBAAoBpme,KAAKwrD,OAAOwtC,eAAem3D,YAAc,GACjGnwJ,KAAKwrD,OAAOwtC,eAAem3D,WAC/BnwJ,KAAKgte,uBAAuB,GAAGj3d,MAAMtJ,KAAKzM,KAAKmme,mBAAmBpwd,MAAM/V,KAAKgme,gBAAiBhme,KAAKgme,gBAAkBhme,KAAKwrD,OAAOwtC,eAAem3D,cAChJnwJ,KAAKqoe,KAAKjje,UAAYpF,KAAKime,yBAC3Bjme,KAAKkme,4BAA8B,OAG3Cb,EAAmB97d,UAAUwje,uBAAyB,SAAUnoY,GAC5D,IAAK,IAAIx6F,EAAI,EAAGA,EAAIw6F,EAAW76F,OAAQK,IACnC,gBAAOw6F,EAAWx6F,KAG1Bi7d,EAAmB97d,UAAUyje,uBAAyB,SAAUz7Q,GAC5D,IAAK,IAAInnN,EAAI,EAAGA,EAAImnN,EAAWxnN,OAAQK,IACnCpK,KAAKqoe,KAAKr7c,aAAaukM,EAAWnnN,GAAIpK,KAAKqoe,KAAK//c,SAASle,KAGjEi7d,EAAmB97d,UAAUiie,0BAA4B,SAAUvhc,GAC/D,IAAIz9B,EAAQxM,MACPA,KAAK4le,qBAAuB5le,KAAKwrD,OAAOwtC,gBAAkE,YAAhDh5F,KAAKwrD,OAAOwtC,eAAesrN,iBACtF7uS,YAAW,WACHjJ,EAAMu5d,+BACNv5d,EAAMq8d,aAEX,KAEG7oe,KAAK4le,sBACX,eAAc,CAAEj8d,OAAQ3J,KAAKooe,QAASr1d,SAAU/S,KAAKwrD,OAAOz4C,SAAW/S,KAAKwrD,OAAOz4C,SAAW,MAAQ/S,KAAKwrD,OAAOh+C,eAClH,eAAYxN,KAAKooe,UAErB,IAAIliW,EAAQ,KACZ,GAAIlmI,KAAKite,eAAiBjte,KAAKite,cAAcpic,SAAW7qC,KAAKite,cAAcpic,QAAQ9gC,OAC/E,IAAK,IAAIK,EAAI,EAAGA,EAAIpK,KAAKite,cAAcpic,QAAQ9gC,OAAQK,IACD,WAA9CpK,KAAKite,cAAcpic,QAAQzgC,GAAG,GAAK87H,IACc,WAA9ClmI,KAAKite,cAAcpic,QAAQzgC,GAAG,GAAK87H,KACtClmI,KAAKite,cAAcpic,QAAQ91B,OAAO3K,EAAG,GACrCA,KAIZ,IAAI8ie,IAAajjc,EACjBA,EAAQA,GAAgBjqC,KAAKite,cACzBjte,KAAK4le,qBAAuB5le,KAAK6le,wBACjC7le,KAAKgme,gBAAkB,EAGvBhme,KAAKgme,iBAAmBhme,KAAKwrD,OAAOwtC,eAAem3D,WAEvDlmH,EAAMX,KAAKtpC,KAAKgme,iBACZhme,KAAK4le,qBAAuB5le,KAAK6le,yBACjC57b,EAAMT,KAA6C,EAAxCxpC,KAAKwrD,OAAOwtC,eAAem3D,YACtCnwJ,KAAKgme,iBAA2D,EAAxChme,KAAKwrD,OAAOwtC,eAAem3D,YAGnDlmH,EAAMT,KAAKxpC,KAAKwrD,OAAOwtC,eAAem3D,YAErC+8U,IACDlte,KAAK+re,qBAAqB9hc,GAC1BjqC,KAAK+le,+BAAgC,IAG7CV,EAAmB97d,UAAUwie,qBAAuB,SAAU9hc,EAAO02H,GACjE,IAAIn0J,EAAQxM,KACZA,KAAKuM,QAAQu9B,WAAa9pC,KAAKuM,QAAQu9B,sBAAsB,OACzD9pC,KAAKuM,QAAQu9B,WAAa,IAAI,OAAY9pC,KAAKuM,QAAQu9B,YAC3D,IAAIqjc,EAAa,GACbC,EAAW,GACf,GAAIpte,KAAK8mI,gBAAgB9mI,KAAKuM,QAAQ2mF,SAAWytE,EAAW,CACxD,IAAI2qU,EAAW,WAAYtre,KAAKuM,QAAQ2mF,OAAOppD,WAC3C,IAAI,OAAY9pC,KAAKuM,QAAQ2mF,OAAOppD,WAAW/lC,QAC/C/D,KAAKuM,QAAQ2mF,OAAOppD,WACxB9pC,KAAKwle,gBAAgBvxc,OAASgW,EAAMhW,OACpCk5c,EAAWz4d,KAAK42d,EAAQzqW,aAAa7gI,KAAKwle,kBAC1C4H,EAAS14d,MAAK,SAAUyf,GAAQ,OAAO3nB,EAAMu8H,eAAiB50G,KAclE,GAZIn0B,KAAK2le,oBACL3le,KAAKite,cAAgBhjc,EAAM6S,QACvB98C,KAAK4le,qBACL5le,KAAKqoe,KAAKlhe,UAAUgN,IAAI,6BACxB,OAAaA,IAAInU,KAAKqoe,KAAM,SAAUroe,KAAKose,sBAAuBpse,MAClE,OAAamU,IAAInU,KAAKqoe,KAAM,UAAWroe,KAAKqse,gCAAiCrse,MAC7E,OAAamU,IAAInU,KAAKqoe,KAAM,YAAaroe,KAAKmse,kCAAmCnse,OAE5EA,KAAK6le,0BACV7le,KAAKqoe,KAAKj1d,UAAY,KAG1BpT,KAAK2le,mBAAqB3le,KAAK4le,sBAAwB5le,KAAKuM,QAAQ6yF,SAAU,CAC9E,IAAIr0D,EAAQ/qC,KAAK8mI,gBAAgB9mI,KAAKuM,QAAQ2mF,QAAUlzF,KAAKuM,QAAQ+6H,gBACjEtnI,KAAKuM,QAAQ2mF,OAAOnoD,MACxB/qC,KAAKuM,QAAQu9B,WAAW+2F,cAAa,IAAI,QAAQx3F,OAAO0B,EAAO,OAAS8iI,cAAc/5I,MAAK,SAAUte,GACjGhJ,EAAMD,QAAQu9B,WAAWA,WAAWU,KAAOh1B,EAAEzR,OAC7CyI,EAAM6ge,uBAAuBpjc,EAAOkjc,EAAYC,WAIpDpte,KAAKqte,uBAAuBpjc,EAAOkjc,EAAYC,IAGvD/H,EAAmB97d,UAAU8je,uBAAyB,SAAUpjc,EAAOkjc,EAAYC,GAC/E,IAAI5ge,EAAQxM,KACZmte,EAAWz4d,KAAK1U,KAAKuM,QAAQu9B,WAAW+2F,aAAa52F,IACrDmjc,EAAS14d,KAAK1U,KAAKssa,YAAY99Z,KAAKxO,OACpC,IAAIoK,EAAI,EACRmpB,QAAQg/G,IAAI46V,GAAYr5c,MAAK,SAAUte,GACnChJ,EAAMu5d,+BAAgCv5d,EAAMm5d,mBAA4Bn5d,EAAMu5d,8BAC9E,IAAK,IAAI74b,EAAI,EAAGA,EAAI13B,EAAEzL,OAAQmjC,IAC1B1gC,EAAM45d,kBAAoB55d,EAAMm5d,oBAAsBn5d,EAAM45d,kBAAoB5wd,EAAE03B,GAAGxD,MAAQl9B,EAAM45d,kBACnGgH,EAAShje,KAAKoL,EAAEpN,SAAS8kC,EAAExzB,WAAY,KAAK3V,WAEjD08F,OAAM,WACDj0F,EAAMm5d,mBAAqBn5d,EAAMg/C,OAAOwtC,gBAAmE,YAAjDxsF,EAAMg/C,OAAOwtC,eAAesrN,kBACtF93S,EAAMg/C,OAAO+kW,iBAAY5qZ,EAAW6G,EAAMmtK,UAAUv1K,aAIhEihe,EAAmB97d,UAAU+ia,YAAc,SAAU92Z,GACjD,GAAKxV,KAAK4le,sBAAuB5le,KAAKome,qBAAuBpme,KAAKgme,iBAAmBhme,KAAKome,oBAClFpme,KAAK6le,yBAA0C,IAAbrwd,EAAEzL,QAD5C,CAIA/J,KAAKure,SAAW/1d,EAChB,IAAI83d,EAAQ,CAAExjc,WAAY9pC,KAAKure,SAAU1qW,cAAc,EAAM91F,MAAO/qC,KAAKuM,QAAQw+B,OAEjF,GADA/qC,KAAKwrD,OAAO/pC,OAAO,OAA+B6rd,GAC9CA,EAAMzsW,aAAc,CACpB,IAAI52F,EAAQ,IAAI,OACXjqC,KAAK6re,cACN7re,KAAKsle,gBAAiB,EACtBtle,KAAK8re,cAAc7hc,GACnBjqC,KAAKsle,gBAAiB,GAG1B,IAAIvhe,EAAS,IAAI,OAAYupe,EAAMxjc,YAAYkqC,aAAa/pC,GACxDy7C,EAAM1lF,KAAKuM,QAAQ2mF,OACvBlzF,KAAKy6S,aAAe4qL,EAAmBkI,YAAYxpe,EAAQ/D,KAAKuM,QAAQw+B,MAAO26C,EAAK1lF,KAAK+oI,eAAgB/oI,MAAM8rC,SAAW,GAE9H,IAAI3X,EAAOm5c,EAAMzsW,aAAe7gI,KAAKy6S,aAAe6yL,EAAMxjc,WAC1D9pC,KAAKwte,kBAAkB,MAAM,EAAMr5c,EAAMm5c,GACrCtte,KAAKune,SAAYvne,KAAK2le,mBAAqB3le,KAAK4le,sBAAyB5le,KAAK2le,oBAC9E3le,KAAKune,OAAO9/c,SAEZznB,KAAK4le,qBAAuB5le,KAAK6le,2BACjC7le,KAAK4le,qBAAsB,EAC3B5le,KAAK6le,yBAA0B,GAEnC,IAAIt4c,EAAO,CACP+Y,YAAa,QACb4uD,WAAYl1F,KAAKuM,QAAQw+B,MAAOu9b,WAAYtoe,KAAKuM,QAAQsK,MAEzD0xd,EAAc,cAClBh7c,EAAK,GAAKg7c,GAAevoe,KACzBA,KAAKwrD,OAAO/pC,OAAO,OAAyB8L,GACxCvtB,KAAK0le,0BACL,eAAY1le,KAAKooe,WAGzB/C,EAAmB97d,UAAUuie,cAAgB,SAAU7hc,GACnD,GAAIjqC,KAAKwrD,OAAO0tC,gBAAkBl5F,KAAKwrD,OAAO0tC,eAAer1F,IAAIkG,OAAQ,CACrE,IAAIm9H,EAAYlnI,KAAKwrD,OAAO0tC,eACxB1pD,EAAS03F,EAAU13F,OAAOzlC,OAASm9H,EAAU13F,OAASxvC,KAAKuM,QAAQqnF,QAAQtkF,KAAI,SAAU8/E,GAAK,OAAOA,EAAErkD,SAC3Gd,EAAMR,OAAOy9F,EAAUrjI,IAAK2rC,EAAQ03F,EAAUz3F,SAAUy3F,EAAU75F,WAAY65F,EAAU55F,cAE5F,GAAKttC,KAAKuM,QAAQs7d,gBAAsB,OAAG,CAEvC,IADA,IAAI5zY,EAAO,GACF7pF,EAAI,EAAGA,EAAIpK,KAAKuM,QAAQs7d,gBAAgB99d,OAAQK,IAAK,CAC1D,IAAIqje,EAAezte,KAAKuM,QAAQs7d,gBAAgBz/d,SAASgC,EAAEsP,WAAY,KACnE1Z,KAAKuM,QAAQq/B,KACb6hc,EAAa7hc,IAAM6hc,EAAa7hc,KAAO5rC,KAAKwrD,OAAO2nC,iBAAiBs6Y,EAAa1ic,OAAOa,IACpF6hc,EAAa7hc,MAAQ5rC,KAAKuM,QAAQq/B,KAClCqoD,EAAKv/E,KAAK1U,KAAKuM,QAAQs7d,gBAAgBz/d,SAASgC,EAAEsP,WAAY,OAI9D+zd,EAAa1ic,QAAU/qC,KAAKuM,QAAQw+B,OACpCkpD,EAAKv/E,KAAK1U,KAAKuM,QAAQs7d,gBAAgBz/d,SAASgC,EAAEsP,WAAY,MAI1E,IAAIs6B,EAAYh0C,KAAK2re,qBAAqB13Y,EAAMj0F,KAAKsle,gBACjDtxb,GACA/J,EAAMN,MAAMqK,KAIxBqxb,EAAmB97d,UAAUike,kBAAoB,SAAUvjc,EAAO02H,EAAW72H,EAAYvc,GACrF,eAAYvtB,KAAKooe,SAKjBpoe,KAAKsle,gBAAiB,EACtBtle,KAAK0te,eACL1te,KAAKsle,gBAAiB,EACtB,IAAIgI,EAAQ,CAAExjc,WAAY9pC,KAAKure,SAAU7F,0BAA0B,EAAOxyY,OAAQlzF,KAAKuM,QAAQ2mF,OAC3F9uF,QAASpE,KAAKqoe,KAAMxxd,KAAM7W,KAAKuM,QAAQsK,KAAMqN,OAAQlkB,KAAKuM,QAAQsK,KAAM2jK,OAAQx6K,KAAKuM,QAAQo8d,mBAAqB,KAC9G3oe,KAAK25K,UAAUa,OAAO,GAAI6xB,UAAWrsM,KAAKqsM,WAClDrsM,KAAKwrD,OAAO/pC,OAAO,OAAqC6rd,GACxDtte,KAAK0le,yBAA2B4H,EAAM5H,yBACjC1le,KAAK0le,yBAGD1le,KAAK2le,mBAAqB3le,KAAKwrD,OAAOwtC,gBAAkE,YAAhDh5F,KAAKwrD,OAAOwtC,eAAesrN,kBACxFtkT,KAAK0se,aAHL1se,KAAK2te,kBAAkB7jc,EAAY62H,EAAWpzI,IAMtD83c,EAAmB97d,UAAUmie,cAAgB,SAAUzhc,GACnDjqC,KAAK+re,qBAAqB9hc,IAE9Bo7b,EAAmB97d,UAAUmke,aAAe,WACxC1te,KAAK+D,OAAS,GACd,IAAIiwC,EAAYh0C,KAAK2le,mBAAqB3le,KAAKule,kBAAkBvle,KAAKuM,QAAQw+B,OAC1E/qC,KAAK2re,qBAAqB3re,KAAKule,kBAAkBvle,KAAKuM,QAAQw+B,OAAQ/qC,KAAKsle,gBAC3Etle,KAAK2re,qBAAqB3re,KAAKuM,QAAQs7d,gBAAiB7ne,KAAKsle,gBAC7Dr7b,EAAQ,IAAI,OACZ+J,GACA/J,EAAMN,MAAMqK,GAEhBh0C,KAAKwrD,OAAO/pC,OAAO,OAAoC,CAAEwoB,MAAOA,IAEhE,IADA,IAAIlmC,EAAS,IAAI,OAAY/D,KAAKure,UAAUv3Z,aAAa/pC,GAChD/zB,EAAK,EAAG43E,EAAW/pF,EAAQmS,EAAK43E,EAAS/jF,OAAQmM,IAAM,CAC5D,IAAIk5B,EAAM0+C,EAAS53E,GACnBlW,KAAK+D,OAAO,eAAU/D,KAAKuM,QAAQw+B,MAAOqE,KAAQ,IAG1Di2b,EAAmB97d,UAAUggD,aAAe,SAAU/zC,GAClD,IAAIxI,EACC,eAAkB,OAAOqiD,QAC1Bl6C,aAAa,OAAOk6C,OAExB,IAAI1lD,EAAS6L,EAAE7L,OACf,GAAK,eAAkB3J,KAAKwrD,OAAO84P,mBAAoE,YAA/CtkT,KAAKwrD,OAAO84P,iBAAiB+rG,gBAC9E,gBAAa1mZ,EAAQ,iBAD5B,CAIA,IAAI61C,EAAO,gBAAa71C,EAAQ,sBAIhC,GAHI,gBAAaA,EAAQ,gBACrB3J,KAAKsne,eAAe9xd,GAEpBgqC,IAASx/C,KAAK0le,yBAA0B,CACxC,IAAIvkW,EAAY3hF,EAAKjrC,cAAc,gBACnC,GAAI4sH,EACAnhI,KAAK4te,iBAAiBzsW,EAAUh6H,UAAUC,SAAS,iBAInD,GADA,gBAAeo4C,EAAKn6C,eAChBrF,KAAK2le,oBAAsBnmb,EAAKn6C,cAAckP,cAAc,kBAAmB,CAC/EvU,KAAKume,kCAAmC,EACxC,IAAIkD,EAAUzpe,KAAKuM,QAAQu7d,mBACvB50a,EAAO1T,EAAKn6C,cAAckP,cAAc,YACxCrM,EAAQgrD,EAAK00D,gBACbyhX,EAAOnhe,EAAM0hG,QAAU,QAAU,WACjCtJ,EAAOp4F,EAAM0hG,QAAU,KAAO,MAC9B92E,EAAW,CAAEiY,MAAO/qC,KAAKuM,QAAQw+B,MAAOiJ,UAAWssD,EAAM10D,IAAK5rC,KAAKuM,QAAQq/B,IAC3E6D,SAAU45b,EAAMxyd,KAAM7W,KAAKuM,QAAQsK,KAAMysH,UAAWmmW,EAASn8b,aAActtC,KAAKuM,QAAQ+gC,cAExFrnC,EAAQjG,KAAK05G,OAAO,gBAAaxxG,EAAO,YAAY8K,aAAa,QAErE,GADAhT,KAAK6te,+BAA+B/6c,EAAU7sB,GAC1CjG,KAAK2le,oBAAsB3le,KAAKuM,QAAQ6yF,UAAYp/F,KAAKuM,QAAQw+d,sBAC9D/qe,KAAK+ne,8BAA8Bh+d,OAAQ,CAC9C,IAAIiqC,EAAYh0C,KAAK2re,sBAAsB3+d,EAAKhN,KAAKuM,QAAQs7d,iBAAiBn2b,OAAOxlC,MAAMc,EAAIhN,KAAKwme,mCAAmC,GACnIv8b,EAAQ,IAAI,OACZ+J,GACA/J,EAAMN,MAAMqK,GAEhB,IAAIjwC,EAAS,IAAI,OAAY/D,KAAK8le,4BAA4B9xZ,aAAa/pC,GACvEjqC,KAAKuM,QAAQw+d,uBAAyBhne,EAAOgG,SAC7C/J,KAAKuM,QAAQw+d,qBAAuBhne,EAAOgG,SAE1C/J,KAAKuM,QAAQw+d,sBAAwB/qe,KAAK+ne,8BAA8Bh+d,SACzE/J,KAAK+ne,8BAAgC,KAGzC/ne,KAAK+ne,8BAA8Bh+d,QAAW/J,KAAKuM,QAAQw+d,uBAAyB/qe,KAAKome,mBACrFpme,KAAKuM,QAAQw+d,uBACjB/qe,KAAK+ne,8BAAgC,IAIjD/ne,KAAK8te,0BACLtub,EAAKjrC,cAAc,iBAAiBkT,QAExCznB,KAAKojR,SAAS,gBAAa5jO,EAAM,eAErC6lb,EAAmB97d,UAAUske,+BAAiC,SAAU/6c,EAAU7sB,GAC9E,IAAK,IAAImE,EAAI,EAAGA,EAAIpK,KAAKwme,iCAAiCz8d,OAAQK,IAAK,CACnE,IAAI2je,EAAU/te,KAAKwme,iCAAiCp8d,GACpD,GAAI2je,EAAQ9ne,MAAQ,KAAOA,EAAQ,KAA4B,UAArB8ne,EAAQt+b,UAA6C,aAArBs+b,EAAQt+b,UAA0B,CACxGzvC,KAAKwme,iCAAiCzxd,OAAO3K,EAAG,GAChD,QAGoB,OAAvB0oB,EAASkhB,WAAwBh0C,KAAKsme,+BAAkCtme,KAAKqme,0BACnD,QAAvBvzc,EAASkhB,WAAyBh0C,KAAKsme,gCAAiCtme,KAAKqme,0BACjFrme,KAAKwme,iCAAiC9xd,KAAK,eAAO,GAAI,CAAEzO,MAAOA,GAAS6sB,IAC7C,OAAvBA,EAASkhB,UACTh0C,KAAKuM,QAAQw+d,uBAGb/qe,KAAKuM,QAAQw+d,yBAQzB1F,EAAmB97d,UAAUyke,gBAAkB,SAAUx4d,EAAGolK,GACxD,IAAImpJ,EAAuB,YAAVvuT,EAAE3R,IAAqB+2K,EAAkB1tK,QAAQ+I,SAAS8S,eAAiB,EACtF6xJ,EAAkB1tK,QAAQ+I,SAAS8S,eAAiB,EACtD46U,EAAc/oL,GAAoBmpJ,EAAYnpJ,EAAkB7wK,QAAU6wK,EAAkB7wK,QAEhG,GAAI45V,EAAa,CACbA,EAAYl8U,QACZ,IAAI9d,EAASg6V,EAAYx8V,UAAUC,SAAS,gBAAkB,gBAAau8V,EAAa,YAAcA,EACtG3jW,KAAKojR,SAASz5Q,KAGtB07d,EAAmB97d,UAAUmc,aAAe,SAAUlQ,GAIlD,IAHe,QAAVA,EAAE3R,KAAiB2R,EAAEmlK,UAAuB,QAAVnlK,EAAE3R,MAA6B,YAAV2R,EAAE3R,KAA+B,cAAV2R,EAAE3R,OAAyB2R,EAAEk6G,SAC5G1vH,KAAKojR,SAAS,gBAAa5tQ,EAAE7L,OAAQ,cAE1B,YAAV6L,EAAE3R,KAA+B,cAAV2R,EAAE3R,OAAyB2R,EAAEk6G,QAA8C,aAApC1vH,KAAKwrD,OAAOwtC,eAAeniF,KAAqB,CAC/GrB,EAAEwF,iBACF,IAAI4/J,EAAoB1xK,MAAMkgC,KAAKppC,KAAK2me,IAAIz8c,iBAAiB,mDAC7DlqB,KAAKgue,gBAAgBx4d,EAAGolK,KAGhCyqT,EAAmB97d,UAAU65Q,SAAW,SAAU5jO,GAC9C,IAAIyub,EAAWjue,KAAK2me,IAAIpyd,cAAc,eAClC05d,GACAA,EAAS9me,UAAU8G,OAAO,cAE1BuxC,GAAQA,IAASyub,GACjBzub,EAAKr4C,UAAUgN,IAAI,eAG3Bkxd,EAAmB97d,UAAUqke,gBAAkB,SAAUhkY,GACjD5pG,KAAK2le,oBACL3le,KAAKsme,+BAAgC,EACrCtme,KAAKqme,uBAAyBz8X,EAC9B5pG,KAAK+ne,8BAAgC,GACrC/ne,KAAKwme,iCAAmC,IAM5C,IAJA,IAAI0H,EAASlue,KAAK2le,kBACd3le,KAAKmme,mBAAmB72d,KAAI,SAAUg4B,GAClC,OAAOA,EAAI/yB,cAAc,eACxB,GAAGwB,MAAMtJ,KAAKzM,KAAKqoe,KAAKn+c,iBAAiB,iCACzChU,EAAK,EAAGi4d,EAAWD,EAAQh4d,EAAKi4d,EAASpke,OAAQmM,IAAM,CAC5D,IAAImyd,EAAO8F,EAASj4d,GACpB,gBAAqBmyd,EAAMz+X,GAC3B,gBAAWy+X,EAAKzgX,gBAAiBhe,KAGzCy7X,EAAmB97d,UAAUo3K,WAAa,WAClC3gL,KAAKwrD,OAAOpnD,QAAQ+C,UAAUC,SAAS,cACvCpH,KAAK25K,UAAUv1K,QAAQmQ,cAAc,kBAAkBpN,UAAU8G,OAAO,iBACnEjO,KAAKuM,QAAQo8d,oBACd3oe,KAAK25K,UAAUv1K,QAAQmQ,cAAc,UAAUkT,UAI3D49c,EAAmB97d,UAAU6ke,eAAiB,SAAUnoe,EAAO2jG,EAASz1E,GACpE,IAAIqrB,EAAOoqD,EAAU5pG,KAAKyme,SAASv3c,WAAU,GACzClvB,KAAK0me,UAAUx3c,WAAU,GAC7B,gBAAWswB,EAAKjrC,cAAc,SAAUq1F,GACxC,IAAI5uC,EAAQxb,EAAKjrC,cAAc,YAC3B85d,EAAY,eAAgB,GAAIl6c,EAAM,CAAE++D,OAAQlzF,KAAKuM,QAAQ2mF,OAAQ1nC,OAAQxrD,KAAKwrD,SAClFq/B,EAAY7qF,KAAKuM,QAAQu9F,kBAAoB,cAAgB,YACjE9uC,EAAM,GAAK6vB,IAAc,eAAkB5kF,IAAUA,EAAMyT,WAAW3P,OAClE/J,KAAKwrD,OAAOl4C,oBAAsB,OAAmBE,SAASvN,GAASA,EAAQjG,KAAK2ne,kBAAkB,UAC1G,IAAI2G,EAAc,eAAO,QAUzB,GATAtza,EAAM/nD,aAAa,KAAMq7d,EAAc,aACvC9ub,EAAKjrC,cAAc,SAAStB,aAAa,kBAAmB+nD,EAAMpnD,IAC9DonD,EAAM5nD,YAAcpT,KAAK2ne,kBAAkB,YAC3C3ne,KAAK+oe,UAAW,GAEC,mBAAV9ie,IACP+0D,EAAM5nD,WAAsB,IAAVnN,EAAiBjG,KAAK2ne,kBAAkB,cAAgB3ne,KAAK2ne,kBAAkB,gBAErG,eAAS,CAAC3sa,GAAQ,CAAC,yBACfh7D,KAAKuM,QAAQ47C,UAAYh0B,EAAKn0B,KAAKuM,QAAQ2mF,OAAOnoD,SAAW/qC,KAAK2ne,kBAAkB,cACjFxzc,EAAKn0B,KAAKuM,QAAQ2mF,OAAOnoD,SAAW/qC,KAAK2ne,kBAAkB,uBAAwB,CACtF3sa,EAAM5nD,UAAY,GAClB,IAAIm1Y,EAAkBvoZ,KAAKwrD,OAAO/6C,SAAWzQ,KAAKuM,QAAQ2mF,OAAO/6D,QACL,kBAA7Cn4B,KAAKuM,QAAQ2mF,OAAO/6D,OAAmB,aAElD2xW,EAAe9pY,KAAKwrD,OAAOu+U,eAAiB/pY,KAAKwrD,OAAOu+U,cAAcC,eAEtEhqY,KAAKwrD,OAAOu+U,cAAcC,cAAcv5X,QACxC83Y,GAAmBze,GACnB9pY,KAAKuM,QAAQ47C,SAASkmb,EAAWrue,KAAKwrD,OAAQ,qBAAsB,KAAM,KAAM,KAAMwP,GACtFh7D,KAAKwrD,OAAOuyI,mBAGZ,eAAe/iI,EAAOh7D,KAAKuM,QAAQ47C,SAASkmb,EAAWrue,KAAKwrD,OAAQ,uBAG5E,OAAOhM,GAEX6lb,EAAmB97d,UAAUuke,wBAA0B,WACnD,IASIpwT,EATAlxH,EAAMxsD,KAAK2le,kBAAoB3le,KAAKmme,mBAAmBp8d,OAAS/J,KAAKqoe,KAAK//c,SAASve,OAAS,EAC5F0D,EAAY,GACZyS,GAAW,EACXs/B,EAAOx/C,KAAK2le,kBAAoB3le,KAAKioe,KAAK1zd,cAAc,gBAAkBvU,KAAKqoe,KAAK9zd,cAAc,gBAClG8jC,EAAWr4C,KAAK2le,kBAAoB3le,KAAKmme,mBAAmBhuc,QAAO,SAAUmP,GAAO,OAAOA,EAAI/yB,cAAc,eAAgBxK,OAC7H/J,KAAKqoe,KAAKn+c,iBAAiB,kDAAkDngB,OAC7E/J,KAAKqoe,KAAK9zd,cAAc,oBACxBi4C,GAAO,GAGNxsD,KAAKuM,QAAQo8d,qBACdjrT,EAAM19K,KAAK25K,UAAUa,OAAO,GAC5BkD,EAAIx9J,UAAW,GAEnB,IAAIhY,EAAQs3C,EAAKooE,gBACjB,gBAAW1/G,GAAO,GAClBA,EAAMovQ,eAAgB,GAClBt3Q,KAAK2le,mBAA2C,KAAtB3le,KAAKune,OAAOthe,OAAiBjG,KAAKuM,QAAQ89d,4BAA+Brqe,KAAKume,kCACnGvme,KAAKsme,gCAAmCtme,KAAKqme,wBAA2Bhub,IAAemU,IAAQnU,GAAYmU,IAAQnU,EAGnHr4C,KAAK2le,mBAAqB3le,KAAKmme,mBAAmBp8d,OAAS/J,KAAKome,mBAClEpme,KAAK+ne,8BAA8Bh+d,UAAYsuC,GAAYmU,IAAQnU,IAAar4C,KAAKqme,yBACnFhub,EAIDmU,GAAOxsD,KAAK+ne,8BAA8Bh+d,OAH1CsuC,GAAYr4C,KAAK+ne,8BAA8Bh+d,QALnDsuC,EAAW,EAWXmU,IAAQnU,GACJr4C,KAAK2le,oBACL3le,KAAKqme,wBAAyB,EAC9Brme,KAAKsme,+BAAgC,EACrCtme,KAAKwme,iCAAmC,IAE5C/4d,EAAY,CAAC,WACb,gBAAWvF,GAAO,IAEbmwC,GACL5qC,EAAY,CAAC,UACbvF,EAAMovQ,eAAgB,IAGlBt3Q,KAAK2le,oBACL3le,KAAKqme,wBAAyB,EAC9Brme,KAAKsme,+BAAgC,EACrCtme,KAAKwme,iCAAmC,IAE5C/4d,EAAY,CAAC,aACbyS,GAAW,EACPw9J,IACAA,EAAIx9J,UAAW,IAGnBw9J,IACA19K,KAAKyle,aAAe/nT,EAAIx9J,SACxBw9J,EAAIrtK,YAER,gBAAY,CAACmvC,GAAO,CAAC,UAAW,SAAU,cAC1C,eAAS,CAACA,GAAO/xC,GACjBzN,KAAKwrD,OAAO/pC,OAAO,QAAiC,CAAEvB,SAAUA,KAEpEmld,EAAmB97d,UAAUoke,kBAAoB,SAAUx5c,EAAMwsI,EAAW2sU,GACxE,IAAItge,EAAIC,EAAIm7H,EAERs1C,EADAwwT,EAASlue,KAAKwrD,OAAOh+C,cAAc,OAEnC0S,GAAW,EACVlgB,KAAKuM,QAAQo8d,qBACdjrT,EAAM19K,KAAK25K,UAAUa,OAAO,IAEhC,IAAI+zT,GAAe,EACf1qe,EAAM,UACLype,EAAMzsW,eACPh9H,EAAMype,EAAMvic,OAEhB,IAAK,IAAI3gC,EAAI,EAAGA,EAAI+pB,EAAKpqB,OAAQK,IAAK,CAClC,IAAIoa,EAAM,eAAS3gB,EAAKswB,EAAK/rB,SAASgC,EAAEsP,WAAY,OACxC,KAAR8K,GAAc,eAAkBA,MAChC+pd,GAA4B,GASpC,GANKvue,KAAK2le,oBACN3le,KAAK2pe,UAA4B,IAAjB4E,EAAqBp6c,EAAKpqB,OAASwke,EAAcp6c,EAAKpqB,QAEtE/J,KAAK2le,mBAAqB3le,KAAKwrD,OAAOwtC,gBAAkE,YAAhDh5F,KAAKwrD,OAAOwtC,eAAesrN,kBACnFtkT,KAAK0se,aAELv4c,EAAKpqB,SAAW/J,KAAKqxZ,YAAa,CAClC,IAAIm9E,EAAiBxue,KAAK2ne,kBAAkB,aACxCxhF,EAAWnmZ,KAAKqoe,KAAK9zd,cAAc,qBACnC4xY,GACAA,EAASh/Y,UAAU8G,OAAO,oBAE9B,IAAIkvP,EAAWn9P,KAAKoue,eAAeI,GAAgB,GAAQxhe,EAAK,GAAIA,EAAGhN,KAAKuM,QAAQw+B,OAASyjc,EAAgBxhe,IAS7G,GARIhN,KAAKwrD,OAAOz4C,YAC+B,IAAvC/S,KAAKwrD,OAAOz4C,SAAS7F,QAAQ,KAC7B,eAAS,CAACiwP,GAAWn9P,KAAKwrD,OAAOz4C,SAAS1S,MAAM,MAGhD,eAAS,CAAC88P,GAAW,CAACn9P,KAAKwrD,OAAOz4C,YAGtC/S,KAAK4le,sBAAwB5le,KAAK2le,kBAAmB,CACrD,IAAIxkW,EAAY,eAAmB,eAAO,QAASg8H,EAAU,YAC7Dh8H,EAAU5sH,cAAc,YAAYpN,UAAUgN,IAAI,eAC9CnU,KAAK2le,kBACL3le,KAAKioe,KAAKj7c,aAAam0G,EAAWnhI,KAAKooe,SAGvC8F,EAAOvge,YAAYwzH,QAGlBnhI,KAAKioe,KAAK1zd,cAAc,4BAC7BvU,KAAKioe,KAAK1zd,cAAc,0BAA0BqzG,gBAAgB1nG,UAAW,EAC7ElgB,KAAKioe,KAAK1zd,cAAc,0BAA0BlP,cAAc8B,UAAU8G,OAAO,wBAErF,IAAI+lC,EAAY,IAAI,OAAU,QAAS,QAASh0C,KAAKuM,QAAQw+B,OACzD/qC,KAAKuM,QAAQ+6H,kBACbtzF,EAAYA,EAAUpB,GAAG,QAAS,QAAS5yC,KAAKuM,QAAQ+6H,kBAE5D,IAAImnW,EAAgB,IAAI,OAAYzue,KAAKuM,QAAQs7d,iBAAiB7zZ,cAAa,IAAI,QAAQrqC,MAAMqK,IAAYjqC,OAC7G,GAAI/J,KAAKune,OAAOthe,MAAO,CACnB,IAAIyoe,EAAoB1ue,KAAKoue,eAAepue,KAAK2ne,kBAAkB,wBAAwB,GAAQ16d,EAAK,GACpGA,EAAGjN,KAAKuM,QAAQw+B,OAAS/qC,KAAK2ne,kBAAkB,uBAChD16d,IASJ,GARIjN,KAAKwrD,OAAOz4C,YAC+B,IAAvC/S,KAAKwrD,OAAOz4C,SAAS7F,QAAQ,KAC7B,eAAS,CAACwhe,GAAoB1ue,KAAKwrD,OAAOz4C,SAAS1S,MAAM,MAGzD,eAAS,CAACque,GAAoB,CAAC1ue,KAAKwrD,OAAOz4C,YAG9C/S,KAAK2le,oBAAuB,eAAkB3le,KAAKioe,KAAK3/c,SAAS,KAC3B,oCAApCtoB,KAAKioe,KAAK3/c,SAAS,GAAGuiE,YAAsD7qF,KAAK2le,kBAAmB,CACvG,IAAIgJ,EAAmB,eAAmB,eAAO,QAASD,EAAmB,YAE7E,GADAC,EAAiBp6d,cAAc,YAAYpN,UAAUgN,IAAI,iBACrDnU,KAAK2le,kBAAmB,CACxB3le,KAAKioe,KAAKj7c,aAAa2hd,EAAkB3ue,KAAKooe,SAC9C,IAAIwG,EAAmB5ue,KAAKooe,QAAQ7zd,cAAc,mBAC9Cs6d,EAAep9d,KAAKsxC,KAAK4rb,EAAiBtoe,wBAAwBY,QACtE2ne,EAAiB7pe,MAAMkC,OAAUmB,SAAS8G,iBAAiB0/d,GAAkB3ne,OAAO5G,MAAM,MAAM,IAAMwue,EAChG,KACND,EAAiB7pe,MAAMsoD,UAAYuhb,EAAiB7pe,MAAMkC,YAG1Dine,EAAOvge,YAAYghe,QAGlB3ue,KAAKioe,KAAK1zd,cAAc,8BAC7BvU,KAAKioe,KAAK1zd,cAAc,4BAA4BqzG,gBAAgB1nG,UAAW,EAC/ElgB,KAAKioe,KAAK1zd,cAAc,4BAA4BlP,cAAc8B,UAAU8G,OAAO,6BAGtF,GAAIjO,KAAK2le,oBAAsB,eAAkB3le,KAAKioe,KAAK3/c,SAAS,KAC9B,oCAApCtoB,KAAKioe,KAAK3/c,SAAS,GAAGuiE,UAAiD,CACtE+jZ,EAAmB5ue,KAAKooe,QAAQ7zd,cAAc,mBAAlD,IACIu6d,EAAiBr9d,KAAKsxC,KAAK/iD,KAAKioe,KAAK3/c,SAAS,GAAGjiB,wBAAwBY,QAC7E2ne,EAAiB7pe,MAAMkC,OAAUmB,SAAS8G,iBAAiB0/d,GAAkB3ne,OAAO5G,MAAM,MAAM,IAAMyue,EAChG,KACNF,EAAiB7pe,MAAMsoD,UAAYuhb,EAAiB7pe,MAAMkC,OAC1D,gBAAOjH,KAAKioe,KAAK3/c,SAAS,IAE9B,IAAIymd,OAAW,EACf,IAAS3ke,EAAI,EAAGA,EAAI+pB,EAAKpqB,OAAQK,IAAK,CAClC,IAAIwhC,EAAM,eAAO,QACjB5rC,KAAK05G,OAAO,GAAK9tE,GAAO,eAAS/nC,EAAKswB,EAAK/rB,SAASgC,EAAEsP,WAAY,MAClE,IAAIzT,EAAQ,eAASjG,KAAKuM,QAAQw+B,MAAO5W,EAAK/rB,SAASgC,EAAEsP,WAAY,MACjE1Z,KAAKuM,QAAQ2hK,WACbjoK,EAAQjG,KAAKysK,eAAehjC,OAAOxjI,EAAOjG,KAAKuM,QAAQ2hK,WAE3D,IAAIzE,EAAS,CAAExjK,MAAOA,EAAOitF,OAAQlzF,KAAKuM,QAAQ2mF,OAAQ/+D,KAAMA,EAAK/rB,SAASgC,EAAEsP,WAAY,MAG5F,GAFA1Z,KAAKwrD,OAAO/pC,OAAO,QAAwBgoJ,GAC3CxjK,EAAQwjK,EAAOxjK,MACA,KAAVA,GAAgB,eAAkBA,GAAS,CAC5C,GAAI8oe,EACA,SAEJA,GAAW,EAEX/ue,KAAK2le,mBACL3le,KAAKgve,wCAAwC/oe,EAAOjG,KAAK+ne,+BAE7D,IAAIrtN,EAAW16Q,KAAKsme,8BAChBtme,KAAKoue,eAAenoe,EAAOjG,KAAKqme,uBAAwB,eAAS,UAAWlyc,EAAK/pB,KACjFpK,KAAKoue,eAAenoe,EAAOjG,KAAKive,gBAAgBR,EAAezue,KAAK05G,OAAO,GAAK9tE,IAAO,eAAS,UAAWzX,EAAK/pB,KACpH8je,EAAOvge,YAAY,eAAmBi+B,EAAK8uO,EAAU,aACjD16Q,KAAK2le,oBACLuI,EAAOr/a,UAAU9pD,MAAMkC,OAASjH,KAAKuhI,cAAcvhI,KAAKqoe,MAAQ,MAGxE,IAAIjje,EAAYpF,KAAKqoe,KAAKjje,WACrBpF,KAAK2le,mBAAqB3le,KAAK6le,wBAChC7le,KAAKqoe,KAAKj1d,UAAY,GAEjBpT,KAAK2le,mBAAqB3le,KAAKqoe,KAAK//c,SAASve,QAClD/J,KAAK+se,uBAAwB,GAAGh3d,MAAMtJ,KAAKzM,KAAKqoe,KAAK//c,UAAWvT,OAAO,EAAG/U,KAAKwrD,OAAOwtC,eAAem3D,aAErGnwJ,KAAK2le,qBACJv9V,EAAKpoI,KAAKmme,oBAAoBzxd,KAAKxI,MAAMk8H,EAAI,GAAGryH,MAAMtJ,KAAKyhe,EAAO5ld,WACnEtoB,KAAK2pe,UAA4B,IAAjB4E,EAAqBvue,KAAKmme,mBAAmBp8d,OAASwke,EAAcvue,KAAKmme,mBAAmBp8d,QAE5G/J,KAAK+ne,8BAA8Bh+d,SAAW/J,KAAKmme,mBAAmBp8d,QAAU/J,KAAKome,oBACjFpme,KAAKuM,QAAQ89d,4BAA+Brqe,KAAKuM,QAAQw+d,uBAAyB/qe,KAAKome,mBACxFpme,KAAKuM,QAAQ89d,8BAChBrqe,KAAK+ne,8BAAgC,IAEzC,eAAe/ne,KAAKqoe,KAAM,GAAGtyd,MAAMtJ,KAAKyhe,EAAO5ld,WAC3CtoB,KAAK2le,oBAAsB3le,KAAKime,2BAChCjme,KAAKime,yBAA2Bx0d,KAAKC,MAAMtM,EAAYpF,KAAKqoe,KAAKjje,YAErEpF,KAAK8te,0BACA9te,KAAK2le,kBAQFzld,IADAw9J,EAAIx9J,UANJw9J,IACAA,EAAIx9J,UAAW,GAEnBA,GAAW,OAWd,CAGD,GAFAgud,EAAOvge,YAAY3N,KAAKwrD,OAAOh+C,cAAc,OAAQ,CAAE4F,UAAWpT,KAAK2ne,kBAAkB,eACzF3ne,KAAKqoe,KAAKj1d,UAAY,GAClBpT,KAAK2le,kBAAmB,CACpBxkW,EAAYnhI,KAAKioe,KAAK1zd,cAAc,0BACxC,GAAI4sH,EAAW,CACX,IAAIhR,EAAkBgR,EAAU97H,cAAcA,cAC1C87H,EAAUh6H,UAAUC,SAAS,WAC7B,gBAAe+oH,GAEVgR,EAAUh6H,UAAUC,SAAS,YAClC,gBAAe+oH,GACfgR,EAAUh6H,UAAU8G,OAAO,UAC3B,gBAAekiH,IAEnBgR,EAAUvZ,gBAAgB1nG,UAAW,EACrCihH,EAAU97H,cAAc8B,UAAUgN,IAAI,uBAE1C,IAAI61d,EAAmBhqe,KAAKioe,KAAK1zd,cAAc,4BAC/C,GAAIy1d,EAAkB,CAClB,IAAIkF,EAAyBlF,EAAiB3ke,cAAcA,cACxD2ke,EAAiB7ie,UAAUC,SAAS,YACpC,gBAAe8ne,GAEnBlF,EAAiBpiX,gBAAgB1nG,UAAW,EAC5C8pd,EAAiB3ke,cAAc8B,UAAUgN,IAAI,wBAGrDnU,KAAKqoe,KAAK16d,YAAY3N,KAAKwrD,OAAOh+C,cAAc,MAAO,CAAEC,UAAW,sBACpE,eAAezN,KAAKqoe,KAAK//c,SAAS,GAAI,GAAGvS,MAAMtJ,KAAKyhe,EAAO5ld,WACvDo1J,IACAA,EAAIx9J,UAAW,GAEnBA,GAAW,EACXlgB,KAAKyle,aAAevld,EAEpBw9J,GAAOvpJ,EAAKpqB,SACZ/J,KAAKyle,aAAe/nT,EAAIx9J,SACxBw9J,EAAIrtK,YAER,IAAIkd,EAAO,CAAE+Y,YAAa,QAA4BwD,WAAY9pC,KAAKqxZ,YAAc,GAAKl9X,GACtFo0c,EAAc,cAClBh7c,EAAK,GAAKg7c,GAAevoe,KACzBA,KAAKwrD,OAAO/pC,OAAO,OAAyB8L,GAC5CvtB,KAAKwrD,OAAO/pC,OAAO,QAAiC,CAAEvB,SAAUA,IAC5DlgB,KAAK2le,mBAAqB3le,KAAK4le,sBAC/B5le,KAAKqoe,KAAKtje,MAAMypG,UAAY,OAEhC,eAAYxuG,KAAKooe,UAErB/C,EAAmB97d,UAAUyle,wCAA0C,SAAU/oe,EAAOkpe,GACpF,IAAK,IAAIjic,EAAI,EAAGA,EAAIiic,EAAcple,OAAQmjC,IAAK,CAC3C,IAAIozD,EAAO6uY,EAAcjic,GACrBjnC,IAAUq6F,EAAKr6F,OAA4B,UAAlBq6F,EAAK7wD,UAA0C,aAAlB6wD,EAAK7wD,WAC3DzvC,KAAKwme,iCAAiC9xd,KAAKy6d,EAAcjic,IACzDiic,EAAcp6d,OAAOm4B,EAAG,GACxBA,OAIZm4b,EAAmB97d,UAAU0le,gBAAkB,SAAUR,EAAexoe,GACpE,GAAKjG,KAAKspH,YAAemlX,EAGpB,CACD,IAAIh4N,IAAaz2Q,KAAKune,OAAOthe,OAAejG,KAAK+D,OAAO,GAAKkC,GAC7D,OAAIjG,KAAK2le,kBACElvN,EAG0B,aAA1Bz2Q,KAAKuM,QAAQkjC,UAA2BgnO,EAAaA,EARhE,OAAO,GAYf4uN,EAAmBkI,YAAc,SAAU/ic,EAAMO,EAAOmoD,EAAQ61C,EAAgBjS,GAC5E,IAEI7wH,EAFAwkB,EAAM+f,EAAKzgC,OACXhG,EAAS,GAETqre,EAAU,UACVpuS,EAAS,GACT/5D,KAAe/zC,IAAUA,EAAO4zC,kBAAkB5zC,EAAO4zC,kBAC7D,MAAOr8G,IAAO,CAEV,GADAxkB,EAAQukC,EAAKpiC,SAASqiB,EAAI/Q,WAAY,KAClCw5E,GAA0B,aAAhBA,EAAOr8E,MAAoD,kBAAtB5Q,EAAM,GAAK8kC,IAAuB9kC,EAAM,GAAK8kC,GAAQ,CACpG,IAAIzD,EAAMrhC,EAAM,GAAK8kC,GAAO1qC,MAAM,WAClC4F,EAAM,GAAK8kC,GAAS,IAAIvqB,KAAKpY,SAASk/B,EAAI,GAAI,IAAKl/B,SAASk/B,EAAI,GAAI,IAAM,EAAGl/B,SAASk/B,EAAI,GAAI,KAElGrhC,EAAQ,eAAU8kC,EAAO9kC,GACzB,IAAIope,EAAuC,kBAAVppe,GAAyB,cAAD,CAAmB6wH,IAEtE,cAAD,CAAmBA,EAAetrE,SAAc,cAAD,CAAmBsrE,EAAetrE,OAAOwtC,iBAEvF,cAAD,CAAmB89B,EAAetrE,OAAOwtC,eAAes2Y,uBAAgDrpe,EAAtBA,EAAMF,cAC7F,KAAMspe,KAAsBruS,GAAS,CACjC,IAAIp0J,EAAM,GAGV,GAFAA,EAAI,GAAKwic,GAAWnpe,EACpB+6L,EAAO,GAAKquS,IAAsB,EAC9BpoW,EAAc,CACd,IAAIsoW,EAAiB,eAAer8Y,EAAQ,GAAIjtF,EAAO8iI,GAAgB,GACvE,gBAAS,QAAuBwmW,EAAgB/kc,EAAKpiC,SAASqiB,EAAI/Q,WAAY,MAC9EzT,EAAQ,eAASitF,EAAOo0C,gBAAiBioW,GAE7C,gBAASxkc,EAAO,eAAkB9kC,GAAS,KAAOA,EAAO2mC,GACzD,gBAAS,UAAWpC,EAAKpiC,SAASqiB,EAAI/Q,WAAY,KAAMkzB,GACxD7oC,EAAO2Q,KAAKk4B,IAGpB,OAAO,OAASrD,MAAM,OAASkE,KAAK1pC,EAAQgnC,EAAO,OAAS8iI,aAAc,YAE9Ew3T,EAAmBx+X,aAAe,SAAUjT,EAAS0xY,GAIjD,IAHA,IAAIrxY,EAAO,OAASmvC,SAASxvC,EAAS,SAAS,IAAS,GACpDzU,EAAa,GACbmhB,EAAO,GACFl2F,EAAI,EAAGA,EAAI6pF,EAAKlqF,OAAQK,IAC7B+0E,EAAa,IAAI,OAAYyU,GAAS5f,cAAa,IAAI,QAAQrqC,MAAM,QAAS,QAASsqD,EAAK7rF,SAASgC,EAAEsP,WAAY,KAAKqxB,QAC9F,IAAtBo0C,EAAWp1E,SACXu2F,EAAKrM,EAAK7rF,SAASgC,EAAEsP,WAAY,KAAKqxB,OAASs6b,EAAmBgG,kBAAkBlsZ,EAAYmmZ,IAGxG,OAAOhlY,GAEX+kY,EAAmBgG,kBAAoB,SAAUp3Y,EAAMqxY,GACnD,IACItxb,EADAvpB,EAAMwpE,EAAOA,EAAKlqF,OAAS,EAE3Byle,EAAU,KACV11X,EAAQurX,EAAmBoK,iBAAiBx7Y,EAAK,IACrD6lB,EAAMxsE,cAAgB,eAAkBwsE,EAAMxsE,eAAgBwsE,EAAMxsE,aAEhE0G,EADe,SAAf8lE,EAAMjjG,MAAkC,aAAfijG,EAAMjjG,MAAsC,aAAfijG,EAAMjjG,KAChD,eAAiBijG,EAAOA,EAAMjjG,KAAMyud,GAGpCxrX,EAAMotX,YAAcptX,EAAMotX,YAClC,IAAI,OAAUptX,EAAM/uE,MAAO+uE,EAAMrqE,SAAUqqE,EAAM7zG,OAAQo/d,EAAmBqK,aAAa51X,GAAQA,EAAMxsE,cAE/G,IAAK,IAAInkC,EAAI,EAAGA,EAAIshB,EAAKthB,IACrB8qF,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAO2rd,EAAmBoK,iBAAiBx7Y,EAAK7rF,SAASe,EAAEuQ,WAAY,MAC/F+Q,EAAM,GAAKthB,EAAI,IAA6B,OAAtB8qF,EAAK9qF,GAAG6qC,WAAgD,OAA1BigD,EAAK9qF,EAAI,GAAG6qC,WACtC,QAAtBigD,EAAK9qF,GAAG6qC,WAAiD,QAA1BigD,EAAK9qF,EAAI,GAAG6qC,WAC1B,SAAjBigD,EAAK9qF,GAAG0N,MAAoC,aAAjBo9E,EAAK9qF,GAAG0N,MAAwC,aAAjBo9E,EAAK9qF,GAAG0N,KAClEm9B,EAAUc,WAAWpgC,KAAK,eAAiBu/E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAMu6E,EAAK9qF,GAAG0N,KAAMyud,IAG3Ftxb,EAAUc,WAAWpgC,KAAK,IAAI,OAAUu/E,EAAK9qF,GAAG4hC,MAAOkpD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK+1B,SAAUwkD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAKzT,OAAQo/d,EAAmBqK,aAAaz7Y,EAAK7rF,SAASe,EAAEuQ,WAAY,MAAOu6E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK4zB,eAM3O0G,EAFa,SAAjBigD,EAAK9qF,GAAG0N,MAAoC,aAAjBo9E,EAAK9qF,GAAG0N,MAAwC,aAAjBo9E,EAAK9qF,GAAG0N,KACf,QAA/Co9E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAKs6B,WAAqE,UAA9CigD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK+1B,SAC7EuE,EAAU,GAAKw7b,GAAS,eAAiBv7Y,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAMu6E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK7C,KAAMyud,GAAiBrxY,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK7C,KAAMo9E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK4zB,cAG3M0G,EAAWigD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAc,WAAG,eAAiBu6E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAMu6E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK7C,KAAMyud,GAAiBrxY,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK7C,KAAMo9E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK4zB,cAI/O2mD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAKwtd,YACzClzb,EAAUigD,EAAK7rF,SAASe,EAAEuQ,WAAY,KACjCs6B,WAAWigD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAKwtd,aACjDlzb,EAAWigD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAc,WAAGu6E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAKqxB,MAAOkpD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK+1B,SAAUwkD,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAKzT,OAAQo/d,EAAmBqK,aAAaz7Y,EAAK7rF,SAASe,EAAEuQ,WAAY,MAAOu6E,EAAK7rF,SAASe,EAAEuQ,WAAY,KAAK4zB,cAIxS,OAAO0G,GAAa,MAExBqxb,EAAmBqK,aAAe,SAAUv3c,GACxC,OAAI,eAAkBA,EAAOmrG,aACL,WAAhBnrG,EAAOthB,MAAqB,eAAkBshB,EAAOthB,OAAmC,kBAAlBshB,EAAY,OAQ/EA,EAAOmrG,WAGtB+hW,EAAmBoK,iBAAmB,SAAUt3c,GAI5C,OAHqB,SAAhBA,EAAOthB,MAAmC,aAAhBshB,EAAOthB,MAAuC,aAAhBshB,EAAOthB,MAAuBshB,EAAOlyB,iBAAiBua,QAC/G2X,EAAOthB,KAAOshB,EAAOthB,MAAQ,QAE1BshB,GAEJktc,EA3wD4B,I,sBCbrC,SAAUvle,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAI0ve,EAAK1ve,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IC,MAClJ,KAEJC,YAAa,iDAAiDD,MAAM,KACpEE,SAAU,+CAA+CF,MAAM,KAC/DG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNC,EAAG,kBACHC,GAAI,aACJC,EAAG,eACHC,GAAI,YACJC,EAAG,aACHC,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERC,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAOkte,M,kCC3DX,8GAYIC,EAA8B,WAC9B,SAASA,EAAapkb,EAAQywI,GAC1Bj8L,KAAK69L,UAAY5B,EAAQ3mG,WAAW,gBACpCt1F,KAAKy3M,UAAYxb,EAAQ3mG,WAAW,kBACpCt1F,KAAKwrD,OAASA,EACdxrD,KAAKoE,QAAUpE,KAAKwrD,OAAOh+C,cAAc,KAAM,CAAEC,UAAW,OAAkB4J,MAAO,CAAEC,KAAM,WAAYy7C,SAAU,QACnH/yD,KAAK6wS,UAAY7wS,KAAKwrD,OAAOh+C,cAAc,QAAS,CAAEC,UAAW,gBAAiB4J,MAAO,CAAE,KAAQ,WAAY,aAAcrX,KAAK69L,UAAUv7K,YAAY,gBA8S5J,OAvSAstd,EAAarme,UAAUyjZ,OAAS,WAC5B,MAAO,IAWX4iF,EAAarme,UAAU2a,OAAS,SAAUgvE,EAAQjtF,EAAOkuB,GACrD,IAAK,eAAkB++D,EAAOhvE,QAAS,CAInC,GAHoB,WAAhBgvE,EAAOr8E,MAAqBwM,MAAMjb,SAASnC,EAAO,OAClDA,EAAQ,MAEQ,aAAhBitF,EAAOr8E,MAAwC,kBAAV5Q,GAAsBA,EAAO,CAClE,IAAIqhC,EAAMrhC,EAAM5F,MAAM,WACtB4F,EAAQ,IAAIua,KAAKpY,SAASk/B,EAAI,GAAI,IAAKl/B,SAASk/B,EAAI,GAAI,IAAM,EAAGl/B,SAASk/B,EAAI,GAAI,KAEtFrhC,EAAQjG,KAAKy3M,UAAUhuE,OAAOxjI,EAAOitF,EAAOq2C,gBAEhD,OAAO,eAAkBtjI,GAAS,GAAKA,EAAMyT,YAGjDk2d,EAAarme,UAAUmiW,SAAW,SAAUtiQ,EAAM5O,EAAMrmE,EAAMlF,EAAY4gd,EAAOv4Y,GAC7E,IAAItqF,EACAjJ,EACJ,GAAIy2F,EAAKtH,OAAO/qC,SAAU,CACtB,IAAIogW,EAAkBvoZ,KAAKwrD,OAAO/6C,SAA6C,kBAA1B+pF,EAAKtH,OAAe,UAAkBsH,EAAKtH,OAAO/qC,SAAS5+C,YAAeixF,EAAKtH,OAAO/qC,SAAkB,UAAEg/U,YAC3J2C,EAAe9pY,KAAKwrD,OAAOu+U,eAAiB/pY,KAAKwrD,OAAOu+U,cAAcC,eACtEhqY,KAAKwrD,OAAOu+U,cAAcC,cAAcv5X,QACxCq/d,EAAa,CAAC,SACdzB,EAAY,eAAgB,GAAIl6c,GAAOnnB,EAAK,GAAIA,EAAG,SAAkB6ie,EAAO7ie,EAAGkmF,OAASsH,EAAKtH,OAAQlmF,IACrGmmD,EAAanzD,KAAKwrD,OAAOpnD,QAAQwP,GAAK4mF,EAAKtH,OAAOtnD,IAClDwP,EAAM,mBACV,GAAImtW,GAAmBze,EAAc,CACjC,IAAIv/B,EAAS,CAAE,MAASt7U,EAAW6gd,EAAW,KAC9Ct1Y,EAAKtH,OAAOm7E,mBAAZ7zE,CAAgC,eAAO+vQ,EAAQ8jI,GAAYrue,KAAKwrD,OAAQ,iBAAkB2H,EAAYnzD,KAAKwrD,OAAO,GAAKpQ,GAAM,KAAMguD,QAGnIrlG,EAASy2F,EAAKtH,OAAOm7E,mBAAZ7zE,CAAgC,eAAO,CAAE,MAASvrE,EAAW6gd,EAAW,KAAOzB,GAAYrue,KAAKwrD,OAAQ,WAAY2H,EAAYnzD,KAAKwrD,OAAO,GAAKpQ,QAAMz1C,OAAWA,EAAW3F,KAAKwrD,OAAO,SAStM,OAPK+8V,GAAoBze,GACrB,eAAe1gS,EAAMrlG,GAEzB/D,KAAKwrD,OAAO/pC,OAAO,kBAAmB,CAAE0mC,SAAUpkD,IAClDA,EAAS,KACTqlG,EAAKn2F,aAAa,aAAcm2F,EAAKve,UAAY7qF,KAAK69L,UAAUv7K,YAAY,gBACxEtiB,KAAK69L,UAAUv7K,YAAY,gBAAkBk4E,EAAKtH,OAAOiC,aACtD,EAEX,OAAO,GAUXy6Y,EAAarme,UAAUwme,gBAAkB,SAAU78Y,EAAQjtF,EAAOkuB,GAC9D,IAAK,eAAkB++D,EAAOukH,WAC1B,GAAI,eAAuBvkH,EAAOukH,UAAW,YAAa,CACtD,IAAIA,EAAYvkH,EAAOukH,UACvBxxM,GAAQ,IAAIwxM,GAAYvrK,SAASgnD,EAAQ/+D,QAGzCluB,EADiC,oBAArBitF,EAAOukH,UACXvkH,EAAOukH,UAAUvkH,EAAQ/+D,GAGzB++D,EAAOukH,UAAUvrK,SAASgnD,EAAQ/+D,GAGlD,OAAOluB,GAYX2pe,EAAarme,UAAUkS,OAAS,SAAU++E,EAAMrmE,EAAMlF,EAAY+hB,EAAUsmD,GACxE,OAAOt3F,KAAKgwe,YAAYx1Y,EAAMrmE,EAAMlF,EAAYqoE,IAWpDs4Y,EAAarme,UAAU2sS,UAAY,SAAUjuI,EAAIztE,EAAMrmE,EAAMlF,GACzD,IAAIqoE,EAA2C,UAAlCt3F,KAAKwrD,OAAOitC,aAAa8F,MAAoB0pE,EAAG9gK,UAAUC,SAAS,qBAChF,GAAIpH,KAAKwrD,OAAO/6C,QAAS,CACrB,IAAIy1N,EAAYj+D,EAAGi+D,UACfqyE,EAAYtwI,EAAG5iK,cACnB,gBAAO4iK,GACP,IAAIgoU,EAAQjwe,KAAKgwe,YAAYx1Y,EAAMrmE,EAAMlF,EAAYqoE,GACrDt3F,KAAKkwe,gBAAgBD,EAAOhoU,GACxBswI,EAAU9/N,MAAM1uE,SAAWm8N,EAAY,EACvCqyE,EAAUvrR,aAAaijd,EAAO13L,EAAU9/N,MAAMrwE,SAAS89N,EAAUxsN,WAAY,MAG7E6+R,EAAU5qS,YAAYsie,OAGzB,CACD,IAAI7mY,EAAOppG,KAAKgwe,YAAYx1Y,EAAMrmE,EAAMlF,EAAYqoE,GACpD2wE,EAAG70J,UAAY,GACf,IAAI+8d,EAAgB/mY,EAAKp2F,aAAa,cACtCm9d,GAAgBloU,EAAGh1J,aAAa,aAAck9d,GAE9C,IADA,IAAIhkZ,EAAW,GAAGp2E,MAAMtJ,KAAK28F,EAAKzuE,YACzBzkB,EAAK,EAAGyhO,EAAaxrJ,EAAUj2E,EAAKyhO,EAAW5tO,OAAQmM,IAAM,CAClE,IAAIspC,EAAOm4L,EAAWzhO,GACtB+xJ,EAAGt6J,YAAY6xC,MAK3Bowb,EAAarme,UAAU2me,gBAAkB,SAAUvme,EAAQ8lD,GAEvD,IAII5+B,EAJAxZ,EAAQo4C,EAAOxgC,WAEf7kB,EAAIiN,EAAMtN,OAGd,MAAOK,IACHymB,EAAOxZ,EAAMjP,SAASgC,EAAEsP,WAAY,KACpC/P,EAAOsJ,aAAa4d,EAAKlpB,KAAMkpB,EAAK5qB,QAG5C2pe,EAAarme,UAAUyme,YAAc,SAAUx1Y,EAAMrmE,EAAMlF,EAAYqoE,GACnE,IAAItqF,EAGA6ie,EAFAzmY,EAAOppG,KAAKoE,QAAQ8qB,YACpBgkE,EAASsH,EAAKtH,OAEdsH,EAAKysC,eACL4oW,EAAQr1Y,EAAKuuC,eAAe,KAAO/7H,EAAK,GAAIA,EAAGkmF,EAAOo0C,iBAAmBp0C,EAAOhvE,OAAS,KAAO,GAAIlX,IAGxG,IAAIwkN,EAAYxxN,KAAKgtZ,SACjB/mZ,EAAQu0F,EAAKysC,aAAejnI,KAAKksC,SAASgnD,EAAOo0C,gBAAiBuoW,EAAO38Y,GACzElzF,KAAKksC,SAASgnD,EAAOnoD,MAAO5W,EAAM++D,GAItC,GAHqB,SAAhBA,EAAOr8E,MAAmC,aAAhBq8E,EAAOr8E,MAAyB,eAAkB5Q,KAC7EA,EAAQ,IAAIua,KAAKva,IAED,aAAhBitF,EAAOr8E,OAAwB,eAAkB5Q,IAA2B,kBAAVA,EAAoB,CACtF,IAAIqhC,EAAMrhC,EAAM5F,MAAM,WACtB4F,EAAQ,IAAIua,KAAKpY,SAASk/B,EAAI,GAAI,IAAKl/B,SAASk/B,EAAI,GAAI,IAAM,EAAGl/B,SAASk/B,EAAI,GAAI,KAItF,GAFArhC,EAAQjG,KAAKkkB,OAAOgvE,EAAQjtF,EAAOkuB,GACnCq9L,EAAYvrN,EAAMyT,WACE,YAAhBw5E,EAAOr8E,OAAuBq8E,EAAOo0V,kBAAmB,CACxD,IAAI8oD,EAAuB,SAAVnqe,GAA8B,UAAVA,EAAqB,KAAiB,SAAVA,EAAmB,OAAS,QAC7FurN,EAAY4+Q,EAAYpwe,KAAK69L,UAAUv7K,YAAY8td,GAAa5+Q,EAEpE,IAAI6+Q,EAAgBrwe,KAAK+ve,gBAAgB78Y,EAAQjtF,EAAOkuB,GAExD,GADAq9L,EAAa,eAAkBt+H,EAAOukH,WAAgF+Z,EAAnE,eAAkB6+Q,GAAiB,GAAKA,EAAc32d,WACrG1Z,KAAK0rW,SAAStiQ,EAAM5O,EAAMrmE,EAAMlF,EAAY4gd,EAAOv4Y,IAA2B,aAAhBpE,EAAOr8E,KACrE7W,KAAKytZ,WAAWrkT,EAAMppG,KAAKwrD,OAAOh4C,SAASg+M,GAAYt+H,EAAOs7E,aAAet7E,EAAOs7E,eAAiB,kBAEpG,GAAoB,aAAhBt7E,EAAOr8E,KAAqB,CACjCuyF,EAAKjiG,UAAUgN,IAAI,QAEflO,IADAjG,KAAKwrD,OAAOoiP,kBAAkB6Z,kBACZ,SAAVxhT,EAKZ,IAAIs8Q,EAAY,eAAeviR,KAAKwrD,OAAOh+C,eAAe,EAAO,CAAEo8F,QAAS3jG,EAAO+0D,MAAO,MACtFh7D,KAAKwrD,OAAOz4C,UACZ,eAAS,CAACwvQ,GAAY,CAACviR,KAAKwrD,OAAOz4C,WAEvC/S,KAAK6wS,UAAUj9R,GAAK,YAAc4mF,EAAK81Y,MACvC/tN,EAAUv1P,aAAahtB,KAAK6wS,UAAU3hR,YAAaqzP,EAAUtiO,YAC7DmpD,EAAKz7F,YAAY40Q,GAMrB,GAJiC,UAA7BviR,KAAKwrD,OAAO+9U,cAA4BvpY,KAAKwrD,OAAO6tC,uBACpDmB,EAAKgqG,YAAa,GAEtBxkM,KAAKk+L,cAAc90F,EAAM5O,EAAMvrE,GACX,YAAhBikE,EAAOr8E,MAAsBq8E,EAAOo0V,kBAAmB,CACvD,IAAI19U,EAAUvmF,MAAMjb,SAASnC,EAAMyT,WAAY,KAAiB,SAAVzT,EAAmBmC,SAASnC,EAAMyT,WAAY,IAAM,EACtG6oQ,EAAY,eAAeviR,KAAKwrD,OAAOh+C,eAAe,EAAO,CAAEo8F,QAASA,EAAS5uC,MAAO,MAC5FouC,EAAKh2F,UAAY,GACjBg2F,EAAKjiG,UAAUgN,IAAI,qBACnBouQ,EAAUp7Q,UAAUgN,IAAI,uBACpBnU,KAAKwrD,OAAOz4C,UACZ,eAAS,CAACwvQ,GAAY,CAACviR,KAAKwrD,OAAOz4C,WAEvCq2F,EAAKz7F,YAAY40Q,GAErB,GAAIn5K,EAAKjiG,UAAUC,SAAS,mBAAqB+sB,EAAKtwB,IAAK,CACvD,IAAI+nC,EAAMw9D,EAAKp2F,aAAa,gBAC5BkgF,EAASlzF,KAAKwrD,OAAOmoC,eAAe/nD,GACpCw9D,EAAKn2F,aAAa,aAAcu+M,EAAYxxN,KAAK69L,UAAUv7K,YAAY,gBAAkBk4E,EAAKtH,OAAOiC,YAKzG,OAHIn1F,KAAKwrD,OAAO2yI,kBAAoBhqK,GAASA,IAASA,EAAKtwB,MACvD,eAAwB7D,KAAKwrD,OAAQ0nC,EAAQkW,GAE1CA,GAUXwmY,EAAarme,UAAUkkZ,WAAa,SAAUrkT,EAAMooH,EAAWr6B,GAG3D,YAFiB,IAAbA,IAAuBA,EAAW,aACtC/tF,EAAK,GAAK+tF,GAAYq6B,EACfpoH,GASXwmY,EAAarme,UAAU20L,cAAgB,SAAU90F,EAAM5O,EAAMvrE,GACzD,IAAIikE,EAASsH,EAAKtH,OAClBlzF,KAAKwtZ,uBAAuBpkT,EAAM5O,EAAsB,aAAhBtH,EAAOr8E,MAC/C,gBAAsBuyF,EAAMn6E,GAC5B,gBAAsBm6E,EAAM5O,EAAKvrE,YAC7BikE,EAAOopH,kBACP,gBAAsBlzG,EAAMlW,EAAOopH,kBAEF,aAAjCt8M,KAAKwrD,OAAOwwC,kBACZ,gBAAsBoN,EAAM,CAAE,YAAalW,EAAOiC,aAElDjC,EAAO65E,YACP3jE,EAAKrkG,MAAMgoK,UAAY75E,EAAO65E,WAEV,SAApB75E,EAAOiyN,WAAyBjyN,EAAOiyN,UAAqC,SAAzBnlT,KAAKwrD,OAAO25P,SAC/D/7M,EAAKjiG,UAAUgN,IAAI,cAEM,wBAApB++E,EAAOiyN,WAAwCjyN,EAAOiyN,UAAqC,wBAAzBnlT,KAAKwrD,OAAO25P,UAC9EnlT,KAAKwrD,OAAOuwN,gBAA4D,YAA1C/7Q,KAAKwrD,OAAOs5P,iBAAiB+mF,UACf,SAA1C7rY,KAAKwrD,OAAOs5P,iBAAiB+mF,YAChB,aAAhB34S,EAAOr8E,MACPuyF,EAAKjiG,UAAUgN,IAAI,sBAI/By7d,EAAarme,UAAUikZ,uBAAyB,SAAUpkT,EAAM5O,EAAM+1Y,GAClE,IAAI1/c,EAAO,GACP1T,EAAO,CAAE,SAAY,QACrBk5G,EAAU,GACV77B,EAAK2oE,UACLtyI,EAAKsyI,QAAU3oE,EAAK2oE,SAEpB3oE,EAAKm0O,UACL99S,EAAK89S,QAAUn0O,EAAKm0O,SAEpBn0O,EAAK0vS,YACL7zQ,EAAQ3hH,KAAK,kBAEb8lF,EAAKgqG,aACLnuE,EAAQ3hH,KAAKxI,MAAMmqH,EAAS,CAAC,wBAAyB,aAClDk6W,GACAnnY,EAAK70F,cAAc,YAAYpN,UAAUgN,IAAI,YAGjDqmF,EAAKkvS,kBACLrzQ,EAAQ3hH,KAAKxI,MAAMmqH,EAAS,CAAC,sBAE7B77B,EAAKi2E,WAAa,OAAS05O,QAC3Bt5X,EAAK1T,EAAKw4R,UAAYn7M,EAAKyrK,SAC3Bp1O,EAAK,QAAyB2pE,EAAKyrK,SAAW,GAExC,eAAkBzrK,EAAK1lF,SAC7B+b,EAAK1T,EAAKw4R,UAAYn7M,EAAK1lF,MAC3B+b,EAAK,QAAyB2pE,EAAK1lF,MAAQ,GAE1C0lF,EAAKzhB,SACNs9C,EAAQ3hH,KAAK,UAEjBmc,EAAKsnC,MAAQk+D,EACb,gBAAsBjtB,EAAMv4E,IAEhC++c,EAAarme,UAAU2iC,SAAW,SAAUnB,EAAO5W,EAAM++D,GACrD,OAAOA,EAAOurP,cAAc1zS,EAAO5W,EAAM++D,IAEtC08Y,EApTsB,I,mBCZjCjwe,EAAOC,QAAiC,qBAAhBi2U,aAAmD,qBAAb26J,U,sBCI5D,SAAU1we,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;SAAS6mC,EAAoBnjC,EAAQC,EAAeC,EAAKC,GACrD,IAAIogB,EAAS,CACTviB,EAAG,CAAC,kBAAmB,cACvBC,GAAI,CAAC+B,EAAS,aAAcA,EAAS,UACrC9B,EAAG,CAAC,aAAc,YAClBC,GAAI,CAAC6B,EAAS,YAAaA,EAAS,WACpC5B,EAAG,CAAC,WAAY,SAChBC,GAAI,CAAC2B,EAAS,UAAWA,EAAS,SAClC1B,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACyB,EAAS,WAAYA,EAAS,QACnCxB,EAAG,CAAC,gBAAiB,aACrBC,GAAI,CAACuB,EAAS,cAAeA,EAAS,WACtCtB,EAAG,CAAC,aAAc,WAClBC,GAAI,CAACqB,EAAS,YAAaA,EAAS,YAExC,OAAOG,EAAWogB,EAAOrgB,GAAK,GAAKqgB,EAAOrgB,GAAK,GAGnD,IAAI4se,EAAUxwe,EAAOE,aAAa,WAAY,CAC1CC,OAAQ,CACJ4mC,WAAY,wFAAwF3mC,MAChG,KAEJ6jB,OAAQ,mJAAmJ7jB,MACvJ,KAEJ4mC,SAAU,mBAEd3mC,YAAa,4EAA4ED,MACrF,KAEJsC,kBAAkB,EAClBpC,SAAU,qDAAqDF,MAAM,KACrEG,cAAe,4CAA4CH,MAAM,KACjEI,YAAa,wBAAwBJ,MAAM,KAC3Cw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,kBACJC,IAAK,qBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNwH,KAAM,oCAEVvH,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNC,EAAGmlC,EACHllC,GAAIklC,EACJjlC,EAAGilC,EACHhlC,GAAIglC,EACJ/kC,EAAG+kC,EACH9kC,GAAI8kC,EACJ7kC,EAAG6kC,EACH5kC,GAAI4kC,EACJ3kC,EAAG2kC,EACH1kC,GAAI0kC,EACJzkC,EAAGykC,EACHxkC,GAAIwkC,GAERxjC,uBAAwB,eACxBC,QAAS,SAAUI,EAAQgF,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOhF,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBpB,KAAM,CACFC,IAAK,EACLC,IAAK,GAETG,cAAe,4BACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,SAAbC,EACOD,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAbC,EACAD,EACa,YAAbC,EACAD,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAbC,EACAD,EAAO,QADX,GAIXC,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAKnB,OAAO2te,M,sBC/HT,SAAU3we,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;SAASuD,EAAOksF,EAAMC,GAClB,IAAIC,EAAQF,EAAKrvF,MAAM,KACvB,OAAOsvF,EAAM,KAAO,GAAKA,EAAM,MAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,GAEhB,SAASC,EAAuBlsF,EAAQC,EAAeC,GACnD,IAAIqgB,EAAS,CACTtiB,GAAIgC,EAAgB,yBAA2B,yBAC/C9B,GAAI8B,EAAgB,yBAA2B,yBAC/C5B,GAAI4B,EAAgB,sBAAwB,sBAC5C1B,GAAI,gBACJE,GAAI,wBACJE,GAAI,kBAER,MAAY,MAARuB,EACOD,EAAgB,UAAY,UACpB,MAARC,EACAD,EAAgB,SAAW,SAE3BD,EAAS,IAAMH,EAAO0gB,EAAOrgB,IAAOF,GAGnD,SAAS+se,EAAoB7ue,EAAGqiB,GAC5B,IAWIysd,EAXApwe,EAAW,CACPqwe,WAAY,0DAA0Dvwe,MAClE,KAEJwwe,WAAY,0DAA0Dxwe,MAClE,KAEJywe,SAAU,4DAA4Dzwe,MAClE,MAKZ,OAAU,IAANwB,EACOtB,EAAS,cACXwV,MAAM,EAAG,GACT27B,OAAOnxC,EAAS,cAAcwV,MAAM,EAAG,IAE3ClU,GAIL8ue,EAAW,qBAAqBjxe,KAAKwkB,GAC/B,aACA,sCAAsCxkB,KAAKwkB,GAC3C,WACA,aACC3jB,EAASowe,GAAU9ue,EAAEqwB,QARjB3xB,EAAS,cAUxB,SAASwwe,EAAqB31b,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBp7C,KAAK80B,QAAiB,IAAM,IAAM,QAI9D,IAAIk8c,EAAK/we,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,CACJ8jB,OAAQ,yFAAyF7jB,MAC7F,KAEJ2mC,WAAY,iGAAiG3mC,MACzG,MAGRC,YAAa,yDAAyDD,MAClE,KAEJE,SAAUmwe,EACVlwe,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,uBAAuBJ,MAAM,KAC1CK,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS6ve,EAAqB,cAC9B5ve,QAAS4ve,EAAqB,YAC9B1ve,QAAS0ve,EAAqB,WAC9B3ve,SAAU2ve,EAAqB,cAC/Bzve,SAAU,WACN,OAAQtB,KAAKkyB,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO6+c,EAAqB,oBAAoBtke,KAAKzM,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO+we,EAAqB,qBAAqBtke,KAAKzM,QAGlEuB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,kBACHC,GAAIiuF,EACJhuF,EAAGguF,EACH/tF,GAAI+tF,EACJ9tF,EAAG,SACHC,GAAI6tF,EACJ5tF,EAAG,OACHC,GAAI2tF,EACJ1tF,EAAG,SACHC,GAAIytF,EACJxtF,EAAG,MACHC,GAAIutF,GAGRjtF,cAAe,wBACf6F,KAAM,SAAUP,GACZ,MAAO,iBAAiBxI,KAAKwI,IAEjCnF,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGfQ,uBAAwB,iBACxBC,QAAS,SAAUI,EAAQgF,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOhF,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBpB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAOuue,M,gGC3KPpoe,EAAwC,WACxC,IAAIC,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAK5D0T,EAAU,YACV9S,EAAO,YACPqme,EAAS,SACTjme,EAAQ,UACR06V,EAAO,SACPwrI,EAAY,eACZC,EAAkB,oBAClBtme,EAAM,QACNume,EAAQ,UACRC,EAAO,SACPC,EAAO,SACPC,EAAO,SACPC,EAAQ,UACRC,EAAa,eACbC,EAAU,oBACVC,EAAuB,sBACvBC,EAAmB,sBACnBC,EAAU,oBACVC,EAAkB,qBAelB,EAAyB,SAAU7le,GAGnC,SAAS8le,EAAQxle,EAASnI,GACtB,OAAO6H,EAAOQ,KAAKzM,KAAMuM,EAASnI,IAAYpE,KAqpBlD,OAxpBA4I,EAAUmpe,EAAS9le,GAKnB8le,EAAQxoe,UAAUqS,UAAY,WAC1B5b,KAAK8iB,YAETivd,EAAQxoe,UAAUkS,OAAS,WACvBzb,KAAK8M,aACL9M,KAAK0b,aACL1b,KAAK2b,kBAETo2d,EAAQxoe,UAAUuD,WAAa,WAC3B9M,KAAK8/K,YACL9/K,KAAKmnX,WACLnnX,KAAKgye,YACDhye,KAAKiye,YACLjye,KAAKkye,UAELlye,KAAKotD,QACLptD,KAAKqY,OACLrY,KAAKmye,aAAc,GAGnBnye,KAAKoye,gBAETpye,KAAKqye,WAAU,GACfrye,KAAKsye,QAAQtye,KAAK6W,MAClB7W,KAAKuye,0BACLvye,KAAKu8K,eACD,OAAQxkK,WACR/X,KAAK47L,YAAc3sL,OAAO4sL,aAGlCk2S,EAAQxoe,UAAUgzK,aAAe,YAC5Bv8K,KAAKqO,UAAY,OAAW,SAAa,CAACrO,KAAKoE,SAAUyG,IAE9Dkne,EAAQxoe,UAAUu2K,UAAY,WAC1B9/K,KAAKqzH,UAAYrzH,KAAKoE,QAAQk4B,mBAC9Bt8B,KAAKwye,eAAiBxye,KAAKoE,QAAQ8qB,WAAU,GAChB,kBAAjBlvB,KAAW,QACnBA,KAAKuT,cAAc,CAAE5J,OAAQsM,SAAS1B,cAAcvU,KAAK2J,UAAW,GAEpE3J,KAAK2J,SACL3J,KAAK2J,OAAOqjB,aAAahtB,KAAKoE,QAASpE,KAAK2J,OAAO2e,SAAS,IAC5D,eAAS,CAACtoB,KAAKoE,SAAU0te,GACzB,eAAS,CAAC9xe,KAAK2J,QAASkoe,GACxB7xe,KAAKqzH,UAAYrzH,KAAKuiS,qBAG9BwvM,EAAQxoe,UAAUg5R,iBAAmB,WACjC,IAAIkwM,EAAiBzye,KAAKoE,QAAQk4B,mBAClC,OAAQ,eAAMm2c,GAAiB,CAC3B,IAAKA,EAAetre,UAAUC,SAASwD,GACnC,MAEJ6ne,EAAiBA,EAAen2c,mBAEpC,OAAOm2c,GAEXV,EAAQxoe,UAAUgpe,wBAA0B,WACpCvye,KAAK0ye,qBACL,OAAav+d,IAAI8B,SAAU,uBAAwBjW,KAAK2ye,qBAAsB3ye,MAG9E,OAAaiO,OAAOgI,SAAU,uBAAwBjW,KAAK2ye,uBAGnEZ,EAAQxoe,UAAUuZ,SAAW,WACrB9iB,KAAKiye,YAAgC,SAAlBjye,KAAKgF,UAGnBhF,KAAKiye,YAAgC,UAAlBjye,KAAKgF,SAF7B,gBAAShF,KAAKoE,QAAS,CAAE,MAASpE,KAAKwjW,aAAaxjW,KAAK4ye,YAKnD5ye,KAAKiye,YACX,gBAASjye,KAAKoE,QAAS,CAAE,MAASpE,KAAKwjW,aAAaxjW,KAAKqH,UAGjE0qe,EAAQxoe,UAAUi6V,aAAe,SAAUn8V,GAUvC,OARIA,EADiB,kBAAVA,EACC,eAAWA,GAEG,kBAAVA,EACHA,EAAMc,MAAM,WAAcd,EAAQ,eAAWA,GAG9C,OAELA,GAEX0qe,EAAQxoe,UAAUyoe,UAAY,WAC1B,gBAAShye,KAAKoE,QAAS,CAAE,UAAW,GAAKpE,KAAKurB,UAElDwmd,EAAQxoe,UAAU49W,SAAW,WACI,gBAAzBnnX,KAAKoE,QAAQ0T,SACb,eAAS,CAAC9X,KAAKoE,SAAUste,GAE7B,IAAImB,EAAe58d,SAAS1B,cAAc,mBACrC,eAAkBs+d,GAAgB7ye,KAAKqzH,YACxC,eAAS,CAACw/W,GAAgB7ye,KAAKqzH,WAAY,CAACs+W,IAEhD3xe,KAAK+iB,SAAW/iB,KAAKoE,QAAQkrB,aAAa,YAActvB,KAAKoE,QAAQ4O,aAAa,YAAc,KAC3FhT,KAAKiye,YAA4B,SAAdjye,KAAK6W,MACzB,eAAS,CAAC7W,KAAKoE,SAAU,CAACqte,IAE9B,gBAAY,CAACzxe,KAAKoE,SAAU,CAACshW,EAAM16V,EAAOome,EAAOC,EAAMG,EAAOD,EAAMD,IACpEtxe,KAAKoE,QAAQ+C,UAAUgN,IAAIvJ,GAC3B,eAAS,CAAC5K,KAAKoE,SAA6B,UAAlBpE,KAAKgF,SAAwBose,EAAQC,GAC3Drxe,KAAKiye,YACL,eAAS,CAACjye,KAAKoE,SAAU6se,GAExB,eAAkBjxe,KAAK+iB,WACxB/iB,KAAKoE,QAAQ6O,aAAa,WAAYjT,KAAK+iB,UAE7B,SAAd/iB,KAAK6W,MAAoB,OAAQkB,SAG3B/X,KAAKotD,QACX,eAAS,CAACptD,KAAKoE,SAAU,CAAC4G,EAAO4me,IAHjC5xe,KAAKqY,QAMb05d,EAAQxoe,UAAU8oe,UAAY,SAAU7td,GAChB,SAAdxkB,KAAK6W,MAAiC,SAAd7W,KAAK6W,MAAiC,UAAd7W,KAAK6W,KACvD7W,KAAK6W,KAAO,OAGP7W,KAAKoE,QAAQ+C,UAAUC,SAAS4D,IAAWwZ,GAC5CxkB,KAAKga,QAIjB+3d,EAAQxoe,UAAUupe,cAAgB,SAAUt9d,GACxCxV,KAAKkye,UACA,eAAkB18d,IAAOxV,KAAKmye,aAC/Bnye,KAAKmkJ,gBAETnkJ,KAAKmye,aAAc,EACnB,OAAalke,OAAOjO,KAAKoE,QAAS,gBAAiBpE,KAAK8ye,gBAE5Df,EAAQxoe,UAAUwpe,gBAAkB,WAChC,IAAIt4E,EAAUxkZ,SAAS1B,cAAc,oBAAsBvU,KAAKqzH,UAC5DrzH,KAAK2J,QAAU3J,KAAKgze,cAAgBv4E,IAAY,eAAkBz6Z,KAAKize,oBACvE,gBAAY,CAACjze,KAAKize,oBAAqB9B,GAElCnxe,KAAKgze,cAAgBhze,KAAKorB,QAC/BprB,KAAKorB,MAAMrmB,MAAMyK,QAAU,OAC3BxP,KAAKorB,MAAMoD,UAAY,GACvBxuB,KAAKorB,MAAQ,OAUrB2md,EAAQxoe,UAAUyQ,KAAO,SAAUxE,GAC/B,IAAIhJ,EAAQxM,KACRkze,EAAiB,CACjBxqd,MAAO1oB,KACPoE,QAASpE,KAAKoE,QACd0S,QAAQ,EACRE,cAAe,eAAkBxB,GACjCuB,MAAQvB,GAAK,MAEjBxV,KAAKuQ,QAAQ,QAAS2ie,GAAgB,SAAUC,GAC5C,IAAKA,EAAkBr8d,OAAQ,CAC3B,GAAItK,EAAMpI,QAAQ+C,UAAUC,SAAS4D,GACjC,OAEAwB,EAAMpI,QAAQ+C,UAAUC,SAASs+V,KAAUl5V,EAAMs1C,SACjDt1C,EAAM23I,gBAEV,eAAS,CAAC33I,EAAMpI,SAAU4G,GAC1B,gBAAY,CAACwB,EAAMpI,SAAUshW,GAC7B,gBAASl5V,EAAMpI,QAAS,CAAE,MAAS,eAAWoI,EAAMyle,WAAazle,EAAMome,SAAWpme,EAAMnF,SACxFmF,EAAM8le,QAAQ9le,EAAMqK,MACpB,IAAI4jZ,EAAUxkZ,SAAS1B,cAAc,oBAAsB/H,EAAM6mH,WAC5D7mH,EAAMyle,YAAcx3E,IACrBA,EAAQ11Z,MAAMyqG,UAAY,kBAC1BirT,EAAQ11Z,MAAyB,SAAnByH,EAAMxH,SAAsB,aAAe,eAAiB,OAE9EwH,EAAMume,kBACNvme,EAAM4me,eACa,UAAf5me,EAAMqK,MACNZ,SAASnP,KAAKK,UAAU8G,OAAO,sBAEnCzB,EAAM+G,cAAc,CAAE65C,QAAQ,IAAS,GACnC5gD,EAAMyle,YACNx8d,YAAW,WAAc,OAAOjJ,EAAM6me,eAAiB,IAE3D,OAAal/d,IAAI3H,EAAMpI,QAAS,gBAAiBoI,EAAMsme,cAAetme,QAIlFule,EAAQxoe,UAAU8pe,WAAa,WAC3B,IAAI54E,EAAUxkZ,SAAS1B,cAAc,oBAAsBvU,KAAKqzH,UAC5DjnC,EAAepsF,KAAKoE,QAAQiC,wBAAwBgB,OACpDrH,KAAKoE,QAAQ+C,UAAUC,SAASs+V,KAAS+0D,GAA2B,SAAdz6Z,KAAK6W,MAAmB7W,KAAKiye,WAQ9Ejye,KAAKoE,QAAQ+C,UAAUC,SAAS4D,IAAUyvZ,IACzB,SAAlBz6Z,KAAKgF,SACLy1Z,EAAQ11Z,MAAMkpL,WAAajuL,KAAKwjW,aAA+B,SAAlBxjW,KAAK4ye,SAAsBxmZ,EAAepsF,KAAK4ye,UAG5Fn4E,EAAQ11Z,MAAM2mB,YAAc1rB,KAAKwjW,aAA+B,SAAlBxjW,KAAK4ye,SAAsBxmZ,EAAepsF,KAAK4ye,WAZ3E,SAAlB5ye,KAAKgF,SACLy1Z,EAAQ11Z,MAAMkpL,WAAajuL,KAAKwjW,aAA4B,SAAfxjW,KAAKqH,MAAmB+kF,EAAepsF,KAAKqH,OAGzFozZ,EAAQ11Z,MAAM2mB,YAAc1rB,KAAKwjW,aAA4B,SAAfxjW,KAAKqH,MAAmB+kF,EAAepsF,KAAKqH,QAkBtG0qe,EAAQxoe,UAAU8O,KAAO,SAAU7C,GAC/B,IAAIhJ,EAAQxM,KACRsze,EAAgB,CAChB5qd,MAAO1oB,KACPoE,QAASpE,KAAKoE,QACd0S,QAAQ,EACRE,cAAe,eAAkBxB,GACjCuB,MAAQvB,GAAK,MAEjBxV,KAAKuQ,QAAQ,OAAQ+ie,GAAe,SAAUC,GAC1C,IAAKA,EAAiBz8d,OAAQ,CAE1B,GADA,gBAAY,CAACtK,EAAMpI,SAAU,CAACqte,EAAYG,IACtCple,EAAMpI,QAAQ+C,UAAUC,SAASs+V,GACjC,OAEAl5V,EAAMpI,QAAQ+C,UAAUC,SAAS4D,KAAWwB,EAAMs1C,SAClDt1C,EAAM23I,gBAEV,eAAS,CAAC33I,EAAMpI,SAAU,CAACshW,EAAMwrI,IACjC,gBAAS1ke,EAAMpI,QAAS,CAAE,UAAa,KACvC,gBAAY,CAACoI,EAAMpI,SAAU4G,GAC7B,gBAASwB,EAAMpI,QAAS,CAAE,MAAS,eAAWoI,EAAMnF,SACpDmF,EAAM8le,QAAQ9le,EAAMqK,MACpBrK,EAAMgne,iBACNhne,EAAM4me,eACa,UAAf5me,EAAMqK,MACNZ,SAASnP,KAAKK,UAAUgN,IAAI,sBAEhC3H,EAAM+G,cAAc,CAAE65C,QAAQ,IAAQ,GACtC,OAAaj5C,IAAI3H,EAAMpI,QAAS,gBAAiBoI,EAAMsme,cAAetme,QAIlFule,EAAQxoe,UAAU6pe,aAAe,WACzBpze,KAAK8hD,QACL,gBAAY,CAAC9hD,KAAKoE,SAAUwte,GAG5B,eAAS,CAAC5xe,KAAKoE,SAAUwte,IAGjCG,EAAQxoe,UAAU46I,cAAgB,WAC9B,IAAIsvV,EAAkB,CAAE9re,KAAM,SAAUvD,QAASpE,KAAKoE,SACtDpE,KAAKuQ,QAAQ,SAAUkje,IAE3B1B,EAAQxoe,UAAU2oe,QAAU,WACpBlye,KAAKiye,YAAgC,SAAlBjye,KAAKgF,WAAwBhF,KAAK+pI,WACrD,gBAAS/pI,KAAKoE,QAAS,CAAE,UAAa,gCAA0CpE,KAAKwjW,aAAaxjW,KAAK4ye,UAAY,MAE9G5ye,KAAKiye,YAAgC,UAAlBjye,KAAKgF,WAAyBhF,KAAK+pI,YAC3D,gBAAS/pI,KAAKoE,QAAS,CAAE,UAAa,gCAA+CpE,KAAKwjW,aAAaxjW,KAAK4ye,UAAY,MAExH5ye,KAAKoE,QAAQ+C,UAAUC,SAAS4D,IAAUhL,KAAKiye,YAC/C,gBAASjye,KAAKoE,QAAS,CAAE,MAASpE,KAAKwjW,aAAaxjW,KAAK4ye,aAGjEb,EAAQxoe,UAAUiqe,eAAiB,WAC/B,GAAIxze,KAAK2J,QAAU3J,KAAKgze,cAAgBhze,KAAK+pI,WAAY,CACrD,IAAI2pW,EAAe1ze,KAAK2J,OACpB8wZ,EAAUxkZ,SAAS1B,cAAc,oBAAsBvU,KAAKqzH,UAChErzH,KAAKize,mBAAqBjze,KAAKwN,cAAc,OAC7C,eAAS,CAACxN,KAAKize,oBAAqB9B,GACpC,gBAASnxe,KAAKize,mBAAoB,CAAEhse,OAAQyse,EAAa3ue,MAAMkC,SAC/DwzZ,EAAQ9sZ,YAAY3N,KAAKize,yBAEpBjze,KAAKgze,eAAiBhze,KAAKorB,OAASprB,KAAK+pI,aAC9C/pI,KAAKorB,MAAQprB,KAAKwN,cAAc,OAChCxN,KAAKorB,MAAM3d,UAAY0je,EACvBnxe,KAAKorB,MAAMrmB,MAAMyK,QAAU,QAC3ByG,SAASnP,KAAK6G,YAAY3N,KAAKorB,SAGvC2md,EAAQxoe,UAAUsT,eAAiB,WAC/B,OAAO7c,KAAK8c,aAAa,CAAC,OAAQ,WAAY,YASlDi1d,EAAQxoe,UAAUqT,cAAgB,WAC9B,MAAO,WAOXm1d,EAAQxoe,UAAUolF,OAAS,WACnB3uF,KAAKoE,QAAQ+C,UAAUC,SAASs+V,GAChC1lW,KAAKga,OAGLha,KAAKqY,QAGb05d,EAAQxoe,UAAUwgI,SAAW,WACzB,QAAO/pI,KAAKoE,QAAQ+C,UAAUC,SAASs+V,IAE3CqsI,EAAQxoe,UAAU6oe,cAAgB,WAC9B,GAAIpye,KAAK2ze,WAAY,CACjB,IAAIv6D,GAAQ,EAERA,EAD6B,kBAArBp5a,KAAe,WACfiP,OAAO63U,WAAW9mV,KAAK2ze,YAAYh3U,QAGlC38J,KAAe,WAAE28J,QAE1By8Q,GAASp5a,KAAK47L,cAAgB3sL,OAAO4sL,WACrC77L,KAAKqY,OAEArY,KAAK+pI,YAAc/pI,KAAK47L,cAAgB3sL,OAAO4sL,YACpD77L,KAAKga,SAIjB+3d,EAAQxoe,UAAUqpK,OAAS,WACL,SAAd5yK,KAAK6W,OACD,OAAQkB,SACR,eAAS,CAAC/X,KAAKoE,SAAUkte,GAGzB,eAAS,CAACtxe,KAAKoE,SAAUmte,IAGjCvxe,KAAKoye,gBACD,OAAQr6d,WACR/X,KAAK47L,YAAc3sL,OAAO4sL,aAGlCk2S,EAAQxoe,UAAUope,qBAAuB,SAAUn9d,GAC3C,eAAQA,EAAE7L,OAAQ,IAAM+T,EAAe,IAAM9S,IAGjD5K,KAAKga,KAAKxE,IAEdu8d,EAAQxoe,UAAUqqe,qBAAuB,SAAUrmd,IAC1CvtB,KAAKotD,QAA4B,SAAlBptD,KAAKgF,UAA+C,UAAxBuoB,EAAKpB,gBAChDoB,EAAKuzW,QAAU,IAAMvzW,EAAKs0B,WAAa,IAAMt0B,EAAKq0B,UAAY,GAC/D5hD,KAAKqY,OAEArY,KAAKotD,QAA4B,SAAlBptD,KAAKgF,UAA+C,SAAxBuoB,EAAKpB,gBAGhDnsB,KAAKotD,QAA4B,UAAlBptD,KAAKgF,UAAgD,UAAxBuoB,EAAKpB,eAFtDnsB,KAAKga,QAKCha,KAAKotD,QAA4B,UAAlBptD,KAAKgF,UAAgD,SAAxBuoB,EAAKpB,gBACnDld,OAAO4sL,WAAatuK,EAAKuzW,QAAU,IAAMvzW,EAAKs0B,WAAa,IAAMt0B,EAAKq0B,UAAY,IACtF5hD,KAAKqY,QAGb05d,EAAQxoe,UAAUsqe,kBAAoB,WAC9B7ze,KAAK8ze,gBACL9ze,KAAK+ze,eAAiB,IAAI,OAAM99d,SAASnP,KAAM,CAAE6kB,MAAO3rB,KAAK4ze,qBAAqBple,KAAKxO,QACvFA,KAAKg0e,WAAa,IAAI,OAAMh0e,KAAKoE,QAAS,CAAEunB,MAAO3rB,KAAK4ze,qBAAqBple,KAAKxO,SAG9EA,KAAK+ze,gBAAkB/ze,KAAKg0e,aAC5Bh0e,KAAK+ze,eAAez5d,UACpBta,KAAKg0e,WAAW15d,YAI5By3d,EAAQxoe,UAAUmS,WAAa,WAC3B1b,KAAK6ze,oBACL,OAAa1/d,IAAIlF,OAAQ,SAAUjP,KAAK4yK,OAAQ5yK,OAEpD+xe,EAAQxoe,UAAUwrD,aAAe,WAC7B,OAAa9mD,OAAOgB,OAAQ,SAAUjP,KAAK4yK,QAC3C,OAAa3kK,OAAOgI,SAAU,uBAAwBjW,KAAK2ye,sBACvD3ye,KAAK+ze,gBACL/ze,KAAK+ze,eAAez5d,UAEpBta,KAAKg0e,YACLh0e,KAAKg0e,WAAW15d,WAYxBy3d,EAAQxoe,UAAUwT,kBAAoB,SAAUC,EAASC,GAGrD,IAFA,IAAIw9Y,EAAUxkZ,SAAS1B,cAAc,oBAAsBvU,KAAKqzH,UAC5Dq6F,EAAa1tN,KAAKk1H,iBACbh/G,EAAK,EAAGlJ,EAAKjE,OAAOmU,KAAKF,GAAU9G,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAC9D,IAAIiH,EAAOnQ,EAAGkJ,GACd,OAAQiH,GACJ,IAAK,SACGnd,KAAKotD,OACLptD,KAAKqY,OAGLrY,KAAKga,OAET,MACJ,IAAK,QACDha,KAAK8iB,WACA9iB,KAAK+pI,YACN/pI,KAAKkye,UAET,MACJ,IAAK,UACDlye,KAAKoze,eACL,MACJ,IAAK,OACDpze,KAAKqye,WAAU,GACf,gBAAY,CAACrye,KAAKoE,SAAU,CAACqte,IAC7Bzxe,KAAKmnX,WACL,eAAS,CAACnnX,KAAKoE,SAAwB,SAAdpE,KAAK6W,KAAmB,OAAQkB,SAAW,CAAC,UACjE,CAAC,UAAa,CAAC,KAAO/X,KAAK6W,KAAK9Q,gBACpC,MACJ,IAAK,WACD/F,KAAKoE,QAAQW,MAAMyqG,UAAY,GAC/BxvG,KAAKkye,UACDz3E,IACAA,EAAQ11Z,MAAwB,SAAlB/E,KAAKgF,SAAsB,cAAgB,cAAgB,OAEvD,UAAlBhF,KAAKgF,UACL,gBAAY,CAAChF,KAAKoE,SAAUite,GAC5B,eAAS,CAACrxe,KAAKoE,SAAUgte,KAGzB,gBAAY,CAACpxe,KAAKoE,SAAUgte,GAC5B,eAAS,CAACpxe,KAAKoE,SAAUite,IAE7Brxe,KAAKsye,QAAQtye,KAAK6W,MAClB,MACJ,IAAK,eACG7W,KAAKgze,aACLhze,KAAKwze,iBAGDxze,KAAKorB,QACLprB,KAAKorB,MAAMrmB,MAAMyK,QAAU,OAC3BxP,KAAKorB,MAAMoD,UAAY,GACvBxuB,KAAKorB,MAAQ,MAGrB,MACJ,IAAK,SAC4B,kBAAjBprB,KAAW,QACnBA,KAAKuT,cAAc,CAAE5J,OAAQsM,SAAS1B,cAAcvU,KAAK2J,UAAW,GAEpE,eAAkB3J,KAAK2J,UACvB,gBAAY,CAAC3J,KAAKoE,SAAU0te,GAC5B,gBAAY,CAAC70d,EAAQtT,QAASkoe,GAC9B,gBAASp3E,EAAS,CAAE,cAAe,EAAG,eAAgB,IACtDxkZ,SAASnP,KAAKkoB,sBAAsB,aAAchvB,KAAKoE,UAE3DpE,KAAKk1H,kBAAmB,EACxBjpH,EAAO1C,UAAU6T,QAAQ3Q,KAAKzM,MAC9BA,KAAKk1H,iBAAmBw4F,EACxB,MACJ,IAAK,uBACD1tN,KAAKuye,0BACL,MACJ,IAAK,aACIvye,KAAK+pI,YACN/pI,KAAKkye,UAET,MACJ,IAAK,SACDlye,KAAKgye,YACL,MACJ,IAAK,aACDhye,KAAKoye,gBACL,MACJ,IAAK,iBACDpye,KAAK6ze,oBACL,MACJ,IAAK,YACD7ze,KAAKu8K,eACL,SAIhBw1T,EAAQxoe,UAAU+oe,QAAU,SAAUz7d,GAClC,IAAIu1E,EAAepsF,KAAKoE,QAAQiC,wBAAwBgB,MACxDrH,KAAKgye,YACL,IAAIv3E,EAAUxkZ,SAAS1B,cAAc,oBAAsBvU,KAAKqzH,UAC5DonS,IACAA,EAAQ11Z,MAAMyqG,UAAY,kBACrB,OAAQz3F,UAA0B,SAAd/X,KAAK6W,MAAmC,SAAd7W,KAAK6W,MAAmB7W,KAAKiye,aAC5Ex3E,EAAQ11Z,MAAwB,SAAlB/E,KAAKgF,SAAsB,aAAe,eAAiB,QAGjF,IAAI4sD,GAAS5xD,KAAKgF,SAAsBonF,EAAe,MACnD+hG,EAA6B,SAAlBnuL,KAAKgF,SAAsBonF,GAAgB,EAE1D,OADA,gBAAY,CAACpsF,KAAKoE,SAAU,CAACmte,EAAMD,EAAME,IACjC36d,GACJ,IAAK,OACD,eAAS,CAAC7W,KAAKoE,SAAU,CAACmte,IACtB92E,IAAYz6Z,KAAKiye,YAAcjye,KAAKoE,QAAQ+C,UAAUC,SAASs+V,MAC/D+0D,EAAQ11Z,MAAwB,SAAlB/E,KAAKgF,SAAsB,aAAe,eAAiB4sD,GAE7E,MACJ,IAAK,QACD,eAAS,CAAC5xD,KAAKoE,SAAU,CAACote,IACtB/2E,IAAYz6Z,KAAKiye,YAAcjye,KAAKoE,QAAQ+C,UAAUC,SAASs+V,MAC/D+0D,EAAQ11Z,MAAMyqG,UAAY,cAAgB2+E,EAAW,OAEzD,MACJ,IAAK,OACD,eAAS,CAACnuL,KAAKoE,SAAU,CAACkte,IACtBtxe,KAAKiye,aAAejye,KAAKoE,QAAQ+C,UAAUC,SAAS4D,IAAUhL,KAAKotD,SAC/DqtW,IACAA,EAAQ11Z,MAAwB,SAAlB/E,KAAKgF,SAAsB,aAAe,eAAiBhF,KAAKwjW,aAAaxjW,KAAK4ye,WAGxG,MACJ,IAAK,OACD,eAAS,CAAC5ye,KAAKoE,SAAU,CAAC8se,IACtB,OAAQn5d,SACJ0iZ,GAAYz6Z,KAAe,aAAMA,KAAK+pI,YACtC0wR,EAAQ11Z,MAAwB,SAAlB/E,KAAKgF,SAAsB,aAAe,eAAiB4sD,EACzE,eAAS,CAAC5xD,KAAKoE,SAAUmte,IAGzB,eAAS,CAACvxe,KAAKoE,SAAUkte,IAI7B,eAAS,CAACtxe,KAAKoE,SAAUmte,GACrB92E,IAAYz6Z,KAAKiye,YAAcjye,KAAKoE,QAAQ+C,UAAUC,SAASs+V,MAC/D+0D,EAAQ11Z,MAAwB,SAAlB/E,KAAKgF,SAAsB,aAAe,eAAiB4sD,IAGjF5xD,KAAKwze,mBASjBzB,EAAQxoe,UAAU+Q,QAAU,WACxBrO,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,MAC1BA,KAAK2J,QACL,gBAAY,CAAC3J,KAAK2J,QAASkoe,GAE/B7xe,KAAK+ye,kBACD/ye,KAAKoE,UACL,gBAAY,CAACpE,KAAKoE,SAAU,CAACshW,EAAM16V,EAAOume,EAAMC,EAAOF,EAAMD,EAAMD,EAAOF,EAAWU,IACrF,gBAAY,CAAC5xe,KAAKoE,SAAU0te,GAC5B9xe,KAAKoE,QAAQW,MAAMsC,MAAQ,GAC3BrH,KAAKoE,QAAQW,MAAMwmB,OAAS,GAC5BvrB,KAAKoE,QAAQW,MAAMyqG,UAAY,GAC1B,eAAkBxvG,KAAKwye,eAAex/d,aAAa,aAIpDhT,KAAKoE,QAAQ8O,gBAAgB,YAH7BlT,KAAKoE,QAAQ6O,aAAa,WAAYjT,KAAK+iB,WAMnD/iB,KAAK47L,YAAc,KACnB,IAAI6+N,EAAUxkZ,SAAS1B,cAAc,oBAAsBvU,KAAKqzH,UAC3D,eAAkBonS,KACnBA,EAAQ11Z,MAAM6sD,OAAS,GACvB6oW,EAAQ11Z,MAAMyqG,UAAY,IAE9BxvG,KAAK+0D,gBAETtrD,EAAW,CACP,eAAS,SACVsoe,EAAQxoe,UAAW,gBAAY,GAClCE,EAAW,CACP,eAAS,OACVsoe,EAAQxoe,UAAW,kBAAc,GACpCE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,kBAAc,GACpCE,EAAW,CACP,eAAS,UACVsoe,EAAQxoe,UAAW,cAAU,GAChCE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,yBAAqB,GAC3CE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,sBAAkB,GACxCE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,cAAU,GAChCE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,iBAAa,GACnCE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,SACVsoe,EAAQxoe,UAAW,cAAU,GAChCE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,4BAAwB,GAC9CE,EAAW,CACP,eAAS,SACVsoe,EAAQxoe,UAAW,gBAAY,GAClCE,EAAW,CACP,eAAS,OACVsoe,EAAQxoe,UAAW,cAAU,GAChCE,EAAW,CACP,gBAAS,IACVsoe,EAAQxoe,UAAW,oBAAgB,GACtCE,EAAW,CACP,eAAS,SACVsoe,EAAQxoe,UAAW,YAAQ,GAC9BE,EAAW,CACP,eAAS,SACVsoe,EAAQxoe,UAAW,aAAS,GAC/BE,EAAW,CACP,eAAS,MACVsoe,EAAQxoe,UAAW,cAAU,GAChCE,EAAW,CACP,kBACDsoe,EAAQxoe,UAAW,eAAW,GACjCE,EAAW,CACP,kBACDsoe,EAAQxoe,UAAW,aAAS,GAC/BE,EAAW,CACP,kBACDsoe,EAAQxoe,UAAW,YAAQ,GAC9BE,EAAW,CACP,kBACDsoe,EAAQxoe,UAAW,cAAU,GAChCE,EAAW,CACP,kBACDsoe,EAAQxoe,UAAW,iBAAa,GACnCwoe,EAAUtoe,EAAW,CACjB,QACDsoe,GACIA,EAzpBiB,CA0pB1B,QC7sBSnvd,EAAa,CAAC,eAAgB,UAAW,UAAW,uBAAwB,WAAY,aAAc,iBAAkB,oBAAqB,YAAa,SAAU,SAAU,SAAU,aAAc,WAAY,eAAgB,SAAU,OAAQ,QAAS,SAAU,SAAU,QAAS,UAAW,YAAa,QAClT8gB,EAAa,CAAC,UACdC,EAAW,eAAS,CAAEC,MAAOhhB,IAC7BghB,EAAQD,EAAS,GAAIE,EAAQF,EAAS,GAAIG,EAAY/6B,OAAOmU,KAAK2mB,GAC7EC,EAAUpvB,KAAK,eAAgB,qBAC/B,IAAK,IAAI,EAAK,EAAGqvB,EAAeL,EAAY,EAAKK,EAAah6B,OAAQ,IAAM,CACxE,IAAIi6B,EAAUD,EAAa,GAC3BD,EAAUpvB,KAAK,UAAYsvB,GAQxB,IAAIiwc,EAAmB,eAAmB,CAC7Ctse,KAAM,mBACNu8B,OAAQ,CAAC,QACTN,MAAOA,EACPC,MAAOA,EACPM,MAAOL,EACPpb,MAAO,CAAE3R,MAAO,gBAChBqtB,QAAS,WAAc,MAAO,CAAEC,OAAQrkC,KAAKqkC,SAC7ClQ,KAAM,WACF,MAAO,CACHmQ,aAAc,IAAI,EAAQ,IAC1BC,SAAU3hB,EACV4hB,OAAQd,EACRe,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,GACXC,cAAe,GACfC,QAAS,OACTC,mBAAoB,KAG5BC,QAAS,WACL/kC,KAAKskC,aAAaU,SAAWhlC,KAAKskC,aAAa/zB,QAC/CvQ,KAAKskC,aAAa/zB,QAAUvQ,KAAKuQ,QACjCvQ,KAAKilC,iBACLjlC,KAAKskC,aAAaY,eAAiBllC,KAAKskC,aAAa/wB,cACrDvT,KAAKskC,aAAa/wB,cAAgBvT,KAAKuT,cACvCvT,KAAKskC,aAAa3zB,cAAgB3Q,KAAK2Q,cACvC3Q,KAAKmlC,QAAUnlC,KAAKmlC,SAExB1pB,OAAQ,SAAUjO,GACd,IAAIzL,EAAK,OAAiByL,EAAL,OACjB43B,EAAQ,KAIZ,OAHK,eAAkBplC,KAAKqlC,OAAOC,WAC/BF,EAAS,OAAoCplC,KAAKqlC,OAAOC,QAApCtlC,KAAKqlC,OAAOC,WAE9BvjC,EAAE,MAAOqjC,IAEpBG,QAAS,CACL50B,cAAe,SAAU60B,GAIrB,GAHKA,IACDA,EAAgBz8B,OAAOmU,KAAKld,KAAK8kC,oBAAsB,KAEvDU,EAAcz7B,QAAU/J,KAAK8kC,mBAC7B,IAAK,IAAI5uB,EAAK,EAAGuvB,EAAkBD,EAAetvB,EAAKuvB,EAAgB17B,OAAQmM,IAAM,CACjF,IAAIwvB,EAAWD,EAAgBvvB,GAC3ByvB,EAAoB3lC,KAAK8kC,mBAAmBY,GAChD,GAAIC,GAAqBA,EAAkB57B,OAAQ,CAC/C,IAAK,IAAIiD,EAAK,EAAG44B,EAAsBD,EAAmB34B,EAAK44B,EAAoB77B,OAAQiD,IAAM,CAC7F,IAAI64B,EAAMD,EAAoB54B,GAC1BsN,EAAU,eAAS,mBAAoBurB,GACvCvrB,GACAurB,EAAIC,QAAQC,WAEZF,EAAIzyB,YACJyyB,EAAIzyB,UAAY,WAGjBpT,KAAK8kC,mBAAmBY,MAK/CnyB,cAAe,SAAU4J,EAAM6oB,GAC3B,IAAIx5B,EAAQxM,KACRA,KAAK6kC,SACL7kC,KAAKwkC,OAAUxkC,KAAKwkC,OAAyCxkC,KAAKwkC,OAArCxkC,KAAKskC,aAAa2B,aAE/CjmC,KAAKskC,cAAgBtkC,KAAKskC,aAAaY,gBACvCllC,KAAKskC,aAAaY,eAAe/nB,EAAM6oB,GAEvC7oB,GAAQnd,KAAKwkC,QAAUxkC,KAAKwkC,OAAOz6B,QACnChB,OAAOmU,KAAKC,GAAM7N,KAAI,SAAUzL,GAC5B2I,EAAMg4B,OAAOl1B,KAAI,SAAUoZ,GAClB7kB,IAAQ6kB,GAAY,cAAchpB,KAAKmE,KACpC2I,EAAMq4B,OACNr4B,EAAM83B,aAAa4B,YAAYC,MAAM,UAAYtiC,EAAKsZ,EAAKtZ,KAG3D2I,EAAM25B,MAAM,UAAYtiC,EAAKsZ,EAAKtZ,IAClC2I,EAAM25B,MAAM,eAAgBhpB,EAAKtZ,aAOzD0M,QAAS,SAAU6V,EAAWggB,EAAWC,GAIrC,GAHK,SACDrmC,KAAKwkC,OAAUxkC,KAAKwkC,OAAyCxkC,KAAKwkC,OAArCxkC,KAAKskC,aAAa2B,aAEhC,WAAd7f,GAAwC,UAAdA,IAA0BpmB,KAAKwkC,QAAkC,IAAvBxkC,KAAKwkC,OAAOz6B,QAiBhF,GAAmB,gBAAdqc,GAAyD,iBAA1BggB,EAAUE,aAAmCtmC,KAAKwkC,QAAkC,IAAvBxkC,KAAKwkC,OAAOz6B,OAAe,CACzHlG,EAAM7D,KAAKwkC,OAAO9qB,WAAWvR,MAAM,6BAA+B,GAClEo+B,EAAU1iC,EAAI,GACduiC,GAAaviC,IAAQ,eAAYuiC,EAAUG,MACtC,QAKDvmC,KAAKmmC,MAAM,UAAYI,EAASH,EAAUG,IAC1CvmC,KAAKmmC,MAAM,eAAgBC,EAAUG,MALrCvmC,KAAKskC,aAAa4B,YAAYC,MAAM,UAAYI,EAASH,EAAUG,IACnEvmC,KAAKskC,aAAa4B,YAAYC,MAAM,eAAgBC,EAAUG,WAvB0B,CAChG,IAAI1iC,EAAM7D,KAAKwkC,OAAO9qB,WAAWvR,MAAM,kBAAoB,GACvDo+B,EAAU1iC,EAAI,GACduiC,GAAaviC,IAAQ,eAAYuiC,EAAUG,MACtC,QAMiB,WAAdngB,GAA2BpmB,KAAKwmC,SAAWxmC,KAAKwmC,OAAOC,gBACvDzmC,KAAKmmC,MAAM,UAAYI,EAASH,EAAUG,IAC1CvmC,KAAKmmC,MAAM,eAAgBC,EAAUG,MAPzCvmC,KAAKskC,aAAa4B,YAAYC,MAAM,UAAYI,EAASH,EAAUG,IACnEvmC,KAAKskC,aAAa4B,YAAYC,MAAM,eAAgBC,EAAUG,IAC9DvmC,KAAKskC,aAAa4B,YAAYC,MAAM,oBAAqBC,EAAUG,MAwB1EvmC,KAAKskC,cAAgBtkC,KAAKskC,aAAaU,UACxChlC,KAAKskC,aAAaU,SAAS5e,EAAWggB,EAAWC,IAGzDhC,OAAQ,WACJrkC,KAAKmlC,WAETnrB,KAAM,SAAUxE,GACZ,OAAOxV,KAAKskC,aAAatqB,KAAKxE,IAElC6C,KAAM,SAAU7C,GACZ,OAAOxV,KAAKskC,aAAajsB,KAAK7C,IAElCm5E,OAAQ,WACJ,OAAO3uF,KAAKskC,aAAaqqD,aAI1BulZ,EAAgB,CACvBvse,KAAM,cACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAUqtc,EAAcvse,KAAMsse,M,sBC9JxC,SAAUn0e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIk0e,EAAKl0e,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EC,MACjF,KAEJC,YAAa,6EAA6ED,MACtF,KAEJE,SAAU,sCAAsCF,MAAM,KACtDG,cAAe,oCAAoCH,MAAM,KACzDI,YAAa,mBAAmBJ,MAAM,KACtCw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEV4B,cAAe,kBACf6F,KAAM,SAAUP,GACZ,MAAiB,WAAVA,GAEXnF,SAAU,SAAUD,EAAME,EAAQC,GAC9B,OAAIH,EAAO,GACA,WAEA,UAGf7B,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNC,EAAG,mBACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,YACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SACJC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,SAERgB,uBAAwB,eACxBC,QAAS,SAAUI,GACf,MAAO,MAAQA,KAIvB,OAAOwwe,M,sBClET,SAAUr0e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;SAAS6mC,EAAoBnjC,EAAQC,EAAeC,EAAKC,GACrD,IAAIogB,EAAS,CACTriB,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,UAAW,aACfC,GAAI,CAACyB,EAAS,QAASA,EAAS,UAChCoxB,EAAG,CAAC,aAAc,eAClB5yB,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACuB,EAAS,UAAWA,EAAS,YAClCtB,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACqB,EAAS,SAAUA,EAAS,YAErC,OAAOC,EAAgBsgB,EAAOrgB,GAAK,GAAKqgB,EAAOrgB,GAAK,GAGxD,IAAIuwe,EAAOn0e,EAAOE,aAAa,QAAS,CACpCC,OAAQ,qFAAqFC,MACzF,KAEJC,YAAa,6DAA6DD,MACtE,KAEJsC,kBAAkB,EAClBpC,SAAU,8DAA8DF,MACpE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1Cw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJC,EAAGilC,EACHhlC,GAAI,aACJC,EAAG+kC,EACH9kC,GAAI,aACJC,EAAG6kC,EACH5kC,GAAI4kC,EACJ/R,EAAG+R,EACH9R,GAAI,YACJ7yB,EAAG2kC,EACH1kC,GAAI0kC,EACJzkC,EAAGykC,EACHxkC,GAAIwkC,GAERxjC,uBAAwB,YACxBC,QAAS,MACThB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAO2xe,M,sBCjFT,SAAUt0e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;SAAS6mC,EAAoBnjC,EAAQC,EAAeC,EAAKC,GACrD,IAAIogB,EAAS,CACTriB,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,UAAW,aACfC,GAAI,CAACyB,EAAS,QAASA,EAAS,UAChCoxB,EAAG,CAAC,aAAc,eAClB5yB,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACuB,EAAS,UAAWA,EAAS,YAClCtB,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACqB,EAAS,SAAUA,EAAS,YAErC,OAAOC,EAAgBsgB,EAAOrgB,GAAK,GAAKqgB,EAAOrgB,GAAK,GAGxD,IAAIwwe,EAAKp0e,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YAAa,6DAA6DD,MACtE,KAEJsC,kBAAkB,EAClBpC,SAAU,8DAA8DF,MACpE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1Cw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJC,EAAGilC,EACHhlC,GAAI,aACJC,EAAG+kC,EACH9kC,GAAI,aACJC,EAAG6kC,EACH5kC,GAAI4kC,EACJ/R,EAAG+R,EACH9R,GAAI,YACJ7yB,EAAG2kC,EACH1kC,GAAI0kC,EACJzkC,EAAGykC,EACHxkC,GAAIwkC,GAERxjC,uBAAwB,YACxBC,QAAS,MACThB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAO4xe,M,kCCpFX,IAAI9hd,EAAQ,EAAQ,QAChB+hd,EAAS,EAAQ,QACjBC,EAAU,EAAQ,QAClB/hd,EAAW,EAAQ,QACnBgid,EAAgB,EAAQ,QACxBC,EAAe,EAAQ,QACvBC,EAAkB,EAAQ,QAC1Bj9S,EAAc,EAAQ,QAE1B93L,EAAOC,QAAU,SAAoBszB,GACnC,OAAO,IAAIK,SAAQ,SAA4BC,EAAS81G,GACtD,IAAIqrW,EAAczhd,EAAOiB,KACrBygd,EAAiB1hd,EAAOwd,QAExBne,EAAMy1E,WAAW2sY,WACZC,EAAe,gBAGxB,IAAI5hd,EAAU,IAAI60E,eAGlB,GAAI30E,EAAO2hd,KAAM,CACf,IAAIC,EAAW5hd,EAAO2hd,KAAKC,UAAY,GACnCC,EAAW7hd,EAAO2hd,KAAKE,SAAWC,SAAS1gc,mBAAmBphB,EAAO2hd,KAAKE,WAAa,GAC3FH,EAAeK,cAAgB,SAAWC,KAAKJ,EAAW,IAAMC,GAGlE,IAAI7iG,EAAWsiG,EAActhd,EAAOw1W,QAASx1W,EAAOC,KA4EpD,GA3EAH,EAAQ1kB,KAAK4kB,EAAOE,OAAOumH,cAAennH,EAAS0/W,EAAUh/W,EAAOe,OAAQf,EAAOgB,mBAAmB,GAGtGlB,EAAQmuB,QAAUjuB,EAAOiuB,QAGzBnuB,EAAQwvV,mBAAqB,WAC3B,GAAKxvV,GAAkC,IAAvBA,EAAQqwV,aAQD,IAAnBrwV,EAAQg2E,QAAkBh2E,EAAQioa,aAAwD,IAAzCjoa,EAAQioa,YAAY/tb,QAAQ,UAAjF,CAKA,IAAIs2W,EAAkB,0BAA2BxwV,EAAUyhd,EAAazhd,EAAQywV,yBAA2B,KACvG0xH,EAAgBjid,EAAO6wV,cAAwC,SAAxB7wV,EAAO6wV,aAAiD/wV,EAAQC,SAA/BD,EAAQowV,aAChFnwV,EAAW,CACbkB,KAAMghd,EACNnsY,OAAQh2E,EAAQg2E,OAChBs6Q,WAAYtwV,EAAQswV,WACpB5yU,QAAS8yU,EACTtwV,OAAQA,EACRF,QAASA,GAGXshd,EAAO9gd,EAAS81G,EAAQr2G,GAGxBD,EAAU,OAIZA,EAAQ8vV,QAAU,WACX9vV,IAILs2G,EAAOmuD,EAAY,kBAAmBvkK,EAAQ,eAAgBF,IAG9DA,EAAU,OAIZA,EAAQgwV,QAAU,WAGhB15O,EAAOmuD,EAAY,gBAAiBvkK,EAAQ,KAAMF,IAGlDA,EAAU,MAIZA,EAAQoid,UAAY,WAClB,IAAIC,EAAsB,cAAgBnid,EAAOiuB,QAAU,cACvDjuB,EAAOmid,sBACTA,EAAsBnid,EAAOmid,qBAE/B/rW,EAAOmuD,EAAY49S,EAAqBnid,EAAQ,eAC9CF,IAGFA,EAAU,MAMRT,EAAMm4I,uBAAwB,CAEhC,IAAI4qU,GAAapid,EAAOqid,iBAAmBb,EAAgBxiG,KAAch/W,EAAOy1E,eAC9E4rY,EAAQn3K,KAAKlqS,EAAOy1E,qBACpBhjG,EAEE2ve,IACFV,EAAe1hd,EAAO01E,gBAAkB0sY,GAuB5C,GAlBI,qBAAsBtid,GACxBT,EAAMkB,QAAQmhd,GAAgB,SAA0Bpwd,EAAK3gB,GAChC,qBAAhB8we,GAAqD,iBAAtB9we,EAAIkC,qBAErC6ue,EAAe/we,GAGtBmvB,EAAQmwV,iBAAiBt/W,EAAK2gB,MAM/B+N,EAAMm1E,YAAYx0E,EAAOqid,mBAC5Bvid,EAAQuid,kBAAoBrid,EAAOqid,iBAIjCrid,EAAO6wV,aACT,IACE/wV,EAAQ+wV,aAAe7wV,EAAO6wV,aAC9B,MAAOvuW,GAGP,GAA4B,SAAxB0d,EAAO6wV,aACT,MAAMvuW,EAM6B,oBAA9B0d,EAAOsid,oBAChBxid,EAAQguB,iBAAiB,WAAY9tB,EAAOsid,oBAIP,oBAA5Btid,EAAO+vV,kBAAmCjwV,EAAQkwV,QAC3DlwV,EAAQkwV,OAAOliU,iBAAiB,WAAY9tB,EAAO+vV,kBAGjD/vV,EAAO88K,aAET98K,EAAO88K,YAAY18K,QAAQQ,MAAK,SAAoBhd,GAC7Ckc,IAILA,EAAQmqJ,QACR7zC,EAAOxyH,GAEPkc,EAAU,SAIT2hd,IACHA,EAAc,MAIhB3hd,EAAQ0vK,KAAKiyS,Q,sBC5Kf,SAAU70e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIw1e,EAAUx1e,EAAOE,aAAa,WAAY,CAC1CC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,wFAAwFD,MACjG,KAEJE,SAAU,kDAAkDF,MAAM,KAClEG,cAAe,kDAAkDH,MAAM,KACvEI,YAAa,kDAAkDJ,MAAM,KACrEK,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACNC,EAAG,OACHC,GAAI,UACJC,EAAG,QACHC,GAAI,WACJC,EAAG,OACHC,GAAI,cACJC,EAAG,MACHC,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERC,KAAM,CACFC,IAAK,EACLC,IAAK,MAIb,OAAOgze,M,sBCxDT,SAAU31e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIy1e,EAAKz1e,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFC,MAC7F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,+CAA+CF,MAAM,KAC/DG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEV4B,cAAe,6BACfC,aAAc,SAAUC,EAAMC,GAI1B,OAHa,KAATD,IACAA,EAAO,GAEM,WAAbC,EACOD,EACa,WAAbC,EACAD,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbC,GAAsC,UAAbA,EACzBD,EAAO,QADX,GAIXC,SAAU,SAAU+xB,EAAO+T,EAAS5lC,GAChC,OAAI6xB,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGf7zB,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACNC,EAAG,kBACHC,GAAI,WACJC,EAAG,kBACHC,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJC,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAOize,M,sBChFT,SAAU51e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIm0B,EAAiB,8DAA8D/zB,MAC3E,KAEJC,EAAc,kDAAkDD,MAAM,KACtEg0B,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEdqhd,EAAO11e,EAAOE,aAAa,QAAS,CACpCC,OAAQ,2FAA2FC,MAC/F,KAEJC,YAAa,SAAUuB,EAAGqiB,GACtB,OAAKriB,EAEM,QAAQnC,KAAKwkB,GACb5jB,EAAYuB,EAAEswB,SAEdiC,EAAevyB,EAAEswB,SAJjBiC,GAOfE,YAAaA,EACbE,iBAAkBF,EAClBG,kBAAmB,+FACnBC,uBAAwB,0FACxBL,YAAaA,EACbM,gBAAiBN,EACjBO,iBAAkBP,EAClB9zB,SAAU,uDAAuDF,MAAM,KACvEG,cAAe,qCAAqCH,MAAM,KAC1DI,YAAa,uBAAuBJ,MAAM,KAC1Cw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBlB,KAAK80B,QAAgB,IAAM,IAAM,QAE3D3zB,QAAS,WACL,MAAO,gBAAmC,IAAjBnB,KAAK80B,QAAgB,IAAM,IAAM,QAE9D1zB,SAAU,WACN,MAAO,cAAiC,IAAjBpB,KAAK80B,QAAgB,IAAM,IAAM,QAE5DzzB,QAAS,WACL,MAAO,cAAiC,IAAjBrB,KAAK80B,QAAgB,IAAM,IAAM,QAE5DxzB,SAAU,WACN,MACI,0BACkB,IAAjBtB,KAAK80B,QAAgB,IAAM,IAC5B,QAGRvzB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNC,EAAG,gBACHC,GAAI,cACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UACJ6yB,EAAG,aACHC,GAAI,aACJ7yB,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERgB,uBAAwB,WACxBC,QAAS,MACThB,KAAM,CACFC,IAAK,EACLC,IAAK,GAETmtY,YAAa,mBAGjB,OAAO+lG,M,qBClHX,IAAI71e,EAAS,EAAQ,QACjB81e,EAAS,EAAQ,QACjB/7Q,EAAM,EAAQ,QACdjuL,EAAM,EAAQ,QACdiqc,EAAgB,EAAQ,QACxBC,EAAoB,EAAQ,QAE5BC,EAAwBH,EAAO,OAC/Bh+S,EAAS93L,EAAO83L,OAChBo+S,EAAwBF,EAAoBl+S,EAASA,GAAUA,EAAOq+S,eAAiBrqc,EAE3FjsC,EAAOC,QAAU,SAAU+H,GAIvB,OAHGkyN,EAAIk8Q,EAAuBpue,KAC1Bkue,GAAiBh8Q,EAAIjiC,EAAQjwL,GAAOoue,EAAsBpue,GAAQiwL,EAAOjwL,GACxEoue,EAAsBpue,GAAQque,EAAsB,UAAYrue,IAC9Doue,EAAsBpue,K,sBCX/B,SAAU7H,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIi2e,EAAOj2e,EAAOE,aAAa,QAAS,CACpCC,OAAQ,wFAAwFC,MAC5F,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,2DAA2DF,MACjE,KAEJG,cAAe,8BAA8BH,MAAM,KACnDI,YAAa,uBAAuBJ,MAAM,KAC1CK,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERgB,uBAAwB,uBACxBC,QAAS,SAAUI,GACf,IAAImF,EAAInF,EAAS,GACbR,EACgC,OAAxBQ,EAAS,IAAO,IACd,KACM,IAANmF,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KACd,OAAOnF,EAASR,GAEpBZ,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAOyze,M,sBCvET,SAAUp2e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIk2e,EAAKl2e,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YAAa,6DAA6DD,MACtE,KAEJsC,kBAAkB,EAClBpC,SAAU,qDAAqDF,MAAM,KACrEG,cAAe,+BAA+BH,MAAM,KACpDI,YAAa,uBAAuBJ,MAAM,KAC1Cw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNC,EAAG,eACHC,GAAI,YACJC,EAAG,aACHC,GAAI,YACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WACJ6yB,EAAG,UACHC,GAAI,WACJ7yB,EAAG,YACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERgB,uBAAwB,YACxBC,QAAS,MACThB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAO0ze,M,sBC/DT,SAAUr2e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAIkqG,EAAQ,CACRvoG,GAAI,qCAAqCvB,MAAM,KAC/CwB,EAAG,iCAAiCxB,MAAM,KAC1CyB,GAAI,iCAAiCzB,MAAM,KAC3C0B,EAAG,iCAAiC1B,MAAM,KAC1C2B,GAAI,iCAAiC3B,MAAM,KAC3C4B,EAAG,6BAA6B5B,MAAM,KACtC6B,GAAI,6BAA6B7B,MAAM,KACvC8B,EAAG,iCAAiC9B,MAAM,KAC1C+B,GAAI,iCAAiC/B,MAAM,KAC3CgC,EAAG,wBAAwBhC,MAAM,KACjCiC,GAAI,wBAAwBjC,MAAM,MAKtC,SAAS6jB,EAAO0rE,EAAOjsF,EAAQC,GAC3B,OAAIA,EAEOD,EAAS,KAAO,GAAKA,EAAS,MAAQ,GAAKisF,EAAM,GAAKA,EAAM,GAI5DjsF,EAAS,KAAO,GAAKA,EAAS,MAAQ,GAAKisF,EAAM,GAAKA,EAAM,GAG3E,SAASC,EAAuBlsF,EAAQC,EAAeC,GACnD,OAAOF,EAAS,IAAMugB,EAAOimF,EAAMtmG,GAAMF,EAAQC,GAErD,SAASwye,EAAyBzye,EAAQC,EAAeC,GACrD,OAAOqgB,EAAOimF,EAAMtmG,GAAMF,EAAQC,GAEtC,SAASyye,EAAgB1ye,EAAQC,GAC7B,OAAOA,EAAgB,iBAAmB,iBAG9C,IAAI0ye,EAAKr2e,EAAOE,aAAa,KAAM,CAC/BC,OAAQ,uGAAuGC,MAC3G,KAEJC,YAAa,kDAAkDD,MAAM,KACrEE,SAAU,0EAA0EF,MAChF,KAEJG,cAAe,kBAAkBH,MAAM,KACvCI,YAAa,kBAAkBJ,MAAM,KACrCw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNC,EAAG00e,EACHz0e,GAAIiuF,EACJhuF,EAAGu0e,EACHt0e,GAAI+tF,EACJ9tF,EAAGq0e,EACHp0e,GAAI6tF,EACJ5tF,EAAGm0e,EACHl0e,GAAI2tF,EACJ1tF,EAAGi0e,EACHh0e,GAAIytF,EACJxtF,EAAG+ze,EACH9ze,GAAIutF,GAERvsF,uBAAwB,YACxBC,QAAS,MACThB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAO6ze,M,kCCrGX,kDAAI1te,EAAwC,WACxC,IAAIC,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAiBxCkte,EAAqB,SAAUtqe,GAO/B,SAASsqe,EAAI/qb,GACT,IAAIh/C,EAAQP,EAAOQ,KAAKzM,KAAMwrD,IAAWxrD,KAEzC,OADAwM,EAAM+xJ,UAAY,aACX/xJ,EAUX,OAnBA5D,EAAU2te,EAAKtqe,GAgBfsqe,EAAIhte,UAAUqT,cAAgB,WAC1B,MAAO,OAEJ25d,EApBa,CAqBtB,S,sBClCA,SAAUz2e,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;SAAS6mC,EAAoBnjC,EAAQC,EAAeC,EAAKC,GACrD,IAAIogB,EAAS,CACTriB,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,cAAe,gBACnBE,EAAG,CAAC,UAAW,aACfC,GAAI,CAACyB,EAAS,QAASA,EAAS,UAChCoxB,EAAG,CAAC,aAAc,eAClB5yB,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACuB,EAAS,UAAWA,EAAS,YAClCtB,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACqB,EAAS,SAAUA,EAAS,YAErC,OAAOC,EAAgBsgB,EAAOrgB,GAAK,GAAKqgB,EAAOrgB,GAAK,GAGxD,IAAI2ye,EAAOv2e,EAAOE,aAAa,QAAS,CACpCC,OAAQ,qFAAqFC,MACzF,KAEJC,YAAa,6DAA6DD,MACtE,KAEJsC,kBAAkB,EAClBpC,SAAU,8DAA8DF,MACpE,KAEJG,cAAe,uBAAuBH,MAAM,KAC5CI,YAAa,uBAAuBJ,MAAM,KAC1Cw0B,oBAAoB,EACpBn0B,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNC,EAAG,oBACHC,GAAI,cACJC,EAAGilC,EACHhlC,GAAI,aACJC,EAAG+kC,EACH9kC,GAAI,aACJC,EAAG6kC,EACH5kC,GAAI4kC,EACJ/R,EAAG+R,EACH9R,GAAI,YACJ7yB,EAAG2kC,EACH1kC,GAAI0kC,EACJzkC,EAAGykC,EACHxkC,GAAIwkC,GAERxjC,uBAAwB,YACxBC,QAAS,MACThB,KAAM,CACFC,IAAK,EACLC,IAAK,KAIb,OAAO+ze,M,oICpFP5te,EAAwC,WACxC,IAAIC,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAaxCI,EAA0C,SAAUC,EAAYC,EAAQ9F,EAAK+F,GAC7E,IAA2H3H,EAAvH4H,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOb,OAAOkB,yBAAyBN,EAAQ9F,GAAO+F,EACrH,GAAuB,kBAAZM,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAAST,EAAYC,EAAQ9F,EAAK+F,QACpH,IAAK,IAAIQ,EAAIV,EAAWK,OAAS,EAAGK,GAAK,EAAGA,KAASnI,EAAIyH,EAAWU,MAAIJ,GAAKH,EAAI,EAAI5H,EAAE+H,GAAKH,EAAI,EAAI5H,EAAE0H,EAAQ9F,EAAKmG,GAAK/H,EAAE0H,EAAQ9F,KAASmG,GAChJ,OAAOH,EAAI,GAAKG,GAAKjB,OAAOsB,eAAeV,EAAQ9F,EAAKmG,GAAIA,GAU5DM,EAAsB,KACtBC,EAAoB,IACpBC,EAAuB,EACvBC,EAAuB,EACvBC,EAAkB,EAClBC,EAAiB,EACjBC,EAAO,YACPC,EAAM,QACNC,EAAS,WACTC,EAAO,UACPC,EAAQ,kBACRC,EAAe,iBACfC,EAAU,gBACVC,EAAY,cACZC,EAAkB,oBAClBC,EAAkB,oBAClBC,EAAa,eACbC,EAAU,YACVC,EAAW,aACXC,EAAY,cACZC,EAAa,UACbC,EAAa,eACbC,EAAc,gBACdC,EAAY,QACZC,EAAa,WACbC,EAAkB,4BAClB,EAA2B,SAAUE,GAErC,SAASD,IACL,OAAkB,OAAXC,GAAmBA,EAAOC,MAAMlM,KAAM8J,YAAc9J,KAQ/D,OAVA4I,EAAUoD,EAAWC,GAIrBxC,EAAW,CACP,eAAS,CAAE0C,OAAQ,SAAUC,SAAU,IAAKC,MAAO,KACpDL,EAAUzC,UAAW,YAAQ,GAChCE,EAAW,CACP,eAAS,CAAE0C,OAAQ,UAAWC,SAAU,IAAKC,MAAO,KACrDL,EAAUzC,UAAW,aAAS,GAC1ByC,EAXmB,CAY5B,QAcE,EAAyB,SAAUC,GAUnC,SAASK,EAAQC,EAASnI,GACtB,IAAIoI,EAAQP,EAAOQ,KAAKzM,KAAMuM,EAASnI,IAAYpE,KAKnD,OAJAwM,EAAME,eAAiB,KACvBF,EAAMG,gBAAkB,KACxBH,EAAMI,iBAAmB,KACzBJ,EAAMK,iBAAkB,EACjBL,EA0xCX,OAzyCA5D,EAAU0D,EAASL,GAiBnBK,EAAQ/C,UAAUuD,WAAa,WAC3B9M,KAAK+M,iBACL,eAAS,CAAC/M,KAAKoE,SAAUwG,IAE7B0B,EAAQ/C,UAAUwD,eAAiB,WAC/B,IAAIC,EAAIC,EAC6B,IAAjCjN,KAAKgF,SAASkI,QAAQ,QAAoD,IAApClN,KAAKgF,SAASkI,QAAQ,WAC5DF,EAAKhN,KAAKgF,SAAS3E,MAAM,aAAcL,KAAKmN,iBAAmBH,EAAG,GAAIhN,KAAKoN,iBAAmBJ,EAAG,KAGjGC,EAAKjN,KAAKgF,SAAS3E,MAAM,aAAcL,KAAKoN,iBAAmBH,EAAG,GAAIjN,KAAKmN,iBAAmBF,EAAG,KAGzGX,EAAQ/C,UAAU8D,YAAc,WAC5BrN,KAAKsN,YAAYtN,KAAKgF,UACtB,IAAIuI,EAAMvN,KAAKwN,cAAc,MAAO,CAAEC,UAAWtC,EAAY,IAAMnL,KAAK0N,WACxEH,EAAII,YAAY3N,KAAKwN,cAAc,MAAO,CAAEC,UAAWrC,EAAkB,IAAMpL,KAAK0N,YACpFH,EAAII,YAAY3N,KAAKwN,cAAc,MAAO,CAAEC,UAAWpC,EAAkB,IAAMrL,KAAK0N,YACpF1N,KAAK4N,WAAWD,YAAYJ,IAEhCjB,EAAQ/C,UAAU+D,YAAc,SAAUtI,GACJ,IAA9BA,EAASkI,QAAQ,SACjBlN,KAAK0N,SAAWlC,EAEoB,IAA/BxG,EAASkI,QAAQ,UACtBlN,KAAK0N,SAAWnC,EAEkB,IAA7BvG,EAASkI,QAAQ,QACtBlN,KAAK0N,SAAWjC,EAGhBzL,KAAK0N,SAAWpC,GAGxBgB,EAAQ/C,UAAUsE,YAAc,SAAUlE,GACtC,IAAImE,EAAS9N,KAAK+N,WAAa,CAAEnJ,IAAK,EAAGD,KAAM,GAAM3E,KAAKgO,mBAAmBrE,GAC7E3J,KAAK4N,WAAWzG,UAAU8G,OAAOpC,GACjC7L,KAAKkO,SAAW,IAAI,OAAMlO,KAAK4N,WAAY,CACvC3G,OAAQjH,KAAKiH,OACbI,MAAOrH,KAAKqH,MACZrC,SAAU,CAAEmJ,EAAGL,EAAOnJ,KAAMyJ,EAAGN,EAAOlJ,KACtCyJ,UAAWrO,KAAKqO,UAChBC,KAAMtO,KAAKuO,iBAAiBC,KAAKxO,MACjCyO,MAAOzO,KAAK0O,kBAAkBF,KAAKxO,SAG3CsM,EAAQ/C,UAAUoF,iBAAmB,SAAUhF,GAC3C,IAAKA,EACD,MAAO,CAAEiF,EAAG,EAAGvM,EAAG,GAEtB,IAAIwM,EAAiB,CAAED,EAAG,EAAGvM,EAAG,GAC5ByM,EAAwBnF,EAAOoF,QAAQ,+BAC3C,GAAID,GAAyBA,GAAyB9O,KAAK4N,YAAckB,EAAsB1H,SAASpH,KAAK4N,YAAa,CACtH,IAAIoB,EAAgBC,OAAOC,iBAAiBJ,GACxCK,EAAiBH,EAAcI,iBAAiB,aAChDC,EAAeF,EAAehH,MAAM,qBAAqB,GAAG9H,MAAM,KAAKiP,IAAIC,YAC/EV,EAAeD,EAAIS,EAAa,GAChCR,EAAexM,EAAIgN,EAAa,GAEpC,OAAOR,GAEXvC,EAAQ/C,UAAUyE,mBAAqB,SAAUrE,GAC7C3J,KAAK4N,WAAW7I,MAAMyK,QAAU,QAChC,IAAIC,EAAsBzP,KAAKoE,QAAQ2K,QAAQ,mBAC3CU,IACKA,EAAoBrI,SAASpH,KAAK4N,cACnC5N,KAAK4N,WAAW7I,MAAM2K,KAAOR,iBAAiBO,GAAqBC,OAG3E,IAAI7J,EAAM,eAAkB8D,EAAQ3J,KAAKoN,iBAAkBpN,KAAKmN,kBAAmBnN,KAAK6M,gBAAiB7M,KAAK6M,gBAAkB,KAAO7M,KAAK4M,iBAAiBvG,yBACzJwI,EAAiB7O,KAAK2O,iBAAiBhF,GACvCgG,EAAY3P,KAAK4P,uBAAuB5P,KAAKgF,SAAU6J,EAAeD,EAAGC,EAAexM,GACxFwN,EAAoB7P,KAAK8P,yBAAyBjK,EAAK8J,GACvDI,EAAgBF,EAAkB,GAClCG,EAAeH,EAAkB,GACjC/B,EAAS9N,KAAKiQ,iBAAiBtG,EAAQoG,EAAeC,GAO1D,OANKhQ,KAAK6M,kBACNiB,EAAOlJ,KAAO5E,KAAK4M,iBAAiBvG,wBAAwBzB,KAEhEkJ,EAAOnJ,KAAOmJ,EAAOnJ,KAAOkK,EAAeD,EAC3Cd,EAAOlJ,IAAMkJ,EAAOlJ,IAAMiK,EAAexM,EACzCrC,KAAK4N,WAAW7I,MAAMyK,QAAU,GACzB1B,GAEXxB,EAAQ/C,UAAU2G,aAAe,WAC7BlQ,KAAKmQ,WAAWnQ,KAAKoQ,eAEzB9D,EAAQ/C,UAAU4G,WAAa,SAAUxG,GACrC,GAAI3J,KAAKkO,UAAYvE,EAAQ,CACzB,IAAImE,EAAS9N,KAAKgO,mBAAmBrE,GACrC3J,KAAKkO,SAASlJ,SAAW,CAAEmJ,EAAGL,EAAOnJ,KAAMyJ,EAAGN,EAAOlJ,KACrD5E,KAAKkO,SAASmC,aAGtB/D,EAAQ/C,UAAUgF,iBAAmB,YAC5BvO,KAAK+N,YAAc/N,KAAKsQ,0BACzBtQ,KAAKmQ,WAAWnQ,KAAKoQ,cAEzBpQ,KAAKuQ,QAAQ,YAAavQ,KAAKwQ,kBAC/BxQ,KAAKwQ,iBAAmB,MAE5BlE,EAAQ/C,UAAUmF,kBAAoB,YAC9B1O,KAAKyQ,SAA8B,UAAjBzQ,KAAK0Q,SAAiD,oBAAlB1Q,KAAY,SAClEA,KAAK2Q,cAAc,CAAC,YAExB3Q,KAAK4Q,QACL5Q,KAAKuQ,QAAQ,aAAcvQ,KAAKwQ,kBAChCxQ,KAAKwQ,iBAAmB,MAE5BlE,EAAQ/C,UAAUqG,uBAAyB,SAAU5K,EAAU6L,EAAgBC,QACpD,IAAnBD,IAA6BA,EAAiB,QAC3B,IAAnBC,IAA6BA,EAAiB,GAClD,IACIC,EAAUC,EAAWC,EAAiBC,EAAkBC,EACxDC,EAAWC,EAAiBC,EAF5BzL,EAAM,CAAEjB,IAAK,EAAGD,KAAM,GAG1B,GAAsB,GAAlBkM,GAAyC,GAAlBC,EAAqB,CAC5C,IAAIS,EAAiBvR,KAAK4N,WAAWvH,wBACjCmL,OAAe,EACnBP,EAAkBQ,KAAKC,MAAMH,EAAelK,OAC5C6J,EAAmBO,KAAKC,MAAMH,EAAetK,QAC7CkK,EAAW,gBAAO,IAAMhG,EAAWnL,KAAK4N,YACpCuD,IACAK,EAAeL,EAAS9K,yBAE5B0K,EAAWI,EAAWM,KAAKC,MAAMF,EAAanK,OAAS,EACvD2J,EAAYG,EAAWM,KAAKC,MAAMF,EAAavK,QAAU,EACzDmK,EAAapR,KAAK2R,eAAiBnH,EAAuBC,EAC1D4G,EAAmBL,EAAY,EAAKrG,GAAkBuG,EAAoBlR,KAAK4N,WAAWgE,aAAed,GACzGQ,EAAkBP,EAAW,EAAKpG,GAAkBsG,EAAmBjR,KAAK4N,WAAWiE,YAAchB,QAGrGI,EAAkBjR,KAAK4N,WAAWkE,YAClCZ,EAAmBlR,KAAK4N,WAAWmE,aACnCZ,EAAW,gBAAO,IAAMhG,EAAWnL,KAAK4N,YACxCmD,EAAWI,EAAWA,EAASW,YAAc,EAC7Cd,EAAYG,EAAWA,EAASY,aAAe,EAC/CX,EAAapR,KAAK2R,eAAiBnH,EAAuBC,EAC1D4G,EAAmBL,EAAY,EAAKrG,GAAkB3K,KAAK4N,WAAWmE,aAAe/R,KAAK4N,WAAWgE,cACrGN,EAAkBP,EAAW,EAAKpG,GAAkB3K,KAAK4N,WAAWkE,YAAc9R,KAAK4N,WAAWiE,aAKtG,OAHI7R,KAAK+N,aACLqD,GAAa1G,GAET1F,GACJ,IAAK,WACDa,EAAIlB,MAAQoM,EAAWK,EACvBvL,EAAIjB,KAAOsM,EAAmBG,EAC9B,MACJ,IAAK,cACDxL,EAAIlB,MAAQoM,EAAWK,EACvBvL,EAAIjB,KAAQsM,EAAmB,EAC/B,MACJ,IAAK,cACDrL,EAAIlB,MAAQoM,EAAWK,EACvBvL,EAAIjB,KAAO,EACX,MACJ,IAAK,cACDiB,EAAIjB,KAAQoM,EAAYI,EACxBvL,EAAIlB,MAAQ,EACZ,MACJ,IAAK,eACDkB,EAAIjB,KAAQoM,EAAYI,EACxBvL,EAAIlB,MAASsM,EAAkB,EAC/B,MACJ,IAAK,aACDpL,EAAIjB,KAAQoM,EAAYI,EACxBvL,EAAIlB,MAASsM,EAAkBK,EAC/B,MACJ,IAAK,aACDzL,EAAIlB,MAASoM,EAAWE,EAAkBG,EAC1CvL,EAAIjB,KAAO,EACX,MACJ,IAAK,aACDiB,EAAIlB,MAASoM,EAAWE,EAAkBG,EAC1CvL,EAAIjB,KAAQsM,EAAmB,EAC/B,MACJ,IAAK,UACDrL,EAAIlB,MAASoM,EAAWE,EAAkBG,EAC1CvL,EAAIjB,KAAQsM,EAAmBG,EAC/B,MACJ,IAAK,UACDxL,EAAIjB,KAAQsM,EAAmBF,EAAYI,EAC3CvL,EAAIlB,MAASsM,EAAkBK,EAC/B,MACJ,IAAK,WACDzL,EAAIjB,KAAQsM,EAAmBF,EAAYI,EAC3CvL,EAAIlB,MAAQ,EACZ,MACJ,QACIkB,EAAIjB,KAAQsM,EAAmBF,EAAYI,EAC3CvL,EAAIlB,MAASsM,EAAkB,EAC/B,MAIR,OAFApL,EAAIlB,MAAQ3E,KAAKgS,QACjBnM,EAAIjB,KAAO5E,KAAKiS,QACTpM,GAEXyG,EAAQ/C,UAAU2I,kBAAoB,SAAUlN,GAC5C,IAAImN,EAAS,gBAAU,IAAMhH,EAAY,KAAOC,EAAkB,KAAOC,EAAiBrL,KAAK4N,YAC3FwE,EAAa,CAAC9G,EAAYC,EAASC,EAAUC,GACjD,gBAAY0G,EAAQC,GACpBpS,KAAKsN,YAAYtI,GACjB,eAASmN,EAAQnS,KAAK0N,WAE1BpB,EAAQ/C,UAAU8I,YAAc,SAAU1I,EAAQ3E,EAAUoI,EAAkBD,GAC1E,IAAIgE,EAAW,gBAAO,IAAMhG,EAAWnL,KAAK4N,YAC5C,IAA4B,IAAxB5N,KAAK2R,gBAAyC,OAAbR,EAArC,CAIA,IAAImB,EACAC,EAFJvS,KAAKkS,kBAAkBlN,GAGvBhF,KAAK4N,WAAW7I,MAAMyK,QAAU,QAChC,IAAIgD,EAAexS,KAAK4N,WAAWiE,YAC/BY,EAAgBzS,KAAK4N,WAAWgE,aAChCc,EAAgB,gBAAO,IAAMrH,EAAiBrL,KAAK4N,YACnDmD,EAAWI,EAASW,YACpBd,EAAYG,EAASY,aAEzB,GADA/R,KAAK4N,WAAW7I,MAAMyK,QAAU,GAC5BxP,KAAK0N,WAAapC,GAActL,KAAK0N,WAAanC,GAWlD,GAVIvL,KAAK0N,WAAapC,GAClBiH,EAAW,QAEXG,EAAc3N,MAAMH,IAAM,KAAOoM,EAAY,GAAK,OAGlDuB,IAAavB,EAAY,GAAK,KAE9B0B,EAAc3N,MAAMH,IAAM,KAAOoM,EAAY,GAAK,MAElDrH,EAAQ,CACR,IAAIgJ,EAAqC,WAArBvF,GAAkCoF,EAAe7I,EAAOmI,aAAgB9R,KAAK+N,WAE7FuE,EADCK,GAAsC,SAArBvF,IAAkCuF,GAA6C,QAA5B3S,KAAK4S,mBAC7DJ,EAAezB,EAAWpG,EAAkB,KAEnDgI,GAAsC,UAArBvF,IAAmCuF,GAA6C,UAA5B3S,KAAK4S,mBACpEjI,EAAiB,MAExB,GAAgD,QAA5B3K,KAAK4S,oBAA4D,UAA5B5S,KAAK4S,mBAKrDJ,EAAe,EAAMzB,EAAW,EAAM,KAJX,QAA5B/Q,KAAK4S,mBAAkCjJ,EAAOmI,aAAgB9R,KAAK4N,WAAWkE,YAAcnI,EAAOmI,aAAe,EAAOf,EAAW,EAAMpG,EAAiB,MAChK3K,KAAK4N,WAAWkE,YAAcnI,EAAOmI,aAAe,EAAMf,EAAW,EAAKpG,EAAiB,UAO1G,CACG3K,KAAK0N,WAAajC,GAClB6G,EAAY,QAEZI,EAAc3N,MAAMJ,KAAO,KAAOoM,EAAW,GAAK,OAGlDuB,IAAcvB,EAAW,GAAK,KAE9B2B,EAAc3N,MAAMJ,KAAuBoM,EAAW,EAAzB,EAA+B,MAE5D4B,EAAqC,WAArBxF,GAAkCsF,EAAgB9I,EAAOoI,cAAiB/R,KAAK+N,WAE/FwE,EADCI,GAAsC,QAArBxF,IAAiCwF,GAA6C,QAA5B3S,KAAK4S,mBAC7DH,EAAgBzB,EAAYrG,EAAkB,KAEpDgI,GAAsC,WAArBxF,IAAoCwF,GAA6C,UAA5B3S,KAAK4S,mBACtEjI,EAAiB,KAGf8H,EAAgB,EAAMzB,EAAY,EAAM,KAG7DG,EAASpM,MAAMH,IAAM2N,EACrBpB,EAASpM,MAAMJ,KAAO2N,IAE1BhG,EAAQ/C,UAAUsJ,cAAgB,SAAUlJ,GACxC,IAAImJ,EAAiB,gBAAO,IAAM5H,EAASlL,KAAK4N,YAQhD,GAPI5N,KAAK+S,UACL,eAAS,CAAC/S,KAAK4N,YAAa5N,KAAK+S,SAAS1S,MAAM,MAEhDsJ,IAAW,eAAkBA,EAAOqJ,aAAa,YACjDrJ,EAAOsJ,aAAa,eAAgBtJ,EAAOqJ,aAAa,UACxDrJ,EAAOuJ,gBAAgB,UAEtB,eAAkBlT,KAAKmT,SA8BpBxJ,IAAW,eAAkBA,EAAOqJ,aAAa,mBACjDF,EAAeM,UAAYzJ,EAAOqJ,aAAa,sBA7BnD,GADAF,EAAeM,UAAY,GACvBpT,KAAKmT,mBAAmBE,YACxBP,EAAenF,YAAY3N,KAAKmT,cAE/B,GAA4B,kBAAjBnT,KAAKmT,QAIjB,GAHInT,KAAKsT,qBACLtT,KAAKuT,cAAc,CAAEJ,QAAS,OAAmBK,SAASxT,KAAKmT,WAAY,GAE3EnT,KAAKyT,gBAAiB,CACtB,IAAIC,EAAe,eAAQ1T,KAAKmT,SAC5BQ,EAAUD,EAAa,GAAI1T,KAAM,UAAWA,KAAKoE,QAAQwP,GAAK,eAAWjO,OAAWA,EAAWmN,EAAgB9S,KAAK6T,MACpHF,GACA,eAAOA,EAASb,QAIpBA,EAAe,eAAiB9S,KAAKmT,YAGxC,CACD,IAAIW,EAAmB,eAAQ9T,KAAKmT,SAChCQ,EAAUG,EAAiB,GAAI9T,KAAM,UAAWA,KAAKoE,QAAQwP,GAAK,eAAWjO,OAAWA,EAAWmN,GACnGa,GACA,eAAOA,EAASb,GAEpB9S,KAAK+T,yBASjBzH,EAAQ/C,UAAUyK,gBAAkB,WAChC,GAAKhU,KAAKiU,SAAV,CAOA,IAAIC,EAAWlU,KAAKwN,cAAc,MAAO,CAAEC,UAAW1C,EAAO,IAAMC,IACnEhL,KAAK4N,WAAWD,YAAYuG,GAC5B,OAAaC,IAAID,EAAU,OAAQE,gBAAiBpU,KAAKqU,cAAerU,UATxE,CACI,IAAIsU,EAAoBtU,KAAK4N,WAAW2G,cAAc,IAAMxJ,EAAO,IAAMC,GACrEsJ,GACA,gBAAOA,KAQnBhI,EAAQ/C,UAAUiL,eAAiB,SAAU7K,EAAQiK,GACjD,IAAIa,GAAe9K,EAAOqJ,aAAa,qBAAuB,IAAI3S,MAAM,OACpEoU,EAAYvH,QAAQ0G,GAAM,GAC1Ba,EAAYC,KAAKd,GAErB,eAAWjK,EAAQ,CAAE,mBAAoB8K,EAAYE,KAAK,KAAKC,OAAQ,kBAAmBhB,KAE9FtH,EAAQ/C,UAAUsL,kBAAoB,SAAUlL,GAC5C,IAAIiK,EAAKjK,EAAOqJ,aAAa,mBACzByB,GAAe9K,EAAOqJ,aAAa,qBAAuB,IAAI3S,MAAM,OACpEyU,EAAQL,EAAYvH,QAAQ0G,IACjB,IAAXkB,GACAL,EAAYM,OAAOD,EAAO,GAE9BnL,EAAOuJ,gBAAgB,mBACvB,IAAI8B,EAAiBP,EAAYE,KAAK,KAAKC,OACvCI,EACArL,EAAOsJ,aAAa,mBAAoB+B,GAGxCrL,EAAOuJ,gBAAgB,qBAG/B5G,EAAQ/C,UAAU0L,eAAiB,SAAUC,GACzCC,aAAanV,KAAKoV,gBAClBpV,KAAKqV,YAAYH,EAAII,gBAEzBhJ,EAAQ/C,UAAUgM,gBAAkB,SAAUC,GAC1C,IAAIhJ,EAAQxM,KACZ,IAAIA,KAAKiU,SAAT,CAGA,IAAIxF,EAAQ,WACRjC,EAAMiC,SAEVzO,KAAKoV,eAAiBK,WAAWhH,EAAOnE,KAE5CgC,EAAQ/C,UAAUmM,YAAc,SAAUF,GACtC,IAAI7L,EAEAA,EADA3J,KAAK2J,OACI,eAAQ6L,EAAE7L,OAAQ3J,KAAK2J,QAGvB3J,KAAKoE,QAEd,eAAkBuF,KAGyB,OAA3CA,EAAOqJ,aAAa,mBACpBhT,KAAKqV,YAAYG,GAEXxV,KAAKiU,UACXjU,KAAK2V,YAAY3V,KAAK4V,UAAUnH,MAAO+G,EAAG7L,KAGlD2C,EAAQ/C,UAAU8L,YAAc,SAAUG,GACtC,IAAI7L,EAOJ,GALIA,EADA3J,KAAK2J,OACI,eAAQ6L,EAAE7L,OAAQ3J,KAAK2J,QAGvB3J,KAAKoE,UAEd,eAAkBuF,IAAuD,OAA3CA,EAAOqJ,aAAa,oBAAmD,IAApBhT,KAAK6V,YAA1F,CAIA,IADA,IAAIC,EAAa,GAAGC,MAAMtJ,KAAK,gBAAU,sBAAwBzM,KAAKgW,OAAS,aAAcC,WACpFC,EAAK,EAAGC,EAAeL,EAAYI,EAAKC,EAAapM,OAAQmM,IAAM,CACxE,IAAIE,EAAWD,EAAaD,GAC5BlW,KAAKqW,eAAeD,GAExBpW,KAAKsW,YAAY3M,EAAQ3J,KAAK4V,UAAUtH,KAAMkH,KAElDlJ,EAAQ/C,UAAUgN,oBAAsB,SAAUf,GAC9CxV,KAAK0M,eAAiB8I,GAE1BlJ,EAAQ/C,UAAUiN,sBAAwB,WAClCxW,KAAK2M,iBACL,OAAasB,OAAOjO,KAAK2M,gBAAiB,uBAAwB3M,KAAKuW,sBAG/EjK,EAAQ/C,UAAU+M,YAAc,SAAU3M,EAAQ8M,EAAejB,GAC7D,IAAIhJ,EAAQxM,KACZmV,aAAanV,KAAK0W,WAClBvB,aAAanV,KAAK2W,WACd3W,KAAK4W,WAAa5W,KAAK+N,aACvB/N,KAAKwW,wBACLxW,KAAK2M,gBAAkBhD,EACvB,OAAawK,IAAInU,KAAK2M,gBAAiB,uBAAwB3M,KAAKuW,oBAAqBvW,OAE7FA,KAAKwQ,iBAAmB,CACpBqG,KAAMrB,EAAIA,EAAEqB,KAAO,KAAMC,QAAQ,EAAOnN,OAAQA,EAAQoN,MAAOvB,GAAQ,KACvEpR,QAASpE,KAAK4N,WAAYoJ,cAAe,eAAkBxB,IAE/D,IAAIyB,EAAkB,SAAUC,GAC5B1K,EAAM2K,qBAAqBD,EAAkBvN,EAAQ6L,EAAGiB,IAE5DzW,KAAKuQ,QAAQ,eAAgBvQ,KAAKwQ,iBAAkByG,EAAgBzI,KAAKxO,QAE7EsM,EAAQ/C,UAAU4N,qBAAuB,SAAUD,EAAkBvN,EAAQ6L,EAAGiB,GACxES,EAAiBJ,QACjB9W,KAAKoX,UAAW,EAChBpX,KAAK4Q,QACL5Q,KAAKwW,0BAGLxW,KAAKoX,UAAW,EACZ,eAAkBpX,KAAK4N,aACvB5N,KAAKgW,OAAShW,KAAKoE,QAAQ4O,aAAa,MACpC,eAAYhT,KAAKoE,QAAQ4O,aAAa,OAAS,eAAY,WAC/DhT,KAAK4N,WAAa5N,KAAKwN,cAAc,MAAO,CACxCC,UAAWxC,EAAe,IAAMS,EAAa,IAAMG,EAAWwL,MAAO,CACjEC,KAAM,UAAW,cAAe,QAAS,GAAMtX,KAAKgW,OAAS,YAC9DuB,OAAQ,SACP,eAAWvX,KAAKqH,OAAS,WAAa,eAAWrH,KAAKiH,QAAU,wBAExEjH,KAAKwX,oBAAoB7N,EAAQ3J,MACjCA,KAAKyX,mBAAmB9N,EAAQ6L,EAAGiB,EAAezW,OAG9C2J,IACA3J,KAAKqS,YAAY1I,EAAQ3J,KAAKgF,SAAUhF,KAAKoN,iBAAkBpN,KAAKmN,kBACpEnN,KAAKwU,eAAe7K,EAAQ3J,KAAKgW,OAAS,YAC1ChW,KAAK6S,cAAclJ,GACnB,OAAe+N,KAAK1X,KAAK4N,YACzB5N,KAAKmQ,WAAWxG,GAChB3J,KAAKyX,mBAAmB9N,EAAQ6L,EAAGiB,EAAezW,SAKlEsM,EAAQ/C,UAAUoO,gBAAkB,SAAUC,GACb,iBAAlB5X,KAAK6X,UACW,SAAnB7X,KAAK6X,UACL7X,KAAK4M,iBAAmBqJ,SAASnP,MAGjC9G,KAAK6M,iBAAkB,EACvB7M,KAAK4M,iBAAmB,gBAAO5M,KAAK6X,UAAW5B,WAG9CjW,KAAK6X,qBAAqBxE,cAC/BrT,KAAK4M,iBAAmB5M,KAAK6X,UAC7B7X,KAAK6M,gBAAoD,SAAlC7M,KAAK4M,iBAAiBkL,SAE5C9X,KAAK6M,iBACN,eAAS,CAAC7M,KAAK4M,kBAAmBb,GAEtC/L,KAAK4M,iBAAiBe,YAAYiK,EAAQhK,aAE9CtB,EAAQ/C,UAAUiO,oBAAsB,SAAU7N,EAAQiO,GAClDjO,IACI,OAAQoO,UACR,eAAS,CAACH,EAAQhK,YAAa9C,GAEb,SAAlB8M,EAAQvQ,QACRuQ,EAAQhK,WAAW7I,MAAMiT,SAAW,eAAWJ,EAAQvQ,QAE3DuQ,EAAQhK,WAAWD,YAAYiK,EAAQpK,cAAc,MAAO,CAAEC,UAAWvC,KACzElL,KAAK2X,gBAAgBC,GACrB,gBAAY,CAACA,EAAQhK,YAAa9B,GAClC8L,EAAQpD,eAAe7K,EAAQiO,EAAQ5B,OAAS,YAChD4B,EAAQ/E,cAAclJ,GACtB,eAAS,CAACiO,EAAQhK,YAAajC,GAC3BiM,EAAQjG,gBACRiG,EAAQvK,cAEZuK,EAAQ5D,kBACR4D,EAAQ/J,YAAYlE,GACpBiO,EAAQvF,YAAY1I,EAAQiO,EAAQ5S,SAAU4S,EAAQxK,iBAAkBwK,EAAQzK,kBAChF,OAAeuK,KAAKE,EAAQhK,YAC5BgK,EAAQzH,WAAWxG,KAG3B2C,EAAQ/C,UAAUkO,mBAAqB,SAAU9N,EAAQ6L,EAAGiB,EAAemB,GACvE,GAAIjO,EAAQ,CACR,gBAAY,CAACiO,EAAQhK,YAAajC,GAClC,eAAS,CAACiM,EAAQhK,YAAahC,GAC/BgM,EAAQpH,iBAAmB,CACvBqG,KAAMrB,EAAIA,EAAEqB,KAAO,KAAMC,QAAQ,EAAOnN,OAAQA,EAAQoN,MAAOvB,GAAQ,KACvEpR,QAASwT,EAAQhK,WAAYoJ,cAAe,eAAkBxB,IAE9DoC,EAAQtH,2BAA6BsH,EAAQ7J,aAC7C6J,EAAQhK,WAAW7I,MAAMyK,QAAU,QAEvC,IAAIyH,EAAkB,SAAUgB,GAC5BL,EAAQM,mBAAmBD,EAActO,EAAQ8M,EAAejB,IAEpEoC,EAAQrH,QAAQ,aAAcqH,EAAQpH,iBAAkByG,EAAgBzI,KAAKoJ,MAGrFtL,EAAQ/C,UAAU2O,mBAAqB,SAAUD,EAActO,EAAQ8M,EAAejB,GAClF,IAAIhJ,EAAQxM,KACZ,GAAIiY,EAAanB,OACb9W,KAAKoX,UAAW,EAChBpX,KAAK4Q,QACL5Q,KAAKwW,wBACLxW,KAAKqW,eAAe1M,OAEnB,CACD,IAAIwO,EAAkB,CAClBxQ,KAAgC,SAAzB8O,EAActK,QAAuC,WAAlB,OAA8B,SAAWnM,KAAK4V,UAAUtH,KAAKnC,OACvGC,SAAUqK,EAAcrK,SACxBC,MAAOoK,EAAcpK,MACrB+L,eAAgB,WAKpB,GAH6B,SAAzB3B,EAActK,SACdgM,OAAkBxS,GAElB3F,KAAK4W,UAAY,EAAG,CACpB,IAAIyB,EAAO,WACH7L,EAAMuB,YACN,OAAaoG,IAAIxK,EAAQ,kCAAmC6C,EAAM8L,YAAa9L,GAE/EA,EAAM0B,WACN1B,EAAM0B,SAASmK,KAAKF,EAAiBxO,GACjC6C,EAAME,gBAAkBF,EAAMuB,YAC9BvB,EAAM8L,YAAY9L,EAAME,kBAIpC1M,KAAK0W,UAAYjB,WAAW4C,EAAMrY,KAAK4W,gBAGnC5W,KAAKkO,UACLlO,KAAKkO,SAASmK,KAAKF,EAAiBxO,GAI5C6L,GACAxV,KAAKuY,gBAAgB/C,EAAG7L,IAGhC2C,EAAQ/C,UAAU+G,uBAAyB,WAEvC,IAAIkI,EAAUxY,KACd,OAAQ,eAAkBwY,EAAQC,mBACS,kBAA7BD,EAAQC,kBAAiCzY,KAAKyQ,SAEhEnE,EAAQ/C,UAAUmP,eAAiB,SAAU/O,EAAQiF,EAAGvM,GACpD,IAAIyL,EAAS,CACTnJ,KAAMiK,EAAGhK,IAAKvC,EAAG2C,SAAUhF,KAAKgF,SAChC2T,WAAY3Y,KAAKoN,iBAAkBwL,SAAU5Y,KAAKmN,kBAElD0L,EAAc,eAAU7Y,KAAK4N,WAAY5N,KAAK8Y,qBAAsBlK,EAAGvM,GAO3E,OANIwW,EAAY9O,OAAS,IACrB+D,EAAO6K,WAAaE,EAAY3L,QAAQ,SAAW,EAAI,QAAU2L,EAAY3L,QAAQ,UAAY,EAAI,OACjGlN,KAAKoN,iBACTU,EAAO8K,SAAWC,EAAY3L,QAAQ,QAAU,EAAI,SAAW2L,EAAY3L,QAAQ,WAAa,EAAI,MAChGlN,KAAKmN,kBAENW,GAEXxB,EAAQ/C,UAAUuG,yBAA2B,SAAUjK,EAAK8J,GACxD,MAAO,CAAC3P,KAAK6M,gBAAkBhH,EAAIlB,KAAOgL,EAAUhL,KAC3CkB,EAAIlB,KAAO3E,KAAK4M,iBAAiB3H,WAAc0K,EAAUhL,KAAOsK,OAAO8J,YAAc/Y,KAAK4M,iBAAiBzH,WAChHnF,KAAK6M,gBAAkBhH,EAAIjB,IAAM+K,EAAU/K,IACtCiB,EAAIjB,IAAM5E,KAAK4M,iBAAiB1H,UAAayK,EAAU/K,IAAMqK,OAAO+J,YAAchZ,KAAK4M,iBAAiBxH,YAErHkH,EAAQ/C,UAAU0G,iBAAmB,SAAUtG,EAAQiF,EAAGvM,GACtD,IAAIyL,EAAS9N,KAAK0Y,eAAe/O,EAAQiF,EAAGvM,GACxC4W,EAASnL,EAAO9I,SAqBpB,GApBIhF,KAAKmN,mBAAqBW,EAAO8K,WACjCK,EAA+C,IAApCjZ,KAAKgF,SAASkI,QAAQ,WAAoD,IAAjClN,KAAKgF,SAASkI,QAAQ,OACtEY,EAAO8K,SAAW5Y,KAAKoN,iBAAmBpN,KAAKoN,iBAAmBU,EAAO8K,UAE7E5Y,KAAKoN,mBAAqBU,EAAO6K,aACF,IAA3BM,EAAO/L,QAAQ,UACfY,EAAO8K,SAAuB,YAAXK,GAAmC,eAAXA,EAA2B,MAAQ,SAC9EA,EAAUnL,EAAO8K,SAAW,QAEA,IAA5BK,EAAO/L,QAAQ,WACfY,EAAO8K,SAAuB,aAAXK,GAAoC,gBAAXA,EAA4B,MAAQ,SAChFA,EAAUnL,EAAO8K,SAAW,SAEhC9K,EAAO6K,WAAa3Y,KAAKoN,kBAE7BpN,KAAKwQ,iBAAmB,CACpBqG,KAAM,KAAMC,QAAQ,EAAOnN,OAAQA,EAAQoN,MAAO,KAClD3S,QAASpE,KAAK4N,WAAYsL,iBAAkBD,GAEhDjZ,KAAKuQ,QAAQ,kBAAmBvQ,KAAKwQ,kBACjCxQ,KAAKwQ,iBAAiBsG,OACtBmC,EAASjZ,KAAKgF,aAEb,CACD,IAAImU,EAAiBrL,EAAO8K,SACxBQ,EAAmBtL,EAAO6K,WAC9B,GAAI7K,EAAO9I,WAAaiU,EAAQ,CAC5B,IAAIpT,EAAM,eAAkB8D,EAAQyP,EAAkBD,GAAiBnZ,KAAK6M,gBAAiB7M,KAAK6M,gBAAkB,KAAO7M,KAAK4M,iBAAiBvG,yBACjJrG,KAAKqS,YAAY1I,EAAQsP,EAAQG,EAAkBD,GACnD,IAAItK,EAAiB7O,KAAK2O,iBAAiBhF,GACvCgG,EAAY3P,KAAK4P,uBAAuBqJ,EAAQpK,EAAeD,EAAGC,EAAexM,GACrFsN,EAAU/K,KAAO5E,KAAKqZ,kBAAkB,YAAaJ,EAAQjZ,KAAKiS,SAClEtC,EAAUhL,MAAQ3E,KAAKqZ,kBAAkB,YAAaJ,EAAQjZ,KAAKgS,SACnElE,EAAO9I,SAAWiU,EAClB,IAAIK,EAActZ,KAAK8P,yBAAyBjK,EAAK8J,GACrD7B,EAAOnJ,KAAO2U,EAAY,GAC1BxL,EAAOlJ,IAAM0U,EAAY,QAGzBtZ,KAAKqS,YAAY1I,EAAQsP,EAAQG,EAAkBD,GAG3D,IAAII,EAAY,CAAE5U,KAAMmJ,EAAOnJ,KAAMC,IAAKkJ,EAAOlJ,KAC7CI,EAAW,eAAIhF,KAAK4N,WAAY5N,KAAK8Y,qBAAsB,CAAE3K,GAAG,EAAMC,EAAGpO,KAAKwZ,iBAAmBD,GACrGvZ,KAAK4N,WAAW7I,MAAMyK,QAAU,QAChC,IAAI2B,EAAW,gBAAO,IAAMhG,EAAWnL,KAAK4N,YAC5C,GAAI5N,KAAK2R,gBAA8B,MAAZR,IAAkD,IAA7B8H,EAAO/L,QAAQ,WAA6C,IAA1B+L,EAAO/L,QAAQ,QAAe,CAC5G,IAAIuM,EAAYrR,SAAS+I,EAASpM,MAAMJ,KAAM,KAAOK,EAASL,KAAOmJ,EAAOnJ,MACxE8U,EAAY,EACZA,EAAY,EAENA,EAAYtI,EAASW,YAAe9R,KAAK4N,WAAWiE,cAC1D4H,EAAYzZ,KAAK4N,WAAWiE,YAAcV,EAASW,aAEvDX,EAASpM,MAAMJ,KAAO8U,EAAUC,WAAa,KAKjD,OAHA1Z,KAAK4N,WAAW7I,MAAMyK,QAAU,GAChC+J,EAAU5U,KAAOK,EAASL,KAC1B4U,EAAU3U,IAAMI,EAASJ,IAClB2U,GAEXjN,EAAQ/C,UAAU8P,kBAAoB,SAAUM,EAAgBC,EAAQC,GACpE,OAA0E,IAAjEF,EAAezM,QAAQlN,KAAKgF,SAAS3E,MAAM,aAAa,MACF,IAA1DsZ,EAAezM,QAAQ0M,EAAOvZ,MAAM,aAAa,IAAgB,EAAIwZ,EAAc,GAE5FvN,EAAQ/C,UAAUuP,mBAAqB,WACnC,OAAQ9Y,KAAKwZ,iBAAmBxZ,KAAK2J,OAAS3J,KAAKoE,QAAU,MAEjEkI,EAAQ/C,UAAUoM,YAAc,SAAUmE,EAAetE,EAAGuE,GACxD,IAAIvN,EAAQxM,KACZ,GAAIA,KAAK6V,WAAa,EAAG,CACrBV,aAAanV,KAAK2W,WAClBxB,aAAanV,KAAK0W,WAClB,IAAIsD,EAAO,WACHxN,EAAMqJ,YAAcrJ,EAAMoB,YAAcpB,EAAMyN,eAGlDzN,EAAM0N,YAAYJ,EAAetE,EAAGuE,IAExC/Z,KAAK2W,UAAYlB,WAAWuE,EAAMha,KAAK6V,iBAGvC7V,KAAKka,YAAYJ,EAAetE,EAAGuE,IAG3CzN,EAAQ/C,UAAU2Q,YAAc,SAAUJ,EAAetE,EAAGuE,GACxD,IACIpQ,EADA6C,EAAQxM,KAGR2J,EADA6L,EACSxV,KAAK2J,OAAUoQ,GAAiBvE,EAAE7L,OAAU3J,KAAKoE,QAGjD,gBAAO,sBAAwBpE,KAAKgW,OAAS,aAAcC,UAExEjW,KAAKwQ,iBAAmB,CACpBqG,KAAMrB,EAAIA,EAAEqB,KAAO,KAAMC,QAAQ,EAAOnN,OAAQA,EAAQoN,MAAOvB,GAAQ,KACvEpR,QAASpE,KAAK4N,WAAYoJ,cAAe,eAAkBxB,IAI/DxV,KAAKuQ,QAAQ,cAAevQ,KAAKwQ,kBAAkB,SAAUyH,GACpDA,EAAanB,OAKdtK,EAAM4K,UAAW,GAJjB5K,EAAMgK,wBACNhK,EAAM2N,UAAUL,EAAenQ,EAAQ6L,OAM/CxV,KAAKwQ,iBAAmB,MAE5BlE,EAAQ/C,UAAU4Q,UAAY,SAAUL,EAAenQ,EAAQ6L,GACvD7L,GAAU6L,GACVxV,KAAKqW,eAAe1M,GAExB3J,KAAKoX,UAAW,EAChB,IAAIgD,EAAiB,CACjBzS,KAAgC,SAAzBmS,EAAc3N,QAAuC,WAAlB,OAA8B,UAAYnM,KAAK4V,UAAUnH,MAAMtC,OACzGC,SAAU0N,EAAc1N,SACxBC,MAAOyN,EAAczN,MACrB+L,eAAgB,UAES,SAAzB0B,EAAc3N,SACdiO,OAAiBzU,GAEjB3F,KAAKkO,UACLlO,KAAKkO,SAAS8L,KAAKI,IAG3B9N,EAAQ/C,UAAU8M,eAAiB,SAAU1M,GACzC3J,KAAKqa,kBAAkB1Q,GAClB,eAAkBA,EAAOqJ,aAAa,mBACvCrJ,EAAOsJ,aAAa,QAAStJ,EAAOqJ,aAAa,iBACjDrJ,EAAOuJ,gBAAgB,iBAE3BlT,KAAK6U,kBAAkBlL,IAE3B2C,EAAQ/C,UAAUqH,MAAQ,WACtB,IAAIjH,EAAS3J,KAAKoQ,aACdzG,GACA3J,KAAKqW,eAAe1M,GAEpB3J,KAAK4N,aACL,gBAAY,CAAC5N,KAAK4N,YAAahC,GAC/B,eAAS,CAAC5L,KAAK4N,YAAajC,IAE5B3L,KAAKoX,WACDpX,KAAKkO,UACLlO,KAAKkO,SAASoM,UAEdta,KAAK4N,YACL,gBAAO5N,KAAK4N,YAEhB5N,KAAK4N,WAAa,KAClB5N,KAAKkO,SAAW,OAGxB5B,EAAQ/C,UAAUgR,aAAe,SAAU/E,GACnCxV,KAAK4N,aACL5N,KAAKia,eAAgB,IAG7B3N,EAAQ/C,UAAUiR,gBAAkB,SAAUhF,GAC1CxV,KAAKia,eAAgB,EACrBja,KAAK2V,YAAY3V,KAAK4V,UAAUnH,MAAO+G,EAAGxV,KAAKoQ,eAEnD9D,EAAQ/C,UAAUkR,WAAa,SAAUjF,GACrC,IAAIkF,EAAiBlF,EAAEmF,cAEvB,GAAID,IAAmB1a,KAAK+N,WAAY,CACpC,IAAI6M,EAAyB,eAAQF,EAAgB,IAAMzP,EAAe,IAAMY,EAAY,IAAMH,GAC9FkP,EACA,OAAazG,IAAIyG,EAAwB,aAAc5a,KAAK6a,uBAAwB7a,OAGpFA,KAAK2V,YAAY3V,KAAK4V,UAAUnH,MAAO+G,EAAGxV,KAAKoQ,cACvB,IAApBpQ,KAAK6V,YACL7V,KAAK4Q,cAKb5Q,KAAK2V,YAAY3V,KAAK4V,UAAUnH,MAAO+G,EAAGxV,KAAKoQ,cAC/CpQ,KAAK4Q,SAGbtE,EAAQ/C,UAAUsR,uBAAyB,SAAUrF,GACjDxV,KAAK2V,YAAY3V,KAAK4V,UAAUnH,MAAO+G,EAAGxV,KAAKoQ,cAC/C,OAAanC,OAAOjO,KAAKoE,QAAS,aAAcpE,KAAK6a,wBACrD7a,KAAK4Q,SAETtE,EAAQ/C,UAAU8K,cAAgB,SAAUmB,GACxCxV,KAAKyO,SAETnC,EAAQ/C,UAAU+O,YAAc,SAAUvB,GACtC,IAAI+D,EAAa,EACbC,EAAa,EACbhE,EAAMF,KAAK3J,QAAQ,UAAY,GAC/B6J,EAAMiE,iBACNF,EAAa/D,EAAMkE,QAAQ,GAAGC,MAC9BH,EAAahE,EAAMkE,QAAQ,GAAGE,QAG9BL,EAAa/D,EAAMmE,MACnBH,EAAahE,EAAMoE,OAEvB,OAAezD,KAAK1X,KAAK4N,YACzB,gBAAY,CAAC5N,KAAK4N,YAAahC,GAC/B,eAAS,CAAC5L,KAAK4N,YAAajC,GAC5B3L,KAAKqS,YAAY0E,EAAMpN,OAAQ3J,KAAKgF,SAAUhF,KAAKoN,iBAAkBpN,KAAKmN,kBAC1E,IAAI0B,EAAiB7O,KAAK2O,iBAAiBoI,EAAMpN,QAC7C9D,EAAM7F,KAAK4P,uBAAuB5P,KAAKgF,SAAU6J,EAAeD,EAAGC,EAAexM,GAClFuM,EAAIkM,EAAajV,EAAIlB,KAAO3E,KAAKgS,QACjC3P,EAAI0Y,EAAalV,EAAIjB,IAAM5E,KAAKiS,QAChCnE,EAAS9N,KAAK0Y,eAAe3B,EAAMpN,OAAQiF,EAAGvM,GAClD,GAAIrC,KAAKoN,mBAAqBU,EAAO6K,YAAc3Y,KAAKmN,mBAAqBW,EAAO8K,SAAU,CAC1F,IAAIK,EAA8C,IAApCjZ,KAAKgF,SAASkI,QAAQ,WAAoD,IAAjClN,KAAKgF,SAASkI,QAAQ,OACzEY,EAAO8K,SAAW9K,EAAO6K,WAAa7K,EAAO6K,WAAa7K,EAAO8K,SACrE9K,EAAO9I,SAAWiU,EAClBjZ,KAAKqS,YAAY0E,EAAMpN,OAAQmE,EAAO9I,SAAU8I,EAAO6K,WAAY7K,EAAO8K,UAC1E,IAAIwC,EAASpb,KAAK4P,uBAAuB9B,EAAO9I,SAAU6J,EAAeD,EAAGC,EAAexM,GAC3FyL,EAAOnJ,KAAOmW,EAAaM,EAAOzW,KAAO3E,KAAKgS,QAC9ClE,EAAOlJ,IAAMmW,EAAaK,EAAOxW,IAAM5E,KAAKiS,QAEhDjS,KAAK4N,WAAW7I,MAAMJ,KAAOmJ,EAAOnJ,KAAO,KAC3C3E,KAAK4N,WAAW7I,MAAMH,IAAMkJ,EAAOlJ,IAAM,MAE7C0H,EAAQ/C,UAAU8R,QAAU,SAAUtE,GAC9B/W,KAAK4N,YAAgC,KAAlBmJ,EAAMuE,SACzBtb,KAAKyO,SAGbnC,EAAQ/C,UAAUgS,SAAW,SAAU/F,GAC/BxV,KAAK4N,YAAgD,OAAlC,eAAQ4H,EAAE7L,OAAQ,IAAMiB,KAAmB5K,KAAKiU,UACnEjU,KAAKyO,SAGbnC,EAAQ/C,UAAUiS,cAAgB,SAAUhG,GACpCxV,KAAK4N,aAAe5N,KAAKiU,WACnB,cAAD,CAASuB,EAAE7L,OAAQ,IAAMsB,EAAe,IAAMY,EAAY,IAAMH,IAC7D1L,KAAKiU,UACTjU,KAAKyO,UAUjBnC,EAAQ/C,UAAUkS,OAAS,WACvBzb,KAAK8M,aACL9M,KAAK0b,WAAW1b,KAAK0Q,SACrB1Q,KAAK2b,kBAQTrP,EAAQ/C,UAAUqS,UAAY,WAC1B5b,KAAK0N,SAAWpC,EAChBtL,KAAKoN,iBAAmB,SACxBpN,KAAKmN,iBAAmB,MACxBnN,KAAKoX,UAAW,GAUpB9K,EAAQ/C,UAAUmS,WAAa,SAAUnL,GAErC,IADA,IAAIsL,EAAc7b,KAAK8b,eAAevL,GAC7B2F,EAAK,EAAG6F,EAAgBF,EAAa3F,EAAK6F,EAAchS,OAAQmM,IAAM,CAC3E,IAAIxF,EAAUqL,EAAc7F,GAC5B,GAAgB,WAAZxF,EACA,OAEY,UAAZA,GACA1Q,KAAKgc,kBAEO,UAAZtL,GACA,OAAayD,IAAInU,KAAKoE,QAAS,OAAQgQ,gBAAiBpU,KAAK0V,YAAa1V,MAE9D,UAAZ0Q,IACI,OAAQqH,UACR/X,KAAKic,YAAc,IAAI,OAAMjc,KAAKoE,QAAS,CACvC8X,iBAAkB3R,EAClB4R,QAASnc,KAAKiV,eAAezG,KAAKxO,QAEtC,OAAamU,IAAInU,KAAKoE,QAAS,OAAQgY,cAAepc,KAAKuV,gBAAiBvV,OAG5E,OAAamU,IAAInU,KAAKoE,QAAS,YAAapE,KAAKqV,YAAarV,OAI1E,OAAamU,IAAI8B,SAAU,WAAYjW,KAAKub,SAAUvb,MACtD,OAAamU,IAAI8B,SAAU,eAAgBjW,KAAKwb,cAAexb,MAC/D,OAAamU,IAAIlF,OAAQ,SAAUjP,KAAKkQ,aAAclQ,MACtD,OAAamU,IAAI8B,SAAU,UAAWjW,KAAKqb,QAASrb,OAExDsM,EAAQ/C,UAAUuS,eAAiB,SAAUvL,GAIzC,MAHgB,SAAZA,IACAA,EAAW,OAAgB,SAAI,QAAU,eAEtCA,EAAQlQ,MAAM,MAEzBiM,EAAQ/C,UAAUyS,gBAAkB,WAChC,GAAK,eAAkBhc,KAAK2J,QASxB,OAAawK,IAAInU,KAAKoE,QAAS,UAAWpE,KAAKqV,YAAarV,UAT3B,CACjC,IAAI8V,EAAa,GAAGC,MAAMtJ,KAAK,gBAAUzM,KAAK2J,OAAQ3J,KAAKoE,UAC3DpE,KAAKqc,YAAcvG,EACnB,IAAK,IAAII,EAAK,EAAGoG,EAAexG,EAAYI,EAAKoG,EAAavS,OAAQmM,IAAM,CACxE,IAAIvM,EAAS2S,EAAapG,GAC1B,OAAa/B,IAAIxK,EAAQ,QAAS3J,KAAKqV,YAAarV,SAOhEsM,EAAQ/C,UAAUgP,gBAAkB,SAAU/C,EAAG7L,GACzC3J,KAAK4N,aACA5N,KAAKiU,WACS,UAAXuB,EAAEqB,MACF,OAAa1C,IAAIxK,EAAQ,OAAQ3J,KAAKya,WAAYza,MAEvC,YAAXwV,EAAEqB,MACF,OAAa1C,IAAIxK,EAAQ,WAAY3J,KAAKya,WAAYza,MAE3C,cAAXwV,EAAEqB,MACF,OAAa1C,IAAIxK,EAAQ,aAAc3J,KAAKya,WAAYza,MAExDA,KAAK6V,aACL,OAAa1B,IAAInU,KAAK4N,WAAY,aAAc5N,KAAKua,aAAcva,MACnE,OAAamU,IAAInU,KAAK4N,WAAY,aAAc5N,KAAKwa,gBAAiBxa,QAG1EA,KAAK+N,YAAiC,IAAnB/N,KAAK4W,WACxB,OAAazC,IAAIxK,EAAQ,kCAAmC3J,KAAKsY,YAAatY,QAa1FsM,EAAQ/C,UAAUgT,aAAe,SAAUhM,GAEvC,IADA,IAAIsL,EAAc7b,KAAK8b,eAAevL,GAC7B2F,EAAK,EAAGsG,EAAgBX,EAAa3F,EAAKsG,EAAczS,OAAQmM,IAAM,CAC3E,IAAIxF,EAAU8L,EAActG,GAC5B,GAAgB,WAAZxF,EACA,OAEY,UAAZA,GACA1Q,KAAKyc,oBAEO,UAAZ/L,GACA,OAAazC,OAAOjO,KAAKoE,QAAS,OAAQgQ,gBAAiBpU,KAAK0V,aAEpD,UAAZhF,IACI,OAAQqH,UACJ/X,KAAKic,aACLjc,KAAKic,YAAY3B,UAErB,OAAarM,OAAOjO,KAAKoE,QAAS,OAAQgY,cAAepc,KAAKuV,kBAG9D,OAAatH,OAAOjO,KAAKoE,QAAS,YAAapE,KAAKqV,cAIhE,OAAapH,OAAOgI,SAAU,WAAYjW,KAAKub,UAC/C,OAAatN,OAAOgI,SAAU,eAAgBjW,KAAKwb,eACnD,OAAavN,OAAOgB,OAAQ,SAAUjP,KAAKkQ,cAC3C,OAAajC,OAAOgI,SAAU,UAAWjW,KAAKqb,UAElD/O,EAAQ/C,UAAUkT,kBAAoB,WAClC,GAAK,eAAkBzc,KAAK2J,QAQxB,OAAasE,OAAOjO,KAAKoE,QAAS,UAAWpE,KAAKqV,kBANlD,IADA,IAAIS,EAAa,GAAGC,MAAMtJ,KAAK,gBAAUzM,KAAK2J,OAAQ3J,KAAKoE,UAClD8R,EAAK,EAAGwG,EAAe5G,EAAYI,EAAKwG,EAAa3S,OAAQmM,IAAM,CACxE,IAAIvM,EAAS+S,EAAaxG,GAC1B,OAAajI,OAAOtE,EAAQ,QAAS3J,KAAKqV,eAOtD/I,EAAQ/C,UAAU8Q,kBAAoB,SAAU1Q,GAC5C,IAAK3J,KAAKiU,SAAU,CAEhB,IADA,IAAI4H,EAAc7b,KAAK8b,eAAe9b,KAAK0Q,SAClCwF,EAAK,EAAGyG,EAAgBd,EAAa3F,EAAKyG,EAAc5S,OAAQmM,IAAM,CAC3E,IAAIxF,EAAUiM,EAAczG,GACZ,UAAZxF,IACA,OAAazC,OAAOtE,EAAQ,OAAQ3J,KAAKya,YACzC,OAAaxM,OAAOtE,EAAQ,WAAY3J,KAAKya,aAEjC,UAAZ/J,GAAwB,OAAQqH,UAChC,OAAa9J,OAAOtE,EAAQ,aAAc3J,KAAKya,YAGnDza,KAAK6V,aACL,OAAa5H,OAAOtE,EAAQ,aAAc3J,KAAKua,cAC/C,OAAatM,OAAOtE,EAAQ,aAAc3J,KAAKwa,kBAGnDxa,KAAK+N,YACL,OAAaE,OAAOtE,EAAQ,kCAAmC3J,KAAKsY,cAG5EhM,EAAQ/C,UAAU6G,WAAa,WAC3B,IAAIzG,EAAS,gBAAO,sBAAwB3J,KAAKgW,OAAS,aAAcC,UACxE,OAAOtM,GASX2C,EAAQ/C,UAAUqT,cAAgB,WAC9B,MAAO,WASXtQ,EAAQ/C,UAAUsT,eAAiB,WAC/B,OAAO7c,KAAK8c,aAAa,KAY7BxQ,EAAQ/C,UAAUwT,kBAAoB,SAAUC,EAASC,GAErD,IADA,IAAIlD,EAAgB/Z,KAAKoQ,aAChB8F,EAAK,EAAGlJ,EAAKjE,OAAOmU,KAAKF,GAAU9G,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAC9D,IAAIiH,EAAOnQ,EAAGkJ,GACd,OAAQiH,GACJ,IAAK,QACGnd,KAAK4N,YAAcmM,IACnB/Z,KAAK4N,WAAW7I,MAAMsC,MAAQrH,KAAK4N,WAAW7I,MAAMiT,SAAW,eAAWgF,EAAQ3V,OAClFrH,KAAKmQ,WAAW4J,IAEpB,MACJ,IAAK,SACG/Z,KAAK4N,YAAcmM,IACnB/Z,KAAK4N,WAAW7I,MAAMkC,OAAS,eAAW+V,EAAQ/V,QAClDjH,KAAKmQ,WAAW4J,IAEpB,MACJ,IAAK,UACG/Z,KAAK4N,YACL5N,KAAK6S,gBAET,MACJ,IAAK,UACD7S,KAAKuc,aAAaU,EAAQvM,SAC1B1Q,KAAK0b,WAAWsB,EAAQtM,SACxB,MACJ,IAAK,WAED,GADA1Q,KAAK+M,iBACD/M,KAAK4N,YAAcmM,EAAe,CAClC,IAAIrH,EAAgB,gBAAO,IAAMrH,EAAiBrL,KAAK4N,YACnD8E,IACAA,EAAc3N,MAAMH,IAAM8N,EAAc3N,MAAMJ,KAAO,MAEzD3E,KAAKmQ,WAAW4J,GAEpB,MACJ,IAAK,qBACG/Z,KAAK4N,YAAcmM,GACnB/Z,KAAKmQ,WAAW4J,GAEpB,MACJ,IAAK,UACD,GAAI/Z,KAAK4N,WAAY,CACjB,IAAIgB,EAAIoO,EAAQhL,QAAUiL,EAAQjL,QAClChS,KAAK4N,WAAW7I,MAAMJ,MAAQyD,SAASpI,KAAK4N,WAAW7I,MAAMJ,KAAM,IAAM,GAAK+U,WAAa,KAE/F,MACJ,IAAK,UACD,GAAI1Z,KAAK4N,WAAY,CACjB,IAAIvL,EAAI2a,EAAQ/K,QAAUgL,EAAQhL,QAClCjS,KAAK4N,WAAW7I,MAAMH,KAAOwD,SAASpI,KAAK4N,WAAW7I,MAAMH,IAAK,IAAM,GAAK8U,WAAa,KAE7F,MACJ,IAAK,WACG1Z,KAAK4N,aACDqP,EAAQlK,UACR,gBAAY,CAAC/S,KAAK4N,YAAaqP,EAAQlK,SAAS1S,MAAM,MAEtD2c,EAAQjK,UACR,eAAS,CAAC/S,KAAK4N,YAAaoP,EAAQjK,SAAS1S,MAAM,OAG3D,MACJ,IAAK,YACGL,KAAK4N,aACD5N,KAAKqO,UACL,eAAS,CAACrO,KAAK4N,YAAa/C,GAG5B,gBAAY,CAAC7K,KAAK4N,YAAa/C,IAGvC,MACJ,IAAK,WACG7K,KAAK4N,YAAcmM,IACnB/Z,KAAKgU,kBACLhU,KAAKmQ,WAAW4J,IAEpB,MACJ,IAAK,YACI,eAAkB/Z,KAAK4M,mBACxB,gBAAY,CAAC5M,KAAK4M,kBAAmBb,GAEzC/L,KAAK6X,UAAYmF,EAAQnF,UACrB7X,KAAK4N,YAAcmM,IACnB/Z,KAAK2X,gBAAgB3X,MACrBA,KAAKmQ,WAAW4J,OAYpCzN,EAAQ/C,UAAU+E,KAAO,SAAUlK,EAASwR,GACpC,eAAkBA,KAClBA,EAAY5V,KAAK4V,UAAUtH,MAE3B,eAAkBlK,KAClBA,EAAUpE,KAAKoE,SAEW,SAA1BA,EAAQW,MAAMyK,SAGlBxP,KAAKsW,YAAYlS,EAASwR,IAQ9BtJ,EAAQ/C,UAAUkF,MAAQ,SAAUmH,GAC3BA,IACDA,EAAY5V,KAAK4V,UAAUnH,OAE/BzO,KAAK2V,YAAYC,IAQrBtJ,EAAQ/C,UAAU6T,QAAU,SAAUzT,GAOlC,GANI3J,KAAK4N,YACL5N,KAAK6S,cAAclJ,GAEnB3J,KAAKkO,UAAYvE,GACjB3J,KAAKmQ,WAAWxG,IAEf,eAAkB3J,KAAKqc,eAAiB,eAAkBrc,KAAK2J,QAAS,CACzE,IAAI0T,EAAW,gBAAUrd,KAAK2J,OAAQ3J,KAAKoE,SACvCiZ,EAAStT,SAAW/J,KAAKqc,YAAYtS,SACrC/J,KAAKuc,aAAavc,KAAK0Q,SACvB1Q,KAAK0b,WAAW1b,KAAK0Q,YAUjCpE,EAAQ/C,UAAU+Q,QAAU,WACxBrO,EAAO1C,UAAU+Q,QAAQ7N,KAAKzM,MAC1BA,KAAK4N,YACL,gBAAO5N,KAAK4N,YAEZ5N,KAAKkO,UACLlO,KAAKkO,SAASoM,UAElB,OAAAkR,EAAA,QACA,gBAAY,CAACxrB,KAAKoE,SAAUwG,GAC5B5K,KAAKuc,aAAavc,KAAK0Q,SACvB1Q,KAAKqa,kBAAkBra,KAAKoE,SAC5BpE,KAAK4N,WAAa,KAClB5N,KAAKkO,SAAW,KAEhB,IADA,IAAIoP,EAAgB,gBAAU,sBAAwBtd,KAAKgW,OAAS,aAAchW,KAAKoE,SAC9E8R,EAAK,EAAGqH,EAAkBD,EAAepH,EAAKqH,EAAgBxT,OAAQmM,IAAM,CACjF,IAAIvM,EAAS4T,EAAgBrH,GAC7BlW,KAAKqW,eAAe1M,KAG5BF,EAAW,CACP,eAAS,SACV6C,EAAQ/C,UAAW,aAAS,GAC/BE,EAAW,CACP,eAAS,SACV6C,EAAQ/C,UAAW,cAAU,GAChCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,SACV6C,EAAQ/C,UAAW,iBAAa,GACnCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,cAAU,GAChCE,EAAW,CACP,eAAS,cACV6C,EAAQ/C,UAAW,gBAAY,GAClCE,EAAW,CACP,eAAS,IACV6C,EAAQ/C,UAAW,eAAW,GACjCE,EAAW,CACP,eAAS,IACV6C,EAAQ/C,UAAW,eAAW,GACjCE,EAAW,CACP,gBAAS,IACV6C,EAAQ/C,UAAW,sBAAkB,GACxCE,EAAW,CACP,gBAAS,IACV6C,EAAQ/C,UAAW,uBAAmB,GACzCE,EAAW,CACP,gBAAS,IACV6C,EAAQ/C,UAAW,uBAAmB,GACzCE,EAAW,CACP,eAAS,SACV6C,EAAQ/C,UAAW,0BAAsB,GAC5CE,EAAW,CACP,eAAS,SACV6C,EAAQ/C,UAAW,eAAW,GACjCE,EAAW,CACP,gBAAS,IACV6C,EAAQ/C,UAAW,kBAAc,GACpCE,EAAW,CACP,gBAAS,IACV6C,EAAQ/C,UAAW,gBAAY,GAClCE,EAAW,CACP,eAAQ,GAAI,IACb6C,EAAQ/C,UAAW,iBAAa,GACnCE,EAAW,CACP,eAAS,IACV6C,EAAQ/C,UAAW,iBAAa,GACnCE,EAAW,CACP,eAAS,IACV6C,EAAQ/C,UAAW,kBAAc,GACpCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,gBAAY,GAClCE,EAAW,CACP,gBAAS,IACV6C,EAAQ/C,UAAW,2BAAuB,GAC7CE,EAAW,CACP,eAAS,KACV6C,EAAQ/C,UAAW,sBAAkB,GACxCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,oBAAgB,GACtCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,kBAAc,GACpCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,iBAAa,GACnCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,mBAAe,GACrCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,kBAAc,GACpCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,uBAAmB,GACzCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,eAAW,GACjCE,EAAW,CACP,kBACD6C,EAAQ/C,UAAW,iBAAa,GACnC+C,EAAU7C,EAAW,CACjB,QACD6C,GACIA,EA1yCiB,CA2yC1B,QCv3CSsW,EAAa,CAAC,eAAgB,UAAW,YAAa,aAAc,YAAa,UAAW,WAAY,kBAAmB,sBAAuB,oBAAqB,YAAa,SAAU,iBAAkB,WAAY,SAAU,aAAc,UAAW,UAAW,YAAa,UAAW,WAAY,iBAAkB,SAAU,qBAAsB,QAAS,kBAAmB,aAAc,YAAa,cAAe,kBAAmB,aAAc,eAAgB,UAAW,aACle8gB,EAAa,GACbC,EAAW,eAAS,CAAEC,MAAOhhB,IAC7BghB,EAAQD,EAAS,GAAIE,EAAQF,EAAS,GAAIG,EAAY/6B,OAAOmU,KAAK2mB,GAC7EC,EAAUpvB,KAAK,eAAgB,qBAC/B,IAAK,IAAI,EAAK,EAAGqvB,EAAeL,EAAY,EAAKK,EAAah6B,OAAQ,IAAM,CACxE,IAAIi6B,EAAUD,EAAa,GAC3BD,EAAUpvB,KAAK,UAAYsvB,GAQxB,IAAIyyc,EAAmB,eAAmB,CAC7C9ue,KAAM,mBACNu8B,OAAQ,CAAC,QACTN,MAAOA,EACPC,MAAOA,EACPM,MAAOL,EACPM,QAAS,WAAc,MAAO,CAAEC,OAAQrkC,KAAKqkC,SAC7ClQ,KAAM,WACF,MAAO,CACHmQ,aAAc,IAAI,EAAQ,IAC1BC,SAAU3hB,EACV4hB,OAAQd,EACRe,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,GACXC,cAAe,GACfC,QAAS,OACTC,mBAAoB,KAG5BC,QAAS,WACL/kC,KAAKilC,iBACLjlC,KAAKskC,aAAaY,eAAiBllC,KAAKskC,aAAa/wB,cACrDvT,KAAKskC,aAAa/wB,cAAgBvT,KAAKuT,cACvCvT,KAAKskC,aAAa3zB,cAAgB3Q,KAAK2Q,cACvC3Q,KAAKmlC,QAAUnlC,KAAKmlC,SAExB1pB,OAAQ,SAAUjO,GACd,IAAIzL,EAAK,OAAiByL,EAAL,OACjB43B,EAAQ,KAIZ,OAHK,eAAkBplC,KAAKqlC,OAAOC,WAC/BF,EAAS,OAAoCplC,KAAKqlC,OAAOC,QAApCtlC,KAAKqlC,OAAOC,WAE9BvjC,EAAE,MAAOqjC,IAEpBG,QAAS,CACL50B,cAAe,SAAU60B,GAIrB,GAHKA,IACDA,EAAgBz8B,OAAOmU,KAAKld,KAAK8kC,oBAAsB,KAEvDU,EAAcz7B,QAAU/J,KAAK8kC,mBAC7B,IAAK,IAAI5uB,EAAK,EAAGuvB,EAAkBD,EAAetvB,EAAKuvB,EAAgB17B,OAAQmM,IAAM,CACjF,IAAIwvB,EAAWD,EAAgBvvB,GAC3ByvB,EAAoB3lC,KAAK8kC,mBAAmBY,GAChD,GAAIC,GAAqBA,EAAkB57B,OAAQ,CAC/C,IAAK,IAAIiD,EAAK,EAAG44B,EAAsBD,EAAmB34B,EAAK44B,EAAoB77B,OAAQiD,IAAM,CAC7F,IAAI64B,EAAMD,EAAoB54B,GAC1BsN,EAAU,eAAS,mBAAoBurB,GACvCvrB,GACAurB,EAAIC,QAAQC,WAEZF,EAAIzyB,YACJyyB,EAAIzyB,UAAY,WAGjBpT,KAAK8kC,mBAAmBY,MAK/CnyB,cAAe,SAAU4J,EAAM6oB,GAC3B,IAAIx5B,EAAQxM,KACRA,KAAK6kC,SACL7kC,KAAKwkC,OAAUxkC,KAAKwkC,OAAyCxkC,KAAKwkC,OAArCxkC,KAAKskC,aAAa2B,aAE/CjmC,KAAKskC,cAAgBtkC,KAAKskC,aAAaY,gBACvCllC,KAAKskC,aAAaY,eAAe/nB,EAAM6oB,GAEvC7oB,GAAQnd,KAAKwkC,QAAUxkC,KAAKwkC,OAAOz6B,QACnChB,OAAOmU,KAAKC,GAAM7N,KAAI,SAAUzL,GAC5B2I,EAAMg4B,OAAOl1B,KAAI,SAAUoZ,GAClB7kB,IAAQ6kB,GAAY,cAAchpB,KAAKmE,KACpC2I,EAAMq4B,OACNr4B,EAAM83B,aAAa4B,YAAYC,MAAM,UAAYtiC,EAAKsZ,EAAKtZ,KAG3D2I,EAAM25B,MAAM,UAAYtiC,EAAKsZ,EAAKtZ,IAClC2I,EAAM25B,MAAM,eAAgBhpB,EAAKtZ,aAOzDwgC,OAAQ,WACJrkC,KAAKmlC,WAET12B,MAAO,SAAUmH,GACb,OAAO5V,KAAKskC,aAAa71B,MAAMmH,IAEnCtH,KAAM,SAAUlK,EAASwR,GACrB,OAAO5V,KAAKskC,aAAah2B,KAAKlK,EAASwR,IAE3CwH,QAAS,SAAUzT,GACf,OAAO3J,KAAKskC,aAAalnB,QAAQzT,OAIlC+se,EAAgB,CACvB/ue,KAAM,cACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAU6vc,EAAc/ue,KAAM8ue,M,qBCvH1C92e,EAAOC,QAAU,EAAQ,S,4GCEd0zT,EAA0B,eAAmB,CACpDp7P,OAAQ,CAAE7zB,OAAQ,CAAEiB,QAAS,OAC7B7pB,OAAQ,SAAUjO,GACd,IAAK,OAAW,CACZ,IAAIzL,EAAK,OAAiByL,EAAL,OACjB43B,EAAQ,KAIZ,OAHK,eAAkBplC,KAAKqlC,OAAOC,WAC/BF,EAAS,OAAoCplC,KAAKqlC,OAAOC,QAApCtlC,KAAKqlC,OAAOC,WAE9BvjC,EAAE,MAAO,CAAEo2D,MAAO,eAAiB/yB,KAIlDD,QAAS,YACA,QAAanlC,KAAKqkC,QACnBrkC,KAAKqkC,UAGbkB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,wBAIRm7P,EAAuB,CAC9B5rT,KAAM,oBACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAU0sR,EAAqB5rT,KAAM2rT,KAGtCE,EAAyB,eAAmB,CACnD/3S,OAAQ,aAGR8pB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,uBAIRq7P,EAAsB,CAC7B9rT,KAAM,mBACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAU4sR,EAAoB9rT,KAAM6rT,KC3CrCE,EAAmB,eAAmB,CAC7Cx7P,OAAQ,CAAE7zB,OAAQ,CAAEiB,QAAS,OAC7B7pB,OAAQ,SAAUjO,GACd,IAAK,OAAW,CACZ,IAAIzL,EAAK,OAAiByL,EAAL,OACjB43B,EAAQ,KAIZ,OAHK,eAAkBplC,KAAKqlC,OAAOC,WAC/BF,EAAS,OAAoCplC,KAAKqlC,OAAOC,QAApCtlC,KAAKqlC,OAAOC,WAE9BvjC,EAAE,MAAO,CAAEo2D,MAAO,eAAiB/yB,KAIlDD,QAAS,YACA,QAAanlC,KAAKqkC,QACnBrkC,KAAKqkC,UAGbkB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,gBAIRu7P,EAAgB,CACvBhsT,KAAM,YACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAU8sR,EAAchsT,KAAM+rT,KAe/BE,EAAkB,eAAmB,CAC5Cn4S,OAAQ,aAGR8pB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,eAIRy7P,EAAe,CACtBlsT,KAAM,WACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAUgtR,EAAalsT,KAAMisT,KCvD9BE,EAA4B,eAAmB,CACtD57P,OAAQ,CAAE7zB,OAAQ,CAAEiB,QAAS,OAC7B7pB,OAAQ,SAAUjO,GACd,IAAK,OAAW,CACZ,IAAIzL,EAAK,OAAiByL,EAAL,OACjB43B,EAAQ,KAIZ,OAHK,eAAkBplC,KAAKqlC,OAAOC,WAC/BF,EAAS,OAAoCplC,KAAKqlC,OAAOC,QAApCtlC,KAAKqlC,OAAOC,WAE9BvjC,EAAE,MAAO,CAAEo2D,MAAO,eAAiB/yB,KAIlDD,QAAS,YACA,QAAanlC,KAAKqkC,QACnBrkC,KAAKqkC,UAGbkB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,gBAIR27P,EAAyB,CAChCpsT,KAAM,YACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAUktR,EAAuBpsT,KAAMmsT,KAqBxCE,EAA2B,eAAmB,CACrDv4S,OAAQ,aAGR8pB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,eAIR67P,EAAwB,CAC/BtsT,KAAM,WACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAUotR,EAAsBtsT,KAAMqsT,KC7DvCE,EAAsB,eAAmB,CAChDh8P,OAAQ,CAAE7zB,OAAQ,CAAEiB,QAAS,OAC7B7pB,OAAQ,SAAUjO,GACd,IAAK,OAAW,CACZ,IAAIzL,EAAK,OAAiByL,EAAL,OACjB43B,EAAQ,KAIZ,OAHK,eAAkBplC,KAAKqlC,OAAOC,WAC/BF,EAAS,OAAoCplC,KAAKqlC,OAAOC,QAApCtlC,KAAKqlC,OAAOC,WAE9BvjC,EAAE,MAAO,CAAEo2D,MAAO,eAAiB/yB,KAIlDD,QAAS,YACA,QAAanlC,KAAKqkC,QACnBrkC,KAAKqkC,UAGbkB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,mBAIR+7P,EAAmB,CAC1BxsT,KAAM,eACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAUstR,EAAiBxsT,KAAMusT,KAsBlCE,EAAqB,eAAmB,CAC/C34S,OAAQ,aAGR8pB,QAAS,CACL6yB,OAAQ,WACJ,MAAO,kBAIRi8P,EAAkB,CACzB1sT,KAAM,cACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAUwtR,EAAgB1sT,KAAMysT,KCxDjCxxS,EAAa,CAAC,eAAgB,UAAW,aAAc,mBAAoB,iBAAkB,gBAAiB,gBAAiB,oBAAqB,cAAe,iBAAkB,kBAAmB,gBAAiB,sBAAuB,iBAAkB,eAAgB,gBAAiB,UAAW,YAAa,WAAY,wBAAyB,kBAAmB,kBAAmB,UAAW,mBAAoB,WAAY,eAAgB,gBAAiB,kBAAmB,aAAc,iBAAkB,eAAgB,6BAA8B,sBAAuB,mBAAoB,eAAgB,iBAAkB,6BAA8B,oBAAqB,cAAe,sBAAuB,sBAAuB,0BAA2B,oBAAqB,YAAa,qBAAsB,uBAAwB,uBAAwB,cAAe,iBAAkB,gBAAiB,aAAc,YAAa,gBAAiB,SAAU,qBAAsB,yBAA0B,mBAAoB,SAAU,eAAgB,gBAAiB,gBAAiB,YAAa,QAAS,cAAe,iBAAkB,kBAAmB,YAAa,mBAAoB,cAAe,iBAAkB,mBAAoB,oBAAqB,oBAAqB,iBAAkB,YAAa,eAAgB,mBAAoB,UAAW,kBAAmB,QAAS,cAAe,iBAAkB,gBAAiB,WAAY,cAAe,cAAe,iBAAkB,iBAAkB,oBAAqB,kBAAmB,aAAc,kBAAmB,oBAAqB,2BAA4B,0BAA2B,cAAe,kBAAmB,cAAe,YAAa,iBAAkB,kBAAmB,WAAY,WAAY,YAAa,eAAgB,gBAAiB,iBAAkB,wBAAyB,mBAAoB,oBAAqB,aAAc,kBAAmB,aAAc,kBAAmB,iBAAkB,iBAAkB,kBAAmB,eAAgB,mBAAoB,kBAAmB,UAAW,YAAa,oBAAqB,kBAAmB,YAAa,kBAAmB,8BAA+B,sBAAuB,2BAA4B,qBAAsB,wBAAyB,uBAAwB,qBAAsB,iBAAkB,aAAc,wBAAyB,sBAAuB,OAAQ,4BAA6B,oBAAqB,yBAA0B,mBAAoB,gBAAiB,gBAAiB,cAAe,oBAAqB,cAAe,aAAc,WAAY,eAAgB,gBAAiB,iBAAkB,UAAW,eAAgB,qBAAsB,UAAW,cAAe,eAAgB,gBACrxF8gB,EAAa,CAAC,cACdC,EAAW,eAAS,CAAEC,MAAOhhB,IAC7BghB,EAAQD,EAAS,GAAIE,EAAQF,EAAS,GAAIG,EAAY/6B,OAAOmU,KAAK2mB,GAC7EC,EAAUpvB,KAAK,eAAgB,qBAC/B,IAAK,IAAI,EAAK,EAAGqvB,EAAeL,EAAY,EAAKK,EAAah6B,OAAQ,IAAM,CACxE,IAAIi6B,EAAUD,EAAa,GAC3BD,EAAUpvB,KAAK,UAAYsvB,GAQxB,IAAI2yc,EAAgB,eAAmB,CAC1Chve,KAAM,gBACNu8B,OAAQ,CAAC,QACTN,MAAOA,EACPC,MAAOA,EACPM,MAAOL,EACPpb,MAAO,CAAE3R,MAAO,gBAChBqtB,QAAS,WAAc,MAAO,CAAEC,OAAQrkC,KAAKqkC,SAC7ClQ,KAAM,WACF,MAAO,CACHmQ,aAAc,IAAI,OAAK,IACvBC,SAAU3hB,EACV4hB,OAAQd,EACRe,mBAAmB,EACnBC,oBAAoB,EACpBC,UAAW,CAAE,YAAa,CAAE,WAAY,CAAE,oBAAqB,qBAAwB,eAAgB,CAAE,cAAe,CAAE,YAAa,cACvIC,cAAe,CAAE,oBAAqB,aACtCC,QAAS,OACTC,mBAAoB,KAG5BC,QAAS,WACL/kC,KAAKskC,aAAaU,SAAWhlC,KAAKskC,aAAa/zB,QAC/CvQ,KAAKskC,aAAa/zB,QAAUvQ,KAAKuQ,QACjCvQ,KAAKilC,iBACLjlC,KAAKskC,aAAaY,eAAiBllC,KAAKskC,aAAa/wB,cACrDvT,KAAKskC,aAAa/wB,cAAgBvT,KAAKuT,cACvCvT,KAAKskC,aAAa3zB,cAAgB3Q,KAAK2Q,cACvC3Q,KAAKmlC,QAAUnlC,KAAKmlC,SAExB1pB,OAAQ,SAAUjO,GACd,IAAIzL,EAAK,OAAiByL,EAAL,OACjB43B,EAAQ,KAIZ,OAHK,eAAkBplC,KAAKqlC,OAAOC,WAC/BF,EAAS,OAAoCplC,KAAKqlC,OAAOC,QAApCtlC,KAAKqlC,OAAOC,WAE9BvjC,EAAE,MAAOqjC,IAEpBG,QAAS,CACL50B,cAAe,SAAU60B,GAIrB,GAHKA,IACDA,EAAgBz8B,OAAOmU,KAAKld,KAAK8kC,oBAAsB,KAEvDU,EAAcz7B,QAAU/J,KAAK8kC,mBAC7B,IAAK,IAAI5uB,EAAK,EAAGuvB,EAAkBD,EAAetvB,EAAKuvB,EAAgB17B,OAAQmM,IAAM,CACjF,IAAIwvB,EAAWD,EAAgBvvB,GAC3ByvB,EAAoB3lC,KAAK8kC,mBAAmBY,GAChD,GAAIC,GAAqBA,EAAkB57B,OAAQ,CAC/C,IAAK,IAAIiD,EAAK,EAAG44B,EAAsBD,EAAmB34B,EAAK44B,EAAoB77B,OAAQiD,IAAM,CAC7F,IAAI64B,EAAMD,EAAoB54B,GAC1BsN,EAAU,eAAS,mBAAoBurB,GACvCvrB,GACAurB,EAAIC,QAAQC,WAEZF,EAAIzyB,YACJyyB,EAAIzyB,UAAY,WAGjBpT,KAAK8kC,mBAAmBY,MAK/CnyB,cAAe,SAAU4J,EAAM6oB,GAC3B,IAAIx5B,EAAQxM,KACRA,KAAK6kC,SACL7kC,KAAKwkC,OAAUxkC,KAAKwkC,OAAyCxkC,KAAKwkC,OAArCxkC,KAAKskC,aAAa2B,aAE/CjmC,KAAKskC,cAAgBtkC,KAAKskC,aAAaY,gBACvCllC,KAAKskC,aAAaY,eAAe/nB,EAAM6oB,GAEvC7oB,GAAQnd,KAAKwkC,QAAUxkC,KAAKwkC,OAAOz6B,QACnChB,OAAOmU,KAAKC,GAAM7N,KAAI,SAAUzL,GAC5B2I,EAAMg4B,OAAOl1B,KAAI,SAAUoZ,GAClB7kB,IAAQ6kB,GAAY,cAAchpB,KAAKmE,KACpC2I,EAAMq4B,OACNr4B,EAAM83B,aAAa4B,YAAYC,MAAM,UAAYtiC,EAAKsZ,EAAKtZ,KAG3D2I,EAAM25B,MAAM,UAAYtiC,EAAKsZ,EAAKtZ,IAClC2I,EAAM25B,MAAM,eAAgBhpB,EAAKtZ,aAOzD0M,QAAS,SAAU6V,EAAWggB,EAAWC,GAIrC,GAHK,SACDrmC,KAAKwkC,OAAUxkC,KAAKwkC,OAAyCxkC,KAAKwkC,OAArCxkC,KAAKskC,aAAa2B,aAEhC,WAAd7f,GAAwC,UAAdA,IAA0BpmB,KAAKwkC,QAAkC,IAAvBxkC,KAAKwkC,OAAOz6B,QAiBhF,GAAmB,gBAAdqc,GAAyD,iBAA1BggB,EAAUE,aAAmCtmC,KAAKwkC,QAAkC,IAAvBxkC,KAAKwkC,OAAOz6B,OAAe,CACzHlG,EAAM7D,KAAKwkC,OAAO9qB,WAAWvR,MAAM,6BAA+B,GAClEo+B,EAAU1iC,EAAI,GACduiC,GAAaviC,IAAQ,eAAYuiC,EAAUG,MACtC,QAKDvmC,KAAKmmC,MAAM,UAAYI,EAASH,EAAUG,IAC1CvmC,KAAKmmC,MAAM,eAAgBC,EAAUG,MALrCvmC,KAAKskC,aAAa4B,YAAYC,MAAM,UAAYI,EAASH,EAAUG,IACnEvmC,KAAKskC,aAAa4B,YAAYC,MAAM,eAAgBC,EAAUG,WAvB0B,CAChG,IAAI1iC,EAAM7D,KAAKwkC,OAAO9qB,WAAWvR,MAAM,kBAAoB,GACvDo+B,EAAU1iC,EAAI,GACduiC,GAAaviC,IAAQ,eAAYuiC,EAAUG,MACtC,QAMiB,WAAdngB,GAA2BpmB,KAAKwmC,SAAWxmC,KAAKwmC,OAAOC,gBACvDzmC,KAAKmmC,MAAM,UAAYI,EAASH,EAAUG,IAC1CvmC,KAAKmmC,MAAM,eAAgBC,EAAUG,MAPzCvmC,KAAKskC,aAAa4B,YAAYC,MAAM,UAAYI,EAASH,EAAUG,IACnEvmC,KAAKskC,aAAa4B,YAAYC,MAAM,eAAgBC,EAAUG,IAC9DvmC,KAAKskC,aAAa4B,YAAYC,MAAM,oBAAqBC,EAAUG,MAwB1EvmC,KAAKskC,cAAgBtkC,KAAKskC,aAAaU,UACxChlC,KAAKskC,aAAaU,SAAS5e,EAAWggB,EAAWC,IAGzDhC,OAAQ,WACJrkC,KAAKmlC,WAETqV,UAAW,SAAUrmB,EAAMrf,GACvB,OAAO9U,KAAKskC,aAAakW,UAAUrmB,EAAMrf,IAE7Cyya,iBAAkB,WACd,OAAOvnb,KAAKskC,aAAaijZ,oBAE7B3mI,eAAgB,SAAU5zQ,EAAYskZ,EAAeC,GACjD,OAAOvxb,KAAKskC,aAAas8Q,eAAe5zQ,EAAYskZ,EAAeC,IAEvEwF,iBAAkB,SAAU1qZ,GACxB,OAAOrsC,KAAKskC,aAAayyZ,iBAAiB1qZ,IAE9CsO,YAAa,SAAUtO,GACnB,OAAOrsC,KAAKskC,aAAaqW,YAAYtO,IAEzCypZ,gCAAiC,SAAU18P,GACvC,OAAOp5L,KAAKskC,aAAawxZ,gCAAgC18P,IAE7D43E,iBAAkB,SAAUlnO,EAAY8pD,GACpC,OAAO5zF,KAAKskC,aAAa0sO,iBAAiBlnO,EAAY8pD,IAE1DwtU,mBAAoB,WAChB,OAAOpha,KAAKskC,aAAa88X,sBAE7BxvG,eAAgB,SAAUpiR,GACtB,OAAOxvC,KAAKskC,aAAastR,eAAepiR,IAE5C2uD,cAAe,WACX,OAAOn+F,KAAKskC,aAAa65D,iBAE7BkgU,kBAAmB,WACf,OAAOr+Z,KAAKskC,aAAa+5X,qBAE7Bh/N,eAAgB,WACZ,OAAOr/L,KAAKskC,aAAa+6J,kBAE7BqhH,aAAc,WACV,OAAO1gT,KAAKskC,aAAao8Q,gBAE7BvhH,UAAW,WACP,OAAOn/L,KAAKskC,aAAa66J,aAE7BlzD,KAAM,SAAUqhK,GACZ,OAAOttS,KAAKskC,aAAa2nG,KAAKqhK,IAElCuR,UAAW,SAAUJ,EAAuBC,EAAkBC,EAAUt2M,GACpE,OAAOroG,KAAKskC,aAAau6Q,UAAUJ,EAAuBC,EAAkBC,EAAUt2M,IAE1FmwH,UAAW,WACP,OAAOx4N,KAAKskC,aAAak0L,aAE7B99K,aAAc,SAAU81Y,EAAWr8Z,GAC/B,OAAOn0B,KAAKskC,aAAaoW,aAAa81Y,EAAWr8Z,IAErD43R,UAAW,SAAUnjR,GACjB,OAAO5oC,KAAKskC,aAAaynR,UAAUnjR,IAEvCk2D,gBAAiB,SAAUo2V,EAAepgb,GACtC,OAAO9U,KAAKskC,aAAaw6D,gBAAgBo2V,EAAepgb,IAE5Dkgb,kBAAmB,WACf,OAAOh1b,KAAKskC,aAAa0wZ,qBAE7BC,gBAAiB,WACb,OAAOj1b,KAAKskC,aAAa2wZ,mBAE7BtpI,SAAU,SAAU72S,EAAOi2B,GACvB,OAAO/qC,KAAKskC,aAAaqnR,SAAS72S,EAAOi2B,IAE7C6gR,mBAAoB,SAAUx6Q,EAAOk7C,GACjC,OAAOtsF,KAAKskC,aAAasnR,mBAAmBx6Q,EAAOk7C,IAEvDu9C,QAAS,WACL,OAAO7pI,KAAKskC,aAAaulG,WAE7B20K,YAAa,SAAUC,EAAuBC,EAAkBC,EAAUt2M,GACtE,OAAOroG,KAAKskC,aAAak6Q,YAAYC,EAAuBC,EAAkBC,EAAUt2M,IAE5Fs6M,sBAAuB,SAAUr1R,GAC7B,OAAOttB,KAAKskC,aAAaq+Q,sBAAsBr1R,IAEnDkkS,eAAgB,SAAUnmR,EAAWomR,EAAgB9zJ,EAAa3pH,EAAWsvF,EAAWh2F,EAAcokR,EAAmBC,GACrH,OAAO3xT,KAAKskC,aAAaktR,eAAenmR,EAAWomR,EAAgB9zJ,EAAa3pH,EAAWsvF,EAAWh2F,EAAcokR,EAAmBC,IAE3IvX,gBAAiB,WACb,OAAOp6S,KAAKskC,aAAa81Q,mBAE7BnE,iBAAkB,SAAUj/M,EAAUgyI,GAClC,OAAOhpO,KAAKskC,aAAa2xQ,iBAAiBj/M,EAAUgyI,IAExD71I,iBAAkB,SAAUpoD,GACxB,OAAO/qC,KAAKskC,aAAa6uD,iBAAiBpoD,IAE9C4oD,eAAgB,SAAU/nD,GACtB,OAAO5rC,KAAKskC,aAAaqvD,eAAe/nD,IAE5C4gR,oBAAqB,WACjB,OAAOxsT,KAAKskC,aAAakoR,uBAE7B52N,uBAAwB,SAAU7qD,GAC9B,OAAO/qC,KAAKskC,aAAasxD,uBAAuB7qD,IAEpDgiR,uBAAwB,SAAUj4S,GAC9B,OAAO9U,KAAKskC,aAAayoR,uBAAuBj4S,IAEpDkgF,qBAAsB,SAAUppD,GAC5B,OAAO5rC,KAAKskC,aAAa0wD,qBAAqBppD,IAElDohR,sBAAuB,SAAUjiR,GAC7B,OAAO/qC,KAAKskC,aAAa0oR,sBAAsBjiR,IAEnD2pQ,oBAAqB,SAAU9oQ,GAC3B,OAAO5rC,KAAKskC,aAAaowQ,oBAAoB9oQ,IAEjD2qD,WAAY,SAAU0tM,GAClB,OAAOjkS,KAAKskC,aAAaiyD,WAAW0tM,IAExC9qM,WAAY,WACR,OAAOn5F,KAAKskC,aAAa60D,cAE7Brf,gBAAiB,WACb,OAAO95E,KAAKskC,aAAaw1C,mBAE7B2rB,sBAAuB,WACnB,OAAOzlG,KAAKskC,aAAamhE,yBAE7B1K,cAAe,WACX,OAAO/6F,KAAKskC,aAAay2D,iBAE7BjE,YAAa,WACT,OAAO92F,KAAKskC,aAAawyD,eAE7Bu5V,gBAAiB,WACb,OAAOrwb,KAAKskC,aAAa+rZ,mBAE7BmF,mBAAoB,WAChB,OAAOx1b,KAAKskC,aAAakxZ,sBAE7B/oI,iBAAkB,WACd,OAAOzsT,KAAKskC,aAAamoR,oBAE7BC,sBAAuB,WACnB,OAAO1sT,KAAKskC,aAAaooR,yBAE7BrlL,qBAAsB,WAClB,OAAOrnI,KAAKskC,aAAa+iG,wBAE7BslT,kBAAmB,WACf,OAAO3sb,KAAKskC,aAAaqoZ,qBAE7Bl6H,iCAAkC,SAAU39S,GACxC,OAAO9U,KAAKskC,aAAamuR,iCAAiC39S,IAE9D41X,mBAAoB,WAChB,OAAO1qY,KAAKskC,aAAaomW,sBAE7B8W,cAAe,WACX,OAAOxhZ,KAAKskC,aAAak9W,iBAE7BhvF,4BAA6B,SAAUx7N,EAAUgyI,GAC7C,OAAOhpO,KAAKskC,aAAakuR,4BAA4Bx7N,EAAUgyI,IAEnE0pF,kCAAmC,SAAU59S,GACzC,OAAO9U,KAAKskC,aAAaouR,kCAAkC59S,IAE/Dy9S,uBAAwB,WACpB,OAAOvyT,KAAKskC,aAAaiuR,0BAE7BF,yBAA0B,SAAUv9S,GAChC,OAAO9U,KAAKskC,aAAa+tR,yBAAyBv9S,IAEtDw9S,mBAAoB,WAChB,OAAOtyT,KAAKskC,aAAaguR,sBAE7Bu5H,oBAAqB,SAAU/2a,GAC3B,OAAO9U,KAAKskC,aAAaunZ,oBAAoB/2a,IAEjD67R,iBAAkB,WACd,OAAO3wS,KAAKskC,aAAaqsQ,oBAE7B77M,eAAgB,WACZ,OAAO90F,KAAKskC,aAAawwD,kBAE7B+gW,iBAAkB,WACd,OAAO71b,KAAKskC,aAAauxZ,oBAE7B3R,gBAAiB,WACb,OAAOlkb,KAAKskC,aAAa4/Y,mBAE7BjyH,wBAAyB,SAAUj7N,EAAUgyI,GACzC,OAAOhpO,KAAKskC,aAAa2tR,wBAAwBj7N,EAAUgyI,IAE/D2pF,8BAA+B,SAAU79S,GACrC,OAAO9U,KAAKskC,aAAaquR,8BAA8B79S,IAE3Do9S,mBAAoB,WAChB,OAAOlyT,KAAKskC,aAAa4tR,sBAE7BC,qBAAsB,SAAUr9S,GAC5B,OAAO9U,KAAKskC,aAAa6tR,qBAAqBr9S,IAElDs9S,eAAgB,WACZ,OAAOpyT,KAAKskC,aAAa8tR,kBAE7B9G,SAAU,WACN,OAAOtrT,KAAKskC,aAAagnR,YAE7B5lN,wBAAyB,WACrB,OAAO1lG,KAAKskC,aAAaohE,2BAE7B+3M,cAAe,SAAU3oS,GACrB,OAAO9U,KAAKskC,aAAam5Q,cAAc3oS,IAE3C4oS,wBAAyB,SAAUz3S,GAC/B,OAAOjG,KAAKskC,aAAao5Q,wBAAwBz3S,IAErDynT,WAAY,SAAU/jT,GAClB,OAAO3J,KAAKskC,aAAaopR,WAAW/jT,IAExC+yL,QAAS,WACL,OAAO18L,KAAKskC,aAAao4J,WAE7B6xP,sBAAuB,WACnB,OAAOvub,KAAKskC,aAAaiqZ,yBAE7BxgJ,mBAAoB,WAChB,OAAO/tS,KAAKskC,aAAaypQ,sBAE7BklB,0BAA2B,WACvB,OAAOjzT,KAAKskC,aAAa2uR,6BAE7Br8N,sBAAuB,WACnB,OAAO52F,KAAKskC,aAAasyD,yBAE7Bo7N,gBAAiB,WACb,OAAOhyT,KAAKskC,aAAa0tR,mBAE7BkkI,iBAAkB,SAAUC,EAAY5gJ,GACpC,OAAOv1S,KAAKskC,aAAa4xZ,iBAAiBC,EAAY5gJ,IAE1DoY,oBAAqB,SAAU5iR,GAC3B,OAAO/qC,KAAKskC,aAAaqpR,oBAAoB5iR,IAEjDqjQ,kBAAmB,WACf,OAAOpuS,KAAKskC,aAAa8pQ,qBAE7Bge,SAAU,SAAUC,GAChB,OAAOrsT,KAAKskC,aAAa8nR,SAASC,IAEtC0oI,iBAAkB,WACd,OAAO/0b,KAAKskC,aAAaywZ,oBAE7B3/V,YAAa,SAAUF,GACnB,OAAOl1F,KAAKskC,aAAa8wD,YAAYF,IAEzC4/V,eAAgB,WACZ,OAAO90b,KAAKskC,aAAawwZ,kBAE7BjoI,YAAa,SAAU3vS,EAAM4vS,GACzB,OAAO9sT,KAAKskC,aAAauoR,YAAY3vS,EAAM4vS,IAE/CwoI,WAAY,WACR,OAAOt1b,KAAKskC,aAAagxZ,cAE7Bl0X,YAAa,WACT,OAAOphE,KAAKskC,aAAa88B,eAE7B+8H,aAAc,WACV,OAAOn+L,KAAKskC,aAAa65J,gBAE7B0tH,kBAAmB,SAAUj9S,EAAGvM,GAC5B,OAAOrC,KAAKskC,aAAaunR,kBAAkBj9S,EAAGvM,IAElDy8S,UAAW,SAAUC,EAAqBL,EAAkBM,EAAQ32M,GAChE,OAAOroG,KAAKskC,aAAaw6Q,UAAUC,EAAqBL,EAAkBM,EAAQ32M,IAEtFynH,MAAO,WACH,OAAO9vN,KAAKskC,aAAawrL,SAE7B1yM,QAAS,WACL,OAAOpd,KAAKskC,aAAalnB,WAE7B8sS,eAAgB,WACZ,OAAOlqT,KAAKskC,aAAa4lR,kBAE7BlsN,cAAe,WACX,OAAOh+F,KAAKskC,aAAa05D,iBAE7B6C,cAAe,WACX,OAAO7gG,KAAKskC,aAAau8D,iBAE7BowV,qBAAsB,SAAU7uV,EAAWkjC,GACvC,OAAOtlI,KAAKskC,aAAa2sZ,qBAAqB7uV,EAAWkjC,IAE7D4rT,2BAA4B,SAAU7lZ,EAAWi6F,GAC7C,OAAOtlI,KAAKskC,aAAa4sZ,2BAA2B7lZ,EAAWi6F,IAEnEw7K,eAAgB,SAAUC,EAAWC,GACjC,OAAOhhT,KAAKskC,aAAaw8Q,eAAeC,EAAWC,IAEvD97K,YAAa,SAAUkuL,EAAa9tL,GAChC,OAAOtlI,KAAKskC,aAAa4gG,YAAYkuL,EAAa9tL,IAEtDkmL,SAAU,WACN,OAAOxrT,KAAKskC,aAAaknR,YAE7B/hR,OAAQ,SAAUmuQ,GACd,OAAO53S,KAAKskC,aAAamF,OAAOmuQ,IAEpCn0D,WAAY,SAAUvd,EAAWtgD,GAC7B,OAAO5lL,KAAKskC,aAAam/M,WAAWvd,EAAWtgD,IAEnDtsG,YAAa,SAAUwqV,GACnB,OAAO9ja,KAAKskC,aAAag1C,YAAYwqV,IAEzCR,mBAAoB,SAAUvsV,EAAYC,GACtC,OAAOh3E,KAAKskC,aAAag/X,mBAAmBvsV,EAAYC,IAE5DsoH,UAAW,SAAUxqL,EAAO8wK,GACxB,OAAO5lL,KAAKskC,aAAag7J,UAAUxqL,EAAO8wK,IAE9CmsI,WAAY,SAAU7gB,GAClB,OAAOlxS,KAAKskC,aAAaytR,WAAW7gB,IAExCuuH,kBAAmB,SAAU1oV,EAAYC,GACrC,OAAOh3E,KAAKskC,aAAam7X,kBAAkB1oV,EAAYC,IAE3DsoO,gBAAiB,SAAUnsR,GACvB,OAAOnzB,KAAKskC,aAAag7Q,gBAAgBnsR,IAE7C+rR,kBAAmB,SAAU/rR,GACzB,OAAOnzB,KAAKskC,aAAa46Q,kBAAkB/rR,IAE/CksR,gBAAiB,SAAUlsR,GACvB,OAAOnzB,KAAKskC,aAAa+6Q,gBAAgBlsR,IAE7C64R,aAAc,SAAUnoT,EAAKknC,EAAO9kC,GAChC,OAAOjG,KAAKskC,aAAa0nR,aAAanoT,EAAKknC,EAAO9kC,IAEtDulb,eAAgB,SAAUpnb,GACtB,OAAOpE,KAAKskC,aAAaknZ,eAAepnb,IAE5Cmnb,oBAAqB,SAAUnnb,GAC3B,OAAOpE,KAAKskC,aAAainZ,oBAAoBnnb,IAEjDknb,qBAAsB,SAAUlnb,GAC5B,OAAOpE,KAAKskC,aAAagnZ,qBAAqBlnb,IAElDqnb,mBAAoB,SAAUrnb,GAC1B,OAAOpE,KAAKskC,aAAamnZ,mBAAmBrnb,IAEhDwnb,aAAc,SAAUxnb,GACpB,OAAOpE,KAAKskC,aAAasnZ,aAAaxnb,IAE1Co5S,WAAY,SAAU35S,EAAK66F,GACvB,OAAO1+F,KAAKskC,aAAak5Q,WAAW35S,EAAK66F,IAE7Ck6V,yBAA0B,WACtB,OAAO54b,KAAKskC,aAAas0Z,4BAE7BC,uBAAwB,WACpB,OAAO74b,KAAKskC,aAAau0Z,0BAE7BlsI,YAAa,SAAUzvS,EAAM0vS,GACzB,OAAO5sT,KAAKskC,aAAaqoR,YAAYzvS,EAAM0vS,IAE/C2jG,YAAa,SAAUk0B,EAAevjQ,GAClC,OAAOlhL,KAAKskC,aAAaisX,YAAYk0B,EAAevjQ,IAExDtgH,YAAa,WACT,OAAO5gE,KAAKskC,aAAas8B,eAE7B23B,WAAY,SAAUrD,EAAYhpE,EAAWs0R,GACzC,OAAOxgT,KAAKskC,aAAai0D,WAAWrD,EAAYhpE,EAAWs0R,IAE/DrjH,UAAW,WACP,OAAOn9L,KAAKskC,aAAa64J,aAE7BtpG,cAAe,SAAUqB,GACrB,OAAOl1F,KAAKskC,aAAauvD,cAAcqB,IAE3Cu2N,WAAY,SAAUz0N,EAAUjsD,EAAO9kC,GACnC,OAAOjG,KAAKskC,aAAamnR,WAAWz0N,EAAUjsD,EAAO9kC,IAEzDqmT,sBAAuB,SAAUhqL,GAC7B,OAAOtiI,KAAKskC,aAAagoR,sBAAsBhqL,IAEnDopL,UAAW,SAAU52S,EAAOqf,GACxB,OAAOn0B,KAAKskC,aAAaonR,UAAU52S,EAAOqf,IAE9Coia,eAAgB,SAAU1yb,EAAK66F,GAC3B,OAAO1+F,KAAKskC,aAAaiyZ,eAAe1yb,EAAK66F,OAI9Ck4Y,EAAa,CACpBjve,KAAM,WACNg/B,QAAS,SAAUC,GACfA,EAAIC,UAAU+vc,EAAWjve,KAAMgve,GAC/B/vc,EAAIC,UAAUgtR,EAAalsT,KAAMisT,GACjChtR,EAAIC,UAAU8sR,EAAchsT,KAAM+rT,GAClC9sR,EAAIC,UAAU4sR,EAAoB9rT,KAAM6rT,GACxC5sR,EAAIC,UAAU0sR,EAAqB5rT,KAAM2rT,GACzC1sR,EAAIC,UAAUwtR,EAAgB1sT,KAAMysT,GACpCxtR,EAAIC,UAAUstR,EAAiBxsT,KAAMusT,GACrCttR,EAAIC,UAAUotR,EAAsBtsT,KAAMqsT,GAC1CptR,EAAIC,UAAUktR,EAAuBpsT,KAAMmsT,M,qBC9iBnD,IAAIrrN,EAAW,EAAQ,QAMvB9oG,EAAOC,QAAU,SAAUsI,EAAO2ue,GAChC,IAAKpuY,EAASvgG,GAAQ,OAAOA,EAC7B,IAAI4iC,EAAItmB,EACR,GAAIqyd,GAAoD,mBAAxB/rc,EAAK5iC,EAAMwR,YAA4B+uF,EAASjkF,EAAMsmB,EAAGr+B,KAAKvE,IAAS,OAAOsc,EAC9G,GAAmC,mBAAvBsmB,EAAK5iC,EAAM+kB,WAA2Bw7E,EAASjkF,EAAMsmB,EAAGr+B,KAAKvE,IAAS,OAAOsc,EACzF,IAAKqyd,GAAoD,mBAAxB/rc,EAAK5iC,EAAMwR,YAA4B+uF,EAASjkF,EAAMsmB,EAAGr+B,KAAKvE,IAAS,OAAOsc,EAC/G,MAAMirE,UAAU,6C,sBCRhB,SAAU3vF,EAAQC,GAEsBA,EAAQ,EAAQ,UAFzD,CAKCC,GAAM,SAAWC,GAAU;kCAIzB;IAAI62e,EAAM72e,EAAOE,aAAa,MAAO,CACjCC,OAAQ,kFAAkFC,MACtF,KAEJC,YAAa,kFAAkFD,MAC3F,KAEJE,SAAU,kDAAkDF,MAAM,KAClEG,cAAe,kDAAkDH,MAAM,KACvEI,YAAa,kDAAkDJ,MAAM,KACrEK,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACNC,EAAG,OACHC,GAAI,UACJC,EAAG,QACHC,GAAI,WACJC,EAAG,OACHC,GAAI,cACJC,EAAG,MACHC,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERC,KAAM,CACFC,IAAK,EACLC,IAAK,MAIb,OAAOq0e,M,sBC7DX;;;;;CAME,SAAUh3e,EAAQC,GAC+CJ,EAAOC,QAAUG,KADnF,CAICC,GAAM,WAAe,aAEnB,IAAI+2e,EA4HAx8Y,EA1HJ,SAAS4pW,IACL,OAAO4yC,EAAa7qe,MAAM,KAAMpC,WAKpC,SAASkte,EAAgB3vc,GACrB0vc,EAAe1vc,EAGnB,SAAS4J,EAAQ/oC,GACb,OACIA,aAAiBgB,OACyB,mBAA1CH,OAAOQ,UAAUmQ,SAASjN,KAAKvE,GAIvC,SAASugG,EAASvgG,GAGd,OACa,MAATA,GAC0C,oBAA1Ca,OAAOQ,UAAUmQ,SAASjN,KAAKvE,GAIvC,SAAS+ue,EAAWp8c,EAAG/xB,GACnB,OAAOC,OAAOQ,UAAUH,eAAeqD,KAAKouB,EAAG/xB,GAGnD,SAASoue,EAActqc,GACnB,GAAI7jC,OAAO8gX,oBACP,OAAkD,IAA3C9gX,OAAO8gX,oBAAoBj9U,GAAK7iC,OAEvC,IAAI23F,EACJ,IAAKA,KAAK90D,EACN,GAAIqqc,EAAWrqc,EAAK80D,GAChB,OAAO,EAGf,OAAO,EAIf,SAASgG,EAAYx/F,GACjB,YAAiB,IAAVA,EAGX,SAASkxK,EAASlxK,GACd,MACqB,kBAAVA,GACmC,oBAA1Ca,OAAOQ,UAAUmQ,SAASjN,KAAKvE,GAIvC,SAASiwC,EAAOjwC,GACZ,OACIA,aAAiBsY,MACyB,kBAA1CzX,OAAOQ,UAAUmQ,SAASjN,KAAKvE,GAIvC,SAASoH,EAAIg4B,EAAKwD,GACd,IACI1gC,EADAglC,EAAM,GAEV,IAAKhlC,EAAI,EAAGA,EAAIk9B,EAAIv9B,SAAUK,EAC1BglC,EAAI16B,KAAKo2B,EAAGxD,EAAIl9B,GAAIA,IAExB,OAAOglC,EAGX,SAASk7T,EAAOzvU,EAAG/xB,GACf,IAAK,IAAIsB,KAAKtB,EACNmue,EAAWnue,EAAGsB,KACdywB,EAAEzwB,GAAKtB,EAAEsB,IAYjB,OARI6se,EAAWnue,EAAG,cACd+xB,EAAEnhB,SAAW5Q,EAAE4Q,UAGfu9d,EAAWnue,EAAG,aACd+xB,EAAE5N,QAAUnkB,EAAEmkB,SAGX4N,EAGX,SAASs8c,EAAUjve,EAAOgc,EAAQ9B,EAAQksH,GACtC,OAAO8oW,GAAiBlve,EAAOgc,EAAQ9B,EAAQksH,GAAQ,GAAM+oW,MAGjE,SAASC,IAEL,MAAO,CACHC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbzzb,UAAW,EACX0zb,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACL7+H,gBAAiB,GACjB/H,IAAK,KACLruW,SAAU,KACVk1e,SAAS,EACTC,iBAAiB,GAIzB,SAASC,EAAgBt2e,GAIrB,OAHa,MAATA,EAAEu2e,MACFv2e,EAAEu2e,IAAMd,KAELz1e,EAAEu2e,IAsBb,SAAS5+P,EAAQ33O,GACb,GAAkB,MAAdA,EAAEw2e,SAAkB,CACpB,IAAIjhG,EAAQ+gG,EAAgBt2e,GACxBy2e,EAAc/9Y,EAAK9tF,KAAK2qY,EAAMj+B,iBAAiB,SAAU/uW,GACrD,OAAY,MAALA,KAEXmue,GACKl1d,MAAMxhB,EAAEwmI,GAAGxnH,YACZu2X,EAAMpzV,SAAW,IAChBozV,EAAMmgG,QACNngG,EAAMwgG,aACNxgG,EAAMygG,eACNzgG,EAAMohG,iBACNphG,EAAM8gG,kBACN9gG,EAAMugG,YACNvgG,EAAM0gG,gBACN1gG,EAAM2gG,mBACL3gG,EAAMr0Y,UAAaq0Y,EAAMr0Y,UAAYu1e,GAU/C,GARIz2e,EAAE42e,UACFF,EACIA,GACwB,IAAxBnhG,EAAMsgG,eACwB,IAA9BtgG,EAAMogG,aAAazte,aACDpE,IAAlByxY,EAAMshG,SAGS,MAAnB3ve,OAAOq+F,UAAqBr+F,OAAOq+F,SAASvlG,GAG5C,OAAO02e,EAFP12e,EAAEw2e,SAAWE,EAKrB,OAAO12e,EAAEw2e,SAGb,SAASM,EAAcvhG,GACnB,IAAIv1Y,EAAIs1e,EAAUvyV,KAOlB,OANa,MAATwyP,EACA9sC,EAAO6tI,EAAgBt2e,GAAIu1Y,GAE3B+gG,EAAgBt2e,GAAGk2e,iBAAkB,EAGlCl2e,EA7DP04F,EADArxF,MAAMK,UAAUgxF,KACTrxF,MAAMK,UAAUgxF,KAEhB,SAAUq+Y,GACb,IAEIxue,EAFAk1K,EAAIv2K,OAAO/I,MACXyqB,EAAM60J,EAAEv1K,SAAW,EAGvB,IAAKK,EAAI,EAAGA,EAAIqgB,EAAKrgB,IACjB,GAAIA,KAAKk1K,GAAKs5T,EAAInse,KAAKzM,KAAMs/K,EAAEl1K,GAAIA,EAAGk1K,GAClC,OAAO,EAIf,OAAO,GAqDf,IAAIu5T,EAAoB10C,EAAM00C,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAW7nG,EAAI9nW,GACpB,IAAIh/B,EAAG+S,EAAMqH,EAiCb,GA/BKkjF,EAAYt+D,EAAK4vc,oBAClB9nG,EAAG8nG,iBAAmB5vc,EAAK4vc,kBAE1BtxY,EAAYt+D,EAAKlzB,MAClBg7X,EAAGh7X,GAAKkzB,EAAKlzB,IAEZwxF,EAAYt+D,EAAKu/F,MAClBuoQ,EAAGvoQ,GAAKv/F,EAAKu/F,IAEZjhC,EAAYt+D,EAAK8vP,MAClBg4G,EAAGh4G,GAAK9vP,EAAK8vP,IAEZxxL,EAAYt+D,EAAKqvc,WAClBvnG,EAAGunG,QAAUrvc,EAAKqvc,SAEjB/wY,EAAYt+D,EAAK6vc,QAClB/nG,EAAG+nG,KAAO7vc,EAAK6vc,MAEdvxY,EAAYt+D,EAAK8vc,UAClBhoG,EAAGgoG,OAAS9vc,EAAK8vc,QAEhBxxY,EAAYt+D,EAAK+vc,WAClBjoG,EAAGioG,QAAU/vc,EAAK+vc,SAEjBzxY,EAAYt+D,EAAKgvc,OAClBlnG,EAAGknG,IAAMD,EAAgB/uc,IAExBs+D,EAAYt+D,EAAKgwc,WAClBloG,EAAGkoG,QAAUhwc,EAAKgwc,SAGlBP,EAAiB9ue,OAAS,EAC1B,IAAKK,EAAI,EAAGA,EAAIyue,EAAiB9ue,OAAQK,IACrC+S,EAAO07d,EAAiBzue,GACxBoa,EAAM4kB,EAAKjsB,GACNuqF,EAAYljF,KACb0sX,EAAG/zX,GAAQqH,GAKvB,OAAO0sX,EAIX,SAASmoG,EAAOnmd,GACZ6ld,EAAW/4e,KAAMkzB,GACjBlzB,KAAKqoI,GAAK,IAAI7nH,KAAkB,MAAb0S,EAAOm1G,GAAan1G,EAAOm1G,GAAGxnH,UAAY+jI,KACxD5kJ,KAAKw5O,YACNx5O,KAAKqoI,GAAK,IAAI7nH,KAAKokI,OAIE,IAArBk0V,IACAA,GAAmB,EACnB30C,EAAMm1C,aAAat5e,MACnB84e,GAAmB,GAI3B,SAASS,EAAS3sc,GACd,OACIA,aAAeysc,GAAkB,MAAPzsc,GAAuC,MAAxBA,EAAIosc,iBAIrD,SAAS5rR,EAAKovL,IAEgC,IAAtC2nD,EAAMq1C,6BACa,qBAAZ9kW,SACPA,QAAQ04E,MAER14E,QAAQ04E,KAAK,wBAA0BovL,GAI/C,SAAS9kL,EAAU8kL,EAAK1xW,GACpB,IAAI2uc,GAAY,EAEhB,OAAOnvI,GAAO,WAIV,GAHgC,MAA5B65F,EAAMu1C,oBACNv1C,EAAMu1C,mBAAmB,KAAMl9F,GAE/Bi9F,EAAW,CACX,IACIptW,EACAjiI,EACAvG,EAHA0pB,EAAO,GAIX,IAAKnjB,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAEnC,GADAiiI,EAAM,GACsB,kBAAjBviI,UAAUM,GAAiB,CAElC,IAAKvG,KADLwoI,GAAO,MAAQjiI,EAAI,KACPN,UAAU,GACdmte,EAAWnte,UAAU,GAAIjG,KACzBwoI,GAAOxoI,EAAM,KAAOiG,UAAU,GAAGjG,GAAO,MAGhDwoI,EAAMA,EAAIt2H,MAAM,GAAI,QAEpBs2H,EAAMviI,UAAUM,GAEpBmjB,EAAK7Y,KAAK23H,GAEd+gF,EACIovL,EACI,gBACAtzY,MAAMK,UAAUwM,MAAMtJ,KAAK8gB,GAAM5Y,KAAK,IACtC,MACA,IAAIw+B,OAAQirH,OAEpBq7U,GAAY,EAEhB,OAAO3uc,EAAG5+B,MAAMlM,KAAM8J,aACvBghC,GAGP,IAgFI5tB,EAhFAy8d,EAAe,GAEnB,SAASC,EAAgBjye,EAAM60Y,GACK,MAA5B2nD,EAAMu1C,oBACNv1C,EAAMu1C,mBAAmB/xe,EAAM60Y,GAE9Bm9F,EAAahye,KACdylN,EAAKovL,GACLm9F,EAAahye,IAAQ,GAO7B,SAASm6Y,EAAW55Y,GAChB,MACyB,qBAAbqyC,UAA4BryC,aAAiBqyC,UACX,sBAA1CxxC,OAAOQ,UAAUmQ,SAASjN,KAAKvE,GAIvC,SAASstC,EAAItiB,GACT,IAAI/V,EAAM/S,EACV,IAAKA,KAAK8oB,EACF+jd,EAAW/jd,EAAQ9oB,KACnB+S,EAAO+V,EAAO9oB,GACV03Y,EAAW3kY,GACXnd,KAAKoK,GAAK+S,EAEVnd,KAAK,IAAMoK,GAAK+S,GAI5Bnd,KAAK65e,QAAU3md,EAIflzB,KAAK85e,+BAAiC,IAAIjjd,QACrC72B,KAAK+5e,wBAAwBtqb,QAAUzvD,KAAKg6e,cAAcvqb,QACvD,IACA,UAAUA,QAItB,SAASwqb,EAAaC,EAAcC,GAChC,IACIh9d,EADAiyB,EAAMk7T,EAAO,GAAI4vI,GAErB,IAAK/8d,KAAQg9d,EACLlD,EAAWkD,EAAah9d,KACpBsrF,EAASyxY,EAAa/8d,KAAUsrF,EAAS0xY,EAAYh9d,KACrDiyB,EAAIjyB,GAAQ,GACZmtV,EAAOl7T,EAAIjyB,GAAO+8d,EAAa/8d,IAC/BmtV,EAAOl7T,EAAIjyB,GAAOg9d,EAAYh9d,KACF,MAArBg9d,EAAYh9d,GACnBiyB,EAAIjyB,GAAQg9d,EAAYh9d,UAEjBiyB,EAAIjyB,IAIvB,IAAKA,KAAQ+8d,EAELjD,EAAWiD,EAAc/8d,KACxB85d,EAAWkD,EAAah9d,IACzBsrF,EAASyxY,EAAa/8d,MAGtBiyB,EAAIjyB,GAAQmtV,EAAO,GAAIl7T,EAAIjyB,KAGnC,OAAOiyB,EAGX,SAASgrc,EAAOlnd,GACE,MAAVA,GACAlzB,KAAKw1C,IAAItiB,GAhEjBixa,EAAMq1C,6BAA8B,EACpCr1C,EAAMu1C,mBAAqB,KAsEvBx8d,EADAnU,OAAOmU,KACAnU,OAAOmU,KAEP,SAAU0vB,GACb,IAAIxiC,EACAglC,EAAM,GACV,IAAKhlC,KAAKwiC,EACFqqc,EAAWrqc,EAAKxiC,IAChBglC,EAAI16B,KAAKtK,GAGjB,OAAOglC,GAIf,IAAIirc,EAAkB,CAClBn5e,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAGd,SAASN,EAAS4C,EAAKw+Y,EAAK35Y,GACxB,IAAIvF,EAASnD,KAAKs6e,UAAUz2e,IAAQ7D,KAAKs6e,UAAU,YACnD,OAAOx4F,EAAW3+Y,GAAUA,EAAOsJ,KAAK41Y,EAAK35Y,GAAOvF,EAGxD,SAASo3e,EAAS52e,EAAQ62e,EAAcC,GACpC,IAAIC,EAAY,GAAKjpe,KAAKyuI,IAAIv8I,GAC1Bg3e,EAAcH,EAAeE,EAAU3we,OACvC6we,EAAOj3e,GAAU,EACrB,OACKi3e,EAAQH,EAAY,IAAM,GAAM,KACjChpe,KAAKuuB,IAAI,GAAIvuB,KAAKyP,IAAI,EAAGy5d,IAAcjhe,WAAWm7I,OAAO,GACzD6lV,EAIR,IAAIG,EAAmB,yMACnBC,EAAwB,6CACxBC,EAAkB,GAClBC,EAAuB,GAM3B,SAASC,EAAelpZ,EAAOmpZ,EAAQ33e,EAAS8jC,GAC5C,IAAI8zc,EAAO9zc,EACa,kBAAbA,IACP8zc,EAAO,WACH,OAAOn7e,KAAKqnC,OAGhB0qD,IACAipZ,EAAqBjpZ,GAASopZ,GAE9BD,IACAF,EAAqBE,EAAO,IAAM,WAC9B,OAAOX,EAASY,EAAKjve,MAAMlM,KAAM8J,WAAYoxe,EAAO,GAAIA,EAAO,MAGnE33e,IACAy3e,EAAqBz3e,GAAW,WAC5B,OAAOvD,KAAKo7e,aAAa73e,QACrB43e,EAAKjve,MAAMlM,KAAM8J,WACjBioF,KAMhB,SAASspZ,EAAuBnze,GAC5B,OAAIA,EAAMC,MAAM,YACLD,EAAMua,QAAQ,WAAY,IAE9Bva,EAAMua,QAAQ,MAAO,IAGhC,SAAS64d,EAAmBp3d,GACxB,IACI9Z,EACAL,EAFA0rE,EAAQvxD,EAAO/b,MAAM0ye,GAIzB,IAAKzwe,EAAI,EAAGL,EAAS0rE,EAAM1rE,OAAQK,EAAIL,EAAQK,IACvC4we,EAAqBvla,EAAMrrE,IAC3BqrE,EAAMrrE,GAAK4we,EAAqBvla,EAAMrrE,IAEtCqrE,EAAMrrE,GAAKixe,EAAuB5la,EAAMrrE,IAIhD,OAAO,SAAUi4Y,GACb,IACIj4Y,EADAjH,EAAS,GAEb,IAAKiH,EAAI,EAAGA,EAAIL,EAAQK,IACpBjH,GAAU2+Y,EAAWrsU,EAAMrrE,IACrBqrE,EAAMrrE,GAAGqC,KAAK41Y,EAAKn+X,GACnBuxD,EAAMrrE,GAEhB,OAAOjH,GAKf,SAASo4e,EAAa15e,EAAGqiB,GACrB,OAAKriB,EAAE23O,WAIPt1N,EAASs3d,EAAat3d,EAAQriB,EAAEu5e,cAChCL,EAAgB72d,GACZ62d,EAAgB72d,IAAWo3d,EAAmBp3d,GAE3C62d,EAAgB72d,GAAQriB,IAPpBA,EAAEu5e,aAAaxrG,cAU9B,SAAS4rG,EAAat3d,EAAQ9B,GAC1B,IAAIhY,EAAI,EAER,SAASqxe,EAA4Bvze,GACjC,OAAOka,EAAO1hB,eAAewH,IAAUA,EAG3C4ye,EAAsBt1O,UAAY,EAClC,MAAOp7P,GAAK,GAAK0we,EAAsBp7e,KAAKwkB,GACxCA,EAASA,EAAOzB,QACZq4d,EACAW,GAEJX,EAAsBt1O,UAAY,EAClCp7P,GAAK,EAGT,OAAO8Z,EAGX,IAAIw3d,EAAwB,CACxB96e,IAAK,YACLD,GAAI,SACJE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAGV,SAASN,EAAemD,GACpB,IAAIqgB,EAASlkB,KAAK27e,gBAAgB93e,GAC9B+3e,EAAc57e,KAAK27e,gBAAgB93e,EAAI81I,eAE3C,OAAIz1H,IAAW03d,EACJ13d,GAGXlkB,KAAK27e,gBAAgB93e,GAAO+3e,EACvBzze,MAAM0ye,GACNvre,KAAI,SAAUuse,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAI9le,MAAM,GAEd8le,KAEVlne,KAAK,IAEH3U,KAAK27e,gBAAgB93e,IAGhC,IAAIi4e,EAAqB,eAEzB,SAASlsG,IACL,OAAO5vY,KAAK+7e,aAGhB,IAAIC,EAAiB,KACjBC,EAAgC,UAEpC,SAAS14e,EAAQI,GACb,OAAO3D,KAAKk8e,SAASz5d,QAAQ,KAAM9e,GAGvC,IAAIw4e,GAAsB,CACtB16e,OAAQ,QACRC,KAAM,SACNC,EAAG,gBACHC,GAAI,aACJC,EAAG,WACHC,GAAI,aACJC,EAAG,UACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UACJ6yB,EAAG,SACHC,GAAI,WACJ7yB,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAGR,SAASd,GAAamC,EAAQC,EAAeurF,EAAQrrF,GACjD,IAAIX,EAASnD,KAAKo8e,cAAcjtZ,GAChC,OAAO2yT,EAAW3+Y,GACZA,EAAOQ,EAAQC,EAAeurF,EAAQrrF,GACtCX,EAAOsf,QAAQ,MAAO9e,GAGhC,SAAS04e,GAAW9gV,EAAMp4J,GACtB,IAAI+gB,EAASlkB,KAAKo8e,cAAc7gV,EAAO,EAAI,SAAW,QACtD,OAAOumP,EAAW59X,GAAUA,EAAO/gB,GAAU+gB,EAAOzB,QAAQ,MAAOtf,GAGvE,IAAI+1Y,GAAU,GAEd,SAASojG,GAAa5qD,EAAM6qD,GACxB,IAAIC,EAAY9qD,EAAK3rb,cACrBmzY,GAAQsjG,GAAatjG,GAAQsjG,EAAY,KAAOtjG,GAAQqjG,GAAa7qD,EAGzE,SAAS+qD,GAAetyY,GACpB,MAAwB,kBAAVA,EACR+uS,GAAQ/uS,IAAU+uS,GAAQ/uS,EAAMpkG,oBAChCJ,EAGV,SAAS+2e,GAAqB1zZ,GAC1B,IACI2zZ,EACAx/d,EAFAy/d,EAAkB,GAItB,IAAKz/d,KAAQ6rE,EACLiuZ,EAAWjuZ,EAAa7rE,KACxBw/d,EAAiBF,GAAet/d,GAC5Bw/d,IACAC,EAAgBD,GAAkB3zZ,EAAY7rE,KAK1D,OAAOy/d,EAGX,IAAIC,GAAa,GAEjB,SAASC,GAAgBprD,EAAMqrD,GAC3BF,GAAWnrD,GAAQqrD,EAGvB,SAASC,GAAoBC,GACzB,IACI/tZ,EADAib,EAAQ,GAEZ,IAAKjb,KAAK+tZ,EACFhG,EAAWgG,EAAU/tZ,IACrBib,EAAMz1F,KAAK,CAAEg9a,KAAMxiW,EAAG6tZ,SAAUF,GAAW3tZ,KAMnD,OAHAib,EAAM18D,MAAK,SAAU5S,EAAG/xB,GACpB,OAAO+xB,EAAEkid,SAAWj0e,EAAEi0e,YAEnB5yY,EAGX,SAASitD,GAAWhlI,GAChB,OAAQA,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAGlE,SAAS8qd,GAASv5e,GACd,OAAIA,EAAS,EAEF8N,KAAKsxC,KAAKp/C,IAAW,EAErB8N,KAAK6sD,MAAM36D,GAI1B,SAASw5e,GAAMC,GACX,IAAIC,GAAiBD,EACjBn3e,EAAQ,EAMZ,OAJsB,IAAlBo3e,GAAuB/nI,SAAS+nI,KAChCp3e,EAAQi3e,GAASG,IAGdp3e,EAGX,SAASq3e,GAAW5rD,EAAM6rD,GACtB,OAAO,SAAUt3e,GACb,OAAa,MAATA,GACAu3e,GAAMx9e,KAAM0xb,EAAMzrb,GAClBk+b,EAAMm1C,aAAat5e,KAAMu9e,GAClBv9e,MAEAonC,GAAIpnC,KAAM0xb,IAK7B,SAAStqZ,GAAIi7W,EAAKqvC,GACd,OAAOrvC,EAAI7oK,UACL6oK,EAAIh6Q,GAAG,OAASg6Q,EAAI62F,OAAS,MAAQ,IAAMxnD,KAC3C9sS,IAGV,SAAS44V,GAAMn7F,EAAKqvC,EAAMzrb,GAClBo8Y,EAAI7oK,YAAcn2N,MAAMpd,KAEX,aAATyrb,GACAt6R,GAAWirP,EAAIjwX,SACC,IAAhBiwX,EAAIlwX,SACW,KAAfkwX,EAAI/3X,QAEJrkB,EAAQk3e,GAAMl3e,GACdo8Y,EAAIh6Q,GAAG,OAASg6Q,EAAI62F,OAAS,MAAQ,IAAMxnD,GACvCzrb,EACAo8Y,EAAIlwX,QACJ4+K,GAAY9qM,EAAOo8Y,EAAIlwX,WAG3BkwX,EAAIh6Q,GAAG,OAASg6Q,EAAI62F,OAAS,MAAQ,IAAMxnD,GAAMzrb,IAO7D,SAASw3e,GAAUtzY,GAEf,OADAA,EAAQsyY,GAAetyY,GACnB23S,EAAW9hZ,KAAKmqG,IACTnqG,KAAKmqG,KAETnqG,KAGX,SAAS09e,GAAUvzY,EAAOlkG,GACtB,GAAqB,kBAAVkkG,EAAoB,CAC3BA,EAAQuyY,GAAqBvyY,GAC7B,IACI//F,EADAuze,EAAcX,GAAoB7yY,GAEtC,IAAK//F,EAAI,EAAGA,EAAIuze,EAAY5ze,OAAQK,IAChCpK,KAAK29e,EAAYvze,GAAGsnb,MAAMvnV,EAAMwzY,EAAYvze,GAAGsnb,YAInD,GADAvnV,EAAQsyY,GAAetyY,GACnB23S,EAAW9hZ,KAAKmqG,IAChB,OAAOnqG,KAAKmqG,GAAOlkG,GAG3B,OAAOjG,KAGX,IAmBI49e,GAnBAC,GAAS,KACTC,GAAS,OACTC,GAAS,QACTC,GAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BACnBC,GAAiB,uBAGjBC,GAAY,wJAKhB,SAASC,GAAc/sZ,EAAOv+B,EAAOurb,GACjCnB,GAAQ7rZ,GAAS+vT,EAAWtuV,GACtBA,EACA,SAAUwrb,EAAU5D,GAChB,OAAO4D,GAAYD,EAAcA,EAAcvrb,GAI7D,SAASyrb,GAAsBltZ,EAAO7+D,GAClC,OAAK+jd,EAAW2G,GAAS7rZ,GAIlB6rZ,GAAQ7rZ,GAAO7+D,EAAOuld,QAASvld,EAAOkmd,SAHlC,IAAIvid,OAAOqod,GAAentZ,IAOzC,SAASmtZ,GAAev9e,GACpB,OAAOw9e,GACHx9e,EACK8gB,QAAQ,KAAM,IACdA,QAAQ,uCAAuC,SAC5CmrQ,EACAwxN,EACAC,EACAC,EACAC,GAEA,OAAOH,GAAMC,GAAMC,GAAMC,MAKzC,SAASJ,GAAYx9e,GACjB,OAAOA,EAAE8gB,QAAQ,yBAA0B,QApC/Cm7d,GAAU,GAuCV,IAAIvnG,GAAS,GAEb,SAASmpG,GAAcztZ,EAAO1qD,GAC1B,IAAIj9B,EACA+we,EAAO9zc,EASX,IARqB,kBAAV0qD,IACPA,EAAQ,CAACA,IAETqnF,EAAS/xI,KACT8zc,EAAO,SAAUjze,EAAOutE,GACpBA,EAAMpuC,GAAY81c,GAAMj1e,KAG3BkC,EAAI,EAAGA,EAAI2nF,EAAMhoF,OAAQK,IAC1BisY,GAAOtkT,EAAM3nF,IAAM+we,EAI3B,SAASsE,GAAkB1tZ,EAAO1qD,GAC9Bm4c,GAAcztZ,GAAO,SAAU7pF,EAAOutE,EAAOviD,EAAQ6+D,GACjD7+D,EAAOwsd,GAAKxsd,EAAOwsd,IAAM,GACzBr4c,EAASn/B,EAAOgrB,EAAOwsd,GAAIxsd,EAAQ6+D,MAI3C,SAAS4tZ,GAAwB5tZ,EAAO7pF,EAAOgrB,GAC9B,MAAThrB,GAAiB+ue,EAAW5gG,GAAQtkT,IACpCskT,GAAOtkT,GAAO7pF,EAAOgrB,EAAOlmB,GAAIkmB,EAAQ6+D,GAIhD,IAcI7kF,GAdAyoI,GAAO,EACPC,GAAQ,EACRgqW,GAAO,EACP7+I,GAAO,EACPC,GAAS,EACT3yG,GAAS,EACT4yG,GAAc,EACd4+I,GAAO,EACPC,GAAU,EAEd,SAASlvH,GAAIntX,EAAGmL,GACZ,OAASnL,EAAImL,EAAKA,GAAKA,EAoB3B,SAASmiM,GAAY3+K,EAAMD,GACvB,GAAI9O,MAAM+O,IAAS/O,MAAM8O,GACrB,OAAOyyH,IAEX,IAAIm7V,EAAWnvH,GAAIz+V,EAAO,IAE1B,OADAC,IAASD,EAAQ4td,GAAY,GACT,IAAbA,EACD3oV,GAAWhlI,GACP,GACA,GACJ,GAAO2td,EAAW,EAAK,EAxB7B7ye,GADAhE,MAAMK,UAAU2D,QACNhE,MAAMK,UAAU2D,QAEhB,SAAUwqC,GAEhB,IAAIttC,EACJ,IAAKA,EAAI,EAAGA,EAAIpK,KAAK+J,SAAUK,EAC3B,GAAIpK,KAAKoK,KAAOstC,EACZ,OAAOttC,EAGf,OAAQ,GAmBhB6we,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACjC,OAAOj7e,KAAKmyB,QAAU,KAG1B8od,EAAe,MAAO,EAAG,GAAG,SAAU/2d,GAClC,OAAOlkB,KAAKo7e,aAAa96e,YAAYN,KAAMkkB,MAG/C+2d,EAAe,OAAQ,EAAG,GAAG,SAAU/2d,GACnC,OAAOlkB,KAAKo7e,aAAah7e,OAAOJ,KAAMkkB,MAK1Co4d,GAAa,QAAS,KAItBQ,GAAgB,QAAS,GAIzBgC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAO,SAAUE,EAAU58d,GACrC,OAAOA,EAAOoS,iBAAiBwqd,MAEnCF,GAAc,QAAQ,SAAUE,EAAU58d,GACtC,OAAOA,EAAOkS,YAAY0qd,MAG9BQ,GAAc,CAAC,IAAK,OAAO,SAAUt3e,EAAOutE,GACxCA,EAAMmgE,IAASunW,GAAMj1e,GAAS,KAGlCs3e,GAAc,CAAC,MAAO,SAAS,SAAUt3e,EAAOutE,EAAOviD,EAAQ6+D,GAC3D,IAAI5/D,EAAQe,EAAOkmd,QAAQ/kd,YAAYnsB,EAAO6pF,EAAO7+D,EAAOuld,SAE/C,MAATtmd,EACAsjD,EAAMmgE,IAASzjH,EAEfgmd,EAAgBjld,GAAQ2kd,aAAe3ve,KAM/C,IAAI83e,GAAsB,wFAAwF3/e,MAC1G,KAEJ4/e,GAA2B,kDAAkD5/e,MACzE,KAEJ6/e,GAAmB,gCACnBC,GAA0BtB,GAC1BuB,GAAqBvB,GAEzB,SAASwB,GAAax+e,EAAGqiB,GACrB,OAAKriB,EAKEovC,EAAQjxC,KAAKsgf,SACdtgf,KAAKsgf,QAAQz+e,EAAEswB,SACfnyB,KAAKsgf,SACAtgf,KAAKsgf,QAAQr5c,UAAYi5c,IAAkBxgf,KAAKwkB,GAC3C,SACA,cACRriB,EAAEswB,SAVC8e,EAAQjxC,KAAKsgf,SACdtgf,KAAKsgf,QACLtgf,KAAKsgf,QAAQ,cAW3B,SAASC,GAAkB1+e,EAAGqiB,GAC1B,OAAKriB,EAKEovC,EAAQjxC,KAAKwgf,cACdxgf,KAAKwgf,aAAa3+e,EAAEswB,SACpBnyB,KAAKwgf,aACDN,GAAiBxgf,KAAKwkB,GAAU,SAAW,cAC7CriB,EAAEswB,SARC8e,EAAQjxC,KAAKwgf,cACdxgf,KAAKwgf,aACLxgf,KAAKwgf,aAAa,cAShC,SAASC,GAAkBC,EAAWx8d,EAAQoqH,GAC1C,IAAIlkI,EACA+kW,EACAkzC,EACAs+F,EAAMD,EAAUljV,oBACpB,IAAKx9J,KAAK4gf,aAKN,IAHA5gf,KAAK4gf,aAAe,GACpB5gf,KAAK6gf,iBAAmB,GACxB7gf,KAAK8gf,kBAAoB,GACpB12e,EAAI,EAAGA,EAAI,KAAMA,EAClBi4Y,EAAM80F,EAAU,CAAC,IAAM/se,IACvBpK,KAAK8gf,kBAAkB12e,GAAKpK,KAAKM,YAC7B+hZ,EACA,IACF7kP,oBACFx9J,KAAK6gf,iBAAiBz2e,GAAKpK,KAAKI,OAAOiiZ,EAAK,IAAI7kP,oBAIxD,OAAIlvB,EACe,QAAXpqH,GACAirV,EAAKjiW,GAAQT,KAAKzM,KAAK8gf,kBAAmBH,IAC3B,IAARxxI,EAAYA,EAAK,OAExBA,EAAKjiW,GAAQT,KAAKzM,KAAK6gf,iBAAkBF,IAC1B,IAARxxI,EAAYA,EAAK,MAGb,QAAXjrV,GACAirV,EAAKjiW,GAAQT,KAAKzM,KAAK8gf,kBAAmBH,IAC9B,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK6gf,iBAAkBF,IAC1B,IAARxxI,EAAYA,EAAK,QAExBA,EAAKjiW,GAAQT,KAAKzM,KAAK6gf,iBAAkBF,IAC7B,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK8gf,kBAAmBH,IAC3B,IAARxxI,EAAYA,EAAK,OAKpC,SAAS4xI,GAAkBL,EAAWx8d,EAAQoqH,GAC1C,IAAIlkI,EAAGi4Y,EAAK7uV,EAEZ,GAAIxzD,KAAKghf,kBACL,OAAOP,GAAkBh0e,KAAKzM,KAAM0gf,EAAWx8d,EAAQoqH,GAY3D,IATKtuI,KAAK4gf,eACN5gf,KAAK4gf,aAAe,GACpB5gf,KAAK6gf,iBAAmB,GACxB7gf,KAAK8gf,kBAAoB,IAMxB12e,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBAi4Y,EAAM80F,EAAU,CAAC,IAAM/se,IACnBkkI,IAAWtuI,KAAK6gf,iBAAiBz2e,KACjCpK,KAAK6gf,iBAAiBz2e,GAAK,IAAIysB,OAC3B,IAAM72B,KAAKI,OAAOiiZ,EAAK,IAAI5/X,QAAQ,IAAK,IAAM,IAC9C,KAEJziB,KAAK8gf,kBAAkB12e,GAAK,IAAIysB,OAC5B,IAAM72B,KAAKM,YAAY+hZ,EAAK,IAAI5/X,QAAQ,IAAK,IAAM,IACnD,MAGH6rH,GAAWtuI,KAAK4gf,aAAax2e,KAC9BopD,EACI,IAAMxzD,KAAKI,OAAOiiZ,EAAK,IAAM,KAAOriZ,KAAKM,YAAY+hZ,EAAK,IAC9DriZ,KAAK4gf,aAAax2e,GAAK,IAAIysB,OAAO28B,EAAM/wC,QAAQ,IAAK,IAAK,MAI1D6rH,GACW,SAAXpqH,GACAlkB,KAAK6gf,iBAAiBz2e,GAAG1K,KAAKghf,GAE9B,OAAOt2e,EACJ,GACHkkI,GACW,QAAXpqH,GACAlkB,KAAK8gf,kBAAkB12e,GAAG1K,KAAKghf,GAE/B,OAAOt2e,EACJ,IAAKkkI,GAAUtuI,KAAK4gf,aAAax2e,GAAG1K,KAAKghf,GAC5C,OAAOt2e,GAOnB,SAAS6iG,GAASo1S,EAAKp8Y,GACnB,IAAIg7e,EAEJ,IAAK5+F,EAAI7oK,UAEL,OAAO6oK,EAGX,GAAqB,kBAAVp8Y,EACP,GAAI,QAAQvG,KAAKuG,GACbA,EAAQk3e,GAAMl3e,QAId,GAFAA,EAAQo8Y,EAAI+4F,aAAa/md,YAAYpuB,IAEhCmzK,EAASnzK,GACV,OAAOo8Y,EAOnB,OAFA4+F,EAAaxve,KAAK2S,IAAIi+X,EAAI/3X,OAAQymL,GAAYsxM,EAAIjwX,OAAQnsB,IAC1Do8Y,EAAIh6Q,GAAG,OAASg6Q,EAAI62F,OAAS,MAAQ,IAAM,SAASjze,EAAOg7e,GACpD5+F,EAGX,SAAS6+F,GAAYj7e,GACjB,OAAa,MAATA,GACAgnG,GAASjtG,KAAMiG,GACfk+b,EAAMm1C,aAAat5e,MAAM,GAClBA,MAEAonC,GAAIpnC,KAAM,SAIzB,SAASgxM,KACL,OAAOD,GAAY/wM,KAAKoyB,OAAQpyB,KAAKmyB,SAGzC,SAASqC,GAAiBwqd,GACtB,OAAIh/e,KAAKghf,mBACA/J,EAAWj3e,KAAM,iBAClBmhf,GAAmB10e,KAAKzM,MAExBg/e,EACOh/e,KAAKohf,wBAELphf,KAAKqhf,oBAGXpK,EAAWj3e,KAAM,uBAClBA,KAAKqhf,kBAAoBlB,IAEtBngf,KAAKohf,yBAA2BpC,EACjCh/e,KAAKohf,wBACLphf,KAAKqhf,mBAInB,SAAS/sd,GAAY0qd,GACjB,OAAIh/e,KAAKghf,mBACA/J,EAAWj3e,KAAM,iBAClBmhf,GAAmB10e,KAAKzM,MAExBg/e,EACOh/e,KAAKshf,mBAELthf,KAAKuhf,eAGXtK,EAAWj3e,KAAM,kBAClBA,KAAKuhf,aAAenB,IAEjBpgf,KAAKshf,oBAAsBtC,EAC5Bh/e,KAAKshf,mBACLthf,KAAKuhf,cAInB,SAASJ,KACL,SAASK,EAAU3md,EAAG/xB,GAClB,OAAOA,EAAEiB,OAAS8wB,EAAE9wB,OAGxB,IAGIK,EACAi4Y,EAJAo/F,EAAc,GACdC,EAAa,GACbC,EAAc,GAGlB,IAAKv3e,EAAI,EAAGA,EAAI,GAAIA,IAEhBi4Y,EAAM80F,EAAU,CAAC,IAAM/se,IACvBq3e,EAAY/se,KAAK1U,KAAKM,YAAY+hZ,EAAK,KACvCq/F,EAAWhte,KAAK1U,KAAKI,OAAOiiZ,EAAK,KACjCs/F,EAAYjte,KAAK1U,KAAKI,OAAOiiZ,EAAK,KAClCs/F,EAAYjte,KAAK1U,KAAKM,YAAY+hZ,EAAK,KAO3C,IAHAo/F,EAAYh0c,KAAK+zc,GACjBE,EAAWj0c,KAAK+zc,GAChBG,EAAYl0c,KAAK+zc,GACZp3e,EAAI,EAAGA,EAAI,GAAIA,IAChBq3e,EAAYr3e,GAAK+0e,GAAYsC,EAAYr3e,IACzCs3e,EAAWt3e,GAAK+0e,GAAYuC,EAAWt3e,IAE3C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChBu3e,EAAYv3e,GAAK+0e,GAAYwC,EAAYv3e,IAG7CpK,KAAKuhf,aAAe,IAAI1qd,OAAO,KAAO8qd,EAAYhte,KAAK,KAAO,IAAK,KACnE3U,KAAKqhf,kBAAoBrhf,KAAKuhf,aAC9Bvhf,KAAKshf,mBAAqB,IAAIzqd,OAC1B,KAAO6qd,EAAW/se,KAAK,KAAO,IAC9B,KAEJ3U,KAAKohf,wBAA0B,IAAIvqd,OAC/B,KAAO4qd,EAAY9se,KAAK,KAAO,IAC/B,KAiDR,SAASite,GAAWxvd,GAChB,OAAOglI,GAAWhlI,GAAQ,IAAM,IA5CpC6od,EAAe,IAAK,EAAG,GAAG,WACtB,IAAI54e,EAAIrC,KAAKoyB,OACb,OAAO/vB,GAAK,KAAOk4e,EAASl4e,EAAG,GAAK,IAAMA,KAG9C44e,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOj7e,KAAKoyB,OAAS,OAGzB6od,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CqB,GAAa,OAAQ,KAIrBQ,GAAgB,OAAQ,GAIxBgC,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,SAAUP,GAAWN,IAEnCuB,GAAc,CAAC,QAAS,UAAW7pW,IACnC6pW,GAAc,QAAQ,SAAUt3e,EAAOutE,GACnCA,EAAMkgE,IACe,IAAjBztI,EAAM6B,OAAeo6b,EAAM09C,kBAAkB35e,GAASi1e,GAAMj1e,MAEpEs3e,GAAc,MAAM,SAAUt3e,EAAOutE,GACjCA,EAAMkgE,IAAQwuT,EAAM09C,kBAAkB35e,MAE1Cs3e,GAAc,KAAK,SAAUt3e,EAAOutE,GAChCA,EAAMkgE,IAAQvtI,SAASF,EAAO,OAWlCi8b,EAAM09C,kBAAoB,SAAU35e,GAChC,OAAOi1e,GAAMj1e,IAAUi1e,GAAMj1e,GAAS,GAAK,KAAO,MAKtD,IAAI45e,GAAaxE,GAAW,YAAY,GAExC,SAASyE,KACL,OAAO3qV,GAAWp3J,KAAKoyB,QAG3B,SAAS4vd,GAAW3/e,EAAGR,EAAGI,EAAGF,EAAGI,EAAGR,EAAGsgf,GAGlC,IAAI33d,EAYJ,OAVIjoB,EAAI,KAAOA,GAAK,GAEhBioB,EAAO,IAAI9J,KAAKne,EAAI,IAAKR,EAAGI,EAAGF,EAAGI,EAAGR,EAAGsgf,GACpC3sI,SAAShrV,EAAKtJ,gBACdsJ,EAAKM,YAAYvoB,IAGrBioB,EAAO,IAAI9J,KAAKne,EAAGR,EAAGI,EAAGF,EAAGI,EAAGR,EAAGsgf,GAG/B33d,EAGX,SAAS43d,GAAc7/e,GACnB,IAAIioB,EAAMiD,EAcV,OAZIlrB,EAAI,KAAOA,GAAK,GAChBkrB,EAAOrkB,MAAMK,UAAUwM,MAAMtJ,KAAK3C,WAElCyjB,EAAK,GAAKlrB,EAAI,IACdioB,EAAO,IAAI9J,KAAKA,KAAK4uF,IAAIljG,MAAM,KAAMqhB,IACjC+nV,SAAShrV,EAAK4xI,mBACd5xI,EAAK63d,eAAe9/e,IAGxBioB,EAAO,IAAI9J,KAAKA,KAAK4uF,IAAIljG,MAAM,KAAMpC,YAGlCwgB,EAIX,SAAS83d,GAAgBhwd,EAAM5vB,EAAKC,GAChC,IACI4/e,EAAM,EAAI7/e,EAAMC,EAEhB6/e,GAAS,EAAIJ,GAAc9vd,EAAM,EAAGiwd,GAAKE,YAAc//e,GAAO,EAElE,OAAQ8/e,EAAQD,EAAM,EAI1B,SAASG,GAAmBpwd,EAAM7vB,EAAM6vP,EAAS5vP,EAAKC,GAClD,IAGIggf,EACAC,EAJAC,GAAgB,EAAIvwP,EAAU5vP,GAAO,EACrCogf,EAAaR,GAAgBhwd,EAAM5vB,EAAKC,GACxC0pG,EAAY,EAAI,GAAK5pG,EAAO,GAAKogf,EAAeC,EAepD,OAXIz2Y,GAAa,GACbs2Y,EAAUrwd,EAAO,EACjBswd,EAAed,GAAWa,GAAWt2Y,GAC9BA,EAAYy1Y,GAAWxvd,IAC9Bqwd,EAAUrwd,EAAO,EACjBswd,EAAev2Y,EAAYy1Y,GAAWxvd,KAEtCqwd,EAAUrwd,EACVswd,EAAev2Y,GAGZ,CACH/5E,KAAMqwd,EACNt2Y,UAAWu2Y,GAInB,SAASG,GAAWxgG,EAAK7/Y,EAAKC,GAC1B,IAEIqgf,EACAL,EAHAG,EAAaR,GAAgB//F,EAAIjwX,OAAQ5vB,EAAKC,GAC9CF,EAAOkP,KAAK6sD,OAAO+jV,EAAIl2S,YAAcy2Y,EAAa,GAAK,GAAK,EAehE,OAXIrgf,EAAO,GACPkgf,EAAUpgG,EAAIjwX,OAAS,EACvB0wd,EAAUvgf,EAAOwgf,GAAYN,EAASjgf,EAAKC,IACpCF,EAAOwgf,GAAY1gG,EAAIjwX,OAAQ5vB,EAAKC,IAC3Cqgf,EAAUvgf,EAAOwgf,GAAY1gG,EAAIjwX,OAAQ5vB,EAAKC,GAC9Cggf,EAAUpgG,EAAIjwX,OAAS,IAEvBqwd,EAAUpgG,EAAIjwX,OACd0wd,EAAUvgf,GAGP,CACHA,KAAMugf,EACN1wd,KAAMqwd,GAId,SAASM,GAAY3wd,EAAM5vB,EAAKC,GAC5B,IAAImgf,EAAaR,GAAgBhwd,EAAM5vB,EAAKC,GACxCugf,EAAiBZ,GAAgBhwd,EAAO,EAAG5vB,EAAKC,GACpD,OAAQm/e,GAAWxvd,GAAQwwd,EAAaI,GAAkB,EAsC9D,SAASC,GAAW5gG,GAChB,OAAOwgG,GAAWxgG,EAAKriZ,KAAKkjf,MAAM1gf,IAAKxC,KAAKkjf,MAAMzgf,KAAKF,KAlC3D04e,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCqB,GAAa,OAAQ,KACrBA,GAAa,UAAW,KAIxBQ,GAAgB,OAAQ,GACxBA,GAAgB,UAAW,GAI3BgC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAE/B2B,GAAkB,CAAC,IAAK,KAAM,IAAK,OAAO,SACtCv3e,EACA3F,EACA2wB,EACA6+D,GAEAxvF,EAAKwvF,EAAM8iE,OAAO,EAAG,IAAMsoV,GAAMj1e,MAWrC,IAAIi7e,GAAoB,CACpB3gf,IAAK,EACLC,IAAK,GAGT,SAAS2gf,KACL,OAAOpjf,KAAKkjf,MAAM1gf,IAGtB,SAAS6gf,KACL,OAAOrjf,KAAKkjf,MAAMzgf,IAKtB,SAAS6gf,GAAWp7e,GAChB,IAAI3F,EAAOvC,KAAKo7e,aAAa74e,KAAKvC,MAClC,OAAgB,MAATkI,EAAgB3F,EAAOvC,KAAKmU,IAAqB,GAAhBjM,EAAQ3F,GAAW,KAG/D,SAASghf,GAAcr7e,GACnB,IAAI3F,EAAOsgf,GAAW7if,KAAM,EAAG,GAAGuC,KAClC,OAAgB,MAAT2F,EAAgB3F,EAAOvC,KAAKmU,IAAqB,GAAhBjM,EAAQ3F,GAAW,KAgE/D,SAASihf,GAAat7e,EAAOka,GACzB,MAAqB,kBAAVla,EACAA,EAGNmb,MAAMnb,IAIXA,EAAQka,EAAOq3M,cAAcvxN,GACR,kBAAVA,EACAA,EAGJ,MARIE,SAASF,EAAO,IAW/B,SAASu7e,GAAgBv7e,EAAOka,GAC5B,MAAqB,kBAAVla,EACAka,EAAOq3M,cAAcvxN,GAAS,GAAK,EAEvCmb,MAAMnb,GAAS,KAAOA,EAIjC,SAASw7e,GAAcC,EAAIlgf,GACvB,OAAOkgf,EAAG5te,MAAMtS,EAAG,GAAGiuC,OAAOiyc,EAAG5te,MAAM,EAAGtS,IArF7Cw3e,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,GAAG,SAAU/2d,GACjC,OAAOlkB,KAAKo7e,aAAa36e,YAAYT,KAAMkkB,MAG/C+2d,EAAe,MAAO,EAAG,GAAG,SAAU/2d,GAClC,OAAOlkB,KAAKo7e,aAAa56e,cAAcR,KAAMkkB,MAGjD+2d,EAAe,OAAQ,EAAG,GAAG,SAAU/2d,GACnC,OAAOlkB,KAAKo7e,aAAa76e,SAASP,KAAMkkB,MAG5C+2d,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BqB,GAAa,MAAO,KACpBA,GAAa,UAAW,KACxBA,GAAa,aAAc,KAG3BQ,GAAgB,MAAO,IACvBA,GAAgB,UAAW,IAC3BA,GAAgB,aAAc,IAI9BgC,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,MAAM,SAAUE,EAAU58d,GACpC,OAAOA,EAAOwhe,iBAAiB5E,MAEnCF,GAAc,OAAO,SAAUE,EAAU58d,GACrC,OAAOA,EAAOyhe,mBAAmB7E,MAErCF,GAAc,QAAQ,SAAUE,EAAU58d,GACtC,OAAOA,EAAO0he,cAAc9E,MAGhCS,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAUv3e,EAAO3F,EAAM2wB,EAAQ6+D,GACpE,IAAIqgK,EAAUl/N,EAAOkmd,QAAQ3/Q,cAAcvxN,EAAO6pF,EAAO7+D,EAAOuld,SAEjD,MAAXrmP,EACA7vP,EAAKN,EAAImwP,EAET+lP,EAAgBjld,GAAQsld,eAAiBtwe,KAIjDu3e,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAUv3e,EAAO3F,EAAM2wB,EAAQ6+D,GAC9DxvF,EAAKwvF,GAASorZ,GAAMj1e,MAkCxB,IAAI67e,GAAwB,2DAA2D1jf,MAC/E,KAEJ2jf,GAA6B,8BAA8B3jf,MAAM,KACjE4jf,GAA2B,uBAAuB5jf,MAAM,KACxD6jf,GAAuBrF,GACvBsF,GAA4BtF,GAC5BuF,GAA0BvF,GAE9B,SAASwF,GAAexif,EAAGqiB,GACvB,IAAI3jB,EAAW0wC,EAAQjxC,KAAKskf,WACtBtkf,KAAKskf,UACLtkf,KAAKskf,UACDzif,IAAW,IAANA,GAAc7B,KAAKskf,UAAUr9c,SAASvnC,KAAKwkB,GAC1C,SACA,cAEhB,OAAa,IAANriB,EACD6hf,GAAcnjf,EAAUP,KAAKkjf,MAAM1gf,KACnCX,EACAtB,EAASsB,EAAEqwB,OACX3xB,EAGV,SAASgkf,GAAoB1if,GACzB,OAAa,IAANA,EACD6hf,GAAc1jf,KAAKwkf,eAAgBxkf,KAAKkjf,MAAM1gf,KAC9CX,EACA7B,KAAKwkf,eAAe3if,EAAEqwB,OACtBlyB,KAAKwkf,eAGf,SAASC,GAAkB5if,GACvB,OAAa,IAANA,EACD6hf,GAAc1jf,KAAK0kf,aAAc1kf,KAAKkjf,MAAM1gf,KAC5CX,EACA7B,KAAK0kf,aAAa7if,EAAEqwB,OACpBlyB,KAAK0kf,aAGf,SAASC,GAAoBC,EAAa1ge,EAAQoqH,GAC9C,IAAIlkI,EACA+kW,EACAkzC,EACAs+F,EAAMiE,EAAYpnV,oBACtB,IAAKx9J,KAAK6kf,eAKN,IAJA7kf,KAAK6kf,eAAiB,GACtB7kf,KAAK8kf,oBAAsB,GAC3B9kf,KAAK+kf,kBAAoB,GAEpB36e,EAAI,EAAGA,EAAI,IAAKA,EACjBi4Y,EAAM80F,EAAU,CAAC,IAAM,IAAIjld,IAAI9nB,GAC/BpK,KAAK+kf,kBAAkB36e,GAAKpK,KAAKS,YAC7B4hZ,EACA,IACF7kP,oBACFx9J,KAAK8kf,oBAAoB16e,GAAKpK,KAAKQ,cAC/B6hZ,EACA,IACF7kP,oBACFx9J,KAAK6kf,eAAez6e,GAAKpK,KAAKO,SAAS8hZ,EAAK,IAAI7kP,oBAIxD,OAAIlvB,EACe,SAAXpqH,GACAirV,EAAKjiW,GAAQT,KAAKzM,KAAK6kf,eAAgBlE,IACxB,IAARxxI,EAAYA,EAAK,MACN,QAAXjrV,GACPirV,EAAKjiW,GAAQT,KAAKzM,KAAK8kf,oBAAqBnE,IAC7B,IAARxxI,EAAYA,EAAK,OAExBA,EAAKjiW,GAAQT,KAAKzM,KAAK+kf,kBAAmBpE,IAC3B,IAARxxI,EAAYA,EAAK,MAGb,SAAXjrV,GACAirV,EAAKjiW,GAAQT,KAAKzM,KAAK6kf,eAAgBlE,IAC3B,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK8kf,oBAAqBnE,IAChC,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK+kf,kBAAmBpE,IAC3B,IAARxxI,EAAYA,EAAK,QACN,QAAXjrV,GACPirV,EAAKjiW,GAAQT,KAAKzM,KAAK8kf,oBAAqBnE,IAChC,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK6kf,eAAgBlE,IAC3B,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK+kf,kBAAmBpE,IAC3B,IAARxxI,EAAYA,EAAK,SAExBA,EAAKjiW,GAAQT,KAAKzM,KAAK+kf,kBAAmBpE,IAC9B,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK6kf,eAAgBlE,IAC3B,IAARxxI,EACOA,GAEXA,EAAKjiW,GAAQT,KAAKzM,KAAK8kf,oBAAqBnE,IAC7B,IAARxxI,EAAYA,EAAK,QAKpC,SAAS61I,GAAoBJ,EAAa1ge,EAAQoqH,GAC9C,IAAIlkI,EAAGi4Y,EAAK7uV,EAEZ,GAAIxzD,KAAKilf,oBACL,OAAON,GAAoBl4e,KAAKzM,KAAM4kf,EAAa1ge,EAAQoqH,GAU/D,IAPKtuI,KAAK6kf,iBACN7kf,KAAK6kf,eAAiB,GACtB7kf,KAAK+kf,kBAAoB,GACzB/kf,KAAK8kf,oBAAsB,GAC3B9kf,KAAKklf,mBAAqB,IAGzB96e,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BAi4Y,EAAM80F,EAAU,CAAC,IAAM,IAAIjld,IAAI9nB,GAC3BkkI,IAAWtuI,KAAKklf,mBAAmB96e,KACnCpK,KAAKklf,mBAAmB96e,GAAK,IAAIysB,OAC7B,IAAM72B,KAAKO,SAAS8hZ,EAAK,IAAI5/X,QAAQ,IAAK,QAAU,IACpD,KAEJziB,KAAK8kf,oBAAoB16e,GAAK,IAAIysB,OAC9B,IAAM72B,KAAKQ,cAAc6hZ,EAAK,IAAI5/X,QAAQ,IAAK,QAAU,IACzD,KAEJziB,KAAK+kf,kBAAkB36e,GAAK,IAAIysB,OAC5B,IAAM72B,KAAKS,YAAY4hZ,EAAK,IAAI5/X,QAAQ,IAAK,QAAU,IACvD,MAGHziB,KAAK6kf,eAAez6e,KACrBopD,EACI,IACAxzD,KAAKO,SAAS8hZ,EAAK,IACnB,KACAriZ,KAAKQ,cAAc6hZ,EAAK,IACxB,KACAriZ,KAAKS,YAAY4hZ,EAAK,IAC1BriZ,KAAK6kf,eAAez6e,GAAK,IAAIysB,OAAO28B,EAAM/wC,QAAQ,IAAK,IAAK,MAI5D6rH,GACW,SAAXpqH,GACAlkB,KAAKklf,mBAAmB96e,GAAG1K,KAAKklf,GAEhC,OAAOx6e,EACJ,GACHkkI,GACW,QAAXpqH,GACAlkB,KAAK8kf,oBAAoB16e,GAAG1K,KAAKklf,GAEjC,OAAOx6e,EACJ,GACHkkI,GACW,OAAXpqH,GACAlkB,KAAK+kf,kBAAkB36e,GAAG1K,KAAKklf,GAE/B,OAAOx6e,EACJ,IAAKkkI,GAAUtuI,KAAK6kf,eAAez6e,GAAG1K,KAAKklf,GAC9C,OAAOx6e,GAOnB,SAAS+6e,GAAgBj9e,GACrB,IAAKlI,KAAKw5O,UACN,OAAgB,MAATtxO,EAAgBlI,KAAO4kJ,IAElC,IAAI1yH,EAAMlyB,KAAKk5e,OAASl5e,KAAKqoI,GAAGk6W,YAAcvif,KAAKqoI,GAAG58B,SACtD,OAAa,MAATvjG,GACAA,EAAQs7e,GAAat7e,EAAOlI,KAAKo7e,cAC1Bp7e,KAAKmU,IAAIjM,EAAQgqB,EAAK,MAEtBA,EAIf,SAASkzd,GAAsBl9e,GAC3B,IAAKlI,KAAKw5O,UACN,OAAgB,MAATtxO,EAAgBlI,KAAO4kJ,IAElC,IAAIwtG,GAAWpyP,KAAKkyB,MAAQ,EAAIlyB,KAAKo7e,aAAa8H,MAAM1gf,KAAO,EAC/D,OAAgB,MAAT0F,EAAgBkqP,EAAUpyP,KAAKmU,IAAIjM,EAAQkqP,EAAS,KAG/D,SAASizP,GAAmBn9e,GACxB,IAAKlI,KAAKw5O,UACN,OAAgB,MAATtxO,EAAgBlI,KAAO4kJ,IAOlC,GAAa,MAAT18I,EAAe,CACf,IAAIkqP,EAAUqxP,GAAgBv7e,EAAOlI,KAAKo7e,cAC1C,OAAOp7e,KAAKkyB,IAAIlyB,KAAKkyB,MAAQ,EAAIkgO,EAAUA,EAAU,GAErD,OAAOpyP,KAAKkyB,OAAS,EAI7B,SAAS4xd,GAAc9E,GACnB,OAAIh/e,KAAKilf,qBACAhO,EAAWj3e,KAAM,mBAClBslf,GAAqB74e,KAAKzM,MAE1Bg/e,EACOh/e,KAAKulf,qBAELvlf,KAAKwlf,iBAGXvO,EAAWj3e,KAAM,oBAClBA,KAAKwlf,eAAiBtB,IAEnBlkf,KAAKulf,sBAAwBvG,EAC9Bh/e,KAAKulf,qBACLvlf,KAAKwlf,gBAInB,SAAS3B,GAAmB7E,GACxB,OAAIh/e,KAAKilf,qBACAhO,EAAWj3e,KAAM,mBAClBslf,GAAqB74e,KAAKzM,MAE1Bg/e,EACOh/e,KAAKylf,0BAELzlf,KAAK0lf,sBAGXzO,EAAWj3e,KAAM,yBAClBA,KAAK0lf,oBAAsBvB,IAExBnkf,KAAKylf,2BAA6BzG,EACnCh/e,KAAKylf,0BACLzlf,KAAK0lf,qBAInB,SAAS9B,GAAiB5E,GACtB,OAAIh/e,KAAKilf,qBACAhO,EAAWj3e,KAAM,mBAClBslf,GAAqB74e,KAAKzM,MAE1Bg/e,EACOh/e,KAAK2lf,wBAEL3lf,KAAK4lf,oBAGX3O,EAAWj3e,KAAM,uBAClBA,KAAK4lf,kBAAoBxB,IAEtBpkf,KAAK2lf,yBAA2B3G,EACjCh/e,KAAK2lf,wBACL3lf,KAAK4lf,mBAInB,SAASN,KACL,SAAS9D,EAAU3md,EAAG/xB,GAClB,OAAOA,EAAEiB,OAAS8wB,EAAE9wB,OAGxB,IAIIK,EACAi4Y,EACAwjG,EACAC,EACAC,EARAC,EAAY,GACZvE,EAAc,GACdC,EAAa,GACbC,EAAc,GAMlB,IAAKv3e,EAAI,EAAGA,EAAI,EAAGA,IAEfi4Y,EAAM80F,EAAU,CAAC,IAAM,IAAIjld,IAAI9nB,GAC/By7e,EAAO1G,GAAYn/e,KAAKS,YAAY4hZ,EAAK,KACzCyjG,EAAS3G,GAAYn/e,KAAKQ,cAAc6hZ,EAAK,KAC7C0jG,EAAQ5G,GAAYn/e,KAAKO,SAAS8hZ,EAAK,KACvC2jG,EAAUtxe,KAAKmxe,GACfpE,EAAY/se,KAAKoxe,GACjBpE,EAAWhte,KAAKqxe,GAChBpE,EAAYjte,KAAKmxe,GACjBlE,EAAYjte,KAAKoxe,GACjBnE,EAAYjte,KAAKqxe,GAIrBC,EAAUv4c,KAAK+zc,GACfC,EAAYh0c,KAAK+zc,GACjBE,EAAWj0c,KAAK+zc,GAChBG,EAAYl0c,KAAK+zc,GAEjBxhf,KAAKwlf,eAAiB,IAAI3ud,OAAO,KAAO8qd,EAAYhte,KAAK,KAAO,IAAK,KACrE3U,KAAK0lf,oBAAsB1lf,KAAKwlf,eAChCxlf,KAAK4lf,kBAAoB5lf,KAAKwlf,eAE9Bxlf,KAAKulf,qBAAuB,IAAI1ud,OAC5B,KAAO6qd,EAAW/se,KAAK,KAAO,IAC9B,KAEJ3U,KAAKylf,0BAA4B,IAAI5ud,OACjC,KAAO4qd,EAAY9se,KAAK,KAAO,IAC/B,KAEJ3U,KAAK2lf,wBAA0B,IAAI9ud,OAC/B,KAAOmvd,EAAUrxe,KAAK,KAAO,IAC7B,KAMR,SAASsxe,KACL,OAAOjmf,KAAK80B,QAAU,IAAM,GAGhC,SAASoxd,KACL,OAAOlmf,KAAK80B,SAAW,GAiC3B,SAAS/xB,GAASgvF,EAAOo0Z,GACrBlL,EAAelpZ,EAAO,EAAG,GAAG,WACxB,OAAO/xF,KAAKo7e,aAAar4e,SACrB/C,KAAK80B,QACL90B,KAAK6oC,UACLs9c,MAiBZ,SAASC,GAAcpH,EAAU58d,GAC7B,OAAOA,EAAOike,eA2DlB,SAASC,GAAWp+e,GAGhB,MAAgD,OAAxCA,EAAQ,IAAInC,cAAc8hB,OAAO,GAnH7Cozd,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGgL,IAClChL,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGiL,IAElCjL,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKgL,GAAQ/5e,MAAMlM,MAAQu6e,EAASv6e,KAAK6oC,UAAW,MAG/Doyc,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACAgL,GAAQ/5e,MAAMlM,MACdu6e,EAASv6e,KAAK6oC,UAAW,GACzB0xc,EAASv6e,KAAKkvG,UAAW,MAIjC+rY,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKj7e,KAAK80B,QAAUyld,EAASv6e,KAAK6oC,UAAW,MAGxDoyc,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACAj7e,KAAK80B,QACLyld,EAASv6e,KAAK6oC,UAAW,GACzB0xc,EAASv6e,KAAKkvG,UAAW,MAcjCnsG,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdu5e,GAAa,OAAQ,KAGrBQ,GAAgB,OAAQ,IAQxBgC,GAAc,IAAKsH,IACnBtH,GAAc,IAAKsH,IACnBtH,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAE/BgB,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBU,GAAc,MAAOX,IACrBW,GAAc,QAASV,IAEvBoB,GAAc,CAAC,IAAK,MAAOz+I,IAC3By+I,GAAc,CAAC,IAAK,OAAO,SAAUt3e,EAAOutE,EAAOviD,GAC/C,IAAIqzd,EAASpJ,GAAMj1e,GACnButE,EAAMsrR,IAAmB,KAAXwlJ,EAAgB,EAAIA,KAEtC/G,GAAc,CAAC,IAAK,MAAM,SAAUt3e,EAAOutE,EAAOviD,GAC9CA,EAAOszd,MAAQtzd,EAAOkmd,QAAQ3we,KAAKP,GACnCgrB,EAAOuzd,UAAYv+e,KAEvBs3e,GAAc,CAAC,IAAK,OAAO,SAAUt3e,EAAOutE,EAAOviD,GAC/CuiD,EAAMsrR,IAAQo8I,GAAMj1e,GACpBiwe,EAAgBjld,GAAQwld,SAAU,KAEtC8G,GAAc,OAAO,SAAUt3e,EAAOutE,EAAOviD,GACzC,IAAIrtB,EAAMqC,EAAM6B,OAAS,EACzB0rE,EAAMsrR,IAAQo8I,GAAMj1e,EAAM2sJ,OAAO,EAAGhvJ,IACpC4vE,EAAMurR,IAAUm8I,GAAMj1e,EAAM2sJ,OAAOhvJ,IACnCsye,EAAgBjld,GAAQwld,SAAU,KAEtC8G,GAAc,SAAS,SAAUt3e,EAAOutE,EAAOviD,GAC3C,IAAIwzd,EAAOx+e,EAAM6B,OAAS,EACtB48e,EAAOz+e,EAAM6B,OAAS,EAC1B0rE,EAAMsrR,IAAQo8I,GAAMj1e,EAAM2sJ,OAAO,EAAG6xV,IACpCjxa,EAAMurR,IAAUm8I,GAAMj1e,EAAM2sJ,OAAO6xV,EAAM,IACzCjxa,EAAM44K,IAAU8uP,GAAMj1e,EAAM2sJ,OAAO8xV,IACnCxO,EAAgBjld,GAAQwld,SAAU,KAEtC8G,GAAc,OAAO,SAAUt3e,EAAOutE,EAAOviD,GACzC,IAAIrtB,EAAMqC,EAAM6B,OAAS,EACzB0rE,EAAMsrR,IAAQo8I,GAAMj1e,EAAM2sJ,OAAO,EAAGhvJ,IACpC4vE,EAAMurR,IAAUm8I,GAAMj1e,EAAM2sJ,OAAOhvJ,OAEvC25e,GAAc,SAAS,SAAUt3e,EAAOutE,EAAOviD,GAC3C,IAAIwzd,EAAOx+e,EAAM6B,OAAS,EACtB48e,EAAOz+e,EAAM6B,OAAS,EAC1B0rE,EAAMsrR,IAAQo8I,GAAMj1e,EAAM2sJ,OAAO,EAAG6xV,IACpCjxa,EAAMurR,IAAUm8I,GAAMj1e,EAAM2sJ,OAAO6xV,EAAM,IACzCjxa,EAAM44K,IAAU8uP,GAAMj1e,EAAM2sJ,OAAO8xV,OAWvC,IAAIC,GAA6B,gBAK7BC,GAAavJ,GAAW,SAAS,GAErC,SAASwJ,GAAehyd,EAAO+T,EAAS5lC,GACpC,OAAI6xB,EAAQ,GACD7xB,EAAU,KAAO,KAEjBA,EAAU,KAAO,KAIhC,IAuBI8jf,GAvBAC,GAAa,CACb/lf,SAAUo5e,EACV35e,eAAgBg7e,EAChB9rG,YAAaksG,EACbv4e,QAASy4e,EACT14e,uBAAwB24e,EACxBz6e,aAAc26e,GAEd/7e,OAAQ4/e,GACR1/e,YAAa2/e,GAEb19e,KAAM4gf,GAEN5if,SAAUwjf,GACVtjf,YAAawjf,GACbzjf,cAAewjf,GAEfphf,cAAegkf,IAIfK,GAAU,GACVC,GAAiB,GAGrB,SAASC,GAAaC,EAAMC,GACxB,IAAIj9e,EACAk9e,EAAO71e,KAAK2S,IAAIgje,EAAKr9e,OAAQs9e,EAAKt9e,QACtC,IAAKK,EAAI,EAAGA,EAAIk9e,EAAMl9e,GAAK,EACvB,GAAIg9e,EAAKh9e,KAAOi9e,EAAKj9e,GACjB,OAAOA,EAGf,OAAOk9e,EAGX,SAASC,GAAgB1jf,GACrB,OAAOA,EAAMA,EAAIkC,cAAc0c,QAAQ,IAAK,KAAO5e,EAMvD,SAAS2jf,GAAav6N,GAClB,IACI//O,EACAs1G,EACApgI,EACA/hB,EAJA+J,EAAI,EAMR,MAAOA,EAAI6iR,EAAMljR,OAAQ,CACrB1J,EAAQknf,GAAgBt6N,EAAM7iR,IAAI/J,MAAM,KACxC6sC,EAAI7sC,EAAM0J,OACVy4I,EAAO+kW,GAAgBt6N,EAAM7iR,EAAI,IACjCo4I,EAAOA,EAAOA,EAAKniJ,MAAM,KAAO,KAChC,MAAO6sC,EAAI,EAAG,CAEV,GADA9qB,EAASqle,GAAWpnf,EAAM0V,MAAM,EAAGm3B,GAAGv4B,KAAK,MACvCyN,EACA,OAAOA,EAEX,GACIogI,GACAA,EAAKz4I,QAAUmjC,GACfi6c,GAAa9mf,EAAOmiJ,IAASt1G,EAAI,EAGjC,MAEJA,IAEJ9iC,IAEJ,OAAO28e,GAGX,SAASU,GAAW9/e,GAChB,IAAI+/e,EAAY,KAGhB,QACsB/hf,IAAlBshf,GAAQt/e,IACU,qBAAXhI,GACPA,GACAA,EAAOC,QAEP,IACI8nf,EAAYX,GAAaY,MACRC,EACjB,UAAe,KAAcjgf,GAC7Bkgf,GAAmBH,GACrB,MAAOlye,GAGLyxe,GAAQt/e,GAAQ,KAGxB,OAAOs/e,GAAQt/e,GAMnB,SAASkgf,GAAmBhkf,EAAK61G,GAC7B,IAAIvlF,EAqBJ,OApBItwB,IAEIswB,EADAuzE,EAAYgS,GACLouY,GAAUjkf,GAEV1D,GAAa0D,EAAK61G,GAGzBvlF,EAEA4yd,GAAe5yd,EAEQ,qBAAZugH,SAA2BA,QAAQ04E,MAE1C14E,QAAQ04E,KACJ,UAAYvpN,EAAM,2CAM3Bkjf,GAAaY,MAGxB,SAASxnf,GAAawH,EAAMurB,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAI9Q,EACA83d,EAAe8M,GAEnB,GADA9zd,EAAOrrB,KAAOF,EACO,MAAjBs/e,GAAQt/e,GACRiye,EACI,uBACA,2OAKJM,EAAe+M,GAAQt/e,GAAMkye,aAC1B,GAA2B,MAAvB3md,EAAO60d,aACd,GAAoC,MAAhCd,GAAQ/zd,EAAO60d,cACf7N,EAAe+M,GAAQ/zd,EAAO60d,cAAclO,YACzC,CAEH,GADAz3d,EAASqle,GAAWv0d,EAAO60d,cACb,MAAV3le,EAUA,OAPK8ke,GAAeh0d,EAAO60d,gBACvBb,GAAeh0d,EAAO60d,cAAgB,IAE1Cb,GAAeh0d,EAAO60d,cAAcrze,KAAK,CACrC/M,KAAMA,EACNurB,OAAQA,IAEL,KATPgnd,EAAe93d,EAAOy3d,QA0BlC,OAbAoN,GAAQt/e,GAAQ,IAAIyye,EAAOH,EAAaC,EAAchnd,IAElDg0d,GAAev/e,IACfu/e,GAAev/e,GAAM8rB,SAAQ,SAAU7kB,GACnCzO,GAAayO,EAAEjH,KAAMiH,EAAEskB,WAO/B20d,GAAmBlgf,GAEZs/e,GAAQt/e,GAIf,cADOs/e,GAAQt/e,GACR,KAIf,SAASqgf,GAAargf,EAAMurB,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAI9Q,EACA6le,EACA/N,EAAe8M,GAEE,MAAjBC,GAAQt/e,IAA+C,MAA9Bs/e,GAAQt/e,GAAMogf,aAEvCd,GAAQt/e,GAAM6tC,IAAIykc,EAAagN,GAAQt/e,GAAMkye,QAAS3md,KAGtD+0d,EAAYR,GAAW9/e,GACN,MAAbsgf,IACA/N,EAAe+N,EAAUpO,SAE7B3md,EAAS+md,EAAaC,EAAchnd,GACnB,MAAb+0d,IAIA/0d,EAAOrrB,KAAOF,GAElBya,EAAS,IAAIg4d,EAAOlnd,GACpB9Q,EAAO2le,aAAed,GAAQt/e,GAC9Bs/e,GAAQt/e,GAAQya,GAIpByle,GAAmBlgf,QAGE,MAAjBs/e,GAAQt/e,KAC0B,MAA9Bs/e,GAAQt/e,GAAMogf,cACdd,GAAQt/e,GAAQs/e,GAAQt/e,GAAMogf,aAC1Bpgf,IAASkgf,MACTA,GAAmBlgf,IAEC,MAAjBs/e,GAAQt/e,WACRs/e,GAAQt/e,IAI3B,OAAOs/e,GAAQt/e,GAInB,SAASmgf,GAAUjkf,GACf,IAAIue,EAMJ,GAJIve,GAAOA,EAAIu1e,SAAWv1e,EAAIu1e,QAAQuO,QAClC9jf,EAAMA,EAAIu1e,QAAQuO,QAGjB9jf,EACD,OAAOkjf,GAGX,IAAK91c,EAAQptC,GAAM,CAGf,GADAue,EAASqle,GAAW5jf,GAChBue,EACA,OAAOA,EAEXve,EAAM,CAACA,GAGX,OAAO2jf,GAAa3jf,GAGxB,SAASqkf,KACL,OAAOhre,EAAK+pe,IAGhB,SAASl5T,GAAclsL,GACnB,IAAImiD,EACAnpB,EAAIh5B,EAAEmL,GAuCV,OArCI6tB,IAAsC,IAAjCs9c,EAAgBt2e,GAAGmiD,WACxBA,EACInpB,EAAE+6G,IAAS,GAAK/6G,EAAE+6G,IAAS,GACrBA,GACA/6G,EAAE+kd,IAAQ,GAAK/kd,EAAE+kd,IAAQ7uS,GAAYl2K,EAAE86G,IAAO96G,EAAE+6G,KAChDgqW,GACA/kd,EAAEkmU,IAAQ,GACVlmU,EAAEkmU,IAAQ,IACG,KAAZlmU,EAAEkmU,MACgB,IAAdlmU,EAAEmmU,KACe,IAAdnmU,EAAEwzN,KACiB,IAAnBxzN,EAAEomU,KACVF,GACAlmU,EAAEmmU,IAAU,GAAKnmU,EAAEmmU,IAAU,GAC7BA,GACAnmU,EAAEwzN,IAAU,GAAKxzN,EAAEwzN,IAAU,GAC7BA,GACAxzN,EAAEomU,IAAe,GAAKpmU,EAAEomU,IAAe,IACvCA,IACC,EAGPk3I,EAAgBt2e,GAAGsmf,qBAClBnkc,EAAW2xF,IAAQ3xF,EAAW47b,MAE/B57b,EAAW47b,IAEXzH,EAAgBt2e,GAAGumf,iBAAgC,IAAdpkc,IACrCA,EAAW67b,IAEX1H,EAAgBt2e,GAAGwmf,mBAAkC,IAAdrkc,IACvCA,EAAW87b,IAGf3H,EAAgBt2e,GAAGmiD,SAAWA,GAG3BniD,EAKX,IAAIymf,GAAmB,iJACnBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElB1Q,GAAU,0LACV2Q,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAcr2d,GACnB,IAAI9oB,EACA/B,EAGAmhf,EACA51P,EACAwH,EACAquP,EALAt6Z,EAASj8D,EAAOhd,GAChB/N,EAAQmgf,GAAiBjlf,KAAK8rF,IAAWo5Z,GAAcllf,KAAK8rF,GAMhE,GAAIhnF,EAAO,CAGP,IAFAgwe,EAAgBjld,GAAQ8kd,KAAM,EAEzB5te,EAAI,EAAG/B,EAAIogf,GAAS1+e,OAAQK,EAAI/B,EAAG+B,IACpC,GAAIq+e,GAASr+e,GAAG,GAAG/G,KAAK8E,EAAM,IAAK,CAC/ByrP,EAAa60P,GAASr+e,GAAG,GACzBo/e,GAA+B,IAAnBf,GAASr+e,GAAG,GACxB,MAGR,GAAkB,MAAdwpP,EAEA,YADA1gO,EAAOmld,UAAW,GAGtB,GAAIlwe,EAAM,GAAI,CACV,IAAKiC,EAAI,EAAG/B,EAAIqgf,GAAS3+e,OAAQK,EAAI/B,EAAG+B,IACpC,GAAIs+e,GAASt+e,GAAG,GAAG/G,KAAK8E,EAAM,IAAK,CAE/BizP,GAAcjzP,EAAM,IAAM,KAAOugf,GAASt+e,GAAG,GAC7C,MAGR,GAAkB,MAAdgxP,EAEA,YADAloO,EAAOmld,UAAW,GAI1B,IAAKmR,GAA2B,MAAdpuP,EAEd,YADAloO,EAAOmld,UAAW,GAGtB,GAAIlwe,EAAM,GAAI,CACV,IAAIqgf,GAAQnlf,KAAK8E,EAAM,IAInB,YADA+qB,EAAOmld,UAAW,GAFlBoR,EAAW,IAMnBv2d,EAAOy1G,GAAKirH,GAAcwH,GAAc,KAAOquP,GAAY,IAC3DC,GAA0Bx2d,QAE1BA,EAAOmld,UAAW,EAI1B,SAASsR,GACLC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAIlmf,EAAS,CACTmmf,GAAeN,GACf3J,GAAyB/ye,QAAQ28e,GACjCzhf,SAAS0hf,EAAQ,IACjB1hf,SAAS2hf,EAAS,IAClB3hf,SAAS4hf,EAAW,KAOxB,OAJIC,GACAlmf,EAAO2Q,KAAKtM,SAAS6hf,EAAW,KAG7Blmf,EAGX,SAASmmf,GAAeN,GACpB,IAAIx3d,EAAOhqB,SAASwhf,EAAS,IAC7B,OAAIx3d,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,EAGX,SAAS+3d,GAAkBxof,GAEvB,OAAOA,EACF8gB,QAAQ,oBAAqB,KAC7BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,IAG3B,SAAS2ne,GAAaC,EAAYhtd,EAAanK,GAC3C,GAAIm3d,EAAY,CAEZ,IAAIC,EAAkBtG,GAA2B92e,QAAQm9e,GACrDE,EAAgB,IAAI/pe,KAChB6c,EAAY,GACZA,EAAY,GACZA,EAAY,IACdouE,SACN,GAAI6+Y,IAAoBC,EAGpB,OAFApS,EAAgBjld,GAAQgld,iBAAkB,EAC1Chld,EAAOmld,UAAW,GACX,EAGf,OAAO,EAGX,SAASmS,GAAgBC,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAO7B,GAAW6B,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIh/U,EAAKtjK,SAASuif,EAAW,IACzB9of,EAAI6pK,EAAK,IACT3pK,GAAK2pK,EAAK7pK,GAAK,IACnB,OAAW,GAAJE,EAASF,EAKxB,SAAS+of,GAAkB13d,GACvB,IACI23d,EADA1if,EAAQ8ve,GAAQ50e,KAAK8mf,GAAkBj3d,EAAOhd,KAElD,GAAI/N,EAAO,CASP,GARA0if,EAAclB,GACVxhf,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,KAELiif,GAAajif,EAAM,GAAI0if,EAAa33d,GACrC,OAGJA,EAAOlmB,GAAK69e,EACZ33d,EAAO+ld,KAAOuR,GAAgBrif,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExD+qB,EAAOm1G,GAAK65W,GAAch2e,MAAM,KAAMgnB,EAAOlmB,IAC7CkmB,EAAOm1G,GAAGyiX,cAAc53d,EAAOm1G,GAAGk0B,gBAAkBrpI,EAAO+ld,MAE3Dd,EAAgBjld,GAAQ+kd,SAAU,OAElC/kd,EAAOmld,UAAW,EAK1B,SAAS0S,GAAiB73d,GACtB,IAAI06P,EAAU+6N,GAAgBtlf,KAAK6vB,EAAOhd,IAC1B,OAAZ03Q,GAKJ27N,GAAcr2d,IACU,IAApBA,EAAOmld,kBACAnld,EAAOmld,SAKlBuS,GAAkB13d,IACM,IAApBA,EAAOmld,kBACAnld,EAAOmld,SAKdnld,EAAOuld,QACPvld,EAAOmld,UAAW,EAGlBl0C,EAAM6mD,wBAAwB93d,MAtB9BA,EAAOm1G,GAAK,IAAI7nH,MAAMotQ,EAAQ,IAoCtC,SAAS96P,GAAS+H,EAAG/xB,EAAGe,GACpB,OAAS,MAALgxB,EACOA,EAEF,MAAL/xB,EACOA,EAEJe,EAGX,SAASohf,GAAiB/3d,GAEtB,IAAIg4d,EAAW,IAAI1qe,KAAK2jb,EAAMz7b,OAC9B,OAAIwqB,EAAOi4d,QACA,CACHD,EAAShvV,iBACTgvV,EAAS9uV,cACT8uV,EAAS7uV,cAGV,CAAC6uV,EAASlqe,cAAekqe,EAASn/Y,WAAYm/Y,EAASv/Y,WAOlE,SAASy/Y,GAAgBl4d,GACrB,IAAI9oB,EACAkgB,EAEA5D,EACA2ke,EACAC,EAHApjf,EAAQ,GAKZ,IAAIgrB,EAAOm1G,GAAX,CAgCA,IA5BA3hH,EAAcuke,GAAiB/3d,GAG3BA,EAAOwsd,IAAyB,MAAnBxsd,EAAOlmB,GAAG4ye,KAAqC,MAApB1sd,EAAOlmB,GAAG4oI,KAClD21W,GAAsBr4d,GAID,MAArBA,EAAOs4d,aACPF,EAAYx4d,GAASI,EAAOlmB,GAAG2oI,IAAOjvH,EAAYivH,MAG9CziH,EAAOs4d,WAAa5J,GAAW0J,IACT,IAAtBp4d,EAAOs4d,cAEPrT,EAAgBjld,GAAQi1d,oBAAqB,GAGjD79d,EAAO43d,GAAcoJ,EAAW,EAAGp4d,EAAOs4d,YAC1Ct4d,EAAOlmB,GAAG4oI,IAAStrH,EAAK8xI,cACxBlpI,EAAOlmB,GAAG4ye,IAAQt1d,EAAK+xI,cAQtBjyJ,EAAI,EAAGA,EAAI,GAAqB,MAAhB8oB,EAAOlmB,GAAG5C,KAAcA,EACzC8oB,EAAOlmB,GAAG5C,GAAKlC,EAAMkC,GAAKsc,EAAYtc,GAI1C,KAAOA,EAAI,EAAGA,IACV8oB,EAAOlmB,GAAG5C,GAAKlC,EAAMkC,GACD,MAAhB8oB,EAAOlmB,GAAG5C,GAAoB,IAANA,EAAU,EAAI,EAAK8oB,EAAOlmB,GAAG5C,GAKrC,KAApB8oB,EAAOlmB,GAAG+zV,KACY,IAAtB7tU,EAAOlmB,GAAGg0V,KACY,IAAtB9tU,EAAOlmB,GAAGqhP,KACiB,IAA3Bn7N,EAAOlmB,GAAGi0V,MAEV/tU,EAAOu4d,UAAW,EAClBv4d,EAAOlmB,GAAG+zV,IAAQ,GAGtB7tU,EAAOm1G,IAAMn1G,EAAOi4d,QAAUjJ,GAAgBF,IAAY91e,MACtD,KACAhE,GAEJmjf,EAAkBn4d,EAAOi4d,QACnBj4d,EAAOm1G,GAAGk6W,YACVrvd,EAAOm1G,GAAG58B,SAIG,MAAfv4E,EAAO+ld,MACP/ld,EAAOm1G,GAAGyiX,cAAc53d,EAAOm1G,GAAGk0B,gBAAkBrpI,EAAO+ld,MAG3D/ld,EAAOu4d,WACPv4d,EAAOlmB,GAAG+zV,IAAQ,IAKlB7tU,EAAOwsd,IACgB,qBAAhBxsd,EAAOwsd,GAAGz9e,GACjBixB,EAAOwsd,GAAGz9e,IAAMopf,IAEhBlT,EAAgBjld,GAAQgld,iBAAkB,IAIlD,SAASqT,GAAsBr4d,GAC3B,IAAI6B,EAAG22d,EAAUnpf,EAAM6vP,EAAS5vP,EAAKC,EAAKgsC,EAAMk9c,EAAiBC,EAEjE72d,EAAI7B,EAAOwsd,GACC,MAAR3qd,EAAE82d,IAAqB,MAAP92d,EAAE+2d,GAAoB,MAAP/2d,EAAEktV,GACjCz/W,EAAM,EACNC,EAAM,EAMNipf,EAAW54d,GACPiC,EAAE82d,GACF34d,EAAOlmB,GAAG2oI,IACVktW,GAAWkJ,KAAe,EAAG,GAAG35d,MAEpC7vB,EAAOuwB,GAASiC,EAAE+2d,EAAG,GACrB15P,EAAUt/N,GAASiC,EAAEktV,EAAG,IACpB7vH,EAAU,GAAKA,EAAU,KACzBu5P,GAAkB,KAGtBnpf,EAAM0wB,EAAOkmd,QAAQ8J,MAAM1gf,IAC3BC,EAAMywB,EAAOkmd,QAAQ8J,MAAMzgf,IAE3Bmpf,EAAU/I,GAAWkJ,KAAevpf,EAAKC,GAEzCipf,EAAW54d,GAASiC,EAAEi3d,GAAI94d,EAAOlmB,GAAG2oI,IAAOi2W,EAAQx5d,MAGnD7vB,EAAOuwB,GAASiC,EAAEA,EAAG62d,EAAQrpf,MAElB,MAAPwyB,EAAE9yB,GAEFmwP,EAAUr9N,EAAE9yB,GACRmwP,EAAU,GAAKA,EAAU,KACzBu5P,GAAkB,IAER,MAAP52d,EAAEvf,GAET48O,EAAUr9N,EAAEvf,EAAIhT,GACZuyB,EAAEvf,EAAI,GAAKuf,EAAEvf,EAAI,KACjBm2e,GAAkB,IAItBv5P,EAAU5vP,GAGdD,EAAO,GAAKA,EAAOwgf,GAAY2I,EAAUlpf,EAAKC,GAC9C01e,EAAgBjld,GAAQk1d,gBAAiB,EACf,MAAnBuD,EACPxT,EAAgBjld,GAAQm1d,kBAAmB,GAE3C55c,EAAO+zc,GAAmBkJ,EAAUnpf,EAAM6vP,EAAS5vP,EAAKC,GACxDywB,EAAOlmB,GAAG2oI,IAAQlnG,EAAKrc,KACvBc,EAAOs4d,WAAa/8c,EAAK09D,WAWjC,SAASu9Y,GAA0Bx2d,GAE/B,GAAIA,EAAOy1G,KAAOw7T,EAAM8nD,SAIxB,GAAI/4d,EAAOy1G,KAAOw7T,EAAM+nD,SAAxB,CAIAh5d,EAAOlmB,GAAK,GACZmre,EAAgBjld,GAAQqkd,OAAQ,EAGhC,IACInte,EACAizB,EACAg5W,EACAtkT,EACAo6Z,EAGA/6I,EARAjiR,EAAS,GAAKj8D,EAAOhd,GAMrBk2e,EAAej9Z,EAAOplF,OACtBsif,EAAyB,EAM7B,IAHAh2G,EACImlG,EAAatod,EAAOy1G,GAAIz1G,EAAOkmd,SAASjxe,MAAM0ye,IAAqB,GAElEzwe,EAAI,EAAGA,EAAIisY,EAAOtsY,OAAQK,IAC3B2nF,EAAQskT,EAAOjsY,GACfizB,GAAe8xD,EAAOhnF,MAAM82e,GAAsBltZ,EAAO7+D,KACrD,IAAI,GACJmK,IACA8ud,EAAUh9Z,EAAO0lE,OAAO,EAAG1lE,EAAOjiF,QAAQmwB,IACtC8ud,EAAQpif,OAAS,GACjBoue,EAAgBjld,GAAQukd,YAAY/ie,KAAKy3e,GAE7Ch9Z,EAASA,EAAOp5E,MACZo5E,EAAOjiF,QAAQmwB,GAAeA,EAAYtzB,QAE9Csif,GAA0Bhvd,EAAYtzB,QAGtCixe,EAAqBjpZ,IACjB10D,EACA86c,EAAgBjld,GAAQqkd,OAAQ,EAEhCY,EAAgBjld,GAAQskd,aAAa9ie,KAAKq9E,GAE9C4tZ,GAAwB5tZ,EAAO10D,EAAanK,IACrCA,EAAOuld,UAAYp7c,GAC1B86c,EAAgBjld,GAAQskd,aAAa9ie,KAAKq9E,GAKlDomZ,EAAgBjld,GAAQwkd,cACpB0U,EAAeC,EACfl9Z,EAAOplF,OAAS,GAChBoue,EAAgBjld,GAAQukd,YAAY/ie,KAAKy6E,GAKzCj8D,EAAOlmB,GAAG+zV,KAAS,KACiB,IAApCo3I,EAAgBjld,GAAQwld,SACxBxld,EAAOlmB,GAAG+zV,IAAQ,IAElBo3I,EAAgBjld,GAAQwld,aAAU/ye,GAGtCwye,EAAgBjld,GAAQimV,gBAAkBjmV,EAAOlmB,GAAG+I,MAAM,GAC1Doie,EAAgBjld,GAAQnwB,SAAWmwB,EAAOuzd,UAE1Cvzd,EAAOlmB,GAAG+zV,IAAQurJ,GACdp5d,EAAOkmd,QACPlmd,EAAOlmB,GAAG+zV,IACV7tU,EAAOuzd,WAIXr1I,EAAM+mI,EAAgBjld,GAAQk+U,IAClB,OAARA,IACAl+U,EAAOlmB,GAAG2oI,IAAQziH,EAAOkmd,QAAQmT,gBAAgBn7I,EAAKl+U,EAAOlmB,GAAG2oI,MAGpEy1W,GAAgBl4d,GAChB66J,GAAc76J,QA/EV03d,GAAkB13d,QAJlBq2d,GAAcr2d,GAsFtB,SAASo5d,GAAgBlqe,EAAQtf,EAAMC,GACnC,IAAIypf,EAEJ,OAAgB,MAAZzpf,EAEOD,EAEgB,MAAvBsf,EAAOvf,aACAuf,EAAOvf,aAAaC,EAAMC,GACX,MAAfqf,EAAO3Z,MAEd+jf,EAAOpqe,EAAO3Z,KAAK1F,GACfypf,GAAQ1pf,EAAO,KACfA,GAAQ,IAEP0pf,GAAiB,KAAT1pf,IACTA,EAAO,GAEJA,GAGAA,EAKf,SAAS2pf,GAAyBv5d,GAC9B,IAAIw5d,EACAC,EACAC,EACAxif,EACAyif,EACAC,EACAC,GAAoB,EAExB,GAAyB,IAArB75d,EAAOy1G,GAAG5+H,OAGV,OAFAoue,EAAgBjld,GAAQ4kd,eAAgB,OACxC5kd,EAAOm1G,GAAK,IAAI7nH,KAAKokI,MAIzB,IAAKx6I,EAAI,EAAGA,EAAI8oB,EAAOy1G,GAAG5+H,OAAQK,IAC9Byif,EAAe,EACfC,GAAmB,EACnBJ,EAAa3T,EAAW,GAAI7ld,GACN,MAAlBA,EAAOi4d,UACPuB,EAAWvB,QAAUj4d,EAAOi4d,SAEhCuB,EAAW/jX,GAAKz1G,EAAOy1G,GAAGv+H,GAC1Bs/e,GAA0BgD,GAEtBlzQ,EAAQkzQ,KACRI,GAAmB,GAIvBD,GAAgB1U,EAAgBuU,GAAYhV,cAG5CmV,GAAkE,GAAlD1U,EAAgBuU,GAAYlV,aAAazte,OAEzDoue,EAAgBuU,GAAYM,MAAQH,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpCziJ,EAAOp3U,EAAQy5d,GAAcD,GAGjC,SAASO,GAAiB/5d,GACtB,IAAIA,EAAOm1G,GAAX,CAIA,IAAIj+H,EAAIsye,GAAqBxpd,EAAOhd,IAChCg3e,OAAsBvnf,IAAVyE,EAAE8nB,IAAoB9nB,EAAEkgB,KAAOlgB,EAAE8nB,IACjDgB,EAAOlmB,GAAKsC,EACR,CAAClF,EAAEgoB,KAAMhoB,EAAE+nB,MAAO+6d,EAAW9if,EAAEtH,KAAMsH,EAAEpH,OAAQoH,EAAEioB,OAAQjoB,EAAE46V,cAC3D,SAAUp4T,GACN,OAAOA,GAAOxkC,SAASwkC,EAAK,OAIpCw+c,GAAgBl4d,IAGpB,SAASi6d,GAAiBj6d,GACtB,IAAIkc,EAAM,IAAIiqc,EAAOtrT,GAAcq/T,GAAcl6d,KAOjD,OANIkc,EAAIq8c,WAEJr8c,EAAIj7B,IAAI,EAAG,KACXi7B,EAAIq8c,cAAW9lf,GAGZypC,EAGX,SAASg+c,GAAcl6d,GACnB,IAAIhrB,EAAQgrB,EAAOhd,GACfgO,EAASgP,EAAOy1G,GAIpB,OAFAz1G,EAAOkmd,QAAUlmd,EAAOkmd,SAAW0O,GAAU50d,EAAOgmQ,IAEtC,OAAVhxR,QAA8BvC,IAAXue,GAAkC,KAAVhc,EACpCywe,EAAc,CAAEhB,WAAW,KAGjB,kBAAVzve,IACPgrB,EAAOhd,GAAKhO,EAAQgrB,EAAOkmd,QAAQ9pZ,SAASpnF,IAG5Cqxe,EAASrxe,GACF,IAAImxe,EAAOtrT,GAAc7lL,KACzBiwC,EAAOjwC,GACdgrB,EAAOm1G,GAAKngI,EACL+oC,EAAQ/sB,GACfuoe,GAAyBv5d,GAClBhP,EACPwle,GAA0Bx2d,GAE1Bm6d,GAAgBn6d,GAGfsmN,EAAQtmN,KACTA,EAAOm1G,GAAK,MAGTn1G,IAGX,SAASm6d,GAAgBn6d,GACrB,IAAIhrB,EAAQgrB,EAAOhd,GACfwxF,EAAYx/F,GACZgrB,EAAOm1G,GAAK,IAAI7nH,KAAK2jb,EAAMz7b,OACpByvC,EAAOjwC,GACdgrB,EAAOm1G,GAAK,IAAI7nH,KAAKtY,EAAM+kB,WACH,kBAAV/kB,EACd6if,GAAiB73d,GACV+d,EAAQ/oC,IACfgrB,EAAOlmB,GAAKsC,EAAIpH,EAAM6N,MAAM,IAAI,SAAU62B,GACtC,OAAOxkC,SAASwkC,EAAK,OAEzBw+c,GAAgBl4d,IACTu1E,EAASvgG,GAChB+kf,GAAiB/5d,GACVkmJ,EAASlxK,GAEhBgrB,EAAOm1G,GAAK,IAAI7nH,KAAKtY,GAErBi8b,EAAM6mD,wBAAwB93d,GAItC,SAASkkd,GAAiBlve,EAAOgc,EAAQ9B,EAAQksH,EAAQg/W,GACrD,IAAIzjf,EAAI,GA2BR,OAzBe,IAAXqa,IAA8B,IAAXA,IACnBoqH,EAASpqH,EACTA,OAASve,IAGE,IAAXyc,IAA8B,IAAXA,IACnBksH,EAASlsH,EACTA,OAASzc,IAIR8iG,EAASvgG,IAAUgve,EAAchve,IACjC+oC,EAAQ/oC,IAA2B,IAAjBA,EAAM6B,UAEzB7B,OAAQvC,GAIZkE,EAAEmve,kBAAmB,EACrBnve,EAAEshf,QAAUthf,EAAEqve,OAASoU,EACvBzjf,EAAEqvR,GAAK92Q,EACPvY,EAAEqM,GAAKhO,EACP2B,EAAE8+H,GAAKzkH,EACPra,EAAE4ue,QAAUnqW,EAEL6+W,GAAiBtjf,GAG5B,SAASkif,GAAY7jf,EAAOgc,EAAQ9B,EAAQksH,GACxC,OAAO8oW,GAAiBlve,EAAOgc,EAAQ9B,EAAQksH,GAAQ,GAre3D61T,EAAM6mD,wBAA0BtzR,EAC5B,iSAGA,SAAUxkM,GACNA,EAAOm1G,GAAK,IAAI7nH,KAAK0S,EAAOhd,IAAMgd,EAAOi4d,QAAU,OAAS,QAuLpEhnD,EAAM8nD,SAAW,aAGjB9nD,EAAM+nD,SAAW,aAySjB,IAAIqB,GAAe71R,EACX,sGACA,WACI,IAAI81R,EAAQzB,GAAY7/e,MAAM,KAAMpC,WACpC,OAAI9J,KAAKw5O,WAAag0Q,EAAMh0Q,UACjBg0Q,EAAQxtf,KAAOA,KAAOwtf,EAEtB7U,OAInB8U,GAAe/1R,EACX,sGACA,WACI,IAAI81R,EAAQzB,GAAY7/e,MAAM,KAAMpC,WACpC,OAAI9J,KAAKw5O,WAAag0Q,EAAMh0Q,UACjBg0Q,EAAQxtf,KAAOA,KAAOwtf,EAEtB7U,OAUvB,SAAS+U,GAAO5id,EAAI6id,GAChB,IAAIv+c,EAAKhlC,EAIT,GAHuB,IAAnBujf,EAAQ5jf,QAAgBknC,EAAQ08c,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQ5jf,OACT,OAAOgif,KAGX,IADA38c,EAAMu+c,EAAQ,GACTvjf,EAAI,EAAGA,EAAIujf,EAAQ5jf,SAAUK,EACzBujf,EAAQvjf,GAAGovO,YAAam0Q,EAAQvjf,GAAG0gC,GAAIsE,KACxCA,EAAMu+c,EAAQvjf,IAGtB,OAAOglC,EAIX,SAAShrB,KACL,IAAImJ,EAAO,GAAGxX,MAAMtJ,KAAK3C,UAAW,GAEpC,OAAO4jf,GAAO,WAAYnge,GAG9B,SAASrM,KACL,IAAIqM,EAAO,GAAGxX,MAAMtJ,KAAK3C,UAAW,GAEpC,OAAO4jf,GAAO,UAAWnge,GAG7B,IAAI7kB,GAAM,WACN,OAAO8X,KAAK9X,IAAM8X,KAAK9X,OAAS,IAAI8X,MAGpCote,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAGJ,SAASC,GAAgBhsf,GACrB,IAAIgC,EAEAuG,EADA0jf,GAAiB,EAErB,IAAKjqf,KAAOhC,EACR,GACIo1e,EAAWp1e,EAAGgC,MAEuB,IAAjCqJ,GAAQT,KAAKmhf,GAAU/pf,IACZ,MAAVhC,EAAEgC,IAAiBwf,MAAMxhB,EAAEgC,KAGhC,OAAO,EAIf,IAAKuG,EAAI,EAAGA,EAAIwjf,GAAS7jf,SAAUK,EAC/B,GAAIvI,EAAE+rf,GAASxjf,IAAK,CAChB,GAAI0jf,EACA,OAAO,EAEPv+e,WAAW1N,EAAE+rf,GAASxjf,OAAS+ye,GAAMt7e,EAAE+rf,GAASxjf,OAChD0jf,GAAiB,GAK7B,OAAO,EAGX,SAASC,KACL,OAAO/tf,KAAKq4e,SAGhB,SAAS2V,KACL,OAAOC,GAAerpW,KAG1B,SAASspW,GAAS9hf,GACd,IAAIwwe,EAAkBF,GAAqBtwe,GACvCyjP,EAAQ+sP,EAAgBxqd,MAAQ,EAChC+7d,EAAWvR,EAAgBwR,SAAW,EACtChuf,EAASw8e,EAAgBzqd,OAAS,EAClCy9N,EAAQgtP,EAAgBr6e,MAAQq6e,EAAgByR,SAAW,EAC3Dn0W,EAAO0iW,EAAgB1qd,KAAO,EAC9B4C,EAAQ8nd,EAAgB95e,MAAQ,EAChC+lC,EAAU+zc,EAAgB55e,QAAU,EACpCksG,EAAU0tY,EAAgBvqd,QAAU,EACpC88E,EAAeytY,EAAgB53I,aAAe,EAElDhlW,KAAKq4e,SAAWwV,GAAgBjR,GAGhC58e,KAAKsuf,eACAn/Y,EACS,IAAVD,EACU,IAAVrmE,EACQ,IAAR/T,EAAe,GAAK,GAGxB90B,KAAKuuf,OAASr0W,EAAe,EAAR01G,EAIrB5vP,KAAKsgf,SAAWlgf,EAAoB,EAAX+tf,EAAuB,GAARt+P,EAExC7vP,KAAKuwI,MAAQ,GAEbvwI,KAAKo5e,QAAU0O,KAEf9nf,KAAKwuf,UAGT,SAASC,GAAW7hd,GAChB,OAAOA,aAAeshd,GAG1B,SAASQ,GAAS/qf,GACd,OAAIA,EAAS,GACyB,EAA3B8N,KAAKC,OAAO,EAAI/N,GAEhB8N,KAAKC,MAAM/N,GAK1B,SAASgrf,GAAcC,EAAQC,EAAQC,GACnC,IAGI1kf,EAHAqgB,EAAMhZ,KAAK2S,IAAIwqe,EAAO7kf,OAAQ8kf,EAAO9kf,QACrCglf,EAAat9e,KAAKyuI,IAAI0uW,EAAO7kf,OAAS8kf,EAAO9kf,QAC7Cilf,EAAQ,EAEZ,IAAK5kf,EAAI,EAAGA,EAAIqgB,EAAKrgB,KAEZ0kf,GAAeF,EAAOxkf,KAAOykf,EAAOzkf,KACnC0kf,GAAe3R,GAAMyR,EAAOxkf,MAAQ+ye,GAAM0R,EAAOzkf,MAEnD4kf,IAGR,OAAOA,EAAQD,EAKnB,SAASrnf,GAAOqqF,EAAOxjC,GACnB0sb,EAAelpZ,EAAO,EAAG,GAAG,WACxB,IAAIrqF,EAAS1H,KAAKivf,YACdrU,EAAO,IAKX,OAJIlze,EAAS,IACTA,GAAUA,EACVkze,EAAO,KAGPA,EACAL,KAAY7ye,EAAS,IAAK,GAC1B6mD,EACAgsb,IAAW7ye,EAAS,GAAI,MAKpCA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbo3e,GAAc,IAAKH,IACnBG,GAAc,KAAMH,IACpBa,GAAc,CAAC,IAAK,OAAO,SAAUt3e,EAAOutE,EAAOviD,GAC/CA,EAAOi4d,SAAU,EACjBj4d,EAAO+ld,KAAOiW,GAAiBvQ,GAAkBz2e,MAQrD,IAAIinf,GAAc,kBAElB,SAASD,GAAiB9uG,EAASjxT,GAC/B,IACIiga,EACAtqW,EACAj8G,EAHA8zH,GAAWxtE,GAAU,IAAIhnF,MAAMi4Y,GAKnC,OAAgB,OAAZzjP,EACO,MAGXyyV,EAAQzyV,EAAQA,EAAQ5yJ,OAAS,IAAM,GACvC+6I,GAASsqW,EAAQ,IAAIjnf,MAAMgnf,KAAgB,CAAC,IAAK,EAAG,GACpDtmd,EAAuB,GAAXi8G,EAAM,GAAWq4V,GAAMr4V,EAAM,IAEtB,IAAZj8G,EAAgB,EAAiB,MAAbi8G,EAAM,GAAaj8G,GAAWA,GAI7D,SAASwmd,GAAgBnnf,EAAOwgB,GAC5B,IAAI0mB,EAAKmsH,EACT,OAAI7yI,EAAMwwd,QACN9pc,EAAM1mB,EAAMo0B,QACZy+G,GACKg+U,EAASrxe,IAAUiwC,EAAOjwC,GACrBA,EAAM+kB,UACN8+d,GAAY7jf,GAAO+kB,WAAamiB,EAAIniB,UAE9CmiB,EAAIi5F,GAAGh8B,QAAQj9D,EAAIi5F,GAAGp7G,UAAYsuI,GAClC4oS,EAAMm1C,aAAalqc,GAAK,GACjBA,GAEA28c,GAAY7jf,GAAO2oI,QAIlC,SAASy+W,GAAcztf,GAGnB,OAAQ4P,KAAKC,MAAM7P,EAAEwmI,GAAG5nH,qBAqB5B,SAAS8ue,GAAarnf,EAAOsnf,EAAeC,GACxC,IACIC,EADAhof,EAAS1H,KAAKm5e,SAAW,EAE7B,IAAKn5e,KAAKw5O,UACN,OAAgB,MAATtxO,EAAgBlI,KAAO4kJ,IAElC,GAAa,MAAT18I,EAAe,CACf,GAAqB,kBAAVA,GAEP,GADAA,EAAQgnf,GAAiBvQ,GAAkBz2e,GAC7B,OAAVA,EACA,OAAOlI,UAEJyR,KAAKyuI,IAAIh4I,GAAS,KAAOunf,IAChCvnf,GAAgB,IAwBpB,OAtBKlI,KAAKk5e,QAAUsW,IAChBE,EAAcJ,GAActvf,OAEhCA,KAAKm5e,QAAUjxe,EACflI,KAAKk5e,QAAS,EACK,MAAfwW,GACA1vf,KAAKmU,IAAIu7e,EAAa,KAEtBhof,IAAWQ,KACNsnf,GAAiBxvf,KAAK2vf,kBACvBC,GACI5vf,KACAiuf,GAAe/lf,EAAQR,EAAQ,KAC/B,GACA,GAEI1H,KAAK2vf,oBACb3vf,KAAK2vf,mBAAoB,EACzBxrD,EAAMm1C,aAAat5e,MAAM,GACzBA,KAAK2vf,kBAAoB,OAG1B3vf,KAEP,OAAOA,KAAKk5e,OAASxxe,EAAS4nf,GAActvf,MAIpD,SAAS6vf,GAAW3nf,EAAOsnf,GACvB,OAAa,MAATtnf,GACqB,kBAAVA,IACPA,GAASA,GAGblI,KAAKivf,UAAU/mf,EAAOsnf,GAEfxvf,OAECA,KAAKivf,YAIrB,SAASa,GAAeN,GACpB,OAAOxvf,KAAKivf,UAAU,EAAGO,GAG7B,SAASO,GAAiBP,GAStB,OARIxvf,KAAKk5e,SACLl5e,KAAKivf,UAAU,EAAGO,GAClBxvf,KAAKk5e,QAAS,EAEVsW,GACAxvf,KAAKgwf,SAASV,GAActvf,MAAO,MAGpCA,KAGX,SAASiwf,KACL,GAAiB,MAAbjwf,KAAKi5e,KACLj5e,KAAKivf,UAAUjvf,KAAKi5e,MAAM,GAAO,QAC9B,GAAuB,kBAAZj5e,KAAKkW,GAAiB,CACpC,IAAIqkW,EAAQ20I,GAAiBxQ,GAAa1+e,KAAKkW,IAClC,MAATqkW,EACAv6W,KAAKivf,UAAU10I,GAEfv6W,KAAKivf,UAAU,GAAG,GAG1B,OAAOjvf,KAGX,SAASkwf,GAAqBhof,GAC1B,QAAKlI,KAAKw5O,YAGVtxO,EAAQA,EAAQ6jf,GAAY7jf,GAAO+mf,YAAc,GAEzCjvf,KAAKivf,YAAc/mf,GAAS,KAAO,GAG/C,SAAS4mG,KACL,OACI9uG,KAAKivf,YAAcjvf,KAAK88C,QAAQ3qB,MAAM,GAAG88d,aACzCjvf,KAAKivf,YAAcjvf,KAAK88C,QAAQ3qB,MAAM,GAAG88d,YAIjD,SAASkB,KACL,IAAKzoZ,EAAY1nG,KAAKowf,eAClB,OAAOpwf,KAAKowf,cAGhB,IACI5C,EADA3jf,EAAI,GAcR,OAXAkve,EAAWlve,EAAG7J,MACd6J,EAAIujf,GAAcvjf,GAEdA,EAAEmD,IACFwgf,EAAQ3jf,EAAEqve,OAAS/B,EAAUtte,EAAEmD,IAAM++e,GAAYlif,EAAEmD,IACnDhN,KAAKowf,cACDpwf,KAAKw5O,WAAam1Q,GAAc9kf,EAAEmD,GAAIwgf,EAAMlwD,WAAa,GAE7Dt9b,KAAKowf,eAAgB,EAGlBpwf,KAAKowf,cAGhB,SAASC,KACL,QAAOrwf,KAAKw5O,YAAax5O,KAAKk5e,OAGlC,SAASoX,KACL,QAAOtwf,KAAKw5O,WAAYx5O,KAAKk5e,OAGjC,SAASqX,KACL,QAAOvwf,KAAKw5O,YAAYx5O,KAAKk5e,QAA2B,IAAjBl5e,KAAKm5e,SApJhDh1C,EAAMm1C,aAAe,aAwJrB,IAAIkX,GAAc,wDAIdC,GAAW,sKAEf,SAASxC,GAAe/lf,EAAOrE,GAC3B,IAGI+2e,EACAtwc,EACAomd,EALAtkf,EAAWlE,EAEXC,EAAQ,KAkEZ,OA7DIsmf,GAAWvmf,GACXkE,EAAW,CACP61e,GAAI/5e,EAAMomf,cACVrsf,EAAGiG,EAAMqmf,MACTpsf,EAAG+F,EAAMo4e,SAENlnU,EAASlxK,KAAWmb,OAAOnb,IAClCkE,EAAW,GACPvI,EACAuI,EAASvI,IAAQqE,EAEjBkE,EAAS+iG,cAAgBjnG,IAErBC,EAAQqof,GAAYntf,KAAK6E,KACjC0ye,EAAoB,MAAbzye,EAAM,IAAc,EAAI,EAC/BiE,EAAW,CACP/J,EAAG,EACHJ,EAAGk7e,GAAMh1e,EAAMy3e,KAAShF,EACxB74e,EAAGo7e,GAAMh1e,EAAM44V,KAAS65I,EACxB/4e,EAAGs7e,GAAMh1e,EAAM64V,KAAW45I,EAC1Bj5e,EAAGw7e,GAAMh1e,EAAMkmP,KAAWusP,EAC1BqH,GAAI9E,GAAMuR,GAA8B,IAArBvmf,EAAM84V,MAAwB25I,KAE7Czye,EAAQsof,GAASptf,KAAK6E,KAC9B0ye,EAAoB,MAAbzye,EAAM,IAAc,EAAI,EAC/BiE,EAAW,CACP/J,EAAGsuf,GAASxof,EAAM,GAAIyye,GACtBz4e,EAAGwuf,GAASxof,EAAM,GAAIyye,GACtB7ld,EAAG47d,GAASxof,EAAM,GAAIyye,GACtB34e,EAAG0uf,GAASxof,EAAM,GAAIyye,GACtB74e,EAAG4uf,GAASxof,EAAM,GAAIyye,GACtB/4e,EAAG8uf,GAASxof,EAAM,GAAIyye,GACtBj5e,EAAGgvf,GAASxof,EAAM,GAAIyye,KAEP,MAAZxue,EAEPA,EAAW,GAES,kBAAbA,IACN,SAAUA,GAAY,OAAQA,KAE/Bskf,EAAUE,GACN7E,GAAY3/e,EAASg9B,MACrB2id,GAAY3/e,EAAS8kY,KAGzB9kY,EAAW,GACXA,EAAS61e,GAAKyO,EAAQvhZ,aACtB/iG,EAASjK,EAAIuuf,EAAQtwf,QAGzBkqC,EAAM,IAAI4jd,GAAS9hf,GAEfqif,GAAWvmf,IAAU+ue,EAAW/ue,EAAO,aACvCoiC,EAAI8uc,QAAUlxe,EAAMkxe,SAGpBqV,GAAWvmf,IAAU+ue,EAAW/ue,EAAO,cACvCoiC,EAAI+tc,SAAWnwe,EAAMmwe,UAGlB/tc,EAMX,SAASqmd,GAASE,EAAKjW,GAInB,IAAIxrc,EAAMyhd,GAAOthf,WAAWshf,EAAIpue,QAAQ,IAAK,MAE7C,OAAQY,MAAM+rB,GAAO,EAAIA,GAAOwrc,EAGpC,SAASkW,GAA0BvtT,EAAMiqT,GACrC,IAAIp+c,EAAM,GAUV,OARAA,EAAIhvC,OACAotf,EAAMr7d,QAAUoxK,EAAKpxK,QAAyC,IAA9Bq7d,EAAMp7d,OAASmxK,EAAKnxK,QACpDmxK,EAAKzmJ,QAAQ3oC,IAAIi7B,EAAIhvC,OAAQ,KAAK22D,QAAQy2b,MACxCp+c,EAAIhvC,OAGVgvC,EAAI+/D,cAAgBq+Y,GAASjqT,EAAKzmJ,QAAQ3oC,IAAIi7B,EAAIhvC,OAAQ,KAEnDgvC,EAGX,SAASwhd,GAAkBrtT,EAAMiqT,GAC7B,IAAIp+c,EACJ,OAAMm0J,EAAKi2C,WAAag0Q,EAAMh0Q,WAI9Bg0Q,EAAQ6B,GAAgB7B,EAAOjqT,GAC3BA,EAAKwtT,SAASvD,GACdp+c,EAAM0hd,GAA0BvtT,EAAMiqT,IAEtCp+c,EAAM0hd,GAA0BtD,EAAOjqT,GACvCn0J,EAAI+/D,cAAgB//D,EAAI+/D,aACxB//D,EAAIhvC,QAAUgvC,EAAIhvC,QAGfgvC,GAZI,CAAE+/D,aAAc,EAAG/uG,OAAQ,GAgB1C,SAAS4wf,GAAY9ke,EAAWvkB,GAC5B,OAAO,SAAU6c,EAAK7b,GAClB,IAAIsof,EAAKhld,EAmBT,OAjBe,OAAXtjC,GAAoB0a,OAAO1a,KAC3Bixe,EACIjye,EACA,YACIA,EACA,uDACAA,EAHJ,kGAOJskC,EAAMznB,EACNA,EAAM7b,EACNA,EAASsjC,GAGbgld,EAAMhD,GAAezpe,EAAK7b,GAC1Binf,GAAY5vf,KAAMixf,EAAK/ke,GAChBlsB,MAIf,SAAS4vf,GAAYvtG,EAAKj2Y,EAAU8kf,EAAU5X,GAC1C,IAAInqY,EAAe/iG,EAASkif,cACxBp0W,EAAOw0W,GAAStif,EAASmif,OACzBnuf,EAASsuf,GAAStif,EAASk0e,SAE1Bj+F,EAAI7oK,YAKT8/P,EAA+B,MAAhBA,GAA8BA,EAEzCl5e,GACA6sG,GAASo1S,EAAKj7W,GAAIi7W,EAAK,SAAWjiZ,EAAS8wf,GAE3Ch3W,GACAsjW,GAAMn7F,EAAK,OAAQj7W,GAAIi7W,EAAK,QAAUnoQ,EAAOg3W,GAE7C/hZ,GACAkzS,EAAIh6Q,GAAGh8B,QAAQg2S,EAAIh6Q,GAAGp7G,UAAYkiF,EAAe+hZ,GAEjD5X,GACAn1C,EAAMm1C,aAAaj3F,EAAKnoQ,GAAQ95I,IA5FxC6tf,GAAenjd,GAAKojd,GAAS3kf,UAC7B0kf,GAAehpe,QAAU+oe,GA+FzB,IAAI75e,GAAM68e,GAAY,EAAG,OACrBhB,GAAWgB,IAAa,EAAG,YAE/B,SAAS5lV,GAASljK,GACd,MAAwB,kBAAVA,GAAsBA,aAAiBrI,OAIzD,SAASsxf,GAAcjpf,GACnB,OACIqxe,EAASrxe,IACTiwC,EAAOjwC,IACPkjK,GAASljK,IACTkxK,EAASlxK,IACTkpf,GAAsBlpf,IACtBmpf,GAAoBnpf,IACV,OAAVA,QACUvC,IAAVuC,EAIR,SAASmpf,GAAoBnpf,GACzB,IA4BIkC,EACA+sL,EA7BAm6T,EAAa7oZ,EAASvgG,KAAWgve,EAAchve,GAC/Cqpf,GAAe,EACf3ue,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAKR,IAAKxY,EAAI,EAAGA,EAAIwY,EAAW7Y,OAAQK,GAAK,EACpC+sL,EAAWv0K,EAAWxY,GACtBmnf,EAAeA,GAAgBta,EAAW/ue,EAAOivL,GAGrD,OAAOm6T,GAAcC,EAGzB,SAASH,GAAsBlpf,GAC3B,IAAIspf,EAAYvgd,EAAQ/oC,GACpBupf,GAAe,EAOnB,OANID,IACAC,EAGkB,IAFdvpf,EAAMiwB,QAAO,SAAUC,GACnB,OAAQghJ,EAAShhJ,IAASgzI,GAASljK,MACpC6B,QAEJynf,GAAaC,EAGxB,SAASC,GAAexpf,GACpB,IAUIkC,EACA+sL,EAXAm6T,EAAa7oZ,EAASvgG,KAAWgve,EAAchve,GAC/Cqpf,GAAe,EACf3ue,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAKxY,EAAI,EAAGA,EAAIwY,EAAW7Y,OAAQK,GAAK,EACpC+sL,EAAWv0K,EAAWxY,GACtBmnf,EAAeA,GAAgBta,EAAW/ue,EAAOivL,GAGrD,OAAOm6T,GAAcC,EAGzB,SAASI,GAAkBC,EAAUlpf,GACjC,IAAI6yJ,EAAOq2V,EAASr2V,KAAK7yJ,EAAK,QAAQ,GACtC,OAAO6yJ,GAAQ,EACT,WACAA,GAAQ,EACR,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,WAGV,SAASs2V,GAAW1wa,EAAMg5J,GAEG,IAArBrwO,UAAUC,SACLD,UAAU,GAGJqnf,GAAcrnf,UAAU,KAC/Bq3E,EAAOr3E,UAAU,GACjBqwO,OAAUx0O,GACH+rf,GAAe5nf,UAAU,MAChCqwO,EAAUrwO,UAAU,GACpBq3E,OAAOx7E,IAPPw7E,OAAOx7E,EACPw0O,OAAUx0O,IAWlB,IAAI+C,EAAMy4E,GAAQ4qa,KACd+F,EAAMzC,GAAgB3mf,EAAK1I,MAAM+xf,QAAQ,OACzC7te,EAASigb,EAAM6tD,eAAehyf,KAAM8xf,IAAQ,WAC5C3uf,EACIg3O,IACC2nK,EAAW3nK,EAAQj2N,IACdi2N,EAAQj2N,GAAQzX,KAAKzM,KAAM0I,GAC3ByxO,EAAQj2N,IAEtB,OAAOlkB,KAAKkkB,OACR/gB,GAAUnD,KAAKo7e,aAAan6e,SAASijB,EAAQlkB,KAAM+rf,GAAYrjf,KAIvE,SAASo0C,KACL,OAAO,IAAIu8b,EAAOr5e,MAGtB,SAAS+2D,GAAQ7uD,EAAOiiG,GACpB,IAAI8nZ,EAAa1Y,EAASrxe,GAASA,EAAQ6jf,GAAY7jf,GACvD,SAAMlI,KAAKw5O,YAAay4Q,EAAWz4Q,aAGnCrvI,EAAQsyY,GAAetyY,IAAU,cACnB,gBAAVA,EACOnqG,KAAKitB,UAAYgle,EAAWhle,UAE5Bgle,EAAWhle,UAAYjtB,KAAK88C,QAAQi1c,QAAQ5nZ,GAAOl9E,WAIlE,SAAS8je,GAAS7of,EAAOiiG,GACrB,IAAI8nZ,EAAa1Y,EAASrxe,GAASA,EAAQ6jf,GAAY7jf,GACvD,SAAMlI,KAAKw5O,YAAay4Q,EAAWz4Q,aAGnCrvI,EAAQsyY,GAAetyY,IAAU,cACnB,gBAAVA,EACOnqG,KAAKitB,UAAYgle,EAAWhle,UAE5BjtB,KAAK88C,QAAQo1c,MAAM/nZ,GAAOl9E,UAAYgle,EAAWhle,WAIhE,SAASkle,GAAU/od,EAAM8nW,EAAI/mS,EAAOioZ,GAChC,IAAIC,EAAY9Y,EAASnwc,GAAQA,EAAO2id,GAAY3id,GAChDkpd,EAAU/Y,EAASroG,GAAMA,EAAK66G,GAAY76G,GAC9C,SAAMlxY,KAAKw5O,WAAa64Q,EAAU74Q,WAAa84Q,EAAQ94Q,aAGvD44Q,EAAcA,GAAe,MAEL,MAAnBA,EAAY,GACPpyf,KAAK+2D,QAAQs7b,EAAWloZ,IACvBnqG,KAAK+wf,SAASsB,EAAWloZ,MACZ,MAAnBioZ,EAAY,GACPpyf,KAAK+wf,SAASuB,EAASnoZ,IACtBnqG,KAAK+2D,QAAQu7b,EAASnoZ,KAIrC,SAASqkP,GAAOtmV,EAAOiiG,GACnB,IACIooZ,EADAN,EAAa1Y,EAASrxe,GAASA,EAAQ6jf,GAAY7jf,GAEvD,SAAMlI,KAAKw5O,YAAay4Q,EAAWz4Q,aAGnCrvI,EAAQsyY,GAAetyY,IAAU,cACnB,gBAAVA,EACOnqG,KAAKitB,YAAcgle,EAAWhle,WAErCsle,EAAUN,EAAWhle,UAEjBjtB,KAAK88C,QAAQi1c,QAAQ5nZ,GAAOl9E,WAAasle,GACzCA,GAAWvyf,KAAK88C,QAAQo1c,MAAM/nZ,GAAOl9E,YAKjD,SAASule,GAActqf,EAAOiiG,GAC1B,OAAOnqG,KAAKwuV,OAAOtmV,EAAOiiG,IAAUnqG,KAAK+2D,QAAQ7uD,EAAOiiG,GAG5D,SAASsoZ,GAAevqf,EAAOiiG,GAC3B,OAAOnqG,KAAKwuV,OAAOtmV,EAAOiiG,IAAUnqG,KAAK+wf,SAAS7of,EAAOiiG,GAG7D,SAASoxD,GAAKrzJ,EAAOiiG,EAAOuoZ,GACxB,IAAIC,EAAMC,EAAWzvf,EAErB,IAAKnD,KAAKw5O,UACN,OAAO50F,IAKX,GAFA+tW,EAAOtD,GAAgBnnf,EAAOlI,OAEzB2yf,EAAKn5Q,UACN,OAAO50F,IAOX,OAJAguW,EAAoD,KAAvCD,EAAK1D,YAAcjvf,KAAKivf,aAErC9kZ,EAAQsyY,GAAetyY,GAEfA,GACJ,IAAK,OACDhnG,EAAS0vf,GAAU7yf,KAAM2yf,GAAQ,GACjC,MACJ,IAAK,QACDxvf,EAAS0vf,GAAU7yf,KAAM2yf,GACzB,MACJ,IAAK,UACDxvf,EAAS0vf,GAAU7yf,KAAM2yf,GAAQ,EACjC,MACJ,IAAK,SACDxvf,GAAUnD,KAAO2yf,GAAQ,IACzB,MACJ,IAAK,SACDxvf,GAAUnD,KAAO2yf,GAAQ,IACzB,MACJ,IAAK,OACDxvf,GAAUnD,KAAO2yf,GAAQ,KACzB,MACJ,IAAK,MACDxvf,GAAUnD,KAAO2yf,EAAOC,GAAa,MACrC,MACJ,IAAK,OACDzvf,GAAUnD,KAAO2yf,EAAOC,GAAa,OACrC,MACJ,QACIzvf,EAASnD,KAAO2yf,EAGxB,OAAOD,EAAUvvf,EAAS+5e,GAAS/5e,GAGvC,SAAS0vf,GAAUh4d,EAAG/xB,GAClB,GAAI+xB,EAAEvQ,OAASxhB,EAAEwhB,OAGb,OAAQuoe,GAAU/pf,EAAG+xB,GAGzB,IAGIi4d,EACAC,EAJAC,EAAyC,IAAvBlqf,EAAEspB,OAASyI,EAAEzI,SAAgBtpB,EAAEqpB,QAAU0I,EAAE1I,SAE7D3tB,EAASq2B,EAAEiiB,QAAQ3oC,IAAI6+e,EAAgB,UAe3C,OAXIlqf,EAAItE,EAAS,GACbsuf,EAAUj4d,EAAEiiB,QAAQ3oC,IAAI6+e,EAAiB,EAAG,UAE5CD,GAAUjqf,EAAItE,IAAWA,EAASsuf,KAElCA,EAAUj4d,EAAEiiB,QAAQ3oC,IAAI6+e,EAAiB,EAAG,UAE5CD,GAAUjqf,EAAItE,IAAWsuf,EAAUtuf,MAI9Bwuf,EAAiBD,IAAW,EAMzC,SAASr5e,KACL,OAAO1Z,KAAK88C,QAAQ16B,OAAO,MAAM8B,OAAO,oCAG5C,SAAS6gI,GAAYkuW,GACjB,IAAKjzf,KAAKw5O,UACN,OAAO,KAEX,IAAI69P,GAAqB,IAAf4b,EACNpxf,EAAIw1e,EAAMr3e,KAAK88C,QAAQu6b,MAAQr3e,KACnC,OAAI6B,EAAEuwB,OAAS,GAAKvwB,EAAEuwB,OAAS,KACpBmpd,EACH15e,EACAw1e,EACM,iCACA,gCAGVv1F,EAAWthY,KAAKjX,UAAUw7I,aAEtBsyV,EACOr3e,KAAKkzf,SAASnuW,cAEd,IAAIvkI,KAAKxgB,KAAKitB,UAA+B,GAAnBjtB,KAAKivf,YAAmB,KACpDlqW,cACAtiI,QAAQ,IAAK84d,EAAa15e,EAAG,MAGnC05e,EACH15e,EACAw1e,EAAM,+BAAiC,8BAU/C,SAAS8b,KACL,IAAKnzf,KAAKw5O,UACN,MAAO,qBAAuBx5O,KAAKkW,GAAK,OAE5C,IAEIohW,EACAllV,EACAghe,EACAC,EALAlY,EAAO,SACPmY,EAAO,GAcX,OATKtzf,KAAKqwf,YACNlV,EAA4B,IAArBn7e,KAAKivf,YAAoB,aAAe,mBAC/CqE,EAAO,KAEXh8I,EAAS,IAAM6jI,EAAO,MACtB/od,EAAO,GAAKpyB,KAAKoyB,QAAUpyB,KAAKoyB,QAAU,KAAO,OAAS,SAC1Dghe,EAAW,wBACXC,EAASC,EAAO,OAETtzf,KAAKkkB,OAAOozV,EAASllV,EAAOghe,EAAWC,GAGlD,SAASnve,GAAOoqE,GACPA,IACDA,EAActuF,KAAKuwf,QACbpsD,EAAMovD,iBACNpvD,EAAMqvD,eAEhB,IAAIrwf,EAASo4e,EAAav7e,KAAMsuF,GAChC,OAAOtuF,KAAKo7e,aAAa7rZ,WAAWpsF,GAGxC,SAASimC,GAAK+3C,EAAMv9E,GAChB,OACI5D,KAAKw5O,YACH+/P,EAASp4Z,IAASA,EAAKq4J,WAAcuyQ,GAAY5qa,GAAMq4J,WAElDy0Q,GAAe,CAAE/8G,GAAIlxY,KAAMopC,KAAM+3C,IACnC/+D,OAAOpiB,KAAKoiB,UACZqxe,UAAU7vf,GAER5D,KAAKo7e,aAAaxrG,cAIjC,SAAS8jH,GAAQ9vf,GACb,OAAO5D,KAAKopC,KAAK2id,KAAenof,GAGpC,SAASstY,GAAG/vT,EAAMv9E,GACd,OACI5D,KAAKw5O,YACH+/P,EAASp4Z,IAASA,EAAKq4J,WAAcuyQ,GAAY5qa,GAAMq4J,WAElDy0Q,GAAe,CAAE7kd,KAAMppC,KAAMkxY,GAAI/vT,IACnC/+D,OAAOpiB,KAAKoiB,UACZqxe,UAAU7vf,GAER5D,KAAKo7e,aAAaxrG,cAIjC,SAAS+jH,GAAM/vf,GACX,OAAO5D,KAAKkxY,GAAG66G,KAAenof,GAMlC,SAASwe,GAAOve,GACZ,IAAI+vf,EAEJ,YAAYjuf,IAAR9B,EACO7D,KAAKo5e,QAAQuO,OAEpBiM,EAAgB9L,GAAUjkf,GACL,MAAjB+vf,IACA5zf,KAAKo5e,QAAUwa,GAEZ5zf,MA1Hfmkc,EAAMqvD,cAAgB,uBACtBrvD,EAAMovD,iBAAmB,yBA6HzB,IAAIM,GAAOn8R,EACP,mJACA,SAAU7zN,GACN,YAAY8B,IAAR9B,EACO7D,KAAKo7e,aAELp7e,KAAKoiB,OAAOve,MAK/B,SAASu3e,KACL,OAAOp7e,KAAKo5e,QAGhB,IAAI0a,GAAgB,IAChBnpZ,GAAgB,GAAKmpZ,GACrBC,GAAc,GAAKppZ,GACnBqpZ,GAAmB,QAAwBD,GAG/C,SAASE,GAAMC,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,EAG9C,SAASC,GAAiB/xf,EAAGR,EAAGI,GAE5B,OAAII,EAAI,KAAOA,GAAK,EAET,IAAIme,KAAKne,EAAI,IAAKR,EAAGI,GAAK+xf,GAE1B,IAAIxze,KAAKne,EAAGR,EAAGI,GAAGgrB,UAIjC,SAASone,GAAehyf,EAAGR,EAAGI,GAE1B,OAAII,EAAI,KAAOA,GAAK,EAETme,KAAK4uF,IAAI/sG,EAAI,IAAKR,EAAGI,GAAK+xf,GAE1Bxze,KAAK4uF,IAAI/sG,EAAGR,EAAGI,GAI9B,SAAS8vf,GAAQ5nZ,GACb,IAAIhpB,EAAMmza,EAEV,GADAnqZ,EAAQsyY,GAAetyY,QACTxkG,IAAVwkG,GAAiC,gBAAVA,IAA4BnqG,KAAKw5O,UACxD,OAAOx5O,KAKX,OAFAs0f,EAAct0f,KAAKk5e,OAASmb,GAAiBD,GAErCjqZ,GACJ,IAAK,OACDhpB,EAAOmza,EAAYt0f,KAAKoyB,OAAQ,EAAG,GACnC,MACJ,IAAK,UACD+uD,EAAOmza,EACHt0f,KAAKoyB,OACLpyB,KAAKmyB,QAAWnyB,KAAKmyB,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACDgvD,EAAOmza,EAAYt0f,KAAKoyB,OAAQpyB,KAAKmyB,QAAS,GAC9C,MACJ,IAAK,OACDgvD,EAAOmza,EACHt0f,KAAKoyB,OACLpyB,KAAKmyB,QACLnyB,KAAKsqB,OAAStqB,KAAKoyP,WAEvB,MACJ,IAAK,UACDjxK,EAAOmza,EACHt0f,KAAKoyB,OACLpyB,KAAKmyB,QACLnyB,KAAKsqB,QAAUtqB,KAAKu0f,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDpza,EAAOmza,EAAYt0f,KAAKoyB,OAAQpyB,KAAKmyB,QAASnyB,KAAKsqB,QACnD,MACJ,IAAK,OACD62D,EAAOnhF,KAAKqoI,GAAGp7G,UACfk0D,GAAQ8ya,GACJ9ya,GAAQnhF,KAAKk5e,OAAS,EAAIl5e,KAAKivf,YAActkZ,IAC7CopZ,IAEJ,MACJ,IAAK,SACD5ya,EAAOnhF,KAAKqoI,GAAGp7G,UACfk0D,GAAQ8ya,GAAM9ya,EAAMwpB,IACpB,MACJ,IAAK,SACDxpB,EAAOnhF,KAAKqoI,GAAGp7G,UACfk0D,GAAQ8ya,GAAM9ya,EAAM2ya,IACpB,MAKR,OAFA9zf,KAAKqoI,GAAGh8B,QAAQlrB,GAChBgjX,EAAMm1C,aAAat5e,MAAM,GAClBA,KAGX,SAASkyf,GAAM/nZ,GACX,IAAIhpB,EAAMmza,EAEV,GADAnqZ,EAAQsyY,GAAetyY,QACTxkG,IAAVwkG,GAAiC,gBAAVA,IAA4BnqG,KAAKw5O,UACxD,OAAOx5O,KAKX,OAFAs0f,EAAct0f,KAAKk5e,OAASmb,GAAiBD,GAErCjqZ,GACJ,IAAK,OACDhpB,EAAOmza,EAAYt0f,KAAKoyB,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACD+uD,EACImza,EACIt0f,KAAKoyB,OACLpyB,KAAKmyB,QAAWnyB,KAAKmyB,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACDgvD,EAAOmza,EAAYt0f,KAAKoyB,OAAQpyB,KAAKmyB,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACDgvD,EACImza,EACIt0f,KAAKoyB,OACLpyB,KAAKmyB,QACLnyB,KAAKsqB,OAAStqB,KAAKoyP,UAAY,GAC/B,EACR,MACJ,IAAK,UACDjxK,EACImza,EACIt0f,KAAKoyB,OACLpyB,KAAKmyB,QACLnyB,KAAKsqB,QAAUtqB,KAAKu0f,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDpza,EAAOmza,EAAYt0f,KAAKoyB,OAAQpyB,KAAKmyB,QAASnyB,KAAKsqB,OAAS,GAAK,EACjE,MACJ,IAAK,OACD62D,EAAOnhF,KAAKqoI,GAAGp7G,UACfk0D,GACI4ya,GACAE,GACI9ya,GAAQnhF,KAAKk5e,OAAS,EAAIl5e,KAAKivf,YAActkZ,IAC7CopZ,IAEJ,EACJ,MACJ,IAAK,SACD5ya,EAAOnhF,KAAKqoI,GAAGp7G,UACfk0D,GAAQwpB,GAAgBspZ,GAAM9ya,EAAMwpB,IAAiB,EACrD,MACJ,IAAK,SACDxpB,EAAOnhF,KAAKqoI,GAAGp7G,UACfk0D,GAAQ2ya,GAAgBG,GAAM9ya,EAAM2ya,IAAiB,EACrD,MAKR,OAFA9zf,KAAKqoI,GAAGh8B,QAAQlrB,GAChBgjX,EAAMm1C,aAAat5e,MAAM,GAClBA,KAGX,SAASitB,KACL,OAAOjtB,KAAKqoI,GAAGp7G,UAAkC,KAArBjtB,KAAKm5e,SAAW,GAGhD,SAASqb,KACL,OAAO/if,KAAK6sD,MAAMt+D,KAAKitB,UAAY,KAGvC,SAASime,KACL,OAAO,IAAI1ye,KAAKxgB,KAAKitB,WAGzB,SAASqwa,KACL,IAAIz7b,EAAI7B,KACR,MAAO,CACH6B,EAAEuwB,OACFvwB,EAAEswB,QACFtwB,EAAEyoB,OACFzoB,EAAEiB,OACFjB,EAAEmB,SACFnB,EAAEwwB,SACFxwB,EAAEmjW,eAIV,SAASj2L,KACL,IAAIltK,EAAI7B,KACR,MAAO,CACH6vP,MAAOhuP,EAAEuwB,OACThyB,OAAQyB,EAAEswB,QACV7H,KAAMzoB,EAAEyoB,OACRwK,MAAOjzB,EAAEizB,QACT+T,QAAShnC,EAAEgnC,UACXqmE,QAASrtG,EAAEqtG,UACXC,aAActtG,EAAEstG,gBAIxB,SAAS73D,KAEL,OAAOt3C,KAAKw5O,UAAYx5O,KAAK+kJ,cAAgB,KAGjD,SAAS0vW,KACL,OAAOj7Q,EAAQx5O,MAGnB,SAAS00f,KACL,OAAOpqJ,EAAO,GAAI6tI,EAAgBn4e,OAGtC,SAAS20f,KACL,OAAOxc,EAAgBn4e,MAAMgkD,SAGjC,SAAS4wc,KACL,MAAO,CACH1sf,MAAOlI,KAAKkW,GACZgO,OAAQlkB,KAAK2oI,GACbvmH,OAAQpiB,KAAKo5e,QACbkU,MAAOttf,KAAKk5e,OACZ5qW,OAAQtuI,KAAKy4e,SAuDrB,SAASoc,GAAWhzf,EAAGqiB,GACnB,IAAI9Z,EACA/B,EACAiiB,EACA9iB,EAAOxH,KAAK80f,OAAShN,GAAU,MAAMgN,MACzC,IAAK1qf,EAAI,EAAG/B,EAAIb,EAAKuC,OAAQK,EAAI/B,IAAK+B,EAAG,CACrC,cAAe5C,EAAK4C,GAAG3C,OACnB,IAAK,SAED6iB,EAAO65a,EAAM38b,EAAK4C,GAAG3C,OAAOsqf,QAAQ,OACpCvqf,EAAK4C,GAAG3C,MAAQ6iB,EAAK2C,UACrB,MAGR,cAAezlB,EAAK4C,GAAGtC,OACnB,IAAK,YACDN,EAAK4C,GAAGtC,MAASC,IACjB,MACJ,IAAK,SAEDuiB,EAAO65a,EAAM38b,EAAK4C,GAAGtC,OAAOiqf,QAAQ,OAAO9ke,UAC3CzlB,EAAK4C,GAAGtC,MAAQwiB,EAAK2C,UACrB,OAGZ,OAAOzlB,EAGX,SAASutf,GAAgBC,EAAS9we,EAAQoqH,GACtC,IAAIlkI,EACA/B,EAEAV,EACAE,EACAD,EAHAJ,EAAOxH,KAAKwH,OAMhB,IAFAwtf,EAAUA,EAAQr7W,cAEbvvI,EAAI,EAAG/B,EAAIb,EAAKuC,OAAQK,EAAI/B,IAAK+B,EAKlC,GAJAzC,EAAOH,EAAK4C,GAAGzC,KAAKgyI,cACpB9xI,EAAOL,EAAK4C,GAAGvC,KAAK8xI,cACpB/xI,EAASJ,EAAK4C,GAAGxC,OAAO+xI,cAEpBrL,EACA,OAAQpqH,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAIrc,IAASmtf,EACT,OAAOxtf,EAAK4C,GAEhB,MAEJ,IAAK,OACD,GAAIzC,IAASqtf,EACT,OAAOxtf,EAAK4C,GAEhB,MAEJ,IAAK,QACD,GAAIxC,IAAWotf,EACX,OAAOxtf,EAAK4C,GAEhB,WAEL,GAAI,CAACzC,EAAME,EAAMD,GAAQsF,QAAQ8nf,IAAY,EAChD,OAAOxtf,EAAK4C,GAKxB,SAAS6qf,GAAsB7jJ,EAAKh/U,GAChC,IAAIgxJ,EAAMguL,EAAI3pW,OAAS2pW,EAAItpW,MAAQ,GAAM,EACzC,YAAanC,IAATysB,EACO+xa,EAAM/yF,EAAI3pW,OAAO2qB,OAEjB+xa,EAAM/yF,EAAI3pW,OAAO2qB,QAAUA,EAAOg/U,EAAI1pW,QAAU07K,EAI/D,SAAS8xU,KACL,IAAI9qf,EACA/B,EACAmc,EACAhd,EAAOxH,KAAKo7e,aAAa5ze,OAC7B,IAAK4C,EAAI,EAAG/B,EAAIb,EAAKuC,OAAQK,EAAI/B,IAAK+B,EAAG,CAIrC,GAFAoa,EAAMxkB,KAAK88C,QAAQi1c,QAAQ,OAAO9ke,UAE9BzlB,EAAK4C,GAAG3C,OAAS+c,GAAOA,GAAOhd,EAAK4C,GAAGtC,MACvC,OAAON,EAAK4C,GAAGzC,KAEnB,GAAIH,EAAK4C,GAAGtC,OAAS0c,GAAOA,GAAOhd,EAAK4C,GAAG3C,MACvC,OAAOD,EAAK4C,GAAGzC,KAIvB,MAAO,GAGX,SAASwtf,KACL,IAAI/qf,EACA/B,EACAmc,EACAhd,EAAOxH,KAAKo7e,aAAa5ze,OAC7B,IAAK4C,EAAI,EAAG/B,EAAIb,EAAKuC,OAAQK,EAAI/B,IAAK+B,EAAG,CAIrC,GAFAoa,EAAMxkB,KAAK88C,QAAQi1c,QAAQ,OAAO9ke,UAE9BzlB,EAAK4C,GAAG3C,OAAS+c,GAAOA,GAAOhd,EAAK4C,GAAGtC,MACvC,OAAON,EAAK4C,GAAGxC,OAEnB,GAAIJ,EAAK4C,GAAGtC,OAAS0c,GAAOA,GAAOhd,EAAK4C,GAAG3C,MACvC,OAAOD,EAAK4C,GAAGxC,OAIvB,MAAO,GAGX,SAASwtf,KACL,IAAIhrf,EACA/B,EACAmc,EACAhd,EAAOxH,KAAKo7e,aAAa5ze,OAC7B,IAAK4C,EAAI,EAAG/B,EAAIb,EAAKuC,OAAQK,EAAI/B,IAAK+B,EAAG,CAIrC,GAFAoa,EAAMxkB,KAAK88C,QAAQi1c,QAAQ,OAAO9ke,UAE9BzlB,EAAK4C,GAAG3C,OAAS+c,GAAOA,GAAOhd,EAAK4C,GAAGtC,MACvC,OAAON,EAAK4C,GAAGvC,KAEnB,GAAIL,EAAK4C,GAAGtC,OAAS0c,GAAOA,GAAOhd,EAAK4C,GAAG3C,MACvC,OAAOD,EAAK4C,GAAGvC,KAIvB,MAAO,GAGX,SAASwtf,KACL,IAAIjrf,EACA/B,EACA+6K,EACA5+J,EACAhd,EAAOxH,KAAKo7e,aAAa5ze,OAC7B,IAAK4C,EAAI,EAAG/B,EAAIb,EAAKuC,OAAQK,EAAI/B,IAAK+B,EAMlC,GALAg5K,EAAM57K,EAAK4C,GAAG3C,OAASD,EAAK4C,GAAGtC,MAAQ,GAAM,EAG7C0c,EAAMxkB,KAAK88C,QAAQi1c,QAAQ,OAAO9ke,UAG7BzlB,EAAK4C,GAAG3C,OAAS+c,GAAOA,GAAOhd,EAAK4C,GAAGtC,OACvCN,EAAK4C,GAAGtC,OAAS0c,GAAOA,GAAOhd,EAAK4C,GAAG3C,MAExC,OACKzH,KAAKoyB,OAAS+xa,EAAM38b,EAAK4C,GAAG3C,OAAO2qB,QAAUgxJ,EAC9C57K,EAAK4C,GAAG1C,OAKpB,OAAO1H,KAAKoyB,OAGhB,SAASkje,GAActW,GAInB,OAHK/H,EAAWj3e,KAAM,mBAClBu1f,GAAiB9of,KAAKzM,MAEnBg/e,EAAWh/e,KAAKw1f,eAAiBx1f,KAAKy1f,WAGjD,SAASC,GAAc1W,GAInB,OAHK/H,EAAWj3e,KAAM,mBAClBu1f,GAAiB9of,KAAKzM,MAEnBg/e,EAAWh/e,KAAK21f,eAAiB31f,KAAKy1f,WAGjD,SAASG,GAAgB5W,GAIrB,OAHK/H,EAAWj3e,KAAM,qBAClBu1f,GAAiB9of,KAAKzM,MAEnBg/e,EAAWh/e,KAAK61f,iBAAmB71f,KAAKy1f,WAGnD,SAASK,GAAa9W,EAAU58d,GAC5B,OAAOA,EAAOsze,cAAc1W,GAGhC,SAAS+W,GAAa/W,EAAU58d,GAC5B,OAAOA,EAAOkze,cAActW,GAGhC,SAASgX,GAAehX,EAAU58d,GAC9B,OAAOA,EAAOwze,gBAAgB5W,GAGlC,SAASiX,GAAoBjX,EAAU58d,GACnC,OAAOA,EAAO8ze,sBAAwB1X,GAG1C,SAAS+W,KACL,IAIInrf,EACA/B,EALA8tf,EAAa,GACbC,EAAa,GACbC,EAAe,GACf1U,EAAc,GAGdn6e,EAAOxH,KAAKwH,OAEhB,IAAK4C,EAAI,EAAG/B,EAAIb,EAAKuC,OAAQK,EAAI/B,IAAK+B,EAClCgsf,EAAW1hf,KAAKyqe,GAAY33e,EAAK4C,GAAGzC,OACpCwuf,EAAWzhf,KAAKyqe,GAAY33e,EAAK4C,GAAGvC,OACpCwuf,EAAa3hf,KAAKyqe,GAAY33e,EAAK4C,GAAGxC,SAEtC+5e,EAAYjte,KAAKyqe,GAAY33e,EAAK4C,GAAGzC,OACrCg6e,EAAYjte,KAAKyqe,GAAY33e,EAAK4C,GAAGvC,OACrC85e,EAAYjte,KAAKyqe,GAAY33e,EAAK4C,GAAGxC,SAGzC5H,KAAKy1f,WAAa,IAAI5+d,OAAO,KAAO8qd,EAAYhte,KAAK,KAAO,IAAK,KACjE3U,KAAKw1f,eAAiB,IAAI3+d,OAAO,KAAOu/d,EAAWzhf,KAAK,KAAO,IAAK,KACpE3U,KAAK21f,eAAiB,IAAI9+d,OAAO,KAAOs/d,EAAWxhf,KAAK,KAAO,IAAK,KACpE3U,KAAK61f,iBAAmB,IAAIh/d,OACxB,KAAOw/d,EAAa1hf,KAAK,KAAO,IAChC,KAcR,SAAS2hf,GAAuBvka,EAAOm/C,GACnC+pW,EAAe,EAAG,CAAClpZ,EAAOA,EAAMhoF,QAAS,EAAGmnI,GA4ChD,SAASqlX,GAAeruf,GACpB,OAAOsuf,GAAqB/pf,KACxBzM,KACAkI,EACAlI,KAAKuC,OACLvC,KAAKoyP,UACLpyP,KAAKo7e,aAAa8H,MAAM1gf,IACxBxC,KAAKo7e,aAAa8H,MAAMzgf,KAIhC,SAASg0f,GAAkBvuf,GACvB,OAAOsuf,GAAqB/pf,KACxBzM,KACAkI,EACAlI,KAAKquf,UACLruf,KAAKu0f,aACL,EACA,GAIR,SAASmC,KACL,OAAO3T,GAAY/if,KAAKoyB,OAAQ,EAAG,GAGvC,SAASuke,KACL,OAAO5T,GAAY/if,KAAK42f,cAAe,EAAG,GAG9C,SAASC,KACL,IAAIC,EAAW92f,KAAKo7e,aAAa8H,MACjC,OAAOH,GAAY/if,KAAKoyB,OAAQ0ke,EAASt0f,IAAKs0f,EAASr0f,KAG3D,SAASs0f,KACL,IAAID,EAAW92f,KAAKo7e,aAAa8H,MACjC,OAAOH,GAAY/if,KAAK0rf,WAAYoL,EAASt0f,IAAKs0f,EAASr0f,KAG/D,SAAS+zf,GAAqBtuf,EAAO3F,EAAM6vP,EAAS5vP,EAAKC,GACrD,IAAIu0f,EACJ,OAAa,MAAT9uf,EACO26e,GAAW7if,KAAMwC,EAAKC,GAAK2vB,MAElC4ke,EAAcjU,GAAY76e,EAAO1F,EAAKC,GAClCF,EAAOy0f,IACPz0f,EAAOy0f,GAEJC,GAAWxqf,KAAKzM,KAAMkI,EAAO3F,EAAM6vP,EAAS5vP,EAAKC,IAIhE,SAASw0f,GAAWvL,EAAUnpf,EAAM6vP,EAAS5vP,EAAKC,GAC9C,IAAIy0f,EAAgB1U,GAAmBkJ,EAAUnpf,EAAM6vP,EAAS5vP,EAAKC,GACjE6nB,EAAO43d,GAAcgV,EAAc9ke,KAAM,EAAG8ke,EAAc/qZ,WAK9D,OAHAnsG,KAAKoyB,KAAK9H,EAAK4xI,kBACfl8J,KAAKmyB,MAAM7H,EAAK8xI,eAChBp8J,KAAKsqB,KAAKA,EAAK+xI,cACRr8J,KAwBX,SAASm3f,GAAcjvf,GACnB,OAAgB,MAATA,EACDuJ,KAAKsxC,MAAM/iD,KAAKmyB,QAAU,GAAK,GAC/BnyB,KAAKmyB,MAAoB,GAAbjqB,EAAQ,GAAUlI,KAAKmyB,QAAU,GAvavD8od,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpC6D,GAAc,IAAKgX,IACnBhX,GAAc,KAAMgX,IACpBhX,GAAc,MAAOgX,IACrBhX,GAAc,OAAQiX,IACtBjX,GAAc,QAASkX,IAEvBxW,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,UAAU,SAC/Ct3e,EACAutE,EACAviD,EACA6+D,GAEA,IAAIq/Q,EAAMl+U,EAAOkmd,QAAQge,UAAUlvf,EAAO6pF,EAAO7+D,EAAOuld,SACpDrnI,EACA+mI,EAAgBjld,GAAQk+U,IAAMA,EAE9B+mI,EAAgBjld,GAAQ0kd,WAAa1ve,KAI7C42e,GAAc,IAAKN,IACnBM,GAAc,KAAMN,IACpBM,GAAc,MAAON,IACrBM,GAAc,OAAQN,IACtBM,GAAc,KAAMmX,IAEpBzW,GAAc,CAAC,IAAK,KAAM,MAAO,QAAS7pW,IAC1C6pW,GAAc,CAAC,OAAO,SAAUt3e,EAAOutE,EAAOviD,EAAQ6+D,GAClD,IAAI5pF,EACA+qB,EAAOkmd,QAAQ8c,uBACf/tf,EAAQD,EAAMC,MAAM+qB,EAAOkmd,QAAQ8c,uBAGnChje,EAAOkmd,QAAQnxe,oBACfwtE,EAAMkgE,IAAQziH,EAAOkmd,QAAQnxe,oBAAoBC,EAAOC,GAExDstE,EAAMkgE,IAAQvtI,SAASF,EAAO,OA4OtC+ye,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOj7e,KAAK0rf,WAAa,OAG7BzQ,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOj7e,KAAK42f,cAAgB,OAOhCN,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhCha,GAAa,WAAY,MACzBA,GAAa,cAAe,MAI5BQ,GAAgB,WAAY,GAC5BA,GAAgB,cAAe,GAI/BgC,GAAc,IAAKL,IACnBK,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,QAASP,GAAWN,IAElCwB,GAAkB,CAAC,OAAQ,QAAS,OAAQ,UAAU,SAClDv3e,EACA3F,EACA2wB,EACA6+D,GAEAxvF,EAAKwvF,EAAM8iE,OAAO,EAAG,IAAMsoV,GAAMj1e,MAGrCu3e,GAAkB,CAAC,KAAM,OAAO,SAAUv3e,EAAO3F,EAAM2wB,EAAQ6+D,GAC3DxvF,EAAKwvF,GAASoyW,EAAM09C,kBAAkB35e,MAsE1C+ye,EAAe,IAAK,EAAG,KAAM,WAI7BqB,GAAa,UAAW,KAIxBQ,GAAgB,UAAW,GAI3BgC,GAAc,IAAKjB,IACnB2B,GAAc,KAAK,SAAUt3e,EAAOutE,GAChCA,EAAMmgE,IAA8B,GAApBunW,GAAMj1e,GAAS,MAanC+ye,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCqB,GAAa,OAAQ,KAGrBQ,GAAgB,OAAQ,GAIxBgC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAM,SAAUE,EAAU58d,GAEpC,OAAO48d,EACD58d,EAAO23d,yBAA2B33d,EAAO43d,cACzC53d,EAAO03d,kCAGjB0F,GAAc,CAAC,IAAK,MAAOI,IAC3BJ,GAAc,MAAM,SAAUt3e,EAAOutE,GACjCA,EAAMmqa,IAAQzC,GAAMj1e,EAAMC,MAAM+1e,IAAW,OAK/C,IAAImZ,GAAmB/Z,GAAW,QAAQ,GAyB1C,SAASga,GAAgBpvf,GACrB,IAAIikG,EACA16F,KAAKC,OACA1R,KAAK88C,QAAQi1c,QAAQ,OAAS/xf,KAAK88C,QAAQi1c,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAAT7pf,EAAgBikG,EAAYnsG,KAAKmU,IAAIjM,EAAQikG,EAAW,KA1BnE8uY,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CqB,GAAa,YAAa,OAG1BQ,GAAgB,YAAa,GAI7BgC,GAAc,MAAOT,IACrBS,GAAc,OAAQf,IACtByB,GAAc,CAAC,MAAO,SAAS,SAAUt3e,EAAOutE,EAAOviD,GACnDA,EAAOs4d,WAAarO,GAAMj1e,MAiB9B+ye,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCqB,GAAa,SAAU,KAIvBQ,GAAgB,SAAU,IAI1BgC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B0B,GAAc,CAAC,IAAK,MAAOx+I,IAI3B,IAAIu2J,GAAeja,GAAW,WAAW,GAIzCrC,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCqB,GAAa,SAAU,KAIvBQ,GAAgB,SAAU,IAI1BgC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B0B,GAAc,CAAC,IAAK,MAAOnxP,IAI3B,IA8CIt8J,GAAOyla,GA9CPC,GAAena,GAAW,WAAW,GA+CzC,IA3CArC,EAAe,IAAK,EAAG,GAAG,WACtB,SAAUj7e,KAAKglW,cAAgB,QAGnCi2I,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,SAAUj7e,KAAKglW,cAAgB,OAGnCi2I,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAC9B,OAA4B,GAArBj7e,KAAKglW,iBAEhBi2I,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WAC/B,OAA4B,IAArBj7e,KAAKglW,iBAEhBi2I,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAChC,OAA4B,IAArBj7e,KAAKglW,iBAEhBi2I,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACjC,OAA4B,IAArBj7e,KAAKglW,iBAEhBi2I,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WAClC,OAA4B,IAArBj7e,KAAKglW,iBAEhBi2I,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACnC,OAA4B,IAArBj7e,KAAKglW,iBAKhBs3I,GAAa,cAAe,MAI5BQ,GAAgB,cAAe,IAI/BgC,GAAc,IAAKT,GAAWR,IAC9BiB,GAAc,KAAMT,GAAWP,IAC/BgB,GAAc,MAAOT,GAAWN,IAG3BhsZ,GAAQ,OAAQA,GAAMhoF,QAAU,EAAGgoF,IAAS,IAC7C+sZ,GAAc/sZ,GAAOysZ,IAGzB,SAASkZ,GAAQxvf,EAAOutE,GACpBA,EAAMwrR,IAAek8I,GAAuB,KAAhB,KAAOj1e,IAGvC,IAAK6pF,GAAQ,IAAKA,GAAMhoF,QAAU,EAAGgoF,IAAS,IAC1CytZ,GAAcztZ,GAAO2la,IAYzB,SAASC,KACL,OAAO33f,KAAKk5e,OAAS,MAAQ,GAGjC,SAAS0e,KACL,OAAO53f,KAAKk5e,OAAS,6BAA+B,GAdxDse,GAAoBla,GAAW,gBAAgB,GAI/CrC,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAI4c,GAAQxe,EAAO9ve,UAwGnB,SAASuuf,GAAW5vf,GAChB,OAAO6jf,GAAoB,IAAR7jf,GAGvB,SAAS6vf,KACL,OAAOhM,GAAY7/e,MAAM,KAAMpC,WAAWkuf,YAG9C,SAASC,GAAmB9oa,GACxB,OAAOA,EA/GX0oa,GAAM1jf,IAAMA,GACZ0jf,GAAM52f,SAAW4wf,GACjBgG,GAAM/6c,MAAQA,GACd+6c,GAAMt8V,KAAOA,GACbs8V,GAAM3F,MAAQA,GACd2F,GAAM3ze,OAASA,GACf2ze,GAAMzud,KAAOA,GACbyud,GAAMnE,QAAUA,GAChBmE,GAAM3mH,GAAKA,GACX2mH,GAAMlE,MAAQA,GACdkE,GAAMzwd,IAAMq2c,GACZoa,GAAMlD,UAAYA,GAClBkD,GAAM9gc,QAAUA,GAChB8gc,GAAM9G,SAAWA,GACjB8G,GAAM1F,UAAYA,GAClB0F,GAAMrpK,OAASA,GACfqpK,GAAMrF,cAAgBA,GACtBqF,GAAMpF,eAAiBA,GACvBoF,GAAMr+Q,QAAUi7Q,GAChBoD,GAAMhE,KAAOA,GACbgE,GAAMz1e,OAASA,GACfy1e,GAAMzc,WAAaA,GACnByc,GAAM32e,IAAMuse,GACZoK,GAAMzze,IAAMmpe,GACZsK,GAAMnD,aAAeA,GACrBmD,GAAMrid,IAAMkoc,GACZma,GAAM9F,QAAUA,GAChB8F,GAAM7H,SAAWA,GACjB6H,GAAMv6D,QAAUA,GAChBu6D,GAAM9oV,SAAWA,GACjB8oV,GAAM3E,OAASA,GACf2E,GAAM9yW,YAAcA,GACpB8yW,GAAM1E,QAAUA,GACM,qBAAXv7T,QAAwC,MAAdA,OAAOwiD,MACxCy9Q,GAAMjgU,OAAOwiD,IAAI,+BAAiC,WAC9C,MAAO,UAAYp6O,KAAKkkB,SAAW,MAG3C2ze,GAAMvgd,OAASA,GACfugd,GAAMn+e,SAAWA,GACjBm+e,GAAMrD,KAAOA,GACbqD,GAAM5qe,QAAUA,GAChB4qe,GAAMjD,aAAeA,GACrBiD,GAAM7C,QAAUE,GAChB2C,GAAMK,UAAY/C,GAClB0C,GAAMM,QAAU/C,GAChByC,GAAMO,QAAU/C,GAChBwC,GAAMzle,KAAO0vd,GACb+V,GAAMzgW,WAAa2qV,GACnB8V,GAAMnM,SAAW6K,GACjBsB,GAAMjB,YAAcH,GACpBoB,GAAMzJ,QAAUyJ,GAAM1J,SAAWgJ,GACjCU,GAAM1le,MAAQ+ud,GACd2W,GAAM9mT,YAAcC,GACpB6mT,GAAMt1f,KAAOs1f,GAAMjoQ,MAAQ0zP,GAC3BuU,GAAMxJ,QAAUwJ,GAAMQ,SAAW9U,GACjCsU,GAAM9U,YAAc8T,GACpBgB,GAAMS,gBAAkBvB,GACxBc,GAAMU,eAAiB7B,GACvBmB,GAAMW,sBAAwB7B,GAC9BkB,GAAMvte,KAAO+se,GACbQ,GAAM3le,IAAM2le,GAAM39W,KAAOirW,GACzB0S,GAAMzlQ,QAAUgzP,GAChByS,GAAMtD,WAAalP,GACnBwS,GAAM1rZ,UAAYmrZ,GAClBO,GAAM/0f,KAAO+0f,GAAM/ie,MAAQ+xd,GAC3BgR,GAAM70f,OAAS60f,GAAMhvd,QAAU0ud,GAC/BM,GAAMxle,OAASwle,GAAM3oZ,QAAUuoZ,GAC/BI,GAAM7yJ,YAAc6yJ,GAAM1oZ,aAAeqoZ,GACzCK,GAAM5I,UAAYM,GAClBsI,GAAMxgB,IAAMyY,GACZ+H,GAAMhnX,MAAQk/W,GACd8H,GAAMG,UAAY/H,GAClB4H,GAAM3H,qBAAuBA,GAC7B2H,GAAMY,MAAQ3pZ,GACd+oZ,GAAMxH,QAAUA,GAChBwH,GAAMvH,YAAcA,GACpBuH,GAAMtH,MAAQA,GACdsH,GAAMvK,MAAQiD,GACdsH,GAAMa,SAAWf,GACjBE,GAAMc,SAAWf,GACjBC,GAAM35a,MAAQw5I,EACV,kDACA2/R,IAEJQ,GAAMz3f,OAASs3N,EACX,mDACAwpR,IAEJ2W,GAAMhoQ,MAAQn4B,EACV,iDACAoqR,IAEJ+V,GAAMvE,KAAO57R,EACT,2GACAm4R,IAEJgI,GAAMe,aAAelhS,EACjB,0GACAy4R,IAeJ,IAAI0I,GAAUze,EAAO7we,UAuCrB,SAASuvf,GAAM50e,EAAQpP,EAAOi2B,EAAOu4Z,GACjC,IAAIlhb,EAAS0le,KACTzQ,EAAMF,IAAY3hc,IAAI8tZ,EAAQxub,GAClC,OAAOsN,EAAO2oB,GAAOssc,EAAKnzd,GAG9B,SAAS60e,GAAe70e,EAAQpP,EAAOi2B,GAQnC,GAPIquI,EAASl1J,KACTpP,EAAQoP,EACRA,OAASve,GAGbue,EAASA,GAAU,GAEN,MAATpP,EACA,OAAOgkf,GAAM50e,EAAQpP,EAAOi2B,EAAO,SAGvC,IAAI3gC,EACA48Q,EAAM,GACV,IAAK58Q,EAAI,EAAGA,EAAI,GAAIA,IAChB48Q,EAAI58Q,GAAK0uf,GAAM50e,EAAQ9Z,EAAG2gC,EAAO,SAErC,OAAOi8O,EAWX,SAASgyO,GAAiBC,EAAc/0e,EAAQpP,EAAOi2B,GACvB,mBAAjBkud,GACH7/U,EAASl1J,KACTpP,EAAQoP,EACRA,OAASve,GAGbue,EAASA,GAAU,KAEnBA,EAAS+0e,EACTnkf,EAAQoP,EACR+0e,GAAe,EAEX7/U,EAASl1J,KACTpP,EAAQoP,EACRA,OAASve,GAGbue,EAASA,GAAU,IAGvB,IAEI9Z,EAFAgY,EAAS0le,KACT/zd,EAAQkle,EAAe72e,EAAO8ge,MAAM1gf,IAAM,EAE1CwkR,EAAM,GAEV,GAAa,MAATlyQ,EACA,OAAOgkf,GAAM50e,GAASpP,EAAQif,GAAS,EAAGgX,EAAO,OAGrD,IAAK3gC,EAAI,EAAGA,EAAI,EAAGA,IACf48Q,EAAI58Q,GAAK0uf,GAAM50e,GAAS9Z,EAAI2pB,GAAS,EAAGgX,EAAO,OAEnD,OAAOi8O,EAGX,SAASkyO,GAAWh1e,EAAQpP,GACxB,OAAOikf,GAAe70e,EAAQpP,EAAO,UAGzC,SAASqkf,GAAgBj1e,EAAQpP,GAC7B,OAAOikf,GAAe70e,EAAQpP,EAAO,eAGzC,SAASskf,GAAaH,EAAc/0e,EAAQpP,GACxC,OAAOkkf,GAAiBC,EAAc/0e,EAAQpP,EAAO,YAGzD,SAASukf,GAAkBJ,EAAc/0e,EAAQpP,GAC7C,OAAOkkf,GAAiBC,EAAc/0e,EAAQpP,EAAO,iBAGzD,SAASwkf,GAAgBL,EAAc/0e,EAAQpP,GAC3C,OAAOkkf,GAAiBC,EAAc/0e,EAAQpP,EAAO,eA5HzD+jf,GAAQ53f,SAAWA,EACnB43f,GAAQn4f,eAAiBA,EACzBm4f,GAAQjpH,YAAcA,EACtBipH,GAAQt1f,QAAUA,EAClBs1f,GAAQvpa,SAAW2oa,GACnBY,GAAQtpa,WAAa0oa,GACrBY,GAAQr3f,aAAeA,GACvBq3f,GAAQxc,WAAaA,GACrBwc,GAAQrjd,IAAMA,EACdqjd,GAAQrxf,KAAOqtf,GACfgE,GAAQzB,UAAYrC,GACpB8D,GAAQtM,gBAAkB0I,GAC1B4D,GAAQnD,cAAgBA,GACxBmD,GAAQvD,cAAgBA,GACxBuD,GAAQjD,gBAAkBA,GAE1BiD,GAAQz4f,OAASigf,GACjBwY,GAAQv4f,YAAcigf,GACtBsY,GAAQxke,YAAc0sd,GACtB8X,GAAQvke,YAAcA,GACtBuke,GAAQrke,iBAAmBA,GAC3Bqke,GAAQt2f,KAAO0gf,GACf4V,GAAQU,eAAiBlW,GACzBwV,GAAQ56a,eAAiBmla,GAEzByV,GAAQt4f,SAAW8jf,GACnBwU,GAAQp4f,YAAcgkf,GACtBoU,GAAQr4f,cAAgB+jf,GACxBsU,GAAQp/R,cAAgBurR,GAExB6T,GAAQ/U,cAAgBA,GACxB+U,GAAQhV,mBAAqBA,GAC7BgV,GAAQjV,iBAAmBA,GAE3BiV,GAAQpwf,KAAO69e,GACfuS,GAAQ91f,SAAW+jf,GA4FnBe,GAAmB,KAAM,CACrBrgf,KAAM,CACF,CACIC,MAAO,aACPK,MAAQC,IACRL,OAAQ,EACRC,KAAM,cACNC,OAAQ,KACRC,KAAM,MAEV,CACIJ,MAAO,aACPK,OAAQC,IACRL,OAAQ,EACRC,KAAM,gBACNC,OAAQ,KACRC,KAAM,OAGdvE,uBAAwB,uBACxBC,QAAS,SAAUI,GACf,IAAImF,EAAInF,EAAS,GACbR,EACmC,IAA/Bg6e,GAAOx5e,EAAS,IAAO,IACjB,KACM,IAANmF,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KACd,OAAOnF,EAASR,KAMxBghc,EAAM0vD,KAAOn8R,EACT,wDACAmwR,IAEJ1jD,EAAMq1D,SAAW9hS,EACb,gEACAowR,IAGJ,IAAI2R,GAAUhof,KAAKyuI,IAEnB,SAASA,KACL,IAAI/rH,EAAOn0B,KAAKuwI,MAahB,OAXAvwI,KAAKsuf,cAAgBmL,GAAQz5f,KAAKsuf,eAClCtuf,KAAKuuf,MAAQkL,GAAQz5f,KAAKuuf,OAC1Bvuf,KAAKsgf,QAAUmZ,GAAQz5f,KAAKsgf,SAE5Bnsd,EAAKg7E,aAAesqZ,GAAQtle,EAAKg7E,cACjCh7E,EAAK+6E,QAAUuqZ,GAAQtle,EAAK+6E,SAC5B/6E,EAAK0U,QAAU4wd,GAAQtle,EAAK0U,SAC5B1U,EAAKW,MAAQ2ke,GAAQtle,EAAKW,OAC1BX,EAAK/zB,OAASq5f,GAAQtle,EAAK/zB,QAC3B+zB,EAAK07N,MAAQ4pQ,GAAQtle,EAAK07N,OAEnB7vP,KAGX,SAAS05f,GAActtf,EAAUlE,EAAOjC,EAAOimB,GAC3C,IAAIshe,EAAQS,GAAe/lf,EAAOjC,GAMlC,OAJAmG,EAASkif,eAAiBpie,EAAYshe,EAAMc,cAC5Clif,EAASmif,OAASrie,EAAYshe,EAAMe,MACpCnif,EAASk0e,SAAWp0d,EAAYshe,EAAMlN,QAE/Bl0e,EAASoif,UAIpB,SAASnnC,GAAMn/c,EAAOjC,GAClB,OAAOyzf,GAAc15f,KAAMkI,EAAOjC,EAAO,GAI7C,SAAS0zf,GAAWzxf,EAAOjC,GACvB,OAAOyzf,GAAc15f,KAAMkI,EAAOjC,GAAQ,GAG9C,SAAS2zf,GAAQj2f,GACb,OAAIA,EAAS,EACF8N,KAAK6sD,MAAM36D,GAEX8N,KAAKsxC,KAAKp/C,GAIzB,SAASk2f,KACL,IAII3qZ,EACArmE,EACA/T,EACA+6N,EACAiqQ,EARA3qZ,EAAenvG,KAAKsuf,cACpBp0W,EAAOl6I,KAAKuuf,MACZnuf,EAASJ,KAAKsgf,QACdnsd,EAAOn0B,KAAKuwI,MAgDhB,OArCSphC,GAAgB,GAAK+qC,GAAQ,GAAK95I,GAAU,GAC5C+uG,GAAgB,GAAK+qC,GAAQ,GAAK95I,GAAU,IAGjD+uG,GAAuD,MAAvCyqZ,GAAQG,GAAa35f,GAAU85I,GAC/CA,EAAO,EACP95I,EAAS,GAKb+zB,EAAKg7E,aAAeA,EAAe,IAEnCD,EAAUguY,GAAS/tY,EAAe,KAClCh7E,EAAK+6E,QAAUA,EAAU,GAEzBrmE,EAAUq0c,GAAShuY,EAAU,IAC7B/6E,EAAK0U,QAAUA,EAAU,GAEzB/T,EAAQood,GAASr0c,EAAU,IAC3B1U,EAAKW,MAAQA,EAAQ,GAErBolH,GAAQgjW,GAASpod,EAAQ,IAGzBgle,EAAiB5c,GAAS8c,GAAa9/W,IACvC95I,GAAU05f,EACV5/W,GAAQ0/W,GAAQG,GAAaD,IAG7BjqQ,EAAQqtP,GAAS98e,EAAS,IAC1BA,GAAU,GAEV+zB,EAAK+lH,KAAOA,EACZ/lH,EAAK/zB,OAASA,EACd+zB,EAAK07N,MAAQA,EAEN7vP,KAGX,SAASg6f,GAAa9/W,GAGlB,OAAe,KAAPA,EAAe,OAG3B,SAAS6/W,GAAa35f,GAElB,OAAiB,OAATA,EAAmB,KAG/B,SAAS65f,GAAG9vZ,GACR,IAAKnqG,KAAKw5O,UACN,OAAO50F,IAEX,IAAI1K,EACA95I,EACA+uG,EAAenvG,KAAKsuf,cAIxB,GAFAnkZ,EAAQsyY,GAAetyY,GAET,UAAVA,GAA+B,YAAVA,GAAiC,SAAVA,EAG5C,OAFA+vC,EAAOl6I,KAAKuuf,MAAQp/Y,EAAe,MACnC/uG,EAASJ,KAAKsgf,QAAU0Z,GAAa9/W,GAC7B/vC,GACJ,IAAK,QACD,OAAO/pG,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADA85I,EAAOl6I,KAAKuuf,MAAQ98e,KAAKC,MAAMqof,GAAa/5f,KAAKsgf,UACzCn2Y,GACJ,IAAK,OACD,OAAO+vC,EAAO,EAAI/qC,EAAe,OACrC,IAAK,MACD,OAAO+qC,EAAO/qC,EAAe,MACjC,IAAK,OACD,OAAc,GAAP+qC,EAAY/qC,EAAe,KACtC,IAAK,SACD,OAAc,KAAP+qC,EAAc/qC,EAAe,IACxC,IAAK,SACD,OAAc,MAAP+qC,EAAe/qC,EAAe,IAEzC,IAAK,cACD,OAAO19F,KAAK6sD,MAAa,MAAP47E,GAAgB/qC,EACtC,QACI,MAAM,IAAIh8D,MAAM,gBAAkBg3D,IAMlD,SAAS+vZ,KACL,OAAKl6f,KAAKw5O,UAINx5O,KAAKsuf,cACQ,MAAbtuf,KAAKuuf,MACJvuf,KAAKsgf,QAAU,GAAM,OACK,QAA3BnD,GAAMn9e,KAAKsgf,QAAU,IANd17V,IAUf,SAASu1W,GAAOlhH,GACZ,OAAO,WACH,OAAOj5Y,KAAKi6f,GAAGhhH,IAIvB,IAAImhH,GAAiBD,GAAO,MACxBE,GAAYF,GAAO,KACnBG,GAAYH,GAAO,KACnBI,GAAUJ,GAAO,KACjBK,GAASL,GAAO,KAChBM,GAAUN,GAAO,KACjBO,GAAWP,GAAO,KAClBQ,GAAaR,GAAO,KACpBS,GAAUT,GAAO,KAErB,SAASU,KACL,OAAO5M,GAAejuf,MAG1B,SAAS86f,GAAM3wZ,GAEX,OADAA,EAAQsyY,GAAetyY,GAChBnqG,KAAKw5O,UAAYx5O,KAAKmqG,EAAQ,OAASy6C,IAGlD,SAASm2W,GAAWpzf,GAChB,OAAO,WACH,OAAO3H,KAAKw5O,UAAYx5O,KAAKuwI,MAAM5oI,GAAQi9I,KAInD,IAAIz1C,GAAe4rZ,GAAW,gBAC1B7rZ,GAAU6rZ,GAAW,WACrBlyd,GAAUkyd,GAAW,WACrBjme,GAAQime,GAAW,SACnB7gX,GAAO6gX,GAAW,QAClB36f,GAAS26f,GAAW,UACpBlrQ,GAAQkrQ,GAAW,SAEvB,SAASnrQ,KACL,OAAOstP,GAASl9e,KAAKk6I,OAAS,GAGlC,IAAIxoI,GAAQD,KAAKC,MACbspf,GAAa,CACTp5f,GAAI,GACJD,EAAG,GACHE,EAAG,GACHE,EAAG,GACHE,EAAG,GACH8yB,EAAG,KACH5yB,EAAG,IAIX,SAAS84f,GAAkB9ra,EAAQxrF,EAAQC,EAAeE,EAAUse,GAChE,OAAOA,EAAO5gB,aAAamC,GAAU,IAAKC,EAAeurF,EAAQrrF,GAGrE,SAASo3f,GAAeC,EAAgBv3f,EAAeo3f,EAAY54e,GAC/D,IAAIhW,EAAW6hf,GAAekN,GAAgBj7W,MAC1ChxC,EAAUx9F,GAAMtF,EAAS6tf,GAAG,MAC5Bpxd,EAAUn3B,GAAMtF,EAAS6tf,GAAG,MAC5Bnle,EAAQpjB,GAAMtF,EAAS6tf,GAAG,MAC1B//W,EAAOxoI,GAAMtF,EAAS6tf,GAAG,MACzB75f,EAASsR,GAAMtF,EAAS6tf,GAAG,MAC3BrqQ,EAAQl+O,GAAMtF,EAAS6tf,GAAG,MAC1BpqQ,EAAQn+O,GAAMtF,EAAS6tf,GAAG,MAC1Bp/d,EACKq0E,GAAW8rZ,EAAWp5f,IAAM,CAAC,IAAKstG,IAClCA,EAAU8rZ,EAAWr5f,GAAK,CAAC,KAAMutG,IACjCrmE,GAAW,GAAK,CAAC,MACjBA,EAAUmyd,EAAWn5f,GAAK,CAAC,KAAMgnC,IACjC/T,GAAS,GAAK,CAAC,MACfA,EAAQkme,EAAWj5f,GAAK,CAAC,KAAM+yB,IAC/BolH,GAAQ,GAAK,CAAC,MACdA,EAAO8gX,EAAW/4f,GAAK,CAAC,KAAMi4I,GAgBvC,OAdoB,MAAhB8gX,EAAWjme,IACX8F,EACIA,GACC+0N,GAAS,GAAK,CAAC,MACfA,EAAQorQ,EAAWjme,GAAK,CAAC,KAAM66N,IAExC/0N,EAAIA,GACCz6B,GAAU,GAAK,CAAC,MAChBA,EAAS46f,EAAW74f,GAAK,CAAC,KAAM/B,IAChCyvP,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,GAEpCh1N,EAAE,GAAKj3B,EACPi3B,EAAE,IAAMsge,EAAiB,EACzBtge,EAAE,GAAKzY,EACA64e,GAAkB/uf,MAAM,KAAM2uB,GAIzC,SAASuge,GAA2BC,GAChC,YAAyB11f,IAArB01f,EACO3pf,GAEqB,oBAArB2pf,IACP3pf,GAAQ2pf,GACD,GAMf,SAASC,GAA4BC,EAAWtmZ,GAC5C,YAA8BtvG,IAA1Bq1f,GAAWO,UAGD51f,IAAVsvG,EACO+lZ,GAAWO,IAEtBP,GAAWO,GAAatmZ,EACN,MAAdsmZ,IACAP,GAAWp5f,GAAKqzG,EAAQ,IAErB,IAGX,SAASw+Y,GAAS+H,EAAeC,GAC7B,IAAKz7f,KAAKw5O,UACN,OAAOx5O,KAAKo7e,aAAaxrG,cAG7B,IAEIxtX,EACAjf,EAHAu4f,GAAa,EACbx+c,EAAK89c,GAyBT,MArB6B,kBAAlBQ,IACPC,EAAgBD,EAChBA,GAAgB,GAES,mBAAlBA,IACPE,EAAaF,GAEY,kBAAlBC,IACPv+c,EAAKn0C,OAAOiqD,OAAO,GAAIgoc,GAAYS,GACZ,MAAnBA,EAAc95f,GAAiC,MAApB85f,EAAc75f,KACzCs7C,EAAGt7C,GAAK65f,EAAc95f,EAAI,IAIlCygB,EAASpiB,KAAKo7e,aACdj4e,EAAS+3f,GAAel7f,MAAO07f,EAAYx+c,EAAI96B,GAE3Cs5e,IACAv4f,EAASif,EAAOi6d,YAAYr8e,KAAMmD,IAG/Bif,EAAOmtE,WAAWpsF,GAG7B,IAAIw4f,GAAQlqf,KAAKyuI,IAEjB,SAAS06V,GAAKhse,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,EAGjC,SAASgtf,KAQL,IAAK57f,KAAKw5O,UACN,OAAOx5O,KAAKo7e,aAAaxrG,cAG7B,IAGI/mW,EACA/T,EACA+6N,EACAluP,EAEAk6f,EACAC,EACAC,EACAC,EAXA9sZ,EAAUysZ,GAAM37f,KAAKsuf,eAAiB,IACtCp0W,EAAOyhX,GAAM37f,KAAKuuf,OAClBnuf,EAASu7f,GAAM37f,KAAKsgf,SAKpB2b,EAAQj8f,KAAKq6f,YAMjB,OAAK4B,GAOLpzd,EAAUq0c,GAAShuY,EAAU,IAC7Bp6E,EAAQood,GAASr0c,EAAU,IAC3BqmE,GAAW,GACXrmE,GAAW,GAGXgnN,EAAQqtP,GAAS98e,EAAS,IAC1BA,GAAU,GAGVuB,EAAIutG,EAAUA,EAAQvuE,QAAQ,GAAGle,QAAQ,SAAU,IAAM,GAEzDo5e,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAASlhB,GAAK56e,KAAKsgf,WAAa1F,GAAKqhB,GAAS,IAAM,GACpDF,EAAWnhB,GAAK56e,KAAKuuf,SAAW3T,GAAKqhB,GAAS,IAAM,GACpDD,EAAUphB,GAAK56e,KAAKsuf,iBAAmB1T,GAAKqhB,GAAS,IAAM,GAGvDJ,EACA,KACChsQ,EAAQisQ,EAASjsQ,EAAQ,IAAM,KAC/BzvP,EAAS07f,EAAS17f,EAAS,IAAM,KACjC85I,EAAO6hX,EAAW7hX,EAAO,IAAM,KAC/BplH,GAAS+T,GAAWqmE,EAAU,IAAM,KACpCp6E,EAAQkne,EAAUlne,EAAQ,IAAM,KAChC+T,EAAUmzd,EAAUnzd,EAAU,IAAM,KACpCqmE,EAAU8sZ,EAAUr6f,EAAI,IAAM,KA9BxB,MAkCf,IAAIu6f,GAAUhO,GAAS3kf,UAwGvB,OAtGA2yf,GAAQ1iR,QAAUu0Q,GAClBmO,GAAQh8W,IAAMA,GACdg8W,GAAQ/nf,IAAMkzc,GACd60C,GAAQlM,SAAW2J,GACnBuC,GAAQjC,GAAKA,GACbiC,GAAQ9B,eAAiBA,GACzB8B,GAAQ7B,UAAYA,GACpB6B,GAAQ5B,UAAYA,GACpB4B,GAAQ3B,QAAUA,GAClB2B,GAAQ1B,OAASA,GACjB0B,GAAQzB,QAAUA,GAClByB,GAAQxB,SAAWA,GACnBwB,GAAQvB,WAAaA,GACrBuB,GAAQtB,QAAUA,GAClBsB,GAAQjve,QAAUite,GAClBgC,GAAQ1N,QAAUqL,GAClBqC,GAAQp/c,MAAQ+9c,GAChBqB,GAAQ90d,IAAM0zd,GACdoB,GAAQ/sZ,aAAeA,GACvB+sZ,GAAQhtZ,QAAUA,GAClBgtZ,GAAQrzd,QAAUA,GAClBqzd,GAAQpne,MAAQA,GAChBone,GAAQhiX,KAAOA,GACfgiX,GAAQtsQ,MAAQA,GAChBssQ,GAAQ97f,OAASA,GACjB87f,GAAQrsQ,MAAQA,GAChBqsQ,GAAQzI,SAAWA,GACnByI,GAAQn3W,YAAc62W,GACtBM,GAAQxif,SAAWkif,GACnBM,GAAQ5kd,OAASskd,GACjBM,GAAQ95e,OAASA,GACjB85e,GAAQ9gB,WAAaA,GAErB8gB,GAAQC,YAAczkS,EAClB,sFACAkkS,IAEJM,GAAQrI,KAAOA,GAIf5Y,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1B6D,GAAc,IAAKL,IACnBK,GAAc,IAAKF,IACnBY,GAAc,KAAK,SAAUt3e,EAAOutE,EAAOviD,GACvCA,EAAOm1G,GAAK,IAAI7nH,KAAyB,IAApBjR,WAAWrH,OAEpCs3e,GAAc,KAAK,SAAUt3e,EAAOutE,EAAOviD,GACvCA,EAAOm1G,GAAK,IAAI7nH,KAAK28d,GAAMj1e;;AAK/Bi8b,EAAMlja,QAAU,SAEhB+1c,EAAgB+U,IAEhB5nD,EAAMr5Z,GAAK+sd,GACX1zD,EAAM//a,IAAMA,GACZ+/a,EAAMjjb,IAAMA,GACZijb,EAAMz7b,IAAMA,GACZy7b,EAAMkzC,IAAMF,EACZhzC,EAAMqwD,KAAOsD,GACb3zD,EAAM/jc,OAAS84f,GACf/0D,EAAMhsZ,OAASA,EACfgsZ,EAAM/hb,OAASyle,GACf1jD,EAAMl/a,QAAU0zd,EAChBx0C,EAAM/3b,SAAW6hf,GACjB9pD,EAAMo1C,SAAWA,EACjBp1C,EAAM5jc,SAAW64f,GACjBj1D,EAAM6zD,UAAYD,GAClB5zD,EAAMi3C,WAAa0M,GACnB3jD,EAAMsqD,WAAaA,GACnBtqD,EAAM7jc,YAAc64f,GACpBh1D,EAAM1jc,YAAc64f,GACpBn1D,EAAMhkc,aAAeA,GACrBgkc,EAAM6jD,aAAeA,GACrB7jD,EAAM8iD,QAAUiB,GAChB/jD,EAAM3jc,cAAgB64f,GACtBl1D,EAAMs4C,eAAiBA,GACvBt4C,EAAMi4D,qBAAuBhB,GAC7Bj3D,EAAMk4D,sBAAwBf,GAC9Bn3D,EAAM6tD,eAAiBL,GACvBxtD,EAAM56b,UAAYsuf,GAGlB1zD,EAAMm4D,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnB7c,KAAM,aACN8c,KAAM,QACNC,aAAc,WACdC,QAAS,eACT/c,KAAM,aACNjqW,MAAO,WAGJuuT,O,8GC/hLP04D,EAA2B,WAK3B,SAASA,EAAU5qZ,GACfjyG,KAAK88f,aAAe7qZ,EA6DxB,OA3DAlpG,OAAOsB,eAAewyf,EAAUtzf,UAAW,WAAY,CAMnD69B,IAAK,WACD,OAAOpnC,KAAK+8f,aAEhBvnd,IAAK,SAAUvvC,GACXjG,KAAK+8f,YAAc92f,GAEvBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewyf,EAAUtzf,UAAW,WAAY,CAKnD69B,IAAK,WACD,OAAOpnC,KAAK88f,aAAav0Z,OAAO16D,MAEpCykE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewyf,EAAUtzf,UAAW,SAAU,CAKjD69B,IAAK,WACD,OAAOpnC,KAAK88f,aAAav0Z,OAAO16D,MAEpCykE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewyf,EAAUtzf,UAAW,SAAU,CAKjD69B,IAAK,WACD,IAAIrjC,EAAS/D,KAAK88f,aAClB,OAAO/4f,GAEXuuG,YAAY,EACZC,cAAc,IAOlBsqZ,EAAUtzf,UAAUkpG,MAAQ,SAAUuqZ,GAClC,IACIC,EAAeD,EACnBh9f,KAAK88f,aAAarqZ,MAAMwqZ,IAErBJ,EAnEmB,GCAvB,SAASK,EAAgB9ke,GAM5B,MAA6C,oBAAzCrvB,OAAOQ,UAAUmQ,SAASjN,KAAK2rB,GACxB,KAAOA,EAGP,KAAOA,EAAK1e,WCJ3B,ICNWyjf,EDMP,EAA4B,WAK5B,SAASC,EAAWC,GAChBr9f,KAAKmyC,MAAQ,GACbnyC,KAAKs9f,UAAY,EACjBt9f,KAAKu9f,MAAQF,GAAoBH,EA2GrC,OArGAE,EAAW7zf,UAAU2iC,SAAW,SAAUroC,GACtC,IAAI25f,EAAOx9f,KAAKmyC,MAAM,IAAMnyC,KAAKu9f,MAAM15f,IACvC,GAAoB,qBAAT25f,EAGX,OAAOA,EAAKv3f,OAMhBm3f,EAAW7zf,UAAUge,SAAW,SAAU1jB,EAAKoC,GAI3C,IAAIqkC,EACAo3D,EAAI,IAAM1hG,KAAKu9f,MAAM15f,GACH7D,KAAKmyC,MAAMuvD,GASjC,OAPA1hG,KAAKs9f,YACLhzd,OAAM3kC,EAEN3F,KAAKmyC,MAAMuvD,GAAK,CACZ79F,IAAKA,EACLoC,MAAOA,GAEJqkC,GAMX8yd,EAAW7zf,UAAU0E,OAAS,SAAUpK,GACpC,IAAI69F,EAAI,IAAM1hG,KAAKu9f,MAAM15f,GACrB45f,EAAkBz9f,KAAKmyC,MAAMuvD,GAIjC,cAFO1hG,KAAKmyC,MAAMuvD,GAClB1hG,KAAKs9f,YACEG,EAAgBx3f,OAQ3Bm3f,EAAW7zf,UAAU2T,KAAO,WAGxB,IAFA,IAAIwgf,EAAY,GACZC,EAAc50f,OAAOmU,KAAKld,KAAKmyC,OAC1Byrd,EAAS,EAAGA,EAASD,EAAY5zf,OAAQ6zf,IAAU,CAExD,IAAIC,EAAQ79f,KAAKmyC,MAAMwrd,EAAYC,IACnCF,EAAUhpf,KAAKmpf,EAAMh6f,KAGzB,OAAO65f,GAMXN,EAAW7zf,UAAUmwG,OAAS,WAG1B,IAFA,IAAIokZ,EAAc,GACdC,EAAgBh1f,OAAOmU,KAAKld,KAAKmyC,OAC5B6rd,EAAS,EAAGA,EAASD,EAAch0f,OAAQi0f,IAAU,CAE1D,IAAIC,EAAQj+f,KAAKmyC,MAAM4rd,EAAcC,IACrCF,EAAYppf,KAAKupf,EAAMh4f,OAG3B,OAAO63f,GAMXV,EAAW7zf,UAAU20f,YAAc,SAAUr6f,GACzC,IAAIs6f,GAAc,EAOlB,OALIA,EAD8B,qBAAvBn+f,KAAKksC,SAASroC,IAMjBs6f,GAMZf,EAAW7zf,UAAUqH,MAAQ,WACzB5Q,KAAKmyC,MAAQ,GACbnyC,KAAKs9f,UAAY,GAMrBF,EAAW7zf,UAAUskC,KAAO,WACxB,OAAO7tC,KAAKs9f,WAETF,EAnHoB,ICL/B,SAAWD,GAKPA,EAAaA,EAAa,QAAU,GAAK,OAKzCA,EAAaA,EAAa,cAAgB,GAAK,cAVnD,CAWGA,IAAiBA,EAAe,KCPnC,ICLWiB,EDKP,EAAyC,WACzC,SAASC,IAOLr+f,KAAKs+f,kBAAoB,GAMzBt+f,KAAKu+f,qBAAuB,IAAI,EAKhCv+f,KAAKw+f,0BAA4B,IAAI,EA4GzC,OA1GAz1f,OAAOsB,eAAeg0f,EAAwB90f,UAAW,QAAS,CAM9D69B,IAAK,WACD,OAAOpnC,KAAKs+f,kBAAkBv0f,QAElCuoG,YAAY,EACZC,cAAc,IAMlB8rZ,EAAwB90f,UAAU6nC,MAAQ,SAAUt8B,GAChD,OAAO9U,KAAKs+f,kBAAkBxpf,IAElC/L,OAAOsB,eAAeg0f,EAAwB90f,UAAW,WAAY,CAMjE69B,IAAK,WACD,OAAOpnC,KAAKy+f,OAEhBnsZ,YAAY,EACZC,cAAc,IAMlB8rZ,EAAwB90f,UAAU4K,IAAM,SAAU/P,GAC9C,IAAIs6f,EAAU,IAAIC,EAAWv6f,GAC7BpE,KAAKs+f,kBAAkB5pf,KAAKgqf,GACvB1+f,KAAKw+f,0BAA0BN,YAAY95f,IAC5CpE,KAAKw+f,0BAA0Bj3e,SAASnjB,EAASpE,KAAKs+f,kBAAkBv0f,OAAS,GAErF3F,EAAQY,SAAWhF,KAAK8U,MAAQ9U,KAAKs+f,kBAAkBv0f,OAAS,EAChE3F,EAAQ4kG,OAASm0Z,EAAayB,YAMlCP,EAAwB90f,UAAUs1f,QAAU,SAAUjyd,GAClD,IAAI93B,GAAS,EACb,IAAsB,IAAlB83B,EAAI5nC,SACJ,OAAO4nC,EAAI5nC,SAEf,GAAIhF,KAAKw+f,0BAA0BN,YAAYtxd,IAAQ5sC,KAAK0pC,QAAU1pC,KAAKw+f,0BAA0B3wd,OACjG/4B,EAAQ9U,KAAKw+f,0BAA0Btyd,SAASU,QAGhD,IAAK,IAAIxiC,EAAIpK,KAAK0pC,MAAQ,EAAGt/B,GAAK,EAAGA,IAAK,CACtC,IAAI00f,EAAK9+f,KAAKs+f,kBAAkBl0f,GAChC,GAAI00f,EAAGz7Z,SAAWz2D,EAAK,CACnB93B,EAAQ1K,EACR,OAIZ,OAAO0K,GAMXupf,EAAwB90f,UAAUw1f,aAAe,SAAUjqf,EAAO2pf,GAE9D,IAAIlzJ,EADJvrW,KAAK8U,MAAQ9U,KAAK6+f,QAAQ/pf,GAE1B9U,KAAKy+f,OAAQ,EACb,IAAIK,EAAK9+f,KAAKs+f,kBAAkBt+f,KAAK8U,OACrCy2V,EAAYuzJ,EAAGvzJ,UACf,IAAI3+T,EAAM,CAAE2+T,UAAWA,EAAWyzJ,OAAQP,GAC1C,OAAO7xd,GAMXyxd,EAAwB90f,UAAU01f,gBAAkB,SAAUryd,EAAK2+T,EAAWprG,GAC1E,IAAIp8P,GAAS,EAEb/D,KAAK8U,MAAQ9U,KAAK6+f,QAAQjyd,GAC1B,IAAIkyd,EAAK9+f,KAAKs+f,kBAAkBt+f,KAAK8U,OAErC,OADAgqf,EAAGI,aAAa3zJ,GACTxnW,GAEXs6f,EAAwB90f,UAAU+Q,QAAU,WACxC,IAAK,IAAIpE,EAAK,EAAGlJ,EAAKhN,KAAKs+f,kBAAmBpof,EAAKlJ,EAAGjD,OAAQmM,IAAM,CAChE,IAAI02B,EAAM5/B,EAAGkJ,QACDvQ,IAARinC,IACAA,EAAIuyd,UAAUn6f,UAAY,EAC1B4nC,EAAIuyd,UAAUC,cAAWz5f,EACzBinC,EAAIuyd,UAAUE,2BAAwB15f,EACtCinC,EAAIuyd,UAAUn6f,cAAWW,GAGjC3F,KAAKs+f,kBAAoB,GACzBt+f,KAAKu+f,qBAAuB,IAAI,EAChCv+f,KAAKw+f,0BAA4B,IAAI,GAElCH,EA/HiC,GAkIxCM,EAA4B,WAC5B,SAASA,EAAW/xd,EAAK2+T,GACrBvrW,KAAKm/f,UAAYvyd,EACjB5sC,KAAKs/f,aAAe/zJ,EAmCxB,OAjCAxiW,OAAOsB,eAAes0f,EAAWp1f,UAAW,SAAU,CAMlD69B,IAAK,WACD,OAAOpnC,KAAKm/f,WAEhB3pd,IAAK,SAAUvvC,GACXjG,KAAKm/f,UAAYl5f,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAes0f,EAAWp1f,UAAW,YAAa,CAKrD69B,IAAK,WACD,OAAOpnC,KAAKs/f,cAEhBhtZ,YAAY,EACZC,cAAc,IAMlBosZ,EAAWp1f,UAAU21f,aAAe,SAAU3zJ,GAC1CvrW,KAAKs/f,aAAe/zJ,GAEjBozJ,EAtCoB,G,wBEhI3B,EAA8B,WAK9B,SAASY,EAAa52L,GAClB3oU,KAAKw/f,WAAa,IAAI16L,KAAK,CAAC,KAC5B9kU,KAAKy/f,WAAa,GAClBz/f,KAAKirI,KAAK09L,GACV,OAAKvH,qBAAwBtjS,UAAUujS,WA2H3C,OAzHAt4T,OAAOsB,eAAek1f,EAAah2f,UAAW,SAAU,CAKpD69B,IAAK,WAED,OADApnC,KAAKwzG,QACExzG,KAAKw/f,YAEhBltZ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAek1f,EAAah2f,UAAW,WAAY,CAKtD69B,IAAK,WACD,OAAOpnC,KAAK0/f,KAEhBptZ,YAAY,EACZC,cAAc,IAElBgtZ,EAAah2f,UAAU0hI,KAAO,SAAU09L,GACnB,OAAbA,QAAkChjU,IAAbgjU,GACrB3oU,KAAK0/f,IAAM,IAAI,QAAS,GACxB1/f,KAAK0/f,IAAI7of,KAAO,SAGhB7W,KAAK0/f,IAAM/2L,EACX3oU,KAAK2/f,eAMbJ,EAAah2f,UAAUo2f,WAAa,WAChC,GAAI3/f,KAAK2oU,SAASi3L,WACd,OAAQ5/f,KAAK2oU,SAAS9xT,MAClB,IAAK,UACD,IAAIgpf,EAAe,IAAIhqL,YAAY,GAC/BiqL,EAAQ,IAAIlwZ,WAAWiwZ,GAC3BC,EAAM,GAAK,IACXA,EAAM,GAAK,IACX9/f,KAAKw/f,WAAa,IAAI16L,KAAK,CAAC+6L,IAC5B,MACJ,IAAK,OACD,IAAIE,EAAY,IAAIlqL,YAAY,GAC5BmqL,EAAO,IAAIpwZ,WAAWmwZ,GAC1BC,EAAK,GAAK,IACVA,EAAK,GAAK,IACVA,EAAK,GAAK,IACVhggB,KAAKw/f,WAAa,IAAI16L,KAAK,CAACi7L,IAC5B,MACJ,QACI//f,KAAKw/f,WAAa,IAAI16L,KAAK,CAAC,KAC5B,QAShBy6L,EAAah2f,UAAU02R,KAAO,SAAUhiI,GACZ,KAApBj+J,KAAKy/f,YACLz/f,KAAKwzG,QAET,OAAKysL,KAAKhiI,EAAUj+J,KAAKuoG,SAO7Bg3Z,EAAah2f,UAAUkpG,MAAQ,SAAUxsG,GACrC,QAAsBN,IAAlB3F,KAAK2oU,SACL,MAAM,IAAIx1R,MAAM,yDAEpB,eAAwBltC,EAAO,UAC/BjG,KAAKy/f,YAAcx5f,EACfjG,KAAKy/f,WAAW11f,QAAU,OAC1B/J,KAAKwzG,SAGb+rZ,EAAah2f,UAAUiqG,MAAQ,WAC3B,QAAwB7tG,IAApB3F,KAAKy/f,YAAgD,OAApBz/f,KAAKy/f,YAAkD,IAA3Bz/f,KAAKy/f,WAAW11f,OAAjF,CAGA,IAAIk2f,EAAcjggB,KAAK2oU,SAASh2N,SAAS3yG,KAAKy/f,WAAY,EAAGz/f,KAAKy/f,WAAW11f,QAC7E/J,KAAKy/f,WAAa,GAClBz/f,KAAKw/f,WAAa,IAAI16L,KAAK,CAAC9kU,KAAKw/f,WAAYS,MAOjDV,EAAah2f,UAAU22f,UAAY,SAAUj6f,GACzC,QAAsBN,IAAlB3F,KAAK2oU,SACL,MAAM,IAAIx1R,MAAM,yDAEpB,eAAwBltC,EAAO,UAC/BjG,KAAKy/f,WAAaz/f,KAAKy/f,WAAax5f,EAAQ,OACxCjG,KAAKy/f,WAAW11f,QAAU,OAC1B/J,KAAKwzG,SAOb+rZ,EAAah2f,UAAU+Q,QAAU,WAC7Bta,KAAKw/f,gBAAa75f,EAClB3F,KAAKy/f,gBAAa95f,EACd3F,KAAK0/f,eAAe,QACpB1/f,KAAK0/f,IAAIplf,UAEbta,KAAK0/f,SAAM/5f,GAER45f,EApIsB,GCL7B,EAAiC,WACjC,SAASY,EAAgBlqf,GAKrBjW,KAAKoggB,gBAAiB,EAClBnqf,aAAoB,KACpBjW,KAAKiW,SAAWA,GAuHxB,OApHAlN,OAAOsB,eAAe81f,EAAgB52f,UAAW,aAAc,CAM3D69B,IAAK,WACD,OAAOpnC,KAAKqggB,SAEhB/tZ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe81f,EAAgB52f,UAAW,aAAc,CAK3D69B,IAAK,WACD,OAAOpnC,KAAKsggB,eAEhBhuZ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe81f,EAAgB52f,UAAW,mBAAoB,CAKjE69B,IAAK,WACD,OAAOpnC,KAAKuggB,qBAEhB/qd,IAAK,SAAUvvC,GACXjG,KAAKuggB,oBAAsBt6f,GAE/BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe81f,EAAgB52f,UAAW,UAAW,CAKxD69B,IAAK,WACD,OAAOpnC,KAAKwggB,YAEhBhrd,IAAK,SAAUvvC,GACXjG,KAAKwggB,WAAav6f,GAEtBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe81f,EAAgB52f,UAAW,oBAAqB,CAYlE69B,IAAK,WACD,OAAOpnC,KAAKwggB,WAAWC,mBAE3BnuZ,YAAY,EACZC,cAAc,IAOlB4tZ,EAAgB52f,UAAUm3f,wBAA0B,SAAUnC,GAC1Dv+f,KAAKqggB,QAAU9B,GAMnB4B,EAAgB52f,UAAUo3f,cAAgB,SAAUC,GAChD5ggB,KAAKsggB,cAAgBM,GAMzBT,EAAgB52f,UAAUs3f,WAAa,SAAUC,GAC7C9ggB,KAAKwggB,WAAaM,GAEtBX,EAAgB52f,UAAU02R,KAAO,SAAU8gO,GACvC,IAAIv0f,EAAQxM,KACR2oU,EAAW,IAAI,QAAS,GACxBq4L,EAAK,IAAI,EAAar4L,GAC1B,GAAwB,qBAAbo4L,EAA0B,CACjC,IAAIE,EAAa,IAAI,QAAS,GAC1BC,EAAO,IAAI,EAAaD,GAC5B,OAAO,IAAI1te,SAAQ,SAAUC,EAAS81G,GAElC,IAAI18F,EAAM,GACVA,EAAIylS,SAAW,IAAIvN,KAAK,CAACt4T,EAAMyJ,SAASkrf,QAAQD,GAAM,IAAQ,CAAErqf,KAAM,oBACtE2c,EAAQoZ,MAIZ5sC,KAAKiW,SAASkrf,QAAQH,EAAID,GAAU,IAO5CZ,EAAgB52f,UAAUuzC,MAAQ,WAC9B,OAAO98C,KAAKiW,UAETkqf,EA/HyB,GCFhCiB,EAAyB,WACzB,SAASA,EAAQn7f,GAMbjG,KAAKqhgB,gBAAkB,IAKvBrhgB,KAAK+nN,cAAgB,GAMrB/nN,KAAKshgB,WAAY,EAMjBthgB,KAAKuhgB,WAAa,EAClBvhgB,KAAK+nN,cAAgB/nN,KAAKwhgB,eAAev7f,GA0L7C,OAxLA8C,OAAOsB,eAAe+2f,EAAQ73f,UAAW,SAAU,CAM/C69B,IAAK,WACD,OAAOpnC,KAAKyhgB,SAEhBjsd,IAAK,SAAUvvC,GACXjG,KAAKyhgB,QAAUx7f,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+2f,EAAQ73f,UAAW,WAAY,CAKjD69B,IAAK,WACD,OAAOpnC,KAAKshgB,WAEhB9rd,IAAK,SAAUvvC,GACXjG,KAAKshgB,UAAYr7f,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+2f,EAAQ73f,UAAW,wBAAyB,CAK9D69B,IAAK,WACD,OAAOpnC,KAAK0hgB,QAEhBlsd,IAAK,SAAUvvC,GACXjG,KAAK0hgB,OAASz7f,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+2f,EAAQ73f,UAAW,WAAY,CAKjD69B,IAAK,WACD,OAAOpnC,KAAKuhgB,WAEhB/rd,IAAK,SAAUvvC,GACXjG,KAAKuhgB,UAAYt7f,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+2f,EAAQ73f,UAAW,eAAgB,CAKrD69B,IAAK,WACD,OAAO,MAEXkrE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+2f,EAAQ73f,UAAW,QAAS,CAK9C69B,IAAK,WACD,OAAOpnC,KAAK+nN,eAEhBvyK,IAAK,SAAUvvC,GAEX,IAAIue,EAAMve,EACI,OAAVA,GAAkBA,EAAM8D,OAAS,GAEjCya,EAAMve,EACNjG,KAAK+nN,cAAgB/nN,KAAKwhgB,eAAeh9e,IAGzCxkB,KAAK+nN,cAAgBvjM,GAI7B8tF,YAAY,EACZC,cAAc,IAOlB6uZ,EAAQ73f,UAAU02R,KAAO,SAAUroL,GAI/BA,EAAOnF,MAAMzyG,KAAK0Z,aAMtB0nf,EAAQ73f,UAAUmQ,SAAW,WACzB,OAAQ1Z,KAAKqhgB,gBAAkBrhgB,KAAK42Y,aAAa52Y,KAAKiG,QAM1Dm7f,EAAQ73f,UAAUuzC,MAAQ,SAAU6kd,GAChC,IAAIC,EAAU,IAAIR,EAElB,OADAQ,EAAQ37f,MAAQjG,KAAK+nN,cACd65S,GAMXR,EAAQ73f,UAAUqtY,aAAe,SAAUzhD,GASvC,IAFA,IAAIpxV,EAAS,GAEJqG,EAAI,EAAG2/Y,EAAQ50D,EAAYprV,OAAQK,EAAI2/Y,EAAO3/Y,IAAK,CACxD,IAAI00c,EAAK3pH,EAAY/qV,GACTg3f,EAAQnvC,WAAW/kd,QAAQ4xc,GAkBvC/6c,GAAkB+6c,EAEtB,OAAO/6c,GAOXq9f,EAAQ73f,UAAUi4f,eAAiB,SAAUv7f,EAAO4D,GAUhD,OAAO5D,GAOXm7f,EAAQnvC,WAAa,cAKrBmvC,EAAQS,aAAe,CAAC,IAAK,KAAM,KAAM,MAClCT,EAnNiB,GCCxBU,EAA2B,WAK3B,SAASA,IAKL9hgB,KAAK+hgB,QAAU,OACf/hgB,KAAK+hgB,QAAUD,EAAUl1d,IA0V7B,OApVAk1d,EAAUl1d,IAAM,MAKhBk1d,EAAU5oQ,OAAS,SAKnB4oQ,EAAU93f,EAAI,IAKd83f,EAAUE,WAAa,IAKvBF,EAAUG,MAAQ,IAKlBH,EAAUI,QAAU,OAKpBJ,EAAU7vZ,OAAS,SAKnB6vZ,EAAUK,UAAY,YAKtBL,EAAUM,KAAO,OAKjBN,EAAU1ya,EAAI,IAKd0ya,EAAUr+f,EAAI,IAKdq+f,EAAUO,QAAU,UAKpBP,EAAUQ,UAAY,YAKtBR,EAAU/7C,IAAM,QAKhB+7C,EAAU1ja,OAAS,WAKnB0ja,EAAUS,UAAY,KAKtBT,EAAUU,QAAU,KAKpBV,EAAUW,UAAY,IAKtBX,EAAUY,kBAAoB,IAK9BZ,EAAUa,OAAS,IAKnBb,EAAUc,KAAO,IAKjBd,EAAUe,YAAc,KAKxBf,EAAUgB,WAAa,IAKvBhB,EAAUiB,kBAAoB,KAK9BjB,EAAUkB,kBAAoB,IAK9BlB,EAAUmB,gBAAkB,KAK5BnB,EAAUoB,UAAY,IAKtBpB,EAAUqB,aAAe,IAKzBrB,EAAUsB,aAAe,KAKzBtB,EAAUuB,UAAY,KAKtBvB,EAAUwB,SAAW,KAKrBxB,EAAUyB,aAAe,IAKzBzB,EAAU0B,gBAAkB,IAK5B1B,EAAU2B,iBAAmB,IAK7B3B,EAAU4B,eAAiB,IAK3B5B,EAAU6B,qBAAuB,IAKjC7B,EAAU8B,UAAY,IAKtB9B,EAAU+B,gBAAkB,IAK5B/B,EAAUgC,oBAAsB,IAKhChC,EAAUiC,kBAAoB,KAK9BjC,EAAUkC,aAAe,KAKzBlC,EAAUmC,qBAAuB,KAKjCnC,EAAUoC,eAAiB,KAK3BpC,EAAUqC,QAAU,KAKpBrC,EAAUsC,iBAAmB,KAK7BtC,EAAUuC,YAAc,KAKxBvC,EAAUwC,eAAiB,KAK3BxC,EAAUyC,UAAY,KAKtBzC,EAAU0C,aAAe,KAKzB1C,EAAUj5Q,QAAU,KAKpBi5Q,EAAU2C,sBAAwB,KAKlC3C,EAAU4C,iBAAmB,IAK7B5C,EAAU6C,4BAA8B,KAKxC7C,EAAU8C,+BAAiC,KAK3C9C,EAAU+C,uBAAyB,KAKnC/C,EAAUgD,0BAA4B,KAKtChD,EAAUiD,wBAA0B,IAKpCjD,EAAUkD,2BAA6B,IAKvClD,EAAUmD,wBAA0B,IAKpCnD,EAAUoD,2BAA6B,IAKvCpD,EAAUqD,SAAW,IAKrBrD,EAAUsD,gBAAkB,KAK5BtD,EAAUuD,QAAU,IAKpBvD,EAAUwD,iBAAmB,KAK7BxD,EAAUpuC,QAAU,IAKpBouC,EAAUyD,QAAU,IAKpBzD,EAAU0D,cAAgB,IAK1B1D,EAAU2D,mBAAqB,MAI/B3D,EAAU4D,2BAA6B,MAChC5D,EArWmB,GCA1B6D,EAAsC,WAKtC,SAASA,IAKL3lgB,KAAK4lgB,MAAQ,QAKb5lgB,KAAK6lgB,KAAO,OAKZ7lgB,KAAK0pC,MAAQ,QAKb1pC,KAAKqzE,UAAY,YAKjBrzE,KAAK6W,KAAO,OAKZ7W,KAAK6tC,KAAO,OAKZ7tC,KAAK8lgB,SAAW,WAKhB9lgB,KAAKwrD,OAAS,SAKdxrD,KAAK6T,KAAO,OAKZ7T,KAAK+lgB,YAAc,cAKnB/lgB,KAAKm4B,OAAS,SAKdn4B,KAAKqxU,KAAO,OAKZrxU,KAAKgmgB,MAAQ,QAKbhmgB,KAAKimgB,SAAW,WAKhBjmgB,KAAK2oU,SAAW,WAKhB3oU,KAAKkmgB,QAAU,UAKflmgB,KAAKmmgB,SAAW,WAKhBnmgB,KAAKomgB,QAAU,UAKfpmgB,KAAKqmgB,WAAa,aAKlBrmgB,KAAKsmgB,UAAY,YAKjBtmgB,KAAKuqB,QAAU,UAKfvqB,KAAKumgB,QAAU,UAKfvmgB,KAAK+J,OAAS,SAKd/J,KAAKqH,MAAQ,QAKbrH,KAAKiH,OAAS,SAKdjH,KAAKwmgB,iBAAmB,mBAKxBxmgB,KAAK+xU,MAAQ,QAKb/xU,KAAKymgB,UAAY,YAKjBzmgB,KAAK4zF,QAAU,UAKf5zF,KAAK0mgB,SAAW,WAKhB1mgB,KAAK0hG,EAAI,IAKT1hG,KAAK2B,EAAI,IAKT3B,KAAK2mgB,UAAY,YAKjB3mgB,KAAK4mgB,UAAY,YAKjB5mgB,KAAKwiJ,KAAO,OAKZxiJ,KAAKqoB,OAAS,SAKdroB,KAAK6mgB,KAAO,OAMZ7mgB,KAAK66B,EAAI,IAKT76B,KAAK8mgB,MAAQ,QAKb9mgB,KAAKmJ,EAAI,IAKTnJ,KAAK6J,EAAI,IAKT7J,KAAKqmW,KAAO,OAKZrmW,KAAK+mgB,IAAM,MAKX/mgB,KAAKgngB,OAAS,SAKdhngB,KAAKingB,GAAK,KAKVjngB,KAAKkngB,GAAK,KAKVlngB,KAAKmngB,IAAM,MAKXnngB,KAAKy4L,IAAM,MAKXz4L,KAAKongB,KAAO,OAKZpngB,KAAKqngB,GAAK,KAKVrngB,KAAKsngB,YAAc,cAKnBtngB,KAAKw/D,OAAS,SAKdx/D,KAAKungB,KAAO,OAKZvngB,KAAKikJ,KAAO,OAKZjkJ,KAAK+0B,EAAI,IAKT/0B,KAAKwngB,aAAe,eAKpBxngB,KAAKyngB,YAAc,cAKnBzngB,KAAKy9b,SAAW,WAKhBz9b,KAAK0ngB,GAAK,KAKV1ngB,KAAK2ngB,eAAiB,iBAKtB3ngB,KAAK4ngB,cAAgB,gBAKrB5ngB,KAAK61T,SAAW,WAKhB71T,KAAKo3Y,MAAQ,QAKbp3Y,KAAK6ngB,SAAW,WAKhB7ngB,KAAK8ngB,aAAe,eAKpB9ngB,KAAK+ngB,MAAQ,QAKb/ngB,KAAKgogB,YAAc,cAKnBhogB,KAAKiogB,UAAY,YAKjBjogB,KAAKkogB,OAAS,SAKdlogB,KAAKmogB,QAAU,UAKfnogB,KAAKoogB,QAAU,UAKfpogB,KAAKqogB,SAAW,WAKhBrogB,KAAKsogB,UAAY,YAKjBtogB,KAAKgY,SAAW,WAKhBhY,KAAKuogB,QAAU,UAKfvogB,KAAKwogB,MAAQ,QAKbxogB,KAAKyogB,SAAW,WAKhBzogB,KAAK4tf,SAAW,WAKhB5tf,KAAK0ogB,WAAa,aAKlB1ogB,KAAK2ogB,MAAQ,QAKb3ogB,KAAK4ogB,UAAY,aAKjB5ogB,KAAK6ogB,UAAY,YAKjB7ogB,KAAK8ogB,gBAAkB,kBAKvB9ogB,KAAK+ogB,WAAa,aAKlB/ogB,KAAKgpgB,QAAU,UAKfhpgB,KAAKo9F,OAAS,SAKdp9F,KAAKipgB,UAAY,YAKjBjpgB,KAAKkpgB,SAAW,WAKhBlpgB,KAAKsqW,OAAS,SAKdtqW,KAAKmpgB,YAAc,cAKnBnpgB,KAAKopgB,OAAS,SAKdppgB,KAAKooW,OAAS,SAKdpoW,KAAK4jI,MAAQ,QAKb5jI,KAAKqpgB,aAAe,eAKpBrpgB,KAAKspgB,cAAgB,gBAKrBtpgB,KAAKupgB,YAAc,cAKnBvpgB,KAAKwpgB,UAAY,YAKjBxpgB,KAAKypgB,WAAa,aAKlBzpgB,KAAK0pgB,MAAQ,QAKb1pgB,KAAK2pgB,MAAQ,QAKb3pgB,KAAKyggB,kBAAoB,oBAKzBzggB,KAAK4pgB,aAAe,eAKpB5pgB,KAAK6pgB,aAAe,eAKpB7pgB,KAAK8pgB,UAAY,YAKjB9pgB,KAAK+pgB,YAAc,cAKnB/pgB,KAAKgqgB,YAAc,cAKnBhqgB,KAAKiqgB,aAAe,eAKpBjqgB,KAAKkqgB,SAAW,WAKhBlqgB,KAAKmqgB,WAAa,aAKlBnqgB,KAAKoqgB,OAAS,SAKdpqgB,KAAKqqgB,aAAe,eAGxB,OAAO1E,EApjB8B,GCGrC,EAA+B,WAC/B,SAAS2E,EAAcC,GA6CnB,GAvCAvqgB,KAAKwqgB,WAAa,EAKlBxqgB,KAAKyqgB,eAAiB,IAAI,EAK1BzqgB,KAAKs3W,OAAS,KAKdt3W,KAAKqzf,OAAS,KAKdrzf,KAAKqzE,UAAY,GAMjBrzE,KAAKqjG,OAAS,KAMdrjG,KAAK0qgB,SAAU,EAMf1qgB,KAAKkkS,YAAa,EACQ,qBAAfqmO,EACPvqgB,KAAKyqgB,eAAiB,IAAI,EAC1BzqgB,KAAK2qgB,SAAU,EACf3qgB,KAAK4qgB,qBAAuB,IAAIjF,MAE/B,CACD3lgB,KAAKyqgB,eAAiB,IAAI,EAG1B,IAFA,IAAIvtf,EAAOqtf,EAAWn5d,MAAMl0B,OACxBw8F,EAAS6wZ,EAAWn5d,MAAMsoE,SACrB5kG,EAAQ,EAAGA,EAAQy1f,EAAWn5d,MAAMvD,OAAQ/4B,IACjD9U,KAAKyqgB,eAAeljf,SAASrK,EAAKpI,GAAQ4kG,EAAO5kG,IAErD9U,KAAKgpG,OAASuha,EAAWvha,OACzBhpG,KAAK6qgB,cAAc7qgB,MACnBA,KAAK2qgB,SAAU,EACf3qgB,KAAK4qgB,qBAAuB,IAAIjF,GA+QxC,OA5QA58f,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,QAAS,CAMpD69B,IAAK,WACD,OAAOpnC,KAAKyqgB,gBAEhBn4Z,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,SAAU,CAKrD69B,IAAK,WACD,OAAOpnC,KAAK8qgB,SAEhBt1d,IAAK,SAAUvvC,GACXjG,KAAK8qgB,QAAU7kgB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,WAAY,CAKvD69B,IAAK,WACD,OAAOpnC,KAAK+qgB,WAEhBv1d,IAAK,SAAUvvC,GACXjG,KAAK+qgB,UAAY9kgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,wBAAyB,CAKpE69B,IAAK,WACD,OAAOpnC,KAAKgrgB,QAEhBx1d,IAAK,SAAUvvC,GACXjG,KAAKgrgB,OAAS/kgB,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,eAAgB,CAK3D69B,IAAK,WACD,OAAOpnC,KAAKqjG,QAEhBiP,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,WAAY,CAKvD69B,IAAK,WACD,OAAOpnC,KAAKwqgB,WAEhBh1d,IAAK,SAAUvvC,GACXjG,KAAKwqgB,UAAYvkgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,QAAS,CAKpD69B,IAAK,WACD,OAAOpnC,KAAKyqgB,eAAe58d,QAE/BykE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeiggB,EAAc/ggB,UAAW,aAAc,CAKzD69B,IAAK,WACD,OAAOpnC,MAEXsyG,YAAY,EACZC,cAAc,IAMlB+3Z,EAAc/ggB,UAAU0hgB,WAAa,WACjC,OAAOjrgB,KAAK0qgB,SAMhBJ,EAAc/ggB,UAAU2hgB,WAAa,SAAUjlgB,GAC3CjG,KAAK0qgB,QAAUzkgB,GAMnBqkgB,EAAc/ggB,UAAU4hgB,WAAa,SAAUllgB,GAC3CjG,KAAK2qgB,QAAU1kgB,EACfjG,KAAKorgB,UAMTd,EAAc/ggB,UAAU8hgB,WAAa,WACjC,OAAOrrgB,KAAK2qgB,SAMhBL,EAAc/ggB,UAAUshgB,cAAgB,SAAUS,GAC9CtrgB,KAAKurgB,UAAW,GAMpBjB,EAAc/ggB,UAAUuzC,MAAQ,SAAU6kd,GAEtC,IAAI6J,EAAU,IAAIlB,EAClB,OAAOkB,GAMXlB,EAAc/ggB,UAAU6hgB,OAAS,WAC7BprgB,KAAKurgB,UAAW,GAMpBjB,EAAc/ggB,UAAU0E,OAAS,SAAUpK,GACpB,kBAARA,GACP7D,KAAKyqgB,eAAex8f,OAAOpK,EAAIoC,OAC/BjG,KAAKorgB,UAGLprgB,KAAKiO,OAAO,IAAImzf,EAAQv9f,KAOhCymgB,EAAc/ggB,UAAU20f,YAAc,SAAUr6f,GAC5C,IAAIswC,GAAc,EAElB,OADAA,EAAcn0C,KAAKyqgB,eAAevM,YAAYr6f,EAAI6V,YAC3Cy6B,GAMXm2d,EAAc/ggB,UAAUkigB,YAAc,WAClCzrgB,KAAK0rgB,UAAU14a,OAAO04a,aAM1BpB,EAAc/ggB,UAAUoigB,0BAA4B,WAChD3rgB,KAAK4rgB,wBAAwB54a,OAAO44a,2BAMxCtB,EAAc/ggB,UAAUsigB,0BAA4B,WAChD7rgB,KAAK8rgB,wBAAwB94a,OAAO84a,2BAMxCxB,EAAc/ggB,UAAUwigB,oBAAsB,WAC1C/rgB,KAAKgsgB,sBAAsBh5a,OAAOi5a,iBAMtC3B,EAAc/ggB,UAAU2igB,sBAAwB,WAC5ClsgB,KAAKmsgB,oBAAoBn5a,OAAO04a,aAMpCpB,EAAc/ggB,UAAU6igB,mBAAqB,SAAUx0Z,GACnD,IAAIs9H,EAAYl1O,KAAKqsgB,iBACrBn3R,EAAUliJ,OAAO04a,UAAUx2R,EAAUt7L,MAAOg+D,IAEhD0yZ,EAAc/ggB,UAAU02R,KAAO,SAAUroL,EAAQ00Z,GAClB,qBAAhBA,EACPtsgB,KAAKigS,KAAKroL,GAAQ,IAGlBA,EAAOnF,MAAMzyG,KAAKs3W,QACY,qBAAnBt3W,KAAK0rgB,WACZ1rgB,KAAKyrgB,cAEmC,qBAAjCzrgB,KAAK8rgB,yBACZ9rgB,KAAK6rgB,4BAEmC,qBAAjC7rgB,KAAK4rgB,yBACZ5rgB,KAAK2rgB,4BAE+B,qBAA7B3rgB,KAAKmsgB,qBACZnsgB,KAAKksgB,wBAE4B,qBAA1BlsgB,KAAKqsgB,kBACZrsgB,KAAKosgB,mBAAmBx0Z,GAEc,qBAA/B53G,KAAKgsgB,uBACZhsgB,KAAK+rgB,sBAGL/rgB,KAAK85C,MAAQ,GACb95C,KAAKusgB,UAAU30Z,GAEnBA,EAAOnF,MAAMzyG,KAAKqzf,QAClBz7Y,EAAOnF,MAAMqvZ,EAAUI,WAO/BoI,EAAc/ggB,UAAUgjgB,UAAY,SAAU30Z,GAC1CA,EAAOnF,MAAMqvZ,EAAUI,SAGvB,IAFA,IAAIhlf,EAAOld,KAAKyqgB,eAAevtf,OAC3Bw8F,EAAS15G,KAAKyqgB,eAAe/wZ,SACxB5kG,EAAQ,EAAGA,EAAQoI,EAAKnT,OAAQ+K,IAAS,CAC9C,IAAIjR,EAAMqZ,EAAKpI,GACXyiO,EAAS,IAAI6pR,EAAQv9f,GACzB0zO,EAAO0oD,KAAKroL,GACZA,EAAOnF,MAAMqvZ,EAAUE,YACvB,IAAI3ub,EAAYqmC,EAAO5kG,GACvBu+D,EAAU4sN,KAAKroL,GACfA,EAAOnF,MAAMqvZ,EAAUI,WAGxBoI,EA5UuB,GA+U9BkC,EAAmD,WAKnD,SAASA,EAAkCx5a,GACvChzF,KAAKgzF,OAASA,EAElB,OAAOw5a,EAR2C,GAWlDC,EAAgD,WAKhD,SAASA,EAA+Bz5a,GACpChzF,KAAKgzF,OAASA,EAElB,OAAOy5a,EARwC,GAW/CC,EAAgD,WAKhD,SAASA,EAA+B15a,GACpChzF,KAAKgzF,OAASA,EAElB,OAAO05a,EARwC,GAW/CC,EAA4C,WAK5C,SAASA,EAA2B35a,GAChChzF,KAAKgzF,OAASA,EAElB,OAAO25a,EARoC,GAW3CC,EAAyC,WAMzC,SAASA,EAAwB55a,EAAQp5C,GACrC55C,KAAKgzF,OAASA,EACdhzF,KAAK45C,MAAQA,EAEjB,OAAOgzd,EAViC,GAkBxCC,EAA0C,WAK1C,SAASA,EAAyB75a,GAC9BhzF,KAAKgzF,OAASA,EAElB,OAAO65a,EARkC,GCjZzCC,EAA2B,WAK3B,SAASA,EAAU7mgB,GAMfjG,KAAK+sgB,WAAa,EAClB/sgB,KAAKiG,MAAQA,EAgJjB,OA9IA8C,OAAOsB,eAAeyigB,EAAUvjgB,UAAW,WAAY,CAKnD69B,IAAK,WACD,OAAOpnC,KAAKiG,OAEhBuvC,IAAK,SAAUvvC,GACXjG,KAAKiG,MAAQA,GAEjBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeyigB,EAAUvjgB,UAAW,YAAa,CAKpD69B,IAAK,WACD,OAAOpnC,KAAKkhX,SAEhB1rU,IAAK,SAAUvvC,GACXjG,KAAKkhX,QAAUj7W,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeyigB,EAAUvjgB,UAAW,SAAU,CAKjD69B,IAAK,WACD,OAAOpnC,KAAKgtgB,SAEhBx3d,IAAK,SAAUvvC,GACXjG,KAAKgtgB,QAAU/mgB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeyigB,EAAUvjgB,UAAW,WAAY,CAKnD69B,IAAK,WACD,OAAOpnC,KAAKitgB,WAEhBz3d,IAAK,SAAUvvC,GACXjG,KAAKitgB,UAAYhngB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeyigB,EAAUvjgB,UAAW,wBAAyB,CAKhE69B,IAAK,WACD,OAAOpnC,KAAKktgB,QAEhB13d,IAAK,SAAUvvC,GACXjG,KAAKktgB,OAASjngB,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeyigB,EAAUvjgB,UAAW,WAAY,CAKnD69B,IAAK,WACD,OAAOpnC,KAAK+sgB,WAEhBv3d,IAAK,SAAUvvC,GACXjG,KAAK+sgB,UAAY9mgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeyigB,EAAUvjgB,UAAW,eAAgB,CAKvD69B,IAAK,WACD,IAAI+le,EAAS,KACb,OAAOA,GAEX76Z,YAAY,EACZC,cAAc,IAMlBu6Z,EAAUvjgB,UAAU02R,KAAO,SAAUroL,GACjCA,EAAOnF,MAAMzyG,KAAKotgB,SAAS1zf,aAM/Bozf,EAAUvjgB,UAAUuzC,MAAQ,SAAU6kd,GAClC,IAAI0L,EAAY,IAAIP,EAAU9sgB,KAAKiG,OACnC,OAAOongB,GAMXP,EAAUQ,cAAgB,SAAU3pgB,GAGhC,IAAI4pgB,EAAe5pgB,EAAOg9B,QAAQ,GAclC,MAbqB,SAAjB4se,IACAA,EAAe,OAYZA,GAMXT,EAAU1of,IAAM,SAAUxV,EAAGvM,EAAGsrK,GAC5B,IAAI3jK,EAAIyH,KAAK2S,IAAIxV,EAAGvM,GACpB,OAAOoP,KAAK2S,IAAIupJ,EAAG3jK,IAEhB8igB,EA5JmB,GCE1B,EAA0B,WAC1B,SAASU,EAAS/3b,GA8Bd,GAxBAz1E,KAAKytgB,UAAY,IAKjBztgB,KAAK0tgB,QAAU,IAMf1tgB,KAAK2tgB,WAAa,EAMlB3tgB,KAAK4tgB,cAAgB,KAMrB5tgB,KAAK6tgB,QAAS,EACO,qBAAVp4b,EACPz1E,KAAK8tgB,iBAAmB,QAGxB,GAAqB,qBAAVr4b,GAA2BA,aAAiB+3b,EAQlD,CACD,IAAIp4U,EAAY3/G,EAEhBz1E,KAAK8tgB,iBAAmB,GACxB,IAASh5f,EAAQ,EAAGA,EAAQsgL,EAAUjpG,SAASpiF,OAAQ+K,IACnD9U,KAAK8tgB,iBAAiBp5f,KAAK0gL,EAAUjpG,SAASr3E,SAXlD,IADA,IAAIi5f,EAAkBt4b,EACb3gE,EAAQ,EAAGA,EAAQi5f,EAAgBhkgB,OAAQ+K,IAAS,CACzD,IAAIk5f,EAAY,IAAIlB,EAAUiB,EAAgBj5f,IAC9C9U,KAAKmU,IAAI65f,IAoUzB,OAhTAR,EAASjkgB,UAAU6nC,MAAQ,SAAUt8B,GAIjC,OAAO9U,KAAK8tgB,iBAAiBh5f,IAEjC/L,OAAOsB,eAAemjgB,EAASjkgB,UAAW,QAAS,CAK/C69B,IAAK,WACD,OAAOpnC,KAAK8tgB,iBAAiB/jgB,QAEjCuoG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemjgB,EAASjkgB,UAAW,SAAU,CAKhD69B,IAAK,WACD,OAAOpnC,KAAKiugB,SAEhBz4d,IAAK,SAAUvvC,GACXjG,KAAKiugB,QAAUhogB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemjgB,EAASjkgB,UAAW,WAAY,CAKlD69B,IAAK,WACD,OAAOpnC,KAAKkugB,WAEhB14d,IAAK,SAAUvvC,GACXjG,KAAKkugB,UAAYjogB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemjgB,EAASjkgB,UAAW,eAAgB,CAKtD69B,IAAK,WACD,OAAOpnC,KAAK4tgB,eAEhBt7Z,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemjgB,EAASjkgB,UAAW,WAAY,CAKlD69B,IAAK,WACD,OAAOpnC,KAAK2tgB,WAEhBn4d,IAAK,SAAUvvC,GACXjG,KAAK2tgB,UAAY1ngB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemjgB,EAASjkgB,UAAW,wBAAyB,CAK/D69B,IAAK,WACD,OAAOpnC,KAAKmugB,QAEhB34d,IAAK,SAAUvvC,GACXjG,KAAKmugB,OAASlogB,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemjgB,EAASjkgB,UAAW,aAAc,CAKpD69B,IAAK,WACD,OAAOpnC,KAAKsggB,eAEhBhuZ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemjgB,EAASjkgB,UAAW,WAAY,CAKlD69B,IAAK,WACD,OAAOpnC,KAAK8tgB,kBAEhBx7Z,YAAY,EACZC,cAAc,IAMlBi7Z,EAASjkgB,UAAU4K,IAAM,SAAU/P,GAIM,qBAA1BpE,KAAK8tgB,mBACZ9tgB,KAAK8tgB,iBAAmB,IAE5B9tgB,KAAK8tgB,iBAAiBp5f,KAAKtQ,GAC3BpE,KAAKougB,gBAMTZ,EAASjkgB,UAAU6kgB,aAAe,WAC9BpugB,KAAKurgB,UAAW,GAMpBiC,EAASjkgB,UAAUnC,SAAW,SAAUhD,GAEpC,IADA,IAAI+vC,GAAc,EACTr/B,EAAQ,EAAGA,EAAQ9U,KAAK8tgB,iBAAiB/jgB,OAAQ+K,IAAS,CAC/D,IAAIouI,EAAcljJ,KAAK8tgB,iBAAiBh5f,GACpCgL,EAAe1b,EACnB,GAAmB,MAAf8+I,GAA8C,qBAAhBA,GAA+C,MAAhBpjI,GAAgD,qBAAjBA,GACxFojI,EAAYj9I,QAAU6Z,EAAa7Z,MACnC,OAAO,EAOnB,OAAOkuC,GAMXq5d,EAASjkgB,UAAUgrD,SAAW,SAAUz/C,GAIpC,OAAO9U,KAAK8tgB,iBAAiBh5f,IAMjC04f,EAASjkgB,UAAU02R,KAAO,SAAUroL,GAIhCA,EAAOnF,MAAMzyG,KAAKytgB,WAClB,IAAK,IAAIrjgB,EAAI,EAAGqgB,EAAMzqB,KAAK0pC,MAAOt/B,EAAIqgB,EAAKrgB,IACvCpK,KAAKu0D,SAASnqD,GAAG61R,KAAKroL,GAClBxtG,EAAI,IAAMqgB,GACVmtF,EAAOnF,MAAMqvZ,EAAUE,YAG/BpqZ,EAAOnF,MAAMzyG,KAAK0tgB,UAMtBF,EAASjkgB,UAAUuzC,MAAQ,SAAU6kd,GAIjC3hgB,KAAK4tgB,cAAgB,KAGrB,IADA,IAAIS,EAAW,IAAIb,EACV14f,EAAQ,EAAGA,EAAQ9U,KAAK8tgB,iBAAiB/jgB,OAAQ+K,IAAS,CAC/D,IAAI83B,EAAM5sC,KAAK8tgB,iBAAiBh5f,GAChCu5f,EAASl6f,IAAIy4B,EAAIkQ,MAAM6kd,IAI3B,OAFA0M,EAAS/N,cAAgBqB,EACzB3hgB,KAAK4tgB,cAAgBS,EACdA,GAMXb,EAASc,cAAgB,SAAUC,GAC/B,IAAI70Z,EAAS,CAAC60Z,EAAO3/f,EAAG2/f,EAAOlsgB,EAAGksgB,EAAOlngB,MAAOkngB,EAAOtngB,QACnDwuE,EAAQ,IAAI+3b,EAAS9zZ,GACzB,OAAOjkC,GAiCX+3b,EAASjkgB,UAAUkjC,OAAS,SAAU33B,EAAO1Q,GACzC,GAAI0Q,EAAQ9U,KAAK8tgB,iBAAiB/jgB,QAAU+K,EAAQ,EAAG,CAEnD,IADA,IAAI05f,EAAe,GACVpkgB,EAAI,EAAGA,EAAI0K,EAAO1K,IACvBokgB,EAAa95f,KAAK1U,KAAK8tgB,iBAAiB1jgB,IAE5CokgB,EAAa95f,KAAKtQ,GAClB,IAASgG,EAAI0K,EAAO1K,EAAIpK,KAAK8tgB,iBAAiB/jgB,OAAQK,IAClDokgB,EAAa95f,KAAK1U,KAAK8tgB,iBAAiB1jgB,IAE5CpK,KAAK8tgB,iBAAmBU,OAGxBxugB,KAAK8tgB,iBAAiBp5f,KAAKtQ,GAE/BpE,KAAKyugB,eAMTjB,EAASjkgB,UAAU2D,QAAU,SAAU9I,GACnC,OAAOpE,KAAK8tgB,iBAAiB5ggB,QAAQ9I,IAMzCopgB,EAASjkgB,UAAU0E,OAAS,SAAU7J,GAIlC,IAAI0Q,EAAQ9U,KAAK8tgB,iBAAiB5ggB,QAAQ9I,GAE1CpE,KAAK8tgB,iBAAiBh5f,GAAS,KAE/B9U,KAAKyugB,eAMTjB,EAASjkgB,UAAUmlgB,SAAW,SAAU55f,GAEpC,GAAI9U,KAAK8tgB,iBAAiB/jgB,OAAS+K,EAAO,CAEtC,IADA,IAAIsgL,EAAY,GACPhrL,EAAI,EAAGA,EAAI0K,EAAO1K,IACvBgrL,EAAU1gL,KAAK1U,KAAK8tgB,iBAAiB1jgB,IAEzC,IAASA,EAAI0K,EAAQ,EAAG1K,EAAIpK,KAAK8tgB,iBAAiB/jgB,OAAQK,IACtDgrL,EAAU1gL,KAAK1U,KAAK8tgB,iBAAiB1jgB,IAEzCpK,KAAK8tgB,iBAAmB14U,EAE5Bp1L,KAAKyugB,eAMTjB,EAASjkgB,UAAUqH,MAAQ,WACvB5Q,KAAK8tgB,iBAAmB,GACxB9tgB,KAAKyugB,eAMTjB,EAASjkgB,UAAUklgB,YAAc,WAC7BzugB,KAAKurgB,UAAW,GAEbiC,EA3WkB,G,YCNzB5kgB,EAAwC,WACxC,IAAIC,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAwBxC,EAA2B,SAAU4C,GAErC,SAAS0igB,EAAUpE,EAAYp2e,GAC3B,IAAI3nB,EAAQP,EAAOQ,KAAKzM,KAAMuqgB,IAAevqgB,KAgC7C,OA1BAwM,EAAMoigB,UAAY,SAKlBpigB,EAAMqigB,UAAY,YAKlBrigB,EAAMsigB,cAAgB,KAKtBtigB,EAAMuigB,WAAY,EACQ,qBAAfxE,GAA8C,qBAATp2e,GAC5C3nB,EAAMwigB,YAAc,GACpBxigB,EAAMwigB,YAAc76e,EACpB3nB,EAAMyigB,YAAa,IAGnBzigB,EAAMwigB,YAAc,GACpBxigB,EAAMyigB,YAAa,GAGhBzigB,EAkMX,OApOA5D,EAAU+lgB,EAAW1igB,GAoCrBlD,OAAOsB,eAAeskgB,EAAUplgB,UAAW,iBAAkB,CAKzD69B,IAAK,WACD,OAAOpnC,KAAKgvgB,aAEhBx5d,IAAK,SAAUvvC,GACXjG,KAAKgvgB,YAAc,GACnBhvgB,KAAKgvgB,YAAc/ogB,EACnBjG,KAAKorgB,UAET94Z,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeskgB,EAAUplgB,UAAW,WAAY,CAKnD69B,IAAK,WACD,OAAOpnC,KAAK+ugB,WAEhBv5d,IAAK,SAAUvvC,GACXjG,KAAK+ugB,UAAY9ogB,EACjBjG,KAAKorgB,UAET94Z,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeskgB,EAAUplgB,UAAW,OAAQ,CAK/C69B,IAAK,WACD,OAAOpnC,KAAKgvgB,aAEhBx5d,IAAK,SAAUvvC,GACXjG,KAAKgvgB,YAAc,GACnBhvgB,KAAKgvgB,YAAc/ogB,EACnBjG,KAAKorgB,UAET94Z,YAAY,EACZC,cAAc,IAMlBo8Z,EAAUplgB,UAAU2lgB,YAAc,WAC9BlvgB,KAAKmvgB,eAAiB,GAClBnvgB,KAAKoxC,MAAM8sd,YAAYl+f,KAAK4qgB,qBAAqBzye,SACjDn4B,KAAKiO,OAAOjO,KAAK4qgB,qBAAqBzye,QAE1Cn4B,KAAK+ugB,WAAY,EACjB/ugB,KAAKorgB,UAMTuD,EAAUplgB,UAAUkpG,MAAQ,SAAUjxE,GAClC,GAAY,MAARA,EACA,MAAM,IAAI2R,MAAM,8BAEpB,GAAI3R,EAAKz3B,QAAU,EACf,MAAM,IAAIopC,MAAM,0DAEpBnzC,KAAKgvgB,YAAYt6f,KAAK8sB,GACtBxhC,KAAKorgB,UAMTuD,EAAUplgB,UAAU6lgB,WAAa,SAAUj7e,GACvC,GAAa,OAATA,EACA,MAAM,IAAIgf,MAAM,8BAEpB,GAAIhf,EAAKpqB,QAAU,EACf,MAAM,IAAIopC,MAAM,yDAGpB,IADA,IAAI3R,EAAO,GACFp3B,EAAI,EAAGA,EAAI+pB,EAAKpqB,OAAQK,IAC7Bo3B,GAAQ3hC,OAAOyhC,aAAanN,EAAK/pB,IAErCpK,KAAKgvgB,YAAYt6f,KAAK8sB,GACtBxhC,KAAKorgB,UAMTuD,EAAUplgB,UAAU8lgB,gBAAkB,WAClCrvgB,KAAKsvgB,cAAct8a,OAAOs8a,iBAM9BX,EAAUplgB,UAAUgmgB,uBAAyB,WACzCvvgB,KAAKwvgB,qBAAqBx8a,OAAOw8a,wBAMrCb,EAAUplgB,UAAUkmgB,gBAAkB,SAAUt7e,EAAMyjF,GAClD,GAAI53G,KAAK+ugB,UAAW,CAEhB,IADA,IAAIW,EAAY,GACPtlgB,EAAI,EAAGA,EAAI+pB,EAAKpqB,OAAQK,IAC7BslgB,EAAUh7f,KAAKyf,EAAKkK,WAAWj0B,IAEnC,IAAIulgB,EAAY,IAAI//Z,WAAW8/Z,GAC3BlqK,EAAK,IAAI,OAEbA,EAAG/yP,MAAMk9Z,EAAW,EAAGA,EAAU5lgB,QACjCy7V,EAAG/2V,QACH0lB,EAAOqxU,EAAGoqK,oBACV5vgB,KAAK6vgB,UAAU7vgB,KAAK4qgB,qBAAqBtD,aAE7C,OAAOnze,GAMXw6e,EAAUplgB,UAAUsmgB,UAAY,SAAUC,GACtC,IAAIlje,EAAM5sC,KAAKoxC,MAAMlF,SAASlsC,KAAK4qgB,qBAAqBzye,QACxD,GAAIyU,aAAe,EAAoB,CACnC,IAAImje,EAAKnje,EACTA,EAAMmje,EAAG1sa,OAEb,IAAI5tB,EAAQ7oC,EACRjlC,EAAOilC,EACC,MAARjlC,IACA8tE,EAAQ,IAAI,EACZA,EAAMhpC,OAAO,EAAG9kC,GAChB3H,KAAKoxC,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBzye,OAAQs9C,IAE1D9tE,EAAO,IAAIy5f,EAAQ0O,GACN,MAATr6b,EACAz1E,KAAKoxC,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBzye,OAAQxwB,GAGtD8tE,EAAMhpC,OAAO,EAAG9kC,IAOxBgngB,EAAUplgB,UAAU02R,KAAO,SAAUroL,GACC,qBAAvB53G,KAAKsvgB,eACZtvgB,KAAKqvgB,kBAEgC,qBAA9BrvgB,KAAKwvgB,sBACZxvgB,KAAKuvgB,yBAGT,IADA,IAAIp7e,EAAO,GACF/pB,EAAI,EAAGA,EAAIpK,KAAKm0B,KAAKpqB,OAAQK,IAClC+pB,GAAcn0B,KAAKm0B,KAAK/pB,GAExB+pB,EAAKpqB,OAAS,IAAM/J,KAAKkkS,aACzB/vQ,EAAO,QAAUA,EAAO,SAE5BA,EAAOn0B,KAAKyvgB,gBAAgBt7e,EAAMyjF,GAClC,IAAI7tG,EAASoqB,EAAKpqB,OAClB/J,KAAKoxC,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB7ggB,OAAQ,IAAI+igB,EAAU/igB,IACpEkC,EAAO1C,UAAU02R,KAAKxzR,KAAKzM,KAAM43G,GAAQ,GACzCA,EAAOnF,MAAMzyG,KAAK4ugB,WAClBh3Z,EAAOnF,MAAMqvZ,EAAUI,SACnB/te,EAAKpqB,OAAS,GACd6tG,EAAOnF,MAAMt+E,GAEjByjF,EAAOnF,MAAMqvZ,EAAUI,SACvBtqZ,EAAOnF,MAAMzyG,KAAK6ugB,WAClBj3Z,EAAOnF,MAAMqvZ,EAAUI,UAM3ByM,EAAUqB,cAAgB,SAAUN,GAEhC,IADA,IAAIvsgB,EAAS,GACJiH,EAAI,EAAGA,EAAIslgB,EAAU3lgB,OAAQK,IAClCjH,GAAkBtD,OAAOyhC,aAAaoue,EAAUtlgB,IAEpD,OAAOjH,GAEJwrgB,EArOmB,CAsO5B,GAEEsB,EAAsC,WAKtC,SAASA,EAAqBj9a,GAC1BhzF,KAAKgzF,OAASA,EAElB,OAAOi9a,EAR8B,GAWrCC,EAA6C,WAK7C,SAASA,EAA4Bl9a,GACjChzF,KAAKgzF,OAASA,EAElB,OAAOk9a,EARqC,ITtQhD,SAAW9R,GAMP,IAsBI+R,GArBJ,SAAWC,GAKPA,EAAcA,EAAc,QAAU,GAAK,OAK3CA,EAAcA,EAAc,SAAW,GAAK,QAK5CA,EAAcA,EAAc,WAAa,GAAK,WAflD,CAgBmBhS,EAAagS,gBAAkBhS,EAAagS,cAAgB,KAM/E,SAAWD,GAKPA,EAAWA,EAAW,eAAiB,GAAK,cAK5CA,EAAWA,EAAW,cAAgB,GAAK,aAV/C,CAWGA,IAAeA,EAAa,MAxCnC,CAyCG/R,IAAiBA,EAAe,KACnC,IU3CWiS,EV2CPC,EAA2B,WAC3B,SAASA,EAAUrqgB,GAoDf,GA9CAjG,KAAKuwgB,MAAO,EAMZvwgB,KAAKwwgB,WAAa,EAMlBxwgB,KAAKywgB,cAAgB,KAMrBzwgB,KAAK0wgB,YAAa,EAMlB1wgB,KAAK2wgB,mBAAoB,EAMzB3wgB,KAAK4wgB,UAAW,EAKhB5wgB,KAAK6wgB,aAAc,EAKnB7wgB,KAAK8wgB,cAAe,EAKpB9wgB,KAAK+wgB,aAAc,EACE,qBAAV9qgB,EACPjG,KAAKuwgB,MAAO,OAGZ,KAAMtqgB,EAAM8D,OAAS,GAAkB,WAAb9D,EAAM,IAAkB,CAC9CjG,KAAKm1V,YAAclvV,EACnBjG,KAAKm0B,KAAO,GACZ,IAAK,IAAI/pB,EAAI,EAAGA,EAAInE,EAAM8D,SAAUK,EAChCpK,KAAKm0B,KAAKzf,KAAKzO,EAAMo4B,WAAWj0B,KA8QhD,OAzQArB,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,MAAO,CAM9C69B,IAAK,WACD,OAAOpnC,KAAKuwgB,MAEhBj+Z,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,QAAS,CAKhD69B,IAAK,WACD,OAAOpnC,KAAKm1V,aAEhB3/S,IAAK,SAAUvvC,GACXjG,KAAKm1V,YAAclvV,EACnBjG,KAAKm0B,KAAO,MAEhBm+E,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,SAAU,CAKjD69B,IAAK,WACD,OAAOpnC,KAAKgxgB,SAEhBx7d,IAAK,SAAUvvC,GACXjG,KAAKgxgB,QAAU/qgB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,WAAY,CAKnD69B,IAAK,WACD,OAAOpnC,KAAKixgB,WAEhBz7d,IAAK,SAAUvvC,GACXjG,KAAKixgB,UAAYhrgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,wBAAyB,CAKhE69B,IAAK,WACD,OAAOpnC,KAAK49f,QAEhBpod,IAAK,SAAUvvC,GACXjG,KAAK49f,OAAS33f,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,eAAgB,CAKvD69B,IAAK,WACD,OAAOpnC,KAAKywgB,eAEhBn+Z,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,WAAY,CAKnD69B,IAAK,WACD,OAAOpnC,KAAKwwgB,WAEhBh7d,IAAK,SAAUvvC,GACXjG,KAAKwwgB,UAAYvqgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,aAAc,CAKrD69B,IAAK,WACD,OAAOpnC,KAAK2hgB,YAEhBrvZ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,YAAa,CAKpD69B,IAAK,WACD,OAAOpnC,KAAKkxgB,YAMhB17d,IAAK,SAAUvvC,GACXjG,KAAKkxgB,WAAajrgB,GAEtBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeimgB,EAAU/mgB,UAAW,SAAU,CAIjD69B,IAAK,WACD,OAAOpnC,KAAKmxgB,gBAEhB37d,IAAK,SAAUvvC,GACXjG,KAAKmxgB,eAAiBlrgB,GAE1BqsG,YAAY,EACZC,cAAc,IAOlB+9Z,EAAUc,WAAa,SAAUhsM,GAC7B,GAAa,MAATA,EACA,MAAO,GAEX,IAAIisM,EAAU,GACd,OAAOA,GAMXf,EAAU/mgB,UAAU02R,KAAO,SAAUroL,GACjC,GAAe,OAAXA,EACA,MAAM,IAAIzkE,MAAM,uCAEAxtC,IAAhB3F,KAAK0yG,QAAwB1yG,KAAK0yG,SAAW0rZ,EAAagS,cAAckB,MACxE15Z,EAAOnF,MAAMzyG,KAAKuxgB,aAGlB35Z,EAAOnF,MAAM69Z,EAAUkB,WAAW,GAAKxxgB,KAAKiG,MAAQqqgB,EAAUkB,WAAW,KAGjFlB,EAAU/mgB,UAAUgogB,UAAY,WAC5B,IAAIxtgB,EAAS,GACb,QAAoB4B,IAAhB3F,KAAK0yG,QAAwB1yG,KAAK0yG,SAAW0rZ,EAAagS,cAAckB,MAAO,CAE/E,IADA,IAAIn9e,EAAOn0B,KAAKyxgB,cAAczxgB,KAAKiG,OAC1BmE,EAAI,EAAGA,EAAI+pB,EAAKpqB,OAAQK,IAC7BrG,GAAUlE,OAAOyhC,aAAanN,EAAK/pB,IAEvCrG,EAASusgB,EAAUkB,WAAW,GAAKztgB,EAASusgB,EAAUkB,WAAW,QAGjEztgB,EAAS/D,KAAKiG,MAElB,OAAOlC,GAEXusgB,EAAU/mgB,UAAUkogB,cAAgB,SAAUxrgB,GAE1C,IADA,IAAIkuB,EAAO,GACF/pB,EAAI,EAAGA,EAAInE,EAAM8D,OAAQK,IAAK,CACnC,IAAIiuH,EAAcpyH,EAAMo4B,WAAWj0B,GACnC,OAAQiuH,GACJ,KAAK,GACL,KAAK,GACDlkG,EAAKzf,KAAK,IACVyf,EAAKzf,KAAK2jH,GACV,MACJ,KAAK,GACDlkG,EAAKzf,KAAK,IACVyf,EAAKzf,KAAK,KACV,MACJ,KAAK,GACDyf,EAAKzf,KAAK,IACVyf,EAAKzf,KAAK2jH,GACV,MACJ,QACIlkG,EAAKzf,KAAK2jH,GACV,OAGZ,OAAOlkG,GAMXm8e,EAAU/mgB,UAAUuzC,MAAQ,SAAU6kd,GAClC,GAA2B,OAAvB3hgB,KAAKywgB,eAA0BzwgB,KAAKywgB,cAAciB,aAAe/P,EACjE,OAAO3hgB,KAAKywgB,cAGZzwgB,KAAKywgB,cAAgB,KAEzB,IAAIkB,EAAY,IAAIrB,EAAUtwgB,KAAKm1V,aAKnC,OAJAw8K,EAAUpB,KAAOvwgB,KAAKuwgB,KACtBoB,EAAUhQ,WAAaA,EACvBgQ,EAAUb,aAAe9wgB,KAAK8wgB,aAC9B9wgB,KAAKywgB,cAAgBkB,EACdA,GAKXrB,EAAUsB,eAAiB,SAAU3rgB,EAAO4rgB,GACxC,GAAa,MAAT5rgB,EACA,MAAM,IAAIktC,MAAM,mCAIpB,IAFA,IACIhwC,EAAS,GACJiH,EAAI,EAAGA,EAAInE,EAAM8D,OAAQK,IAAK,CACnC,IAAImc,EAAOtgB,EAAMo4B,WAAWj0B,GAC5BjH,EAAOuR,KAAK6R,EAAO,MAAQ,GAC3BpjB,EAAOuR,KAAY,IAAP6R,GAEhB,OAAOpjB,GAKXmtgB,EAAUl4M,aAAe,SAAUjkS,GAC/B,GAAY,MAARA,EACA,MAAM,IAAIgf,MAAM,oCAGpB,IADA,IAAIpvC,EAAS,GACJqG,EAAI,EAAGA,EAAI+pB,EAAKpqB,SAAUK,EAC/BrG,GAAUlE,OAAOyhC,aAAanN,EAAK/pB,IAEvC,OAAOrG,GAOXusgB,EAAUkB,WAAa,KAKvBlB,EAAUwB,cAAgB,KAK1BxB,EAAUyB,iBAAmB,SACtBzB,EA3UmB,GWpC1B0B,EAA8B,WAC9B,SAASA,EAAaC,EAAWC,GAM7BlygB,KAAKmygB,QAAU,EAMfnygB,KAAKoygB,WAAa,EAMlBpygB,KAAKiygB,UAAY,EAMjBjygB,KAAKkygB,UAAY,EACQ,kBAAdD,GAA+C,kBAAdC,GACxClygB,KAAKiygB,UAAYA,EACjBjygB,KAAKkygB,UAAYA,IAIjBlygB,KAAKiygB,UAAYz2e,OAAOy2e,GACxBjygB,KAAKkygB,UAAY12e,OAAO02e,IA8FhC,OA3FAnpgB,OAAOsB,eAAe2ngB,EAAazogB,UAAW,SAAU,CAMpD69B,IAAK,WACD,OAAOpnC,KAAKqygB,SAEhB78d,IAAK,SAAUvvC,GACXjG,KAAKqygB,QAAUpsgB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe2ngB,EAAazogB,UAAW,WAAY,CAKtD69B,IAAK,WACD,OAAOpnC,KAAKsygB,WAEhB98d,IAAK,SAAUvvC,GACXjG,KAAKsygB,UAAYrsgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe2ngB,EAAazogB,UAAW,wBAAyB,CAKnE69B,IAAK,WACD,OAAOpnC,KAAKmygB,QAEhB38d,IAAK,SAAUvvC,GACXjG,KAAKmygB,OAASlsgB,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe2ngB,EAAazogB,UAAW,WAAY,CAKtD69B,IAAK,WACD,OAAOpnC,KAAKoygB,WAEhB58d,IAAK,SAAUvvC,GACXjG,KAAKoygB,UAAYnsgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe2ngB,EAAazogB,UAAW,eAAgB,CAK1D69B,IAAK,WACD,IAAImre,EAAgB,KACpB,OAAOA,GAEXjga,YAAY,EACZC,cAAc,IAOlBy/Z,EAAazogB,UAAU02R,KAAO,SAAUroL,GACpCA,EAAOnF,MAAMzyG,KAAK0Z,aAMtBs4f,EAAazogB,UAAUmQ,SAAW,WAC9B,OAAO1Z,KAAKiygB,UAAUv4f,WAAa,IAAM1Z,KAAKkygB,UAAUx4f,WAAa,MAMzEs4f,EAAazogB,UAAUuzC,MAAQ,SAAU6kd,GACrC,OAAO,MAEJqQ,EA/HsB,GAsI7B,EAAoC,WACpC,SAASQ,EAAmB/nK,EAAMgoK,GAM9BzygB,KAAK0ygB,QAAU,EAMf1ygB,KAAK2ygB,WAAa,EAMlB3ygB,KAAK4ygB,aAAe,EAKpB5ygB,KAAK4qgB,qBAAuB,IAAIjF,EAEhC3lgB,KAAK8M,WAAW29V,GA2OpB,OA7NA1hW,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,SAAU,CAM1D69B,IAAK,WACD,OAAOpnC,KAAK6ygB,SAEhBr9d,IAAK,SAAUvvC,GACXjG,KAAK6ygB,QAAU5sgB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,WAAY,CAK5D69B,IAAK,WACD,OAAOpnC,KAAK8ygB,WAEhBt9d,IAAK,SAAUvvC,GACXjG,KAAK8ygB,UAAY7sgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,wBAAyB,CAKzE69B,IAAK,WACD,OAAOpnC,KAAK0ygB,QAEhBl9d,IAAK,SAAUvvC,GACXjG,KAAK0ygB,OAASzsgB,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,WAAY,CAK5D69B,IAAK,WACD,OAAOpnC,KAAK2ygB,WAEhBn9d,IAAK,SAAUvvC,GACXjG,KAAK2ygB,UAAY1sgB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,eAAgB,CAKhE69B,IAAK,WACD,OAAO,MAEXkrE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,SAAU,CAK1D69B,IAAK,WAID,OAAOpnC,KAAK+ygB,iBAEhBzga,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,YAAa,CAK7D69B,IAAK,WACD,OAAOpnC,KAAKs/f,cAEhBhtZ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,QAAS,CAKzD69B,IAAK,WAOD,OAAOpnC,KAAK4ygB,aAEhBtga,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAemogB,EAAmBjpgB,UAAW,UAAW,CAK3D69B,IAAK,WACD,OAAOpnC,KAAK+ygB,iBAEhBzga,YAAY,EACZC,cAAc,IAElBiga,EAAmBjpgB,UAAUuD,WAAa,SAAU29V,GAChD,GAAIA,aAAgB,GACbA,aAAgB,GAChBA,aAAgB22J,GAChB32J,aAAgBqiK,GAChBriK,aAAgB,GAChBA,aAAgBunK,GAChBvnK,aAAgB6lK,EACnBtwgB,KAAK+ygB,gBAAkBtoK,MAEtB,CACD,IAAIzrH,EAAUyrH,EACdzqW,KAAK8M,WAAWkyO,EAAQ56O,WAOhCougB,EAAmBjpgB,UAAU02R,KAAO,SAAUroL,GAI3BA,EAAO5yG,SAAtB,IACI47f,EAAShpZ,EAAO3hG,SAAS0rf,WAE7B3hgB,KAAKqjG,OAAO+7Z,UAAW,EAEvB,IAAI7zJ,EAAY,KAWhBA,EAAYq1J,EAAO7B,aAAa/+f,KAAKqjG,QAKrCkoQ,EAAUtrE,KAAKroL,IAMnB46Z,EAAmBjpgB,UAAUuzC,MAAQ,SAAU6kd,GAgD3C,OAAO,MAEJ6Q,EArQ4B,ID5IvC,SAAWnC,GAKPA,EAAWA,EAAW,QAAU,GAAK,OAKrCA,EAAWA,EAAW,UAAY,GAAK,SAKvCA,EAAWA,EAAW,UAAY,GAAK,UAf3C,CAgBGA,IAAeA,EAAa,KEjB/B,IC8eW2C,EAwCAC,EA0CAC,EAiCAC,EDjmBPC,EAA4B,WAM5B,SAASA,EAAWntgB,GAMhBjG,KAAKqzgB,iBAAmB,EACxBrzgB,KAAKiG,MAAQA,EA8FjB,OA5FA8C,OAAOsB,eAAe+ogB,EAAW7pgB,UAAW,SAAU,CAMlD69B,IAAK,WACD,OAAOpnC,KAAKszgB,cAEhB99d,IAAK,SAAUvvC,GACXjG,KAAKszgB,aAAertgB,GAExBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+ogB,EAAW7pgB,UAAW,WAAY,CAKpD69B,IAAK,WACD,OAAOpnC,KAAKuzgB,QAEhB/9d,IAAK,SAAUvvC,GACXjG,KAAKuzgB,OAASttgB,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+ogB,EAAW7pgB,UAAW,wBAAyB,CAKjE69B,IAAK,WACD,OAAOpnC,KAAK8U,OAEhB0gC,IAAK,SAAUvvC,GACXjG,KAAK8U,MAAQ7O,GAEjBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+ogB,EAAW7pgB,UAAW,WAAY,CAKpD69B,IAAK,WACD,OAAOpnC,KAAKqzgB,iBAEhB79d,IAAK,SAAUvvC,GACXjG,KAAKqzgB,gBAAkBptgB,GAE3BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+ogB,EAAW7pgB,UAAW,eAAgB,CAKxD69B,IAAK,WACD,IAAI+le,EAAS,KACb,OAAOA,GAEX76Z,YAAY,EACZC,cAAc,IAMlB6ga,EAAW7pgB,UAAU02R,KAAO,SAAUroL,GAClCA,EAAOnF,MAAMzyG,KAAKwzgB,UAAUxzgB,KAAKiG,SAMrCmtgB,EAAW7pgB,UAAUuzC,MAAQ,SAAU6kd,GACnC,IAAI0L,EAAY,IAAI+F,EAAWpzgB,KAAKiG,OACpC,OAAOongB,GAOX+F,EAAW7pgB,UAAUiqgB,UAAY,SAAUvtgB,GACvC,OAAOA,EAAQ,OAAS,SAErBmtgB,EA3GoB,GCW3B,EAAsC,WAOtC,SAASK,EAAqB3S,GAC1B9ggB,KAAK0zgB,sBAAwB,IAAI/N,EACjC3lgB,KAAK2zgB,eAAgB,EACrB3zgB,KAAK4zgB,YAAa,EAClB5zgB,KAAK6zgB,eAAgB,EACrB7zgB,KAAK8zgB,cAAe,EACpB9zgB,KAAK+zgB,cAAe,EACpB/zgB,KAAKg0gB,cAAe,EACpBh0gB,KAAKi0gB,eAAgB,EACrBj0gB,KAAKk0gB,UAAYlB,EAAYmB,QAC7Bn0gB,KAAKo0gB,YAAcnB,EAAcoB,WACjCr0gB,KAAKs0gB,YAAc,IAAI,EACvBt0gB,KAAKu0gB,QAAUrB,EAAWsB,KAC1Bx0gB,KAAKy0gB,SAAW3T,EA+bpB,OA7bA/3f,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,eAAgB,CAclE69B,IAAK,WACD,OAAOpnC,KAAK2zgB,eAehBn+d,IAAK,SAAUvvC,GACXjG,KAAK2zgB,cAAgB1tgB,EACrBjG,KAAKs0gB,YAAYlje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsB9J,aAAc,IAAIwJ,EAAWpzgB,KAAK2zgB,iBAEjGrha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,eAAgB,CAgBlE69B,IAAK,WACD,OAAOpnC,KAAK6zgB,eAiBhBr+d,IAAK,SAAUvvC,GACXjG,KAAK6zgB,cAAgB5tgB,EACrBjG,KAAKs0gB,YAAYlje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsB7J,aAAc,IAAIuJ,EAAWpzgB,KAAK6zgB,iBAEjGvha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,YAAa,CAe/D69B,IAAK,WACD,OAAOpnC,KAAK4zgB,YAgBhBp+d,IAAK,SAAUvvC,GACXjG,KAAK4zgB,WAAa3tgB,EAClBjG,KAAKs0gB,YAAYlje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsB5J,UAAW,IAAIsJ,EAAWpzgB,KAAK4zgB,cAE9Ftha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,cAAe,CAejE69B,IAAK,WACD,OAAOpnC,KAAK+zgB,cAgBhBv+d,IAAK,SAAUvvC,GACXjG,KAAK+zgB,aAAe9tgB,EACpBjG,KAAKs0gB,YAAYlje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsB3J,YAAa,IAAIqJ,EAAWpzgB,KAAK+zgB,gBAEhGzha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,cAAe,CAejE69B,IAAK,WACD,OAAOpnC,KAAKg0gB,cAgBhBx+d,IAAK,SAAUvvC,GACXjG,KAAKg0gB,aAAe/tgB,EACpBjG,KAAKs0gB,YAAYlje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsB1J,YAAa,IAAIoJ,EAAWpzgB,KAAKg0gB,gBAEhG1ha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,eAAgB,CAelE69B,IAAK,WACD,OAAOpnC,KAAKi0gB,eAgBhBz+d,IAAK,SAAUvvC,GACXjG,KAAKi0gB,cAAgBhugB,EACrBjG,KAAKs0gB,YAAYlje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsBzJ,aAAc,IAAImJ,EAAWpzgB,KAAKi0gB,iBAEjG3ha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,WAAY,CAc9D69B,IAAK,WACD,OAAOpnC,KAAKk0gB,WAehB1+d,IAAK,SAAUvvC,GACXjG,KAAKk0gB,UAAYjugB,EACjBjG,KAAKy0gB,SAASrje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsBxJ,SAAU,IAAI9I,EAAQphgB,KAAK00gB,aAAa10gB,KAAKk0gB,cAEzG5ha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,SAAU,CAc5D69B,IAAK,WACD,OAAOpnC,KAAKu0gB,SAehB/+d,IAAK,SAAUvvC,GACXjG,KAAKu0gB,QAAUtugB,EACfjG,KAAKy0gB,SAASrje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsBtJ,OAAQ,IAAIhJ,EAAQphgB,KAAK20gB,eAAe30gB,KAAKu0gB,YAEzGjia,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,aAAc,CAchE69B,IAAK,WACD,OAAOpnC,KAAKo0gB,aAehB5+d,IAAK,SAAUvvC,GACXjG,KAAKo0gB,YAAcnugB,EACnBjG,KAAKy0gB,SAASrje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsBvJ,WAAY,IAAI/I,EAAQphgB,KAAK40gB,eAAe50gB,KAAKo0gB,gBAE7G9ha,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,cAAe,CAejE69B,IAAK,WACD,OAAOpnC,KAAK60gB,cAgBhBr/d,IAAK,SAAUvvC,GACXjG,KAAK60gB,aAAe5ugB,EAChBjG,KAAK60gB,eAAiB1B,EAAgB2B,YAAc90gB,KAAKs0gB,YAAYlje,MAAM8sd,YAAYl+f,KAAK0zgB,sBAAsBrJ,cAClHrqgB,KAAKs0gB,YAAYlje,MAAMnjC,OAAOjO,KAAK0zgB,sBAAsBrJ,cAEpDrqgB,KAAK60gB,eAAiB1B,EAAgBqB,MAC3Cx0gB,KAAKs0gB,YAAYlje,MAAM7pB,SAASvnB,KAAK0zgB,sBAAsBrJ,aAAc,IAAIjJ,EAAQ,UAG7F9uZ,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeopgB,EAAqBlqgB,UAAW,UAAW,CAM7D69B,IAAK,WACD,OAAOpnC,KAAKs0gB,aAEhBhia,YAAY,EACZC,cAAc,IAElBkha,EAAqBlqgB,UAAUorgB,eAAiB,SAAUp2a,GACtD,OAAQA,GACJ,KAAK20a,EAAW6B,QACZ,MAAO,UACX,KAAK7B,EAAW8B,oBACZ,MAAO,sBACX,KAAK9B,EAAW+B,mBACZ,MAAO,qBACX,KAAK/B,EAAWsB,KACZ,MAAO,SAGnBf,EAAqBlqgB,UAAUmrgB,aAAe,SAAUn2a,GACpD,OAAQA,GACJ,KAAKy0a,EAAYmB,QACb,MAAO,UACX,KAAKnB,EAAYkC,YACb,MAAO,cACX,KAAKlC,EAAYmC,UACb,MAAO,YACX,KAAKnC,EAAYvzT,WACb,MAAO,aACX,KAAKuzT,EAAYoC,MACb,MAAO,QACX,KAAKpC,EAAYqC,eACb,MAAO,mBAGnB5B,EAAqBlqgB,UAAUqrgB,eAAiB,SAAU72T,GACtD,OAAQA,GACJ,KAAKk1T,EAAcoB,WACf,MAAO,aACX,KAAKpB,EAAcqC,UACf,MAAO,YACX,KAAKrC,EAAcsC,cACf,MAAO,gBACX,KAAKtC,EAAcuC,eACf,MAAO,iBACX,KAAKvC,EAAcwC,YACf,MAAO,cACX,KAAKxC,EAAcyC,aACf,MAAO,iBAGZjC,EAnd8B,IAoezC,SAAWT,GAIPA,EAAYA,EAAY,WAAa,GAAK,UAI1CA,EAAYA,EAAY,eAAiB,GAAK,cAI9CA,EAAYA,EAAY,aAAe,GAAK,YAI5CA,EAAYA,EAAY,cAAgB,GAAK,aAI7CA,EAAYA,EAAY,SAAW,GAAK,QAIxCA,EAAYA,EAAY,kBAAoB,GAAK,kBAxBrD,CAyBGA,IAAgBA,EAAc,KAejC,SAAWC,GAIPA,EAAcA,EAAc,cAAgB,GAAK,aAIjDA,EAAcA,EAAc,aAAe,GAAK,YAKhDA,EAAcA,EAAc,iBAAmB,GAAK,gBAKpDA,EAAcA,EAAc,kBAAoB,GAAK,iBAIrDA,EAAcA,EAAc,eAAiB,GAAK,cAIlDA,EAAcA,EAAc,gBAAkB,GAAK,eA1BvD,CA2BGA,IAAkBA,EAAgB,KAerC,SAAWC,GAIPA,EAAWA,EAAW,WAAa,GAAK,UAIxCA,EAAWA,EAAW,uBAAyB,GAAK,sBAIpDA,EAAWA,EAAW,sBAAwB,GAAK,qBAInDA,EAAWA,EAAW,QAAU,GAAK,OAhBzC,CAiBGA,IAAeA,EAAa,KAgB/B,SAAWC,GAIPA,EAAgBA,EAAgB,cAAgB,GAAK,aAIrDA,EAAgBA,EAAgB,QAAU,GAAK,OARnD,CASGA,IAAoBA,EAAkB,KC/mBzC,ICIWwC,EAiBAC,EA2BAC,EAqCAC,EAqCAC,EAyDAC,EDnLP,EAAwC,WACxC,IAAIntgB,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAyBxC,EAA4B,SAAU4C,GAOtC,SAASgqgB,IACL,IAAIzpgB,EAAQP,EAAOQ,KAAKzM,OAASA,KAcjC,OAPAwM,EAAM0pgB,SAAW,KAKjB1pgB,EAAM2pgB,yBAA2B,IAAIxQ,EACrCn5f,EAAM4kC,MAAM7pB,UAAS,IAAIo+e,GAAuB9uf,KAAM,IAAIuqf,EAAQ,YAC3D50f,EAsCX,OA3DA,EAAUypgB,EAAYhqgB,GAuBtBlD,OAAOsB,eAAe4rgB,EAAW1sgB,UAAW,QAAS,CAMjD69B,IAAK,WACD,OAAOpnC,KAAKk2gB,UAEhB1ge,IAAK,SAAUvvC,GACMA,EAAM7B,QAKvBpE,KAAKk2gB,SAAWjwgB,EAChBjG,KAAKoxC,MAAM7pB,SAASvnB,KAAKm2gB,yBAAyBvQ,MAAO,IAAI,EAAmB3/f,KAEpFqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4rgB,EAAW1sgB,UAAW,oBAAqB,CAK7D69B,IAAK,WAKD,OAJgC,OAA5BpnC,KAAKo2gB,oBAAkE,qBAA5Bp2gB,KAAKo2gB,qBAChDp2gB,KAAKo2gB,mBAAqB,IAAI,EAAqBp2gB,MACnDA,KAAKoxC,MAAM7pB,SAASvnB,KAAKm2gB,yBAAyB1V,kBAAmB,IAAI,EAAmBzggB,KAAKo2gB,mBAAmBhygB,WAEjHpE,KAAKo2gB,oBAEhB9ja,YAAY,EACZC,cAAc,IAEX0ja,EA5DoB,CA6D7B,GEvEE,EAA+B,WAC/B,SAASI,IAKLr2gB,KAAKqggB,QAAU,IAAI,EAMnBrggB,KAAKs2gB,eAAiB,EAMtBt2gB,KAAKu2gB,YAAc,EAMnBv2gB,KAAK4qgB,qBAAuB,IAAIjF,EAiYpC,OA/XA58f,OAAOsB,eAAegsgB,EAAc9sgB,UAAW,YAAa,CAMxD69B,IAAK,WACD,OAAOpnC,KAAKw2gB,SAEhBhhe,IAAK,SAAUvvC,GACXjG,KAAKw2gB,QAAUvwgB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegsgB,EAAc9sgB,UAAW,UAAW,CAKtD69B,IAAK,WAID,OAH4B,MAAxBpnC,KAAKy2gB,kBACLz2gB,KAAKy2gB,gBAAkB,IAAI,GAExBz2gB,KAAKy2gB,iBAEhBnka,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegsgB,EAAc9sgB,UAAW,WAAY,CAKvD69B,IAAK,WACD,OAAOpnC,KAAK+8f,aAEhBvnd,IAAK,SAAUvvC,GACXjG,KAAK+8f,YAAc92f,EACnBjG,KAAKoxC,MAAQpxC,KAAK+8f,YAAY2Z,YAElCpka,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegsgB,EAAc9sgB,UAAW,aAAc,CAKzD69B,IAAK,WACD,OAAOpnC,KAAKoxC,OAEhBkhE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegsgB,EAAc9sgB,UAAW,mBAAoB,CAK/D69B,IAAK,WACD,OAAOpnC,KAAK+8f,YAAY2Z,YAE5Bpka,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegsgB,EAAc9sgB,UAAW,QAAS,CAKpD69B,IAAK,WACD,OAAOpnC,KAAKu2gB,aAEhB/ge,IAAK,SAAUvvC,GACXjG,KAAKu2gB,YAActwgB,GAEvBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegsgB,EAAc9sgB,UAAW,gBAAiB,CAK5D69B,IAAK,WAED,OADApnC,KAAK0pC,MAAQ1pC,KAAK0pC,MAAQ,EACnB1pC,KAAK0pC,OAEhB4oE,YAAY,EACZC,cAAc,IAElB8ja,EAAc9sgB,UAAU02R,KAAO,SAAUroL,EAAQmpZ,GAC7C/ggB,KAAK22gB,SAAS/+Z,GAEd53G,KAAK42gB,iBAAmB,KACxB52gB,KAAKqggB,QAAQzvf,QACb5Q,KAAK62gB,wBACL72gB,KAAK82gB,YAAYl/Z,GACjB,IAAIm/Z,EAAY/2gB,KAAK0pC,MACjBste,EAAUp/Z,EAAO5yG,SACrBhF,KAAKi3gB,eAAe,EAAG,IAAIjF,EAAa,GAAI,IAAI,GAChD,IAAIkF,EAAW,EACft/Z,EAAOnF,MAAMqvZ,EAAUM,MACvBxqZ,EAAOnF,MAAMqvZ,EAAUI,SACvBligB,KAAKm3gB,aAAav/Z,GAClB53G,KAAKo3gB,YAAYx/Z,EAAQ53G,KAAK0pC,MAAOwte,GACrCl3gB,KAAKq3gB,cAAcz/Z,EAAQo/Z,GAC3Bh3gB,KAAK0pC,MAAQqte,EACb,IAAK,IAAI3sgB,EAAI,EAAGA,EAAIpK,KAAKs3gB,iBAAiB5te,QAASt/B,EAAG,CAClD,IAAI00f,EAAK9+f,KAAKs3gB,iBAAiBlme,MAAMhnC,GACrC00f,EAAGz7Z,OAAO+7Z,UAAW,EAEzB,GAAwB,qBAAb2B,EACP,OAAOnpZ,EAAO3F,OAAO1J,OAGrBqP,EAAO3F,OAAOguL,KAAK8gO,IAO3BsV,EAAc9sgB,UAAU8tgB,cAAgB,SAAUz/Z,EAAQo/Z,GACtDp/Z,EAAOnF,MAAMqvZ,EAAUI,QAAUJ,EAAUQ,UAAYR,EAAUI,SACjEtqZ,EAAOnF,MAAMuka,EAAQt9f,WAAaoof,EAAUI,SAC5CtqZ,EAAOnF,MAAMqvZ,EAAU/7C,IAAM+7C,EAAUI,UAM3CmU,EAAc9sgB,UAAU6tgB,YAAc,SAAUx/Z,EAAQluE,EAAOwte,GAC3Dt/Z,EAAOnF,MAAMqvZ,EAAUO,QAAUP,EAAUI,SAE3C,IAAIG,EAAUrigB,KAAKqigB,QACnBA,EAAQjxd,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/8d,KAAM,IAAIi/d,EAAU9sgB,KAAKu2gB,YAAc,IACxFlU,EAAU,IAAI,EAAcA,GAC5BA,EAAQ8I,YAAW,GACnB9I,EAAQpiO,KAAKroL,IAMjBy+Z,EAAc9sgB,UAAU4tgB,aAAe,SAAUv/Z,GAC7C,IAAI2/Z,EAAY,EACZ7te,EAAQ,EACZ,GACIA,EAAQ1pC,KAAKw3gB,kBAAkBD,GAC/Bv3gB,KAAKy3gB,eAAe7/Z,EAAQ2/Z,EAAW7te,GACvC6te,GAAa7te,QACE,IAAVA,IAMb2se,EAAc9sgB,UAAUkugB,eAAiB,SAAU7/Z,EAAQ2/Z,EAAW7te,GAClE,KAAIA,GAAS,GAAK6te,GAAav3gB,KAAK0pC,OAApC,CAIAkuE,EAAOnF,MAAM8ka,EAAY,KAAO7te,EAAQ,GAAKo4d,EAAUI,SACvD,IAAK,IAAI93f,EAAImtgB,EAAWntgB,GAAKmtgB,EAAY7te,IAASt/B,EAAG,CACjD,IAAIwiC,EAAM5sC,KAAKqggB,QAAQn0d,SAAS9hC,GAC5BgxC,EAAM,GAENA,EADAxO,EAAI/1B,OAASw5f,EAAWqH,KAClB13gB,KAAKs8C,QAAQ1P,EAAIllC,OAAQ,OAAO,GAGhC1H,KAAKs8C,QAAQ1P,EAAIllC,OAAQklC,EAAI+qe,YAAY,GAEnD//Z,EAAOnF,MAAMr3D,MAOrBi7d,EAAc9sgB,UAAU+yC,QAAU,SAAU50C,EAAQwqgB,EAAW0F,GAC3D,IAAIrK,EAAe,GACfsK,EAAkB,GAAKnwgB,EAAOgS,WAAW3P,OACzCmogB,GAAa,IACbA,EAAY,GAGhB,IADA,IAAI4F,EAAsB,EAAI5F,EAAUx4f,WAAW3P,QAAW,EAAI,EAAK,EAAImogB,EAAUx4f,WAAW3P,OACvF+K,EAAQ,EAAGA,EAAQ+igB,EAAiB/igB,IACzCy4f,GAA8B,IAElCA,EAAeA,EAAe7lgB,EAAOgS,WAAa,IAClD,IAAS5E,EAAQ,EAAGA,EAAQgjgB,EAAoBhjgB,IAC5Cy4f,GAA8B,IAIlC,OAFAA,EAAeA,EAAe2E,EAAUx4f,WAAa,IACrD6zf,EAAeA,GAAgB,EAAWzL,EAAU1ya,EAAI0ya,EAAUr+f,GAAKq+f,EAAUI,QAC1EqL,GAMX8I,EAAc9sgB,UAAUiugB,kBAAoB,SAAUD,GAIlD,IAHA,IACIntgB,EADAs/B,EAAQ,EAERuyd,EAAQj8f,KAAK0pC,MACRg4D,EAAI,EAAGA,EAAI1hG,KAAKiW,SAASyggB,WAAWhte,MAAOg4D,IAChD,KAAI6pQ,EAAYvrW,KAAKiW,SAASyggB,WAAWtle,MAAMswD,GAAG6pQ,UAC9CwsK,EAAYxsK,EAAU7xV,WACXq+f,EAAU13gB,MAAM,KAEnC,GAAIk3gB,GAAatb,EACb,OAAOvyd,EAGX,IAAKt/B,EAAImtgB,EAAWntgB,EAAI6xf,IAAS7xf,EAC7B,MAIJ,IAFAmtgB,EAAYntgB,EAELA,EAAI6xf,IAAS7xf,IACds/B,EAEN,OAAOA,GAMX2se,EAAc9sgB,UAAUstgB,sBAAwB,WAEjC72gB,KAAKqigB,QAAQjxd,MAAMl0B,OACjBld,KAAKqigB,QAAQjxd,MAAMsoE,UAMpC28Z,EAAc9sgB,UAAUotgB,SAAW,SAAU/+Z,GACzC,IAAI32E,EAAUjhC,KAAKg4gB,oBAAoBpga,EAAO3hG,UAC9C2hG,EAAOnF,MAAM,QAAUxxE,GACvB22E,EAAOnF,MAAMqvZ,EAAUI,UAM3BmU,EAAc9sgB,UAAUyugB,oBAAsB,SAAU/hgB,GACpD,IAAIgigB,EAAW,EACXh3e,EAAU,KAAOg3e,EAASv+f,WAC9B,OAAOunB,GAEXo1e,EAAc9sgB,UAAUw1f,aAAe,SAAUnyd,EAAKsre,GAClD,GAAoB,qBAATA,EAAsB,CAC7B,IAAIlZ,GAAS,EACb,OAAOh/f,KAAK++f,aAAanyd,EAAKoyd,GAI9B,OAAOh/f,KAAKm4gB,gBAAgBvre,EAAKsre,IAOzC7B,EAAc9sgB,UAAU4ugB,gBAAkB,SAAUvre,EAAKsre,GACrD,IACIlZ,EADAP,GAAQ,EAERlzJ,EAAY,KAEhB,GAAIvrW,KAAKoxC,MAAM1H,MAAQ,GAAKkD,EAAIyyd,sBAAwB,GAAKr/f,KAAKoxC,MAAM1H,MAAQkD,EAAIyyd,sBAAwB,EAAG,CAC3G,IAAIrgR,EAAUh/O,KAAKiW,SAASyggB,WAAW3X,aAAanyd,EAAKoyd,GACzDzzJ,EAAYvsH,EAAQusH,UACpByzJ,EAAShgR,EAAQggR,OAcrB,GAVQA,EAFS,MAAbzzJ,GACI3+T,EAAIo8D,SAAWm0Z,EAAayB,WAWnB,MAAbrzJ,EAAmB,CACnB,IAAI6sK,EAAYp4gB,KAAKq4gB,cACrB9sK,EAAY,IAAIymK,EAAaoG,EAAW,GACxC,IAAIj4Q,OAAQ,EACZ,GAAI6+P,EAAQ,CACRh/f,KAAKiW,SAASyggB,WAAWvigB,IAAIy4B,GAC7B5sC,KAAKiW,SAASyggB,WAAWzX,gBAAgBryd,EAAK2+T,EAAWprG,GACzD,IAAI/iI,EAAYp9H,KAAKiW,SAASyggB,WAAWhte,MAAQ,EAC7C4ue,EAAUt4gB,KAAKiW,SAASyggB,WAAWpY,kBAAkBlhY,GAAWmuO,UAAU0mK,UAC1EsG,EAAYv4gB,KAAKiW,SAASyggB,WAAWpY,kBAAkBt+f,KAAKiW,SAASyggB,WAAWhte,MAAQ,GAC5F1pC,KAAKiW,SAASyggB,WAAWnY,qBAAqBh3e,SAAS+wf,EAASC,GAChE3re,EAAI5nC,UAAY,OAGhBhF,KAAKiW,SAASyggB,WAAWzX,gBAAgBryd,EAAK2+T,EAAWprG,GAE7DvzN,EAAIyyd,sBAAwB9zJ,EAAU0mK,UACtCrle,EAAIo8D,OAASm0Z,EAAaqX,KAC1B/V,GAAQ,EAGZ,OADOA,GAASz+f,KAAKw4gB,UACdjtK,GAMX8qK,EAAc9sgB,UAAUutgB,YAAc,SAAUl/Z,GAE5C,IADA,IAAI0/Z,EAAmBt3gB,KAAKs3gB,iBACnBltgB,EAAI,EAAGA,EAAIktgB,EAAiB5te,QAASt/B,EAAG,CAC7C,IAAI00f,EAAKwY,EAAiBlme,MAAMhnC,GAC5BwiC,EAAMkyd,EAAGz7Z,OACbz2D,EAAIwyd,UAAW,EACfp/f,KAAKy4gB,mBAAmB7re,EAAKgrE,KAOrCy+Z,EAAc9sgB,UAAUkvgB,mBAAqB,SAAU7re,EAAKgrE,GACxD,IAAI2zP,EAAYvrW,KAAK++f,aAAanyd,GAC9BA,aAAe,GACf5sC,KAAKqigB,QAAQjxd,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/2f,KAAM03V,GAGhEvrW,KAAK+8f,YAAY2b,iBAAmBntK,EAEtB3+T,EAAIq+d,aAGlBjrgB,KAAKi3gB,eAAer/Z,EAAO5yG,SAAUumW,GACrCvrW,KAAK24gB,aAAa/re,EAAK2+T,EAAW3zP,IAMtCy+Z,EAAc9sgB,UAAUovgB,aAAe,SAAU/re,EAAK2+T,EAAW3zP,GACvCA,EAAO7tG,OAC7B6tG,EAAOnF,MAAM84P,EAAU0mK,UAAUv4f,YACjCk+F,EAAOnF,MAAMqvZ,EAAUE,YACvBpqZ,EAAOnF,MAAM84P,EAAU2mK,UAAUx4f,YACjCk+F,EAAOnF,MAAMqvZ,EAAUE,YACvBpqZ,EAAOnF,MAAMqvZ,EAAUl1d,KACvBgrE,EAAOnF,MAAMqvZ,EAAUI,SACvBt1d,EAAIqzP,KAAKroL,GACIA,EAAO3F,OACpB2F,EAAOnF,MAAMqvZ,EAAU5oQ,QACvBthJ,EAAOnF,MAAMqvZ,EAAUI,UAE3BmU,EAAc9sgB,UAAU0tgB,eAAiB,SAAUvvgB,EAAQ6jW,EAAWrsC,GAC9C,mBAATA,GAEPl/T,KAAKqggB,QAAQ94e,SAASgkV,EAAU0mK,UAAW,IAAI,EAAiBvqgB,EAAQ6jW,EAAWrsC,IACnFl/T,KAAKs2gB,eAAiB7kgB,KAAKyP,IAAIlhB,KAAKs2gB,eAAgB/qK,EAAU2mK,YAEzC,qBAAThzM,IAEZl/T,KAAKqggB,QAAQ94e,SAASgkV,EAAU0mK,UAAW,IAAI,EAAiBvqgB,EAAQ6jW,IACxEvrW,KAAKs2gB,eAAiB7kgB,KAAKyP,IAAIlhB,KAAKs2gB,eAAgB/qK,EAAU2mK,aAOtEmE,EAAcuC,YAAc,SAAUhse,GAClC,IAAImje,EAAKnje,EAIT,OAHU,MAANmje,IACAnje,EAAMmje,EAAG1sa,QAENz2D,GAEJype,EAzZuB,GA4Z9B,EAAkC,WAClC,SAASwC,EAAiBnxgB,EAAQ6jW,EAAWrsC,GACzC,IAAI45M,EAAapxgB,EACjB1H,KAAK+4gB,aAAeD,EACpB,IAAIE,EAAgBztK,EACpBvrW,KAAK23gB,WAAaqB,EAAc9G,UAChClygB,KAAKqjG,OAAS21a,EAAc/G,UAExBjygB,KAAK6W,KADW,qBAATqoT,EACKmxM,EAAW4I,OAGX5I,EAAWqH,KA4B/B,OAzBA3ugB,OAAOsB,eAAewugB,EAAiBtvgB,UAAW,eAAgB,CAM9D69B,IAAK,WACD,OAAOpnC,KAAKqjG,QAEhBiP,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewugB,EAAiBtvgB,UAAW,SAAU,CAKxD69B,IAAK,WACD,IAAIrjC,EAEJ,OADAA,EAAS/D,KAAK+4gB,aACPh1gB,GAEXuuG,YAAY,EACZC,cAAc,IAEXsma,EAvC0B,GCvajCK,EAAwB,WACxB,SAASA,EAAOtqgB,EAAGvM,GACE,qBAANuM,GACP5O,KAAK4O,EAAI,EACT5O,KAAKqC,EAAI,IAILrC,KAAK4O,EADC,OAANA,EACSA,EAGA,EAGT5O,KAAKqC,EADC,OAANA,EACSA,EAGA,GAIrB,OAAO62gB,EArBgB,GA4BvBC,EAAuB,WACvB,SAASA,EAAM9xgB,EAAOJ,GACI,qBAAXA,GACPjH,KAAKiH,OAAS,EACdjH,KAAKqH,MAAQ,IAITrH,KAAKiH,OADM,OAAXA,EACcA,EAGA,EAGdjH,KAAKqH,MADK,OAAVA,EACaA,EAGA,GAIzB,OAAO8xgB,EArBe,GA4BtBC,GAA4B,WAC5B,SAASA,EAAW/8a,EAAMkuY,EAAMC,EAAMC,GAClC,UAAWpuY,WAAgBA,GAAwB,qBAATA,EACtCr8F,KAAK4O,EAAI,EACT5O,KAAKqC,EAAI,EACTrC,KAAKiH,OAAS,EACdjH,KAAKqH,MAAQ,OAGb,GAAIg1F,aAAgB68a,GAAU3uC,aAAgB4uC,GAAyB,qBAAT3uC,EAAsB,CAChF,IAAI6uC,EAASh9a,EACbr8F,KAAK4O,EAAIyqgB,EAAOzqgB,EAChB5O,KAAKqC,EAAIg3gB,EAAOh3gB,EAChB,IAAIi3gB,EAAQ/uC,EACZvqe,KAAKiH,OAASqygB,EAAMrygB,OACpBjH,KAAKqH,MAAQiygB,EAAMjygB,UAElB,CACD,IAAIuH,EAAIytF,EACJh6F,EAAIkoe,EACJlje,EAAQmje,EACRvje,EAASwje,EACbzqe,KAAK4O,EAAIA,EACT5O,KAAKqC,EAAIA,EACTrC,KAAKiH,OAASA,EACdjH,KAAKqH,MAAQA,GAIzB,OAAO+xgB,EA7BoB,GAoC3BG,GAA2B,WAK3B,SAASA,EAAU50gB,EAAMC,EAAK0C,EAAON,GACjChH,KAAK2E,KAAOA,EACZ3E,KAAK4E,IAAMA,EACX5E,KAAKsH,MAAQA,EACbtH,KAAKgH,OAASA,EA6ClB,OA3CA+B,OAAOsB,eAAekvgB,EAAUhwgB,UAAW,QAAS,CAIhD69B,IAAK,WACD,OAAOpnC,KAAKsH,MAAQtH,KAAK2E,MAE7B2tG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAekvgB,EAAUhwgB,UAAW,SAAU,CAIjD69B,IAAK,WACD,OAAOpnC,KAAKgH,OAAShH,KAAK4E,KAE9B0tG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAekvgB,EAAUhwgB,UAAW,UAAW,CAIlD69B,IAAK,WACD,OAAO,IAAI8xe,EAAOl5gB,KAAK2E,KAAM3E,KAAK4E,MAEtC0tG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAekvgB,EAAUhwgB,UAAW,OAAQ,CAI/C69B,IAAK,WACD,OAAO,IAAI+xe,EAAMn5gB,KAAKqH,MAAOrH,KAAKiH,SAEtCqrG,YAAY,EACZC,cAAc,IAElBgna,EAAUhwgB,UAAUmQ,SAAW,WAC3B,OAAO1Z,KAAKw5gB,QAAU,IAAMx5gB,KAAK6tC,MAE9B0re,EAtDmB,GCzF1B,GAA6B,WAM7B,SAASE,KAoJT,OA7IAA,EAAYC,OAAS,IAAIP,EAAM,IAAK,KAKpCM,EAAYE,KAAO,IAAIR,EAAM,IAAK,KAKlCM,EAAYG,MAAQ,IAAIT,EAAM,IAAK,MAKnCM,EAAYI,GAAK,IAAIV,EAAM,KAAM,MAKjCM,EAAYK,GAAK,IAAIX,EAAM,KAAM,MAKjCM,EAAYM,GAAK,IAAIZ,EAAM,KAAM,MAKjCM,EAAYO,GAAK,IAAIb,EAAM,IAAK,MAKhCM,EAAYQ,GAAK,IAAId,EAAM,IAAK,KAKhCM,EAAYS,GAAK,IAAIf,EAAM,IAAK,KAKhCM,EAAYU,GAAK,IAAIhB,EAAM,IAAK,KAKhCM,EAAYW,GAAK,IAAIjB,EAAM,IAAK,KAKhCM,EAAYY,GAAK,IAAIlB,EAAM,IAAK,KAKhCM,EAAYa,GAAK,IAAInB,EAAM,IAAK,KAKhCM,EAAYc,IAAM,IAAIpB,EAAM,GAAI,KAKhCM,EAAYe,GAAK,IAAIrB,EAAM,KAAM,MAKjCM,EAAYgB,GAAK,IAAItB,EAAM,KAAM,MAKjCM,EAAYiB,GAAK,IAAIvB,EAAM,KAAM,MAKjCM,EAAYkB,GAAK,IAAIxB,EAAM,KAAM,MAKjCM,EAAYmB,GAAK,IAAIzB,EAAM,IAAK,MAKhCM,EAAYoB,GAAK,IAAI1B,EAAM,IAAK,KAKhCM,EAAYqB,MAAQ,IAAI3B,EAAM,KAAM,MAKpCM,EAAYsB,MAAQ,IAAI5B,EAAM,KAAM,MAKpCM,EAAYuB,MAAQ,IAAI7B,EAAM,KAAM,MAKpCM,EAAYwB,MAAQ,IAAI9B,EAAM,IAAK,MAKnCM,EAAYyB,MAAQ,IAAI/B,EAAM,IAAK,KAKnCM,EAAY0B,KAAO,IAAIhC,EAAM,IAAK,KAKlCM,EAAY2B,WAAa,IAAIjC,EAAM,IAAK,KAKxCM,EAAY4B,YAAc,IAAIlC,EAAM,IAAK,MAKzCM,EAAY6B,OAAS,IAAInC,EAAM,KAAM,KAC9BM,EA1JqB,IHFhC,SAAW9D,GAKPA,EAAmBA,EAAmB,YAAc,GAAK,WAKzDA,EAAmBA,EAAmB,aAAe,GAAK,aAV9D,CAWGA,IAAuBA,EAAqB,KAM/C,SAAWC,GAKPA,EAAmBA,EAAmB,gBAAkB,GAAK,eAK7DA,EAAmBA,EAAmB,iBAAmB,GAAK,gBAK9DA,EAAmBA,EAAmB,kBAAoB,GAAK,iBAK/DA,EAAmBA,EAAmB,kBAAoB,GAAK,iBApBnE,CAqBGA,IAAuBA,EAAqB,KAM/C,SAAWC,GAKPA,EAAeA,EAAe,QAAU,GAAK,OAK7CA,EAAeA,EAAe,WAAa,GAAK,UAKhDA,EAAeA,EAAe,cAAgB,GAAK,aAKnDA,EAAeA,EAAe,cAAgB,GAAK,aAKnDA,EAAeA,EAAe,cAAgB,GAAK,aAKnDA,EAAeA,EAAe,cAAgB,GAAK,aA9BvD,CA+BGA,IAAmBA,EAAiB,KAMvC,SAAWC,GAKPA,EAAaA,EAAa,QAAU,GAAK,OAKzCA,EAAaA,EAAa,UAAY,GAAK,SAK3CA,EAAaA,EAAa,OAAS,GAAK,MAKxCA,EAAaA,EAAa,QAAU,GAAK,OAKzCA,EAAaA,EAAa,SAAW,GAAK,QAK1CA,EAAaA,EAAa,QAAU,GAAK,OA9B7C,CA+BGA,IAAiBA,EAAe,KAMnC,SAAWC,GAKPA,EAAkBA,EAAkB,QAAU,GAAK,OAKnDA,EAAkBA,EAAkB,WAAa,GAAK,UAKtDA,EAAkBA,EAAkB,aAAe,GAAK,YAKxDA,EAAkBA,EAAkB,YAAc,GAAK,WAKvDA,EAAkBA,EAAkB,cAAgB,GAAK,aAKzDA,EAAkBA,EAAkB,gBAAkB,GAAK,eAK3DA,EAAkBA,EAAkB,eAAiB,GAAK,cAK1DA,EAAkBA,EAAkB,cAAgB,GAAK,aAKzDA,EAAkBA,EAAkB,gBAAkB,GAAK,eAK3DA,EAAkBA,EAAkB,eAAiB,GAAK,cAlD9D,CAmDGA,IAAsBA,EAAoB,KAM7C,SAAWC,GAKPA,EAAaA,EAAa,QAAU,GAAK,OAKzCA,EAAaA,EAAa,OAAS,GAAK,MAKxCA,EAAaA,EAAa,UAAY,GAAK,SAK3CA,EAAaA,EAAa,QAAU,GAAK,OAKzCA,EAAaA,EAAa,SAAW,GAAK,QAzB9C,CA0BGA,IAAiBA,EAAe,KI1MnC,ICAWuF,GAsBAC,GAsBAC,GA2BAC,GAoDAC,GAsBAC,GAsBAC,GAqCAC,GAiBAC,GA2BAC,GAuFAC,GA0CAC,GA2BAC,GCpZAC,GA6CAC,GA2BAC,GAsBAC,GA2BAC,GAsBAC,GA0CAC,GAsBAC,GA2BAC,GA2BAC,GAiBAC,GAsBAC,GA4CAC,GFxVPC,GAA4B,WAK5B,SAASA,IAMLj9gB,KAAKk9gB,UAAY,GACjBl9gB,KAAKm9gB,WAAWn9gB,KAAKk9gB,WA8FzB,OA5FAn0gB,OAAOsB,eAAe4ygB,EAAW1zgB,UAAW,OAAQ,CAMhD69B,IAAK,WACD,OAAOpnC,KAAKo9gB,YAEhB5ne,IAAK,SAAUvvC,GACXjG,KAAKo9gB,WAAan3gB,GAEtBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ygB,EAAW1zgB,UAAW,MAAO,CAK/C69B,IAAK,WACD,OAAOpnC,KAAKq9gB,WAEhB7ne,IAAK,SAAUvvC,GACXjG,KAAKq9gB,UAAYp3gB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ygB,EAAW1zgB,UAAW,QAAS,CAKjD69B,IAAK,WACD,OAAOpnC,KAAKs9gB,aAEhB9ne,IAAK,SAAUvvC,GACXjG,KAAKs9gB,YAAcr3gB,GAEvBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ygB,EAAW1zgB,UAAW,SAAU,CAKlD69B,IAAK,WACD,OAAOpnC,KAAKu9gB,cAEhB/ne,IAAK,SAAUvvC,GACXjG,KAAKu9gB,aAAet3gB,GAExBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ygB,EAAW1zgB,UAAW,MAAO,CAK/CisC,IAAK,SAAUvvC,GACXjG,KAAKm9gB,WAAWl3gB,IAEpBqsG,YAAY,EACZC,cAAc,IAElB0qa,EAAW1zgB,UAAU4zgB,WAAa,SAAUK,EAASC,EAASC,EAASC,GAC5C,qBAAZF,EACPz9gB,KAAKo9gB,WAAap9gB,KAAKq9gB,UAAYr9gB,KAAKs9gB,YAAct9gB,KAAKu9gB,aAAeC,EAGnD,qBAAZE,GACP19gB,KAAKo9gB,WAAap9gB,KAAKs9gB,YAAcE,EACrCx9gB,KAAKu9gB,aAAev9gB,KAAKq9gB,UAAYI,IAGrCz9gB,KAAKo9gB,WAAaI,EAClBx9gB,KAAKq9gB,UAAYI,EACjBz9gB,KAAKs9gB,YAAcI,EACnB19gB,KAAKu9gB,aAAeI,IAQhCV,EAAW1zgB,UAAUuzC,MAAQ,WACzB,OAAO98C,MAEJi9gB,EA1GoB,GGM3B,GAAiC,WACjC,SAASW,EAAgBC,GAMrB79gB,KAAK89gB,YAAc,IAAIb,GAMvBj9gB,KAAK8tC,SAAW,GAAYmse,GAM5Bj6gB,KAAK+9gB,YAAcnI,EAAmBoI,aAMtCh+gB,KAAKi+gB,gBAAkBtI,EAAmBuI,SAM1Cl+gB,KAAKm+gB,WAAa,IAAIjF,EAAO,EAAG,GAMhCl5gB,KAAKo+gB,YAAa,EACK,kBAAZP,GACP79gB,KAAK89gB,YAAYX,WAAWU,GAgKpC,OA7JA90gB,OAAOsB,eAAeuzgB,EAAgBr0gB,UAAW,OAAQ,CAMrD69B,IAAK,WACD,OAAOpnC,KAAK8tC,UAEhB0H,IAAK,SAAUvvC,GACXjG,KAAKq+gB,QAAQp4gB,IAEjBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeuzgB,EAAgBr0gB,UAAW,cAAe,CAK5D69B,IAAK,WACD,OAAOpnC,KAAKi+gB,iBAEhBzoe,IAAK,SAAUqiB,GACP73D,KAAKi+gB,kBAAoBpmd,IACzB73D,KAAKi+gB,gBAAkBpmd,EACvB73D,KAAKs+gB,WAAWzmd,KAGxBy6C,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeuzgB,EAAgBr0gB,UAAW,UAAW,CAKxD69B,IAAK,WACD,OAAOpnC,KAAK89gB,aAEhBtoe,IAAK,SAAUvvC,GACXjG,KAAK89gB,YAAc73gB,GAEvBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeuzgB,EAAgBr0gB,UAAW,QAAS,CAKtD69B,IAAK,WACD,OAAOpnC,KAAK8tC,SAASzmC,OAEzBmuC,IAAK,SAAUvvC,GACXjG,KAAK8tC,SAASzmC,MAAQpB,GAE1BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeuzgB,EAAgBr0gB,UAAW,SAAU,CAKvD69B,IAAK,WACD,OAAOpnC,KAAK8tC,SAAS7mC,QAEzBuuC,IAAK,SAAUvvC,GACXjG,KAAK8tC,SAAS7mC,OAAShB,GAE3BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeuzgB,EAAgBr0gB,UAAW,SAAU,CAKvD69B,IAAK,WACD,OAAOpnC,KAAKm+gB,YAEhB3oe,IAAK,SAAUvvC,GACXjG,KAAKm+gB,WAAal4gB,GAEtBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeuzgB,EAAgBr0gB,UAAW,SAAU,CAKvD69B,IAAK,WACD,OAAOpnC,KAAK+9gB,aAEhBvoe,IAAK,SAAUvvC,GACXjG,KAAK+9gB,YAAc93gB,EACnBjG,KAAKo+gB,YAAa,GAEtB9ra,YAAY,EACZC,cAAc,IAOlBqra,EAAgBr0gB,UAAU+0gB,WAAa,SAAUzmd,GAC7C,IAAIzzC,EAAM3S,KAAK2S,IAAIpkB,KAAK8tC,SAASzmC,MAAOrH,KAAK8tC,SAAS7mC,QAClDia,EAAMzP,KAAKyP,IAAIlhB,KAAK8tC,SAASzmC,MAAOrH,KAAK8tC,SAAS7mC,QACtD,OAAQ4wD,GACJ,KAAK89c,EAAmBuI,SACpBl+gB,KAAK8tC,SAAW,IAAIqre,EAAM/0f,EAAKlD,GAC/B,MACJ,KAAKy0f,EAAmB4I,UACpBv+gB,KAAK8tC,SAAW,IAAIqre,EAAMj4f,EAAKkD,GAC/B,QAOZw5f,EAAgBr0gB,UAAUuzC,MAAQ,WAC9B,IAAIvH,EAAWv1C,KAMf,OALAu1C,EAASuoe,YAAc99gB,KAAK89gB,YAAYhhe,QAKjCvH,GAMXqoe,EAAgBr0gB,UAAUi1gB,cAAgB,WACtC,IAAIn3gB,EAAQrH,KAAKqH,OAASrH,KAAK69gB,QAAQl5gB,KAAO3E,KAAK69gB,QAAQv2gB,OACvDL,EAASjH,KAAKiH,QAAUjH,KAAK69gB,QAAQj5gB,IAAM5E,KAAK69gB,QAAQ72gB,QACxD6mC,EAAO,IAAIsre,EAAM9xgB,EAAOJ,GAC5B,OAAO4mC,GAMX+ve,EAAgBr0gB,UAAU80gB,QAAU,SAAUxwe,GAC1C,IAAIzpB,EAAM3S,KAAK2S,IAAIypB,EAAKxmC,MAAOwmC,EAAK5mC,QAChCia,EAAMzP,KAAKyP,IAAI2sB,EAAKxmC,MAAOwmC,EAAK5mC,QAChCjH,KAAK63D,cAAgB89c,EAAmBuI,SACxCl+gB,KAAK8tC,SAAW,IAAIqre,EAAM/0f,EAAKlD,GAG/BlhB,KAAK8tC,SAAW,IAAIqre,EAAMj4f,EAAKkD,IAGhCw5f,EAvMyB,IFLpC,SAAWrC,GAKPA,EAAuBA,EAAuB,QAAU,GAAK,OAK7DA,EAAuBA,EAAuB,UAAY,GAAK,SAK/DA,EAAuBA,EAAuB,SAAW,GAAK,SAflE,CAgBGA,KAA2BA,GAAyB,KAMvD,SAAWC,GAKPA,EAAqBA,EAAqB,OAAS,GAAK,MAKxDA,EAAqBA,EAAqB,UAAY,GAAK,SAK3DA,EAAqBA,EAAqB,UAAY,GAAK,SAf/D,CAgBGA,KAAyBA,GAAuB,KAMnD,SAAWC,GAKPA,EAAiBA,EAAiB,QAAU,GAAK,OAKjDA,EAAiBA,EAAiB,UAAY,GAAK,SAKnDA,EAAiBA,EAAiB,SAAW,GAAK,QAKlDA,EAAiBA,EAAiB,WAAa,GAAK,UApBxD,CAqBGA,KAAqBA,GAAmB,KAM3C,SAAWC,GAKPA,EAAkBA,EAAkB,QAAU,GAAK,OAKnDA,EAAkBA,EAAkB,UAAY,GAAK,SAKrDA,EAAkBA,EAAkB,cAAgB,GAAK,aAKzDA,EAAkBA,EAAkB,QAAU,GAAK,OAKnDA,EAAkBA,EAAkB,YAAc,GAAK,WAKvDA,EAAkBA,EAAkB,YAAc,GAAK,WAKvDA,EAAkBA,EAAkB,cAAgB,GAAK,aAKzDA,EAAkBA,EAAkB,kBAAoB,GAAK,iBAK7DA,EAAkBA,EAAkB,QAAU,GAAK,OA7CvD,CA8CGA,KAAsBA,GAAoB,KAM7C,SAAWC,GAKPA,EAAYA,EAAY,SAAW,GAAK,QAKxCA,EAAYA,EAAY,SAAW,GAAK,QAKxCA,EAAYA,EAAY,SAAW,GAAK,QAf5C,CAgBGA,KAAgBA,GAAc,KAMjC,SAAWC,GAKPA,EAAWA,EAAW,QAAU,GAAK,OAKrCA,EAAWA,EAAW,SAAW,GAAK,QAKtCA,EAAWA,EAAW,UAAY,GAAK,SAf3C,CAgBGA,KAAeA,GAAa,KAM/B,SAAWC,GAKPA,EAAaA,EAAa,SAAW,GAAK,QAK1CA,EAAaA,EAAa,QAAU,GAAK,OAKzCA,EAAaA,EAAa,OAAS,GAAK,MAKxCA,EAAaA,EAAa,WAAa,GAAK,UAK5CA,EAAaA,EAAa,cAAgB,GAAK,aAK/CA,EAAaA,EAAa,UAAY,GAAK,SA9B/C,CA+BGA,KAAiBA,GAAe,KAMnC,SAAWC,GAKPA,EAAYA,EAAY,WAAa,GAAK,UAK1CA,EAAYA,EAAY,aAAe,GAAK,YAVhD,CAWGA,KAAgBA,GAAc,KAMjC,SAAWC,GAKPA,EAAcA,EAAc,OAAS,GAAK,MAK1CA,EAAcA,EAAc,QAAU,GAAK,OAK3CA,EAAcA,EAAc,aAAe,GAAK,YAKhDA,EAAcA,EAAc,WAAa,GAAK,UApBlD,CAqBGA,KAAkBA,GAAgB,KAMrC,SAAWC,GAKPA,EAAaA,EAAa,UAAY,GAAK,SAK3CA,EAAaA,EAAa,YAAc,GAAK,WAK7CA,EAAaA,EAAa,UAAY,GAAK,SAK3CA,EAAaA,EAAa,WAAa,GAAK,UAK5CA,EAAaA,EAAa,UAAY,GAAK,SAK3CA,EAAaA,EAAa,WAAa,GAAK,UAK5CA,EAAaA,EAAa,cAAgB,GAAK,aAK/CA,EAAaA,EAAa,aAAe,GAAK,YAK9CA,EAAaA,EAAa,aAAe,GAAK,YAK9CA,EAAaA,EAAa,aAAe,GAAK,YAK9CA,EAAaA,EAAa,cAAgB,IAAM,aAKhDA,EAAaA,EAAa,aAAe,IAAM,YAK/CA,EAAaA,EAAa,OAAS,IAAM,MAKzCA,EAAaA,EAAa,cAAgB,IAAM,aAKhDA,EAAaA,EAAa,SAAW,IAAM,QAK3CA,EAAaA,EAAa,cAAgB,IAAM,aAhFpD,CAiFGA,KAAiBA,GAAe,KAMnC,SAAWC,GAKPA,EAAgBA,EAAgB,cAAgB,GAAK,aAKrDA,EAAgBA,EAAgB,QAAU,GAAK,OAK/CA,EAAgBA,EAAgB,SAAW,GAAK,QAKhDA,EAAgBA,EAAgB,SAAW,GAAK,QAKhDA,EAAgBA,EAAgB,QAAU,GAAK,OAK/CA,EAAgBA,EAAgB,YAAc,GAAK,WAKnDA,EAAgBA,EAAgB,cAAgB,GAAK,aAnCzD,CAoCGA,KAAoBA,GAAkB,KAMzC,SAAWC,GAKPA,EAAqBA,EAAqB,OAAS,GAAK,MAKxDA,EAAqBA,EAAqB,UAAY,GAAK,SAK3DA,EAAqBA,EAAqB,WAAa,GAAK,UAK5DA,EAAqBA,EAAqB,QAAU,GAAK,OApB7D,CAqBGA,KAAyBA,GAAuB,KAMnD,SAAWC,GAKPA,EAAiBA,EAAiB,QAAU,GAAK,OAKjDA,EAAiBA,EAAiB,eAAiB,GAAK,cAKxDA,EAAiBA,EAAiB,eAAiB,GAAK,cAf5D,CAgBGA,KAAqBA,GAAmB,KCpa3C,SAAWC,GAKPA,EAAaA,EAAa,WAAa,GAAK,UAK5CA,EAAaA,EAAa,QAAU,GAAK,OAKzCA,EAAaA,EAAa,UAAY,GAAK,SAK3CA,EAAaA,EAAa,aAAe,GAAK,YAK9CA,EAAaA,EAAa,aAAe,GAAK,YAzBlD,CA0BGA,KAAiBA,GAAe,KAmBnC,SAAWC,GAIPA,EAAcA,EAAc,aAAe,GAAK,YAIhDA,EAAcA,EAAc,WAAa,GAAK,UAI9CA,EAAcA,EAAc,cAAgB,GAAK,aAIjDA,EAAcA,EAAc,UAAY,GAAK,SAI7CA,EAAcA,EAAc,gBAAkB,GAAK,eApBvD,CAqBGA,KAAkBA,GAAgB,KAMrC,SAAWC,GAKPA,EAAYA,EAAY,YAAc,GAAK,WAK3CA,EAAYA,EAAY,YAAc,GAAK,WAK3CA,EAAYA,EAAY,oBAAsB,GAAK,mBAfvD,CAgBGA,KAAgBA,GAAc,KAMjC,SAAWC,GAKPA,EAAgBA,EAAgB,QAAU,GAAK,OAK/CA,EAAgBA,EAAgB,QAAU,GAAK,OAK/CA,EAAgBA,EAAgB,YAAc,GAAK,WAKnDA,EAAgBA,EAAgB,aAAe,GAAK,YApBxD,CAqBGA,KAAoBA,GAAkB,KAMzC,SAAWC,GAKPA,EAAkBA,EAAkB,QAAU,GAAK,OAKnDA,EAAkBA,EAAkB,eAAiB,GAAK,cAK1DA,EAAkBA,EAAkB,aAAe,GAAK,YAf5D,CAgBGA,KAAsBA,GAAoB,KAM7C,SAAWC,GAKPA,EAAaA,EAAa,WAAa,GAAK,UAK5CA,EAAaA,EAAa,oBAAsB,GAAK,mBAKrDA,EAAaA,EAAa,oBAAsB,GAAK,mBAKrDA,EAAaA,EAAa,qBAAuB,GAAK,oBAKtDA,EAAaA,EAAa,mBAAqB,GAAK,kBAKpDA,EAAaA,EAAa,kBAAoB,GAAK,iBAKnDA,EAAaA,EAAa,aAAe,GAAK,YAnClD,CAoCGA,KAAiBA,GAAe,KAMnC,SAAWC,GAKPA,EAAcA,EAAc,SAAW,GAAK,QAK5CA,EAAcA,EAAc,aAAe,GAAK,YAKhDA,EAAcA,EAAc,WAAa,GAAK,UAflD,CAgBGA,KAAkBA,GAAgB,KAMrC,SAAWC,GAKPA,EAAgBA,EAAgB,WAAa,GAAK,UAKlDA,EAAgBA,EAAgB,UAAY,GAAK,SAKjDA,EAAgBA,EAAgB,WAAa,GAAK,UAKlDA,EAAgBA,EAAgB,aAAe,GAAK,YApBxD,CAqBGA,KAAoBA,GAAkB,KAMzC,SAAWC,GAKPA,EAAcA,EAAc,gBAAkB,GAAK,eAKnDA,EAAcA,EAAc,aAAe,GAAK,YAKhDA,EAAcA,EAAc,OAAS,GAAK,MAK1CA,EAAcA,EAAc,aAAe,GAAK,YApBpD,CAqBGA,KAAkBA,GAAgB,KAMrC,SAAWC,GAKPA,EAAuBA,EAAuB,aAAe,GAAK,YAKlEA,EAAuBA,EAAuB,WAAa,GAAK,UAVpE,CAWGA,KAA2BA,GAAyB,KAMvD,SAAWC,GAKPA,EAAuBA,EAAuB,SAAW,GAAK,QAK9DA,EAAuBA,EAAuB,YAAc,GAAK,WAKjEA,EAAuBA,EAAuB,WAAa,GAAK,UAfpE,CAgBGA,KAA2BA,GAAyB,KAMvD,SAAWC,GAKPA,EAAoBA,EAAoB,cAAgB,GAAK,aAM7DA,EAAoBA,EAAoB,SAAW,GAAK,QAMxDA,EAAoBA,EAAoB,YAAc,GAAK,WAK3DA,EAAoBA,EAAoB,UAAY,GAAK,SAKzDA,EAAoBA,EAAoB,eAAiB,IAAM,cAK/DA,EAAoBA,EAAoB,UAAY,IAAM,SAK1DA,EAAoBA,EAAoB,aAAe,QAAU,YArCrE,CAsCGA,KAAwBA,GAAsB,KAMjD,SAAWC,GAKPA,EAAuBA,EAAuB,oBAAsB,GAAK,mBAKzEA,EAAuBA,EAAuB,mBAAqB,GAAK,kBAKxEA,EAAuBA,EAAuB,iBAAmB,GAAK,gBAKtEA,EAAuBA,EAAuB,eAAiB,GAAK,cAKpEA,EAAuBA,EAAuB,YAAc,IAAM,WAKlEA,EAAuBA,EAAuB,kBAAoB,IAAM,iBAKxEA,EAAuBA,EAAuB,mBAAqB,IAAM,kBAIzEA,EAAuBA,EAAuB,kBAAoB,KAAO,iBAIzEA,EAAuBA,EAAuB,sBAAwB,KAAO,qBAI7EA,EAAuBA,EAAuB,gBAAkB,KAAO,eA/C3E,CAgDGA,KAA2BA,GAAyB,KEpYvD,ICkgBWyB,GDlgBP,GAAiC,WAKjC,SAASC,EAAgBzsa,GACrB,GAAc,MAAVA,EACA,MAAM,IAAI9+D,MAAM,gCAEpBnzC,KAAKiyG,OAASA,EAmjBlB,OA5iBAysa,EAAgBn1gB,UAAUqH,MAAQ,WAC9B5Q,KAAKiyG,OAAOi9Z,eAEhBwP,EAAgBn1gB,UAAU+7f,iBAAmB,SAAUqZ,GAC/CA,aAA0Bvd,GAC1BphgB,KAAKiyG,OAAOQ,MAAMksa,EAAejlgB,YACjC1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUwD,oBAG7BtlgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUG,OAC5BjigB,KAAKiyG,OAAOQ,MAAMksa,GAClB3+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUwD,oBAOrCoZ,EAAgBn1gB,UAAUs1gB,cAAgB,SAAUl3gB,GAChD3H,KAAKiyG,OAAOQ,MAAM9qG,EAAK+R,YACvB1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUsB,cAC7BpjgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAMhCwc,EAAgBn1gB,UAAUq6f,UAAY,WAClC5jgB,KAAK4+gB,cAAc9c,EAAU8B,YAMjC8a,EAAgBn1gB,UAAU47f,SAAW,SAAU2Z,GAC3C9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUqD,UACxB2Z,GACA9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUyD,SAEhCvlgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUuD,SAC5BrlgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAMhCwc,EAAgBn1gB,UAAUu6f,oBAAsB,SAAUgb,GACtD9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUgC,qBACxBgb,GACA9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUyD,SAC5BvlgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAG5BligB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAOpCwc,EAAgBn1gB,UAAUw1gB,eAAiB,SAAUD,GACjD9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUgB,YACxBgc,GACA9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUyD,SAC5BvlgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAG5BligB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAOpCwc,EAAgBn1gB,UAAUy1gB,SAAW,SAAUF,GAC3C9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUc,MACxBkc,GACA9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUyD,SAC5BvlgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAG5BligB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAOpCwc,EAAgBn1gB,UAAU87f,QAAU,WAChCrlgB,KAAK4+gB,cAAc9c,EAAUr+f,IAMjCi7gB,EAAgBn1gB,UAAU01gB,cAAgB,SAAUH,GAChD9+gB,KAAK4+gB,cAAc9c,EAAU8B,WAC7B5jgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUc,MACxBkc,GACA9+gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUyD,SAC5BvlgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAG5BligB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAOpCwc,EAAgBn1gB,UAAUs6f,gBAAkB,WACxC7jgB,KAAK4+gB,cAAc9c,EAAU+B,kBAMjC6a,EAAgBn1gB,UAAU+6f,eAAiB,SAAU4a,GACjDl/gB,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAc4R,IAC1Cl/gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUwC,iBAMjCoa,EAAgBn1gB,UAAU41gB,WAAa,WACnCn/gB,KAAK4+gB,cAAc9c,EAAUa,SAMjC+b,EAAgBn1gB,UAAU61gB,qBAAuB,WAC7Cp/gB,KAAK4+gB,cAAc9c,EAAUqB,eAMjCub,EAAgBn1gB,UAAU81gB,kBAAoB,WAC1Cr/gB,KAAK4+gB,cAAc9c,EAAUoB,YAEjCwb,EAAgBn1gB,UAAU+1gB,cAAgB,SAAUjjb,EAAMkuY,GAClC,qBAATluY,EACPr8F,KAAK4+gB,cAAc9c,EAAU0C,cAExBnoa,aAAgB68a,GACrBl5gB,KAAKu/gB,WAAWljb,GAChBr8F,KAAK4+gB,cAAc9c,EAAUyC,aAG7BvkgB,KAAKu/gB,WAAWljb,EAAMkuY,GACtBvqe,KAAK4+gB,cAAc9c,EAAUyC,aAOrCma,EAAgBn1gB,UAAUi2gB,SAAW,SAAUh+e,GAC3CxhC,KAAKy/gB,eAAej+e,GACpBxhC,KAAKyva,UAAUjuY,GACfxhC,KAAK4+gB,cAAc9c,EAAUj5Q,UAMjC61R,EAAgBn1gB,UAAUm2gB,WAAa,SAAUtX,GAC7CpogB,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAclF,IAC1CpogB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUoC,iBAMjCwa,EAAgBn1gB,UAAUk5f,UAAY,SAAU7zf,EAAGvM,GAC/CrC,KAAKu/gB,WAAW3wgB,EAAGvM,GACnBrC,KAAK4+gB,cAAc9c,EAAUW,YAMjCic,EAAgBn1gB,UAAUg5f,UAAY,WAClCvigB,KAAK4+gB,cAAc9c,EAAUS,YAMjCmc,EAAgBn1gB,UAAUi5f,QAAU,WAChCxigB,KAAK4+gB,cAAc9c,EAAUU,UAEjCkc,EAAgBn1gB,UAAU05f,gBAAkB,SAAU5ma,EAAMkuY,EAAMC,EAAMC,GAChEpuY,aAAgB+8a,GAChBp5gB,KAAKijgB,gBAAgB5ma,EAAKztF,EAAGytF,EAAKh6F,EAAGg6F,EAAKh1F,MAAOg1F,EAAKp1F,SAGtDjH,KAAKu/gB,WAAWljb,EAAMkuY,GACtBvqe,KAAKu/gB,WAAW/0C,EAAMC,GACtBzqe,KAAK4+gB,cAAc9c,EAAUmB,mBAGrCyb,EAAgBn1gB,UAAUm5f,kBAAoB,SAAUrma,EAAMkuY,GACtDluY,aAAgB68a,EAChBl5gB,KAAK0igB,kBAAkBrma,EAAKztF,EAAGytF,EAAKh6F,IAGpCrC,KAAKu/gB,WAAWljb,EAAMkuY,GACtBvqe,KAAK4+gB,cAAc9c,EAAUY,qBAOrCgc,EAAgBn1gB,UAAUo2gB,qBAAuB,SAAUC,GACvD5/gB,KAAKiyG,OAAOQ,MAAMmta,EAAclmgB,YAChC1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUsC,mBAMjCsa,EAAgBn1gB,UAAUs2gB,oBAAsB,SAAUC,GACtD9/gB,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAcwS,IAC1C9/gB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUiC,mBAC5B/jgB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAMhCwc,EAAgBn1gB,UAAUw2gB,eAAiB,SAAUC,GACjDhghB,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAc0S,IAC1ChghB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUkC,eAEjC0a,EAAgBn1gB,UAAU02gB,iBAAmB,SAAU5jb,EAAMkuY,GACrDluY,aAAgBi0a,GAChBtwgB,KAAKy/gB,eAAepjb,GACpBr8F,KAAKyva,UAAUpzU,GACfr8F,KAAK4+gB,cAAc9c,EAAU4C,oBAG7B1kgB,KAAKy/gB,eAAepjb,GACpBr8F,KAAKyva,UAAUpzU,EAAMkuY,GACrBvqe,KAAK4+gB,cAAc9c,EAAU4C,oBAGrCga,EAAgBn1gB,UAAU22gB,cAAgB,SAAU7jb,EAAMkuY,GACtD,GAAIluY,aAAgB+ka,GAA2B,mBAAT72B,EAAoB,CACtD,IAAI41C,EAAW9jb,EACX+jb,EAAW71C,EAIX81C,EAAK,EAAave,EAAU6C,4BAA8B7C,EAAU8C,+BACxE5kgB,KAAKiyG,OAAOQ,MAAM0ta,EAASzmgB,YAC3B1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAKiyG,OAAOQ,MAAM4ta,GAClBrghB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,aAE3B,CACGie,EAAW9jb,EACX+jb,EAAW71C,EACfvqe,KAAKkghB,cAAc,IAAI9e,EAAQ+e,GAAWC,KAOlD1B,EAAgBn1gB,UAAU85f,UAAY,SAAUjma,GAC5C,GAAc,MAAVA,EACA,MAAM,IAAIjqD,MAAM,gCAEpBnzC,KAAKiyG,OAAOQ,MAAMrV,EAAO1jF,YACzB1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUuB,YAEjCqb,EAAgBn1gB,UAAU46f,QAAU,SAAU9yL,EAAM1pU,EAAMkmC,GACtD,GAAoB,kBAATlmC,EACP3H,KAAKmkgB,QAAQ9yL,EAAM,IAAI+vL,EAAQz5f,GAAOkmC,OAErC,CACD,GAAY,MAARwjS,EACA,MAAM,IAAIl+R,MAAM,8BAEpBnzC,KAAKiyG,OAAOQ,MAAM9qG,EAAK+R,YACvB1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAcz/d,IAC1C7tC,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUqC,WAOrCua,EAAgBn1gB,UAAUq1gB,cAAgB,SAAU0B,GAChDtghB,KAAKiyG,OAAOQ,MAAM6ta,GAClBtghB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAEhCwc,EAAgBn1gB,UAAUk2gB,eAAiB,SAAUj+e,GACjD,GAAY,MAARA,EACA,MAAM,IAAI2R,MAAM,8BAEpB,GAAoB,kBAAT3R,GAA8B,KAATA,EAC5B,MAAM,IAAI2R,MAAM,gEAGxBure,EAAgBn1gB,UAAUkma,UAAY,SAAUpzU,EAAMkuY,GAClD,GAAKluY,aAAgBi0a,GAA+B,qBAAT/lC,EACvCvqe,KAAKiyG,OAAOQ,MAAMpW,EAAKk1a,iBAEtB,CACD,IAAI7nf,OAAQ,EACRC,OAAM,EACN4gd,GACA7gd,EAAQ4mf,EAAUwB,cAAc,GAChCnof,EAAM2mf,EAAUwB,cAAc,KAG9Bpof,EAAQ4mf,EAAUkB,WAAW,GAC7B7nf,EAAM2mf,EAAUkB,WAAW,IAE/BxxgB,KAAKiyG,OAAOQ,MAAM/oF,GAClB1pB,KAAKiyG,OAAOQ,MAAMpW,GAClBr8F,KAAKiyG,OAAOQ,MAAM9oF,KAG1B+0f,EAAgBn1gB,UAAUg2gB,WAAa,SAAUljb,EAAMkuY,GACnD,GAAKluY,aAAgB68a,GAA4B,qBAAT3uC,EACpCvqe,KAAKu/gB,WAAWljb,EAAKztF,EAAGytF,EAAKh6F,OAE5B,CACD,IAAI89gB,EAAW9jb,EACfr8F,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAc6S,IAC1CnghB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAE5Bz3B,EAAOvqe,KAAKughB,QAAQh2C,GACpBvqe,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAc/iC,IAC1Cvqe,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,cAOpC0c,EAAgBn1gB,UAAUg3gB,QAAU,SAAUl0Y,GAC1C,OAAQA,GAMZqyY,EAAgBn1gB,UAAUkpG,MAAQ,SAAUtjB,GACxC,IAAIkib,EAAU,GACdA,GAAWlib,EACXkib,GAAWvP,EAAUI,QACrBligB,KAAK4+gB,cAAcvN,IAMvBqN,EAAgBn1gB,UAAUi3gB,aAAe,SAAU9sD,GAC/C,KAAe,MAAXA,GAAmBA,EAAQ3pd,OAAS,GASpC,MAAM,IAAIopC,MAAM,mBARhB,IAAIk+d,EAAU,GACdA,GAAWvP,EAAUpuC,QACrB29C,GAAWvP,EAAUE,WACrBqP,GAAW39C,EAEX1zd,KAAK4+gB,cAAcvN,IAU3BqN,EAAgBn1gB,UAAUk3gB,iBAAmB,SAAUl/b,EAAO8kb,EAAYqa,GACjEn/b,EAAMiwF,UAEPxxK,KAAKiyG,OAAOQ,MAAMlxB,EAAM7nE,SAAS2sf,EAAYqa,IAC7C1ghB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,WAqBpCwc,EAAgBn1gB,UAAUo3gB,mBAAqB,SAAUp2f,EAASq2f,GAI9D5ghB,KAAK6ghB,yBAAyBt2f,EAASq2f,IAM3ClC,EAAgBn1gB,UAAUs3gB,yBAA2B,SAAUt2f,EAASq2f,GACpE,IAAIE,EAAc,IAClB,GAAIv2f,EAAQxgB,OAAS,EACjB,IAAK,IAAI+K,EAAQ,EAAGA,EAAQyV,EAAQxgB,OAAQ+K,IACpCA,IAAUyV,EAAQxgB,OAAS,EAC3B+2gB,GAAev2f,EAAQzV,GAAO4E,WAG9BongB,GAAev2f,EAAQzV,GAAO4E,WAAa,IAIvDongB,GAAe,KACfA,GAAeF,EAAclngB,WAC7BongB,GAAe,IAAMhf,EAAU4B,eAC/B1jgB,KAAKiyG,OAAOQ,MAAMqua,GAClB9ghB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUI,UAMhCwc,EAAgBn1gB,UAAUi8f,cAAgB,SAAUub,GAChD/ghB,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAcyT,IAC1C/ghB,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAU0D,gBAMjCkZ,EAAgBn1gB,UAAUg6f,aAAe,SAAUl8f,GAC/CrH,KAAKiyG,OAAOQ,MAAMq6Z,EAAUQ,cAAcjmgB,IAC1CrH,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAUyB,eAMjCmb,EAAgBn1gB,UAAUy3gB,WAAa,SAAUC,GAC7CjhhB,KAAKiyG,OAAOQ,MAAM,EAAe/4F,YACjC1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAU0B,kBAMjCkb,EAAgBn1gB,UAAU23gB,YAAc,SAAUC,GAC9CnhhB,KAAKiyG,OAAOQ,MAAM,EAAgB/4F,YAClC1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAC5BhigB,KAAK4+gB,cAAc9c,EAAU2B,mBAEjC16f,OAAOsB,eAAeq0gB,EAAgBn1gB,UAAW,WAAY,CAMzD69B,IAAK,WACD,OAAOpnC,KAAKiyG,OAAOjtG,UAEvBstG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeq0gB,EAAgBn1gB,UAAW,SAAU,CAKvD69B,IAAK,WACD,IAAI+M,EAAc,EAClB,GAAgC,IAA5Bn0C,KAAKiyG,OAAO99E,KAAKpqB,SAA6C,IAA7B/J,KAAKiyG,OAAO99E,KAAKpqB,OAClD,IAAK,IAAI+K,EAAQ,EAAGA,EAAQ9U,KAAKiyG,OAAO99E,KAAKpqB,OAAQ+K,IACjDq/B,GAAen0C,KAAKiyG,OAAO99E,KAAKrf,GAAO/K,OAG/C,OAAOoqC,GAEXm+D,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeq0gB,EAAgBn1gB,UAAW,WAAY,CAKzD69B,IAAK,WACD,OAAO,MAEXkrE,YAAY,EACZC,cAAc,IAGlBmsa,EAAgBn1gB,UAAU63gB,oBAAsB,SAAU/kb,EAAMkuY,EAAMC,EAAMC,EAAMC,EAAMC,GAChFtuY,aAAgB68a,GAAU3uC,aAAgB2uC,GAAU1uC,aAAgB0uC,GACpEl5gB,KAAKu/gB,WAAWljb,EAAKztF,EAAGytF,EAAKh6F,GAC7BrC,KAAKu/gB,WAAWh1C,EAAK37d,EAAG27d,EAAKloe,GAC7BrC,KAAKu/gB,WAAW/0C,EAAK57d,EAAG47d,EAAKnoe,KAG7BrC,KAAKu/gB,WAAWljb,EAAMkuY,GACtBvqe,KAAKu/gB,WAAW/0C,EAAMC,GACtBzqe,KAAKu/gB,WAAW70C,EAAMC,IAE1B3qe,KAAK4+gB,cAAc9c,EAAUkB,oBAEjC0b,EAAgBn1gB,UAAU83gB,qBAAuB,SAAUC,EAASC,EAAab,GAC7E,GAAgB,MAAXY,EAAkB,CACnB,IAAI53e,EAAQ43e,EAAQv3gB,OAChBK,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIs/B,IAASt/B,EACrBpK,KAAKiyG,OAAOQ,MAAM6ua,EAAQl3gB,GAAGsP,YAC7B1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,YAGhB,MAAfuf,IACDvhhB,KAAKiyG,OAAOQ,MAAM8ua,EAAY7ngB,YAC9B1Z,KAAKiyG,OAAOQ,MAAMqvZ,EAAUE,aAE5B0e,EACA1ghB,KAAK4+gB,cAAc9c,EAAU4D,4BAG7B1lgB,KAAK4+gB,cAAc9c,EAAU2D,qBAG9BiZ,EA5jByB,GEoBhC,GAA0B,WAC1B,SAAS8C,EAASC,EAAQC,EAAQC,EAAQC,GAChB,qBAAXH,EACe,qBAAXC,GAA4C,qBAAXC,GAA4C,qBAAXC,EACzE5hhB,KAAK6hhB,UAAUH,EAAQC,EAAQC,GAG/B5hhB,KAAK8hhB,QAAS,EAGbL,aAAkBD,GACvBxhhB,KAAK+hhB,SAAWN,EAAOz3gB,EACvBhK,KAAKgihB,WAAaP,EAAOjgc,EACzBxhF,KAAKiihB,UAAYR,EAAO34gB,EACxB9I,KAAKkihB,UAAYT,EAAOU,KACxBnihB,KAAKqhF,MAAQogc,EAAOpgc,MACpBrhF,KAAK8hhB,OAAyB,IAAf9hhB,KAAKqhF,OAGG,kBAAXogc,GAAyC,qBAAXC,GAA4C,qBAAXC,GAA4C,qBAAXC,GACxGH,EAAS,IACTA,EAAS,GAETA,EAAS,IACTA,EAAS,GAEbzhhB,KAAK+hhB,SAAWN,EAASD,EAASY,sBAClCpihB,KAAKgihB,WAAaP,EAASD,EAASY,sBACpCpihB,KAAKiihB,UAAYR,EAASD,EAASY,sBACnCpihB,KAAKqihB,UAAYZ,EACjBzhhB,KAAKsihB,aAAeb,EACpBzhhB,KAAKuihB,YAAcd,EACnBzhhB,KAAKwihB,WAAaf,EAClBzhhB,KAAKkihB,UAAYT,EACjBzhhB,KAAKqhF,MAAQmgc,EAASY,sBACtBpihB,KAAK8hhB,QAAS,GAES,qBAAXF,EACZ5hhB,KAAK6hhB,UAAUJ,EAAQC,EAAQC,GAG/B3hhB,KAAK6hhB,UAAUH,EAAQC,EAAQC,EAAQH,GAga/C,OAzZAD,EAASj4gB,UAAUs4gB,UAAY,SAAU73gB,EAAGw3E,EAAG14E,EAAG+xB,GAC7B,qBAAN7wB,GAAkC,qBAANw3E,GAAkC,qBAAN14E,EAC/D9I,KAAK8hhB,QAAS,GAGd9hhB,KAAKqihB,UAAY,EACjBrihB,KAAKsihB,aAAe,EACpBtihB,KAAKuihB,YAAc,EACnBvihB,KAAKwihB,WAAa,EAClBxihB,KAAKkihB,UAAY,EACjBlihB,KAAK+hhB,SAAW/3gB,EAChBhK,KAAKgihB,WAAaxgc,EAClBxhF,KAAKiihB,UAAYn5gB,EAEb9I,KAAKqhF,MADQ,qBAANxmD,EACM2mf,EAASY,sBAGTvnf,EAEjB76B,KAAK8hhB,QAAS,EACd9hhB,KAAKyihB,WAAWz4gB,EAAGw3E,EAAG14E,KAO9B04gB,EAASj4gB,UAAUk5gB,WAAa,SAAUz4gB,EAAGw3E,EAAG14E,GAC5C,IAAI45gB,EAAM14gB,EAAIw3gB,EAASY,sBACnBO,EAAQnhc,EAAIggc,EAASY,sBACrBQ,EAAO95gB,EAAI04gB,EAASY,sBACpBS,EAAQ/V,EAAU1of,IAAI,EAAIs+f,EAAK,EAAIC,EAAO,EAAIC,GAC9CE,EAAkB,IAAVD,EAAiB,GAAK,EAAIH,EAAMG,IAAU,EAAIA,GACtDE,EAAqB,IAAVF,EAAiB,GAAK,EAAIF,EAAQE,IAAU,EAAIA,GAC3DG,EAAoB,IAAVH,EAAiB,GAAK,EAAID,EAAOC,IAAU,EAAIA,GAC7D7ihB,KAAKwihB,WAAaK,EAClB7ihB,KAAKqihB,UAAYS,EACjB9ihB,KAAKsihB,aAAeS,EACpB/ihB,KAAKuihB,YAAcS,GAEvBj6gB,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAU3C69B,IAAK,WACD,OAAOpnC,KAAK+hhB,UAEhBvse,IAAK,SAAUvvC,GACXjG,KAAK+hhB,SAAW97gB,EAChBjG,KAAKyihB,WAAWzihB,KAAK+hhB,SAAU/hhB,KAAKgihB,WAAYhihB,KAAKiihB,WACrDjihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,MAAO,CAK7C69B,IAAK,WACD,OAAQpnC,KAAKgK,EAAIw3gB,EAASY,uBAE9B9va,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAK3C69B,IAAK,WACD,OAAOpnC,KAAKiihB,WAEhBzse,IAAK,SAAUvvC,GACXjG,KAAKiihB,UAAYh8gB,EACjBjG,KAAKyihB,WAAWzihB,KAAK+hhB,SAAU/hhB,KAAKgihB,WAAYhihB,KAAKiihB,WACrDjihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,OAAQ,CAK9C69B,IAAK,WACD,OAAQpnC,KAAK8I,EAAI04gB,EAASY,uBAE9B9va,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAK3C69B,IAAK,WACD,OAAOpnC,KAAKqihB,WAEhB7se,IAAK,SAAUvvC,GAEPjG,KAAKqihB,UADLp8gB,EAAQ,EACS,EAEZA,EAAQ,EACI,EAGAA,EAErBjG,KAAK6hhB,UAAU7hhB,KAAKqihB,UAAWrihB,KAAKsihB,aAActihB,KAAKuihB,YAAavihB,KAAKwihB,YACzExihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAK3C69B,IAAK,WACD,OAAOpnC,KAAKwihB,YAEhBhte,IAAK,SAAUvvC,GAEPjG,KAAKwihB,WADJv8gB,EAAQ,EACS,EAEZA,EAAQ,EACI,EAGAA,EAEtBjG,KAAK6hhB,UAAU7hhB,KAAKqihB,UAAWrihB,KAAKsihB,aAActihB,KAAKuihB,YAAavihB,KAAKwihB,YACzExihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAK3C69B,IAAK,WACD,OAAOpnC,KAAKsihB,cAEhB9se,IAAK,SAAUvvC,GAEPjG,KAAKsihB,aADJr8gB,EAAQ,EACW,EAEdA,EAAQ,EACM,EAGAA,EAExBjG,KAAK6hhB,UAAU7hhB,KAAKqihB,UAAWrihB,KAAKsihB,aAActihB,KAAKuihB,YAAavihB,KAAKwihB,YACzExihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAK3C69B,IAAK,WACD,OAAOpnC,KAAKuihB,aAEhB/se,IAAK,SAAUvvC,GAEPjG,KAAKuihB,YADJt8gB,EAAQ,EACU,EAEbA,EAAQ,EACK,EAGAA,EAEvBjG,KAAK6hhB,UAAU7hhB,KAAKqihB,UAAWrihB,KAAKsihB,aAActihB,KAAKuihB,YAAavihB,KAAKwihB,YACzExihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAK3C69B,IAAK,WACD,OAAOpnC,KAAKgihB,YAEhBxse,IAAK,SAAUvvC,GACXjG,KAAKgihB,WAAa/7gB,EAClBjG,KAAKyihB,WAAWzihB,KAAK+hhB,SAAU/hhB,KAAKgihB,WAAYhihB,KAAKiihB,WACrDjihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,QAAS,CAK/C69B,IAAK,WACD,OAAQpnC,KAAKwhF,EAAIggc,EAASY,uBAE9B9va,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,OAAQ,CAK9C69B,IAAK,WACD,OAAWpnC,KAAK+hhB,SAAW/hhB,KAAKgihB,WAAchihB,KAAKiihB,YAAgD,EAAjCT,EAASY,wBAE/E5se,IAAK,SAAUvvC,GAEPjG,KAAKkihB,UADLj8gB,EAAQ,EACS,EAEZA,EAAQ,EACI,EAGAA,EAErBjG,KAAKgK,EAAKhK,KAAKkihB,UAAYV,EAASY,sBACpCpihB,KAAKwhF,EAAKxhF,KAAKkihB,UAAYV,EAASY,sBACpCpihB,KAAK8I,EAAK9I,KAAKkihB,UAAYV,EAASY,sBACpCpihB,KAAKyihB,WAAWzihB,KAAK+hhB,SAAU/hhB,KAAKgihB,WAAYhihB,KAAKiihB,WACrDjihB,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,UAAW,CAKjD69B,IAAK,WACD,OAAQpnC,KAAK8hhB,QAEjBxva,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAem3gB,EAASj4gB,UAAW,IAAK,CAK3C69B,IAAK,WACD,OAAOpnC,KAAKqhF,OAEhB7rC,IAAK,SAAUvvC,GAEPjG,KAAKqhF,MADLp7E,EAAQ,EACK,EAIAA,EAGjBjG,KAAK8hhB,QAAS,GAElBxva,YAAY,EACZC,cAAc,IAOlBiva,EAASj4gB,UAAUmQ,SAAW,SAAU2sf,EAAY1D,GAChD,GAAI3igB,KAAKwxK,QACL,MAAO,GAEX,IAAIp2H,EAAM,GACV,OAAQird,GACJ,KAAK0V,GAAckH,IACf7ne,EAAMp7C,KAAKkjhB,YAAYvgB,GACvB,MACJ,KAAKoZ,GAAcoH,UACf/ne,EAAMp7C,KAAKojhB,kBAAkBzgB,GAC7B,MACJ,KAAKoZ,GAAcsH,KACfjoe,EAAMp7C,KAAKsjhB,aAAa3gB,GACxB,MAER,OAAOvnd,GAMXome,EAASj4gB,UAAU65gB,kBAAoB,SAAUG,GAC7C,IAAIpB,EAAOnihB,KAAKmihB,KACZqB,EAAS,GACT52e,EAAM,KAYV,OAVAA,EAAM,EAAe40e,EAASiC,iBAAiBvlB,YAAYikB,GAAQX,EAASiC,iBAAiBv3e,SAASi2e,GAAQ,KAAOX,EAASkC,gBAAgBxlB,YAAYikB,GAAQX,EAASkC,gBAAgBx3e,SAASi2e,GAAQ,KACjM,MAAPv1e,EACI22e,IACAC,EAASrB,EAAKzogB,WAAa,KAC3B8ngB,EAASiC,iBAAiBl8f,SAAS46f,EAAMqB,IAI7CA,EAAS52e,EAAIlzB,WAEV8pgB,EAAS1hB,EAAUI,SAM9Bsf,EAASj4gB,UAAU25gB,YAAc,SAAUK,GACvC,IAAIv5gB,EAAIhK,KAAKgK,EACTw3E,EAAIxhF,KAAKwhF,EACT14E,EAAI9I,KAAK8I,EACTjF,GAAOmG,GAAK,KAAOw3E,GAAK,GAAK14E,EAC7By6gB,IACA1/gB,GAAO,GAAK,IAEhB,IAAI2/gB,EAAS,GACT52e,EAAM,KAIV,GAHI40e,EAASmC,WAAWzlB,YAAYr6f,KAChC+oC,EAAM40e,EAASmC,WAAWz3e,SAASroC,IAE5B,MAAP+oC,EAAa,CACb,IAAI81e,EAAM14gB,EAAIw3gB,EAASY,sBACnBO,EAAQnhc,EAAIggc,EAASY,sBACrBQ,EAAO95gB,EAAI04gB,EAASY,sBAEpBoB,EADAD,EACSb,EAAIhpgB,WAAa,IAAMipgB,EAAMjpgB,WAAa,IAAMkpgB,EAAKlpgB,WAAa,MAGlEgpgB,EAAIhpgB,WAAa,IAAMipgB,EAAMjpgB,WAAa,IAAMkpgB,EAAKlpgB,WAAa,MAE/E8ngB,EAASmC,WAAWp8f,SAAS1jB,EAAK2/gB,QAGlCA,EAAS52e,EAAIlzB,WAEjB,OAAO8pgB,EAAS1hB,EAAUI,SAM9Bsf,EAASj4gB,UAAU+5gB,aAAe,SAAUC,GACxC,IAAIT,EAAO9ihB,KAAK6J,EACZk5gB,EAAU/ihB,KAAK6B,EACfmhhB,EAAShjhB,KAAKqC,EACdwghB,EAAQ7ihB,KAAK8I,EACb06gB,EAAS,GAEb,OADAA,EAASV,EAAKppgB,WAAa,IAAMqpgB,EAAQrpgB,WAAa,IAAMspgB,EAAOtpgB,WAAa,IAAMmpgB,EAAMnpgB,WAAa,KAClG8pgB,EAAS1hB,EAAUI,SAM9Bsf,EAASj4gB,UAAU+zb,QAAU,SAAU+oE,GACnC,IAAI5wb,EAAQ,IAAI,EAChB,OAAQ4wb,GACJ,KAAK0V,GAAckH,IACfxtc,EAAMthE,IAAI,IAAI24f,EAAU9sgB,KAAK0ihB,MAC7Bjtc,EAAMthE,IAAI,IAAI24f,EAAU9sgB,KAAK2ihB,QAC7Bltc,EAAMthE,IAAI,IAAI24f,EAAU9sgB,KAAK4ihB,OAC7B,MAER,OAAOntc,GAOX+rc,EAASmC,WAAa,IAAI,EAK1BnC,EAASiC,iBAAmB,IAAI,EAKhCjC,EAASkC,gBAAkB,IAAI,EAK/BlC,EAASY,sBAAwB,IAC1BZ,EAzckB,GCxBzBoC,GAA0B,WAM1B,SAASA,KAOT,OAHAA,EAASr6gB,UAAUuzC,MAAQ,WACvB,OAAO98C,MAEJ4jhB,EAbkB,GCLzB,GAAwC,WACxC,IAAI/6gB,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAmCxC,GAA+B,SAAU4C,GAuBzC,SAAS43gB,EAActic,GACnB,IAAI/0E,EAAQP,EAAOQ,KAAKzM,OAASA,KAEjC,OADAwM,EAAMs3gB,SAAWvic,EACV/0E,EA8CX,OAvEA,GAAUq3gB,EAAe53gB,GA2BzBlD,OAAOsB,eAAew5gB,EAAct6gB,UAAW,QAAS,CAMpD69B,IAAK,WACD,OAAOpnC,KAAK8jhB,UAEhBtue,IAAK,SAAUvvC,GACXjG,KAAK8jhB,SAAW79gB,GAEpBqsG,YAAY,EACZC,cAAc,IAOlBsxa,EAAct6gB,UAAUw6gB,eAAiB,SAAUC,EAAOlnB,EAAcmnB,EAAc96Y,EAAa+6Y,GAC/F,GAAoB,MAAhBpnB,EACA,MAAM,IAAI3pd,MAAM,sCAEpB,IAAIooH,GAAO,EACX,GAAa,MAATyoX,EAGA,OAFAzoX,GAAO,EACPuhW,EAAa2jB,iBAAiBzghB,KAAK8jhB,SAAUI,GAAmB,GACzD3oX,EAMP,OAFAA,GAAO,EACPuhW,EAAa2jB,iBAAiBzghB,KAAK8jhB,SAAUI,GAAmB,GACzD3oX,GAOfsoX,EAAct6gB,UAAU46gB,aAAe,SAAUrnB,GAC7CA,EAAa2jB,iBAAiB,IAAI,GAAS,EAAG,EAAG,GAAI1E,GAAckH,KAAK,IAErEY,EAxEuB,CAyEhCD,ICnFE,GAAwB,WACxB,SAASQ,EAAO/nb,EAAMkuY,GAOlBvqe,KAAK8jhB,SAAW,IAAI,GAAS,EAAG,EAAG,GAMnC9jhB,KAAKqkhB,gBAAkB,EAMvBrkhB,KAAKskhB,eAAiB,CAAC,GAMvBtkhB,KAAKukhB,aAAe1I,GAAa2I,MAMjCxkhB,KAAKykhB,WAAa,EAMlBzkhB,KAAK0khB,YAAc,EAMnB1khB,KAAK2khB,SAAW,EAMhB3khB,KAAK4khB,mBAAqB,EAM1B5khB,KAAKqmgB,WAAa0V,GAAckH,IAC5B5mb,aAAgBunb,GAChB5jhB,KAAK6khB,SAASxob,GAETA,aAAgB,KACrBr8F,KAAKuhF,MAAQ8a,GAEG,kBAATkuY,IACPvqe,KAAKqH,MAAQkje,GAyPrB,OAtPAxhe,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,QAAS,CAM7C69B,IAAK,WACD,OAAOpnC,KAAK8jhB,UAEhBtue,IAAK,SAAUvvC,GACXjG,KAAK8jhB,SAAW79gB,GAEpBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,aAAc,CAKlD69B,IAAK,WACD,MAAoC,qBAAzBpnC,KAAKqkhB,iBAA2D,MAAxBrkhB,KAAKqkhB,gBAC7C,EAGArkhB,KAAKqkhB,iBAGpB7ue,IAAK,SAAUvvC,GACXjG,KAAKqkhB,gBAAkBp+gB,GAE3BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,cAAe,CAKnD69B,IAAK,WACD,OAAOpnC,KAAKskhB,gBAEhB9ue,IAAK,SAAUvvC,GACXjG,KAAKskhB,eAAiBr+gB,GAE1BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,YAAa,CAwBjD69B,IAAK,WACD,OAAOpnC,KAAKukhB,cAEhB/ue,IAAK,SAAUvvC,GACX,GAAIjG,KAAKukhB,eAAiBt+gB,EAEtB,OADAjG,KAAKukhB,aAAet+gB,EACZjG,KAAKukhB,cACT,KAAK1I,GAAaj6L,OACd,MACJ,KAAKi6L,GAAaiJ,KACd9khB,KAAKskhB,eAAiB,CAAC,EAAG,GAC1B,MACJ,KAAKzI,GAAakJ,IACd/khB,KAAKskhB,eAAiB,CAAC,EAAG,GAC1B,MACJ,KAAKzI,GAAamJ,QACdhlhB,KAAKskhB,eAAiB,CAAC,EAAG,EAAG,EAAG,GAChC,MACJ,KAAKzI,GAAaoJ,WACdjlhB,KAAKskhB,eAAiB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACtC,MACJ,KAAKzI,GAAa2I,MACd,MACJ,QACIxkhB,KAAKukhB,aAAe1I,GAAa2I,MACjCxkhB,KAAKskhB,eAAiB,CAAC,GACvB,QAIhBhya,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,UAAW,CAK/C69B,IAAK,WACD,OAAOpnC,KAAKykhB,YAEhBjve,IAAK,SAAUvvC,GACXjG,KAAKykhB,WAAax+gB,GAEtBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,WAAY,CAKhD69B,IAAK,WACD,OAAOpnC,KAAK0khB,aAEhBlve,IAAK,SAAUvvC,GACXjG,KAAK0khB,YAAcz+gB,GAEvBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,aAAc,CAKlD69B,IAAK,WACD,OAAOpnC,KAAK4khB,oBAEhBpve,IAAK,SAAUvvC,GACXjG,KAAK4khB,mBAAqB3+gB,GAE9BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+5gB,EAAO76gB,UAAW,QAAS,CAsB7C69B,IAAK,WACD,OAAOpnC,KAAK2khB,UAEhBnve,IAAK,SAAUvvC,GACXjG,KAAK2khB,SAAW1+gB,GAEpBqsG,YAAY,EACZC,cAAc,IAOlB6xa,EAAO76gB,UAAUuzC,MAAQ,WACrB,IAAIooe,EAAMllhB,KACV,OAAOklhB,GAMXd,EAAO76gB,UAAUs7gB,SAAW,SAAUb,GAClC,IAAImB,EAASnB,EACE,MAAVmB,GAAkBA,aAAkB,KACrCnlhB,KAAKuhF,MAAQ4jc,EAAO5jc,MACpBvhF,KAAKolhB,SAAWD,GAEpBnlhB,KAAKuhF,MAAQ4jc,EAAO5jc,MACpBvhF,KAAKolhB,SAAWD,GAMpBf,EAAO76gB,UAAUw6gB,eAAiB,SAAUsB,EAAYvoB,EAAcmnB,EAAc/gB,EAAWghB,EAAmB9mb,GAC9G,IAAIm+D,GAAO,EACX2nW,GAAY,EACM,MAAdmiB,IACA9pX,GAAO,GAEXA,EAAOv7J,KAAKslhB,YAAYD,EAAYniB,EAAWpG,GAC/CA,EAAayG,aAAavjgB,KAAKqH,OAC/By1f,EAAaokB,YAAYlhhB,KAAKulhB,UAC9BzoB,EAAakkB,WAAWhhhB,KAAKwlhB,SAC7B,IAAIzE,EAAa/ghB,KAAK+ghB,WAClBA,EAAa,IACbjkB,EAAa0I,cAAcub,GAC3BxlX,GAAO,GAECv7J,KAAKolhB,SAGjB,OAFAtoB,EAAa2jB,iBAAiBzghB,KAAKuhF,MAAO2ic,GAAmB,GAC7D3oX,GAAO,EACAA,GAMX6oX,EAAO76gB,UAAU+7gB,YAAc,SAAUJ,EAAKhiB,EAAWpG,GACrDoG,GAAY,EACZ,IAAIuiB,EAAYzlhB,KAAKqH,MACjBkjB,EAAUvqB,KAAK0lhB,aAEnB,OADA5oB,EAAa6jB,mBAAmBp2f,EAASvqB,KAAK2lhB,WAAaF,GACpDviB,GAMXkhB,EAAO76gB,UAAUm8gB,WAAa,WAE1B,IADA,IAAIn7f,EAAUvqB,KAAK4lhB,YACVx7gB,EAAI,EAAGA,EAAImgB,EAAQxgB,SAAUK,EAClCmgB,EAAQngB,IAAMpK,KAAKqH,MAEvB,OAAOkjB,GAEJ65f,EAzTgB,GCOvB,GAAiC,WACjC,SAASyB,EAAgBxpb,EAAMkuY,GAK3Bvqe,KAAK8lhB,cAAgB,IAKrB9lhB,KAAK+lhB,aAAexJ,GAAgByJ,KACpChmhB,KAAKimhB,mBAAoB,EACzBjmhB,KAAK+lhB,aAAexJ,GAAgByJ,KACf,qBAAT3pb,GAA0C,kBAATA,IACzCr8F,KAAKkmhB,cAAgB7pb,GAEL,qBAATkuY,IACPvqe,KAAKmmhB,kBAAoB57C,GA0ZjC,OAvZAxhe,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,YAAa,CA2B1D69B,IAAK,WACD,OAAOpnC,KAAKkmhB,eAEhB1we,IAAK,SAAUvvC,GACXjG,KAAKkmhB,cAAgBjghB,GAEzBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,gBAAiB,CAC9D69B,IAAK,WACD,OAAOpnC,KAAKksB,WAEhBspB,IAAK,SAAUvvC,GACXjG,KAAKksB,UAAYjmB,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,gBAAiB,CA0B9D69B,IAAK,WACD,MAAsC,qBAA3BpnC,KAAKmmhB,mBAA+D,MAA1BnmhB,KAAKmmhB,kBAC/C3K,GAAqB4K,IAGrBpmhB,KAAKmmhB,mBAGpB3we,IAAK,SAAUvvC,GACXjG,KAAKmmhB,kBAAoBlghB,GAE7BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,cAAe,CAK5D69B,IAAK,WACD,MAAkC,qBAAvBpnC,KAAKqmhB,eAAuD,MAAtBrmhB,KAAKqmhB,eAI3CrmhB,KAAKqmhB,eAGpB7we,IAAK,SAAUvvC,GACXjG,KAAKqmhB,cAAgBpghB,GAEzBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,mBAAoB,CA0BjE69B,IAAK,WACD,MAA6C,qBAAlCpnC,KAAKsmhB,0BAA6E,MAAjCtmhB,KAAKsmhB,yBACtD,EAGAtmhB,KAAKsmhB,0BAGpB9we,IAAK,SAAUvvC,GACXjG,KAAKsmhB,yBAA2BrghB,GAEpCqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,cAAe,CA0B5D69B,IAAK,WACD,MAAwC,qBAA7BpnC,KAAKumhB,qBAAmE,MAA5BvmhB,KAAKumhB,oBACjD,EAGAvmhB,KAAKumhB,qBAGpB/we,IAAK,SAAUvvC,GACXjG,KAAKumhB,oBAAsBtghB,GAE/BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,cAAe,CA+B5D69B,IAAK,WACD,MAA4B,qBAAjBpnC,KAAKoogB,SAA2C,MAAhBpogB,KAAKoogB,QACrC,EAGApogB,KAAKoogB,SAGpB5yd,IAAK,SAAUvvC,GACXjG,KAAKoogB,QAAUnigB,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,WAAY,CAKzD69B,IAAK,WACD,MAAyB,qBAAdpnC,KAAKwmhB,MAAqC,MAAbxmhB,KAAKwmhB,MAIlCxmhB,KAAKwmhB,MAGpBhxe,IAAK,SAAUvvC,GACXjG,KAAKwmhB,KAAOvghB,GAEhBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,iBAAkB,CAK/D69B,IAAK,WACD,MAAsC,qBAA3BpnC,KAAKymhB,mBAA+D,MAA1BzmhB,KAAKymhB,kBAC/CjK,GAAkBhI,KAGlBx0gB,KAAKymhB,mBAGpBjxe,IAAK,SAAUvvC,GACXjG,KAAKymhB,kBAAoBxghB,GAE7BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,kBAAmB,CAKhE69B,IAAK,WACD,MAA4C,qBAAjCpnC,KAAK0mhB,yBAA2E,MAAhC1mhB,KAAK0mhB,wBACrD,EAGA1mhB,KAAK0mhB,yBAGpBlxe,IAAK,SAAUvvC,GACXjG,KAAK0mhB,wBAA0BzghB,EAC/BjG,KAAK2mhB,gBAAkB1ghB,GAE3BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,YAAa,CAK1D69B,IAAK,WACD,OAAOpnC,KAAKimhB,mBAEhBzwe,IAAK,SAAUvvC,GACXjG,KAAKimhB,kBAAoBhghB,GAE7BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,wBAAyB,CAKtE69B,IAAK,WACD,MAAmC,qBAAxBpnC,KAAK4mhB,gBAAyD,MAAvB5mhB,KAAK4mhB,gBAI5C5mhB,KAAK4mhB,gBAGpBpxe,IAAK,SAAUvvC,GACXjG,KAAK4mhB,eAAiB3ghB,GAE1BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,SAAU,CAKvD69B,IAAK,WACD,MAA6B,qBAAlBpnC,KAAK6mhB,UAA6C,MAAjB7mhB,KAAK6mhB,UAItC7mhB,KAAK6mhB,UAGpBrxe,IAAK,SAAUvvC,GACXjG,KAAK6mhB,SAAW5ghB,GAEpBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,WAAY,CAKzD69B,IAAK,WAID,OAAOpnC,KAAK+lhB,cAGhBvwe,IAAK,SAAUvvC,GACXjG,KAAK+lhB,aAAe9/gB,GAExBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,0BAA2B,CAKxE69B,IAAK,WAID,OAAOpnC,KAAK8lhB,eAGhBtwe,IAAK,SAAUvvC,GACX,GAAIA,GAAS,EACT,MAAM,IAAIktC,MAAM,+FAEpBnzC,KAAK8lhB,cAAgB7/gB,GAEzBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAew7gB,EAAgBt8gB,UAAW,kBAAmB,CAKhE69B,IAAK,WACD,MAAsC,qBAA3BpnC,KAAK8mhB,mBAA+D,MAA1B9mhB,KAAK8mhB,kBAC/C,EAGA9mhB,KAAK8mhB,mBAGpBtxe,IAAK,SAAUvvC,GACXjG,KAAK8mhB,kBAAoB7ghB,GAE7BqsG,YAAY,EACZC,cAAc,IAOlBsza,EAAgBt8gB,UAAUuzC,MAAQ,WAC9B,IAAI54B,EAASlkB,KACb,OAAOkkB,GAEJ2hgB,EA5ayB,GC3BhCkB,GAAiC,WAMjC,SAASA,EAAgBzyR,GAMrB,GADAt0P,KAAKqzgB,gBAAkB,EACN,MAAb/+Q,EACA,MAAM,IAAInhN,MAAM,8BAEpBnzC,KAAKwhC,KAAO8yN,EAkPhB,OAhPAvrP,OAAOsB,eAAe08gB,EAAgBx9gB,UAAW,SAAU,CAMvD69B,IAAK,WACD,OAAOpnC,KAAKwhC,KAAKz3B,QAErBuoG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe08gB,EAAgBx9gB,UAAW,MAAO,CACpD69B,IAAK,WACD,OAAQpnC,KAAKqzgB,kBAAoBrzgB,KAAKwhC,KAAKz3B,QAE/CuoG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe08gB,EAAgBx9gB,UAAW,WAAY,CAKzD69B,IAAK,WACD,OAAOpnC,KAAKqzgB,iBAEhB79d,IAAK,SAAUvvC,GACXjG,KAAKqzgB,gBAAkBptgB,GAE3BqsG,YAAY,EACZC,cAAc,IAElBw0a,EAAgBC,cAAgB,SAAUxlf,EAAMsyU,GAC5C,GAAuB,kBAAZA,EAAsB,CAC7B,GAAY,MAARtyU,EACA,MAAM,IAAI2R,MAAM,mCAIpB,IAFA,IAAI8ze,EAAa,EACb/1J,EAAW,IACN,CAEL,GADAA,EAAW1vV,EAAKt0B,QAAQ4mW,EAASod,IACf,IAAdA,EACA,MAGA+1J,IACA/1J,IAGR,OAAO+1J,EAGP,GAAY,MAARzlf,EACA,MAAM,IAAI2R,MAAM,8BAEpB,GAAe,MAAX2gU,EACA,MAAM,IAAI3gU,MAAM,iCAGpB,IADA,IAAIzJ,EAAQ,EACHt/B,EAAI,EAAGqgB,EAAM+W,EAAKz3B,OAAQK,EAAIqgB,EAAKrgB,IAAK,CAC7C,IAAI00c,EAAKt9a,EAAKp3B,GACVpK,KAAKoH,SAAS0sW,EAASgrG,IACvBp1a,IAGR,OAAOA,GAOfq9e,EAAgBx9gB,UAAU29gB,SAAW,WACjC,IAAIrhhB,EAAM7F,KAAKqzgB,gBACf,MAAOxtgB,EAAM7F,KAAK+J,OAAQ,CACtB,IAAI+0c,EAAK9+c,KAAKwhC,KAAK37B,GACnB,OAAQi5c,GACJ,IAAK,KACL,IAAK,KACD,IAAIt9a,EAAOxhC,KAAKwhC,KAAKqzH,OAAO70J,KAAKqzgB,gBAAiBxtgB,EAAM7F,KAAKqzgB,iBAK7D,OAJArzgB,KAAKqzgB,gBAAkBxtgB,EAAM,EAChB,OAAPi5c,GAAiB9+c,KAAKqzgB,gBAAkBrzgB,KAAK+J,QAAiD,OAApC/J,KAAKwhC,KAAKxhC,KAAKqzgB,kBAC3ErzgB,KAAKqzgB,kBAEF7xe,EAGf37B,IAGJ,GAAIA,EAAM7F,KAAKqzgB,gBAAiB,CAC5B,IAAI8T,EAAQnnhB,KAAKwhC,KAAKqzH,OAAO70J,KAAKqzgB,gBAAiBxtgB,EAAM7F,KAAKqzgB,iBAE9D,OADArzgB,KAAKqzgB,gBAAkBxtgB,EAChBshhB,EAEX,OAAO,MAMXJ,EAAgBx9gB,UAAU69gB,SAAW,WACjC,IAAIvhhB,EAAM7F,KAAKqzgB,gBACXgU,EAAOrnhB,KAAKknhB,WAEhB,OADAlnhB,KAAKqzgB,gBAAkBxtgB,EAChBwhhB,GAMXN,EAAgBx9gB,UAAU+9gB,SAAW,WACjC,IAAIzhhB,EAAM7F,KAAKqzgB,gBACf,MAAOxtgB,EAAM7F,KAAK+J,OAAQ,CACtB,IAAI+0c,EAAK9+c,KAAKwhC,KAAK37B,GACnB,OAAQi5c,GACJ,IAAK,KACL,IAAK,KACD,IAAIxqN,EAAYt0P,KAAKwhC,KAAKqzH,OAAO70J,KAAKqzgB,gBAAiBxtgB,EAAM7F,KAAKqzgB,iBAKlE,OAJArzgB,KAAKqzgB,gBAAkBxtgB,EAAM,EAChB,OAAPi5c,GAAiB9+c,KAAKqzgB,gBAAkBrzgB,KAAK+J,QAAiD,OAApC/J,KAAKwhC,KAAKxhC,KAAKqzgB,kBAC3ErzgB,KAAKqzgB,kBAEF/+Q,EACX,IAAK,IACL,IAAK,KACGzuP,IAAQ7F,KAAKqzgB,iBACbxtgB,IAEJ,IAAI27B,EAAOxhC,KAAKwhC,KAAKqzH,OAAO70J,KAAKqzgB,gBAAiBxtgB,EAAM7F,KAAKqzgB,iBAE7D,OADArzgB,KAAKqzgB,gBAAkBxtgB,EAChB27B,EAGf37B,IAGJ,GAAIA,EAAM7F,KAAKqzgB,gBAAiB,CAC5B,IAAI8T,EAAQnnhB,KAAKwhC,KAAKqzH,OAAO70J,KAAKqzgB,gBAAiBxtgB,EAAM7F,KAAKqzgB,iBAE9D,OADArzgB,KAAKqzgB,gBAAkBxtgB,EAChBshhB,EAEX,OAAO,MAMXJ,EAAgBx9gB,UAAUg+gB,SAAW,WACjC,IAAI1hhB,EAAM7F,KAAKqzgB,gBACX3jb,EAAO1vF,KAAKsnhB,WAEhB,OADAtnhB,KAAKqzgB,gBAAkBxtgB,EAChB6pF,GAEXq3b,EAAgBx9gB,UAAU6zT,KAAO,SAAU1zR,GACvC,GAAqB,qBAAVA,EAAuB,CAC9B,IAAIo1a,EAAK,IAKT,OAJK9+c,KAAK2pB,MACNm1b,EAAK9+c,KAAKwhC,KAAKxhC,KAAKqzgB,iBACpBrzgB,KAAKqzgB,mBAEFv0D,EAGP,IAAInvX,EAAM,EACN0hb,EAAU,GACd,OAAQrxgB,KAAK2pB,KAAOgmE,EAAMjmD,EAAO,CACzBo1a,EAAK9+c,KAAKo9T,OACdi0M,GAAoBvyD,EACpBnvX,IAEJ,OAAO0hb,GAOf0V,EAAgBx9gB,UAAUi+gB,KAAO,WAC7B,IAAI1oE,EAAK,IAIT,OAHK9+c,KAAK2pB,MACNm1b,EAAK9+c,KAAKwhC,KAAKxhC,KAAKqzgB,kBAEjBv0D,GAMXioE,EAAgBx9gB,UAAUkF,MAAQ,WAC9BzO,KAAKwhC,KAAO,MAEhBulf,EAAgBx9gB,UAAUk+gB,UAAY,WAClC,IAAIjmf,EAQJ,OANIA,EADyB,IAAzBxhC,KAAKqzgB,gBACErzgB,KAAKwhC,KAGLxhC,KAAKwhC,KAAKqzH,OAAO70J,KAAKqzgB,gBAAiBrzgB,KAAK+J,OAAS/J,KAAKqzgB,iBAErErzgB,KAAKqzgB,gBAAkBrzgB,KAAK+J,OACrBy3B,GAOXulf,EAAgB3/gB,SAAW,SAAUquE,EAAO6kP,GAExC,IADA,IAAIlzT,GAAW,EACNgD,EAAI,EAAGA,EAAIqrE,EAAM1rE,OAAQK,IAC9B,GAAIqrE,EAAMrrE,KAAOkwT,EAAQ,CACrBlzT,GAAW,EACX,MAGR,OAAOA,GAOX2/gB,EAAgB/kB,WAAa,IAK7B+kB,EAAgBr2f,IAAM,KAKtBq2f,EAAgBW,OAAS,CAACX,EAAgB/kB,WAAY+kB,EAAgBr2f,KAKtEq2f,EAAgBY,kBAAoB,WAC7BZ,EAjQyB,GNChC,GAAmC,WAMnC,SAASa,IAML5nhB,KAAK6nhB,wBAAyB,EAmXlC,OAhXAD,EAAkBr+gB,UAAUw0M,OAAS,SAAU1hH,EAAMkuY,EAAMC,EAAMC,EAAMC,EAAMC,EAAMm9C,GAC/E,GAAIr9C,aAAgB2uC,GAAY,CAC5Bp5gB,KAAK8M,WAAWuvF,EAAMkuY,EAAMC,EAAMC,EAAMC,GACxC1qe,KAAK6nhB,uBAAyBl9C,EAC9B3qe,KAAK+nhB,WAAaD,EAClB,IAAI/jhB,EAAS/D,KAAKgohB,WAElB,OADAhohB,KAAK4Q,QACE7M,EAGP/D,KAAK8M,WAAWuvF,EAAMkuY,EAAMC,EAAMC,GAClCzqe,KAAK6nhB,uBAAyBn9C,EAC9B1qe,KAAK+nhB,WAAap9C,EACd5me,EAAS/D,KAAKgohB,WAElB,OADAhohB,KAAK4Q,QACE7M,GAGf6jhB,EAAkBr+gB,UAAUuD,WAAa,SAAU00B,EAAM6vS,EAAMntT,EAAQ+jgB,EAAUC,GAC7E,GAA0B,kBAAfA,EAAyB,CAChC,GAAY,MAAR1mf,EACA,MAAM,IAAI2R,MAAM,8BAEpB,GAAY,MAARk+R,EACA,MAAM,IAAIl+R,MAAM,8BAEpBnzC,KAAKwhC,KAAOA,EACZxhC,KAAKqxU,KAAOA,EACZrxU,KAAKkkB,OAASA,EACdlkB,KAAK6tC,KAAO,IAAIsre,EAAM8O,EAAS5ghB,MAAO4ghB,EAAShhhB,QAC/CjH,KAAKmohB,UAAYF,EACjBjohB,KAAKkohB,WAAaA,EAClBlohB,KAAK8mU,OAAS,IAAIigN,GAAgBvlf,QAGlCxhC,KAAK8M,WAAW00B,EAAM6vS,EAAMntT,EAAQ,IAAIk1f,GAAW,IAAIF,EAAO,EAAG,GAAI+O,GAAW,IAOxFL,EAAkBr+gB,UAAUqH,MAAQ,WAChC5Q,KAAKqxU,KAAO,KACZrxU,KAAKkkB,OAAS,KACdlkB,KAAK8mU,OAAOr4T,QACZzO,KAAK8mU,OAAS,KACd9mU,KAAKwhC,KAAO,MAMhBomf,EAAkBr+gB,UAAUy+gB,SAAW,WACnC,IAAIjkhB,EAAS,IAAI,GACbqkhB,EAAa,IAAI,GACjBC,EAAQ,GACRhB,EAAOrnhB,KAAK8mU,OAAOsgN,WACnBkB,EAAatohB,KAAKuohB,eAAc,GACpC,MAAe,MAARlB,EAAc,CAEjB,GADAe,EAAapohB,KAAKwohB,WAAWnB,EAAMiB,GAChB,OAAfF,GAA6C,qBAAfA,EAA4B,CAC1D,IAAIK,EAAqB,EAErBC,EAAgB1ohB,KAAK2ohB,aAAa5khB,EAAQqkhB,EAAYC,EAAeI,GAErEr1a,EAAUs1a,EAAct1a,QAE5B,GADAq1a,EAAqBC,EAAcE,aAC9Bx1a,EAAS,CACVpzG,KAAK8mU,OAAO1J,KAAKqrN,GACjB,OAMRzohB,KAAK8mU,OAAOogN,WACZG,EAAOrnhB,KAAK8mU,OAAOsgN,WACnBkB,EAAatohB,KAAKuohB,eAAc,GAGpC,OADAvohB,KAAK6ohB,eAAe9khB,EAAQskhB,GACrBtkhB,GAMX6jhB,EAAkBr+gB,UAAUg/gB,cAAgB,SAAUO,GAClD,IAAIR,EAAa,EAKjB,OAJmB,MAAftohB,KAAKkkB,SACLokgB,EAAa,EAActohB,KAAKkkB,OAAOyigB,gBAAkB3mhB,KAAKkkB,OAAO6kgB,gBACrET,EAActohB,KAAK6tC,KAAKxmC,MAAQ,EAAKoK,KAAK2S,IAAIpkB,KAAK6tC,KAAKxmC,MAAOihhB,GAAcA,GAE1EA,GAMXV,EAAkBr+gB,UAAUy/gB,cAAgB,WACxC,IAAI/hhB,EAASjH,KAAKqxU,KAAKpqU,OAIvB,OAHmB,MAAfjH,KAAKkkB,QAA8C,IAA5BlkB,KAAKkkB,OAAO+kgB,cACnChihB,EAASjH,KAAKkkB,OAAO+kgB,YAAcjphB,KAAKqxU,KAAKpqU,QAE1CA,GAMX2ghB,EAAkBr+gB,UAAU2/gB,aAAe,SAAU7B,GACjD,IAAIhghB,EAAQrH,KAAKqxU,KAAK63M,aAAa7B,EAAMrnhB,KAAKkkB,QAC9C,OAAO7c,GAOXughB,EAAkBr+gB,UAAUi/gB,WAAa,SAAUnB,EAAMiB,GACrD,IAAIF,EAAa,IAAI,GACrBA,EAAWe,iBAAmBnphB,KAAKgphB,gBACnC,IAAIX,EAAQ,GACRrwgB,EAAWhY,KAAK6tC,KAAKxmC,MACrBo+gB,EAAYzlhB,KAAKkphB,aAAa7B,GAAQiB,EACtCc,EAAW3K,GAAS4K,mBACpB/B,GAAW,EAEf,GAAItvgB,GAAY,GAAKvG,KAAKC,MAAM+zgB,IAAch0gB,KAAKC,MAAMsG,GACrDhY,KAAKsphB,gBAAgBlB,EAAYC,EAAOhB,EAAM5B,EAAWhH,GAAS8K,aAAeH,OAEhF,CACD,IAAI/X,EAAU,GACVmY,EAAU,GACd/D,EAAY6C,EACZ,IAAImB,EAAYnB,EACZxhN,EAAS,IAAIigN,GAAgBM,GAC7B33b,EAAOo3O,EAAOygN,WAEd73b,EAAK3lF,SAAW+8T,EAAO/8T,QACV,MAAT2lF,IACA85b,GAAoB95b,EACpB2hb,GAAoB3hb,EACpBo3O,EAAO9hU,UAAY,EACnB0qF,EAAOo3O,EAAOygN,YAGtB,MAAe,MAAR73b,EAAc,CACjB85b,GAAoB95b,EACpB,IAAIg6b,EAAe1phB,KAAKkphB,aAAaM,EAAQ9vgB,YAAc+vgB,EAK3D,GAJ2B,MAAvBD,EAAQ9vgB,aACR8vgB,EAAU,GACVE,EAAe,GAEfA,EAAe1xgB,EAAnB,CACI,GAAIhY,KAAK2phB,gBAAkBpN,GAAgB/H,KACvC,MAEJ,GAAIgV,EAAQz/gB,SAAW2lF,EAAK3lF,OAAQ,CAEhC,GAAI/J,KAAK2phB,gBAAkBpN,GAAgBqN,SAAU,CACjDxB,EAAWyB,cAAgBxC,EAAK5of,UAAUqoS,EAAO9hU,UACjD,MAEC,GAAuB,IAAnBwkhB,EAAQz/gB,OAAc,CAC3BsngB,GAAoB3hb,EACpB,MAGA43b,GAAW,EACXkC,EAAU,GACV95b,EAAOo3O,EAAO0gN,OAAO9tgB,WACrB,SAYJ,GARI1Z,KAAKkphB,aAAax5b,EAAKh2E,YAAc1B,EACrChY,KAAKkkB,OAAO4lgB,SAAWvN,GAAgBwN,UAGZ,qBAAhB/phB,KAAKkkB,QAA0C,OAAhBlkB,KAAKkkB,SAC3ClkB,KAAKkkB,OAAO4lgB,SAAWvN,GAAgByJ,MAG3ChmhB,KAAK2phB,gBAAkBpN,GAAgBwN,WAAczC,EA6BrDA,GAAW,EACXkC,EAAU,GACVA,GAAoBnY,EAAQ33f,WAC5Bg2E,EAAOo3O,EAAO0gN,OAAO9tgB,eAhC0C,CAC/D,IAAIswgB,EAAK3Y,EAAQ33f,WAON,MAAPswgB,GACAhqhB,KAAKsphB,gBAAgBlB,EAAYC,EAAO2B,EAAIvE,EAAWhH,GAASwL,YAAcb,GAE9EpphB,KAAK6nhB,yBACL7vgB,EAAWhY,KAAK+nhB,WAAW1ghB,OAE/BmihB,EAAU,GACVnY,EAAU,GACVoU,EAAY,EACZgE,EAAY,EACZC,EAAe,EACfN,EAAW3K,GAASjK,KAKpB9kb,EAAO,EAAaA,EAAOo3O,EAAOygN,WAElCD,GAAW,QAYvBjW,GAAoB3hb,EACpB+1b,EAAYiE,EACRpC,GACAxgN,EAAOwgN,WACP53b,EAAOo3O,EAAOygN,aAIdzgN,EAAO1J,OACP1tO,EAAOo3O,EAAO0gN,OAAO9tgB,YAG7B,GAAI23f,EAAQtngB,OAAS,EAAG,CAChBighB,EAAK3Y,EAAQ33f,WACjB1Z,KAAKsphB,gBAAgBlB,EAAYC,EAAO2B,EAAIvE,EAAWhH,GAAS8K,aAAe9K,GAASyL,mBAE5FpjN,EAAOr4T,QAEX25gB,EAAW+B,YAAc,GACzB,IAAK,IAAIr1gB,EAAQ,EAAGA,EAAQuzgB,EAAMt+gB,OAAQ+K,IACtCszgB,EAAW+B,YAAYz1gB,KAAK2zgB,EAAMvzgB,IAGtC,OADAuzgB,EAAQ,GACDD,GAMXR,EAAkBr+gB,UAAU+/gB,gBAAkB,SAAUlB,EAAYC,EAAOhB,EAAM5B,EAAW2E,GACxF,IAAIppf,EAAO,IAAIqpf,GACfrpf,EAAKQ,KAAO6lf,EACZrmf,EAAK35B,MAAQo+gB,EACbzkf,EAAKoof,SAAWgB,EAChB/B,EAAM3zgB,KAAKssB,GACX,IAAI6M,EAAOu6e,EAAWkC,WACtBz8e,EAAK5mC,QAAUjH,KAAKgphB,gBACpBn7e,EAAKxmC,MAAQoK,KAAKyP,IAAI2sB,EAAKxmC,MAAOo+gB,GAClC2C,EAAWv6e,KAAOA,GAMtB+5e,EAAkBr+gB,UAAUo/gB,aAAe,SAAU5khB,EAAQqkhB,EAAYC,EACjEO,GACJ,IAAIx1a,GAAU,EACVm3a,EAAoC,MAAfvqhB,KAAKkkB,SAAmBlkB,KAAKkkB,OAAOsmgB,UACzDvjhB,EAASlD,EAAOumhB,WAAWrjhB,OAC3B4+C,EAAY7lD,KAAK6tC,KAAK5mC,OAM1B,GALKjH,KAAKkohB,WAAa,GAAOrie,EAAY7lD,KAAKmohB,UAAU9lhB,EAAIrC,KAAKkohB,aAC9Drie,EAAY7lD,KAAKmohB,UAAU9lhB,EAAIrC,KAAKkohB,WACpCrie,EAAYp0C,KAAKyP,IAAI2kC,GAAYA,IAErC+ie,EAAc,EACU,MAApBR,EAAWC,MACX,IAAK,IAAIj+gB,EAAI,EAAGqgB,EAAM29f,EAAWC,MAAMt+gB,OAAQK,EAAIqgB,EAAKrgB,IAAK,CACzD,IAAIqghB,EAAYxjhB,EAASmhhB,EAAWxkL,WACpC,KAAI6mL,GAAa5ke,GAAaA,GAAa,GAAK0ke,GA6B3C,CACDn3a,GAAU,EACV,MA9BA,IAAIpyE,EAAOonf,EAAWC,MAAMj+gB,GAC5Bw+gB,GAAe5nf,EAAKQ,KAAKz3B,OACzBi3B,EAAOhhC,KAAK0qhB,SAAS1pf,EAAwB,IAAjBqnf,EAAMt+gB,QAClCs+gB,EAAM3zgB,KAAKssB,GAEX,IAAI6M,EAAO9pC,EAAOumhB,WAClBz8e,EAAKxmC,MAAQoK,KAAKyP,IAAI2sB,EAAKxmC,MAAO25B,EAAK35B,OACvCtD,EAAO8pC,KAAOA,EAkBd5mC,EAASwjhB,EASrB,GAAIxjhB,GAAUlD,EAAO8pC,KAAK5mC,OAAQ,CAC9B,IAAI0jhB,EAAQ5mhB,EAAOumhB,WACnBK,EAAM1jhB,OAASA,EACflD,EAAO8pC,KAAO88e,EAElB,MAAO,CAAEv3a,QAASA,EAASw1a,YAAaA,IAM5ChB,EAAkBr+gB,UAAUs/gB,eAAiB,SAAU9khB,EAAQskhB,GAC3DtkhB,EAAOomhB,YAAc,GACrB,IAAK,IAAIr1gB,EAAQ,EAAGA,EAAQuzgB,EAAMt+gB,OAAQ+K,IACtC/Q,EAAOomhB,YAAYz1gB,KAAK2zgB,EAAMvzgB,IAElC/Q,EAAOolhB,iBAAmBnphB,KAAKgphB,gBAC1BhphB,KAAK8mU,OAAOn9S,MACb5lB,EAAO8lhB,cAAgB7phB,KAAK8mU,OAAO2gN,aAEvCY,EAAQ,IAMZT,EAAkBr+gB,UAAUmhhB,SAAW,SAAU1pf,EAAM8nf,GACnD,IAAIzB,EAAOrmf,EAAKQ,KACZikf,EAAYzkf,EAAK35B,MAEG25B,EAAKoof,SAAW3K,GAAS4K,mBACrB,MAAfrphB,KAAKkkB,QAAmBlkB,KAAKkkB,OAAO64V,YACpCgqK,GAAgBW,OAW7B,OAVAL,EAAiBA,EAAKzygB,OAElByygB,EAAKt9gB,SAAWi3B,EAAKQ,KAAKz3B,SAC1B07gB,EAAYzlhB,KAAKkphB,aAAa7B,IACzBrmf,EAAKoof,SAAW3K,GAAS4K,oBAAsB,IAChD5D,GAAazlhB,KAAKuohB,cAAcO,KAGxC9nf,EAAKQ,KAAO6lf,EACZrmf,EAAK35B,MAAQo+gB,EACNzkf,GAMX4mf,EAAkBr+gB,UAAUoghB,YAAc,WACtC,IAAIiB,EAA2B,MAAf5qhB,KAAKkkB,OAAkBlkB,KAAKkkB,OAAO4lgB,SAAWvN,GAAgByJ,KAC9E,OAAO4E,GAEJhD,EA/X2B,GAmYlC,GAAuC,WACvC,SAASiD,KAyET,OAvEA9hhB,OAAOsB,eAAewghB,EAAsBthhB,UAAW,YAAa,CAMhE69B,IAAK,WACD,OAAOpnC,KAAK6phB,eAEhBv3a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewghB,EAAsBthhB,UAAW,aAAc,CAKjE69B,IAAK,WAID,MAHyB,qBAAdpnC,KAAK6tC,OACZ7tC,KAAK6tC,KAAO,IAAIsre,EAAM,EAAG,IAEtBn5gB,KAAK6tC,MAEhBykE,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewghB,EAAsBthhB,UAAW,QAAS,CAK5D69B,IAAK,WACD,OAAOpnC,KAAKmqhB,aAEhB73a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewghB,EAAsBthhB,UAAW,aAAc,CAKjE69B,IAAK,WACD,OAAOpnC,KAAKmphB,kBAEhB72a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewghB,EAAsBthhB,UAAW,QAAS,CAK5D69B,IAAK,WACD,OAA4B,MAApBpnC,KAAKmqhB,aAAmD,IAA5BnqhB,KAAKmqhB,YAAYpghB,QAEzDuoG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAewghB,EAAsBthhB,UAAW,YAAa,CAKhE69B,IAAK,WACD,IAAIsC,EAAU1pC,KAAKu3e,MAAmC,EAA1Bv3e,KAAKmqhB,YAAYpghB,OAC7C,OAAO2/B,GAEX4oE,YAAY,EACZC,cAAc,IAEXs4a,EA1E+B,GA6EtCR,GAA0B,WAC1B,SAASA,KA6CT,OA3CAthhB,OAAOsB,eAAegghB,EAAS9ghB,UAAW,WAAY,CAMlD69B,IAAK,WACD,OAAOpnC,KAAK6W,MAEhB2+B,IAAK,SAAUvvC,GACXjG,KAAK6W,KAAO5Q,GAEhBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegghB,EAAS9ghB,UAAW,OAAQ,CAK9C69B,IAAK,WACD,OAAOpnC,KAAKmT,SAEhBqiC,IAAK,SAAUvvC,GACXjG,KAAKmT,QAAUlN,GAEnBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAegghB,EAAS9ghB,UAAW,QAAS,CAK/C69B,IAAK,WACD,OAAOpnC,KAAKylhB,WAEhBjwe,IAAK,SAAUvvC,GACXjG,KAAKylhB,UAAYx/gB,GAErBqsG,YAAY,EACZC,cAAc,IAEX83a,EA9CkB,IAsD7B,SAAW5L,GAKPA,EAASA,EAAS,QAAU,GAAK,OAKjCA,EAASA,EAAS,gBAAkB,GAAK,eAKzCA,EAASA,EAAS,eAAiB,GAAK,cAKxCA,EAASA,EAAS,sBAAwB,GAAK,qBAK/CA,EAASA,EAAS,qBAAuB,GAAK,qBAzBlD,CA0BGA,KAAaA,GAAW,KO1hB3B,ICRWqM,GAiBAC,GAkBAC,GD3BP,GAAyB,WACzB,SAASC,EAAQp9e,EAAM9oC,GAKnB/E,KAAKu3U,UAAY6kM,GAAa8O,QACV,kBAATr9e,GAAsC,qBAAV9oC,EACnC/E,KAAK+xD,SAAWlkB,GAGhB7tC,KAAK+xD,SAAWlkB,EAChB7tC,KAAK4nB,SAAS7iB,IAuPtB,OApPAgE,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,OAAQ,CAM7C69B,IAAK,WACD,OAAOpnC,KAAKmrhB,QAAQxjhB,MAExB2qG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,OAAQ,CAK7C69B,IAAK,WACD,OAAOpnC,KAAK+xD,UAEhBugD,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,SAAU,CAK/C69B,IAAK,WACD,OAAOpnC,KAAKmrhB,QAAQrzF,UAAU,OAElCxlV,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,QAAS,CAK9C69B,IAAK,WACD,OAAOpnC,KAAKu3U,WAEhB/hS,IAAK,SAAUvvC,GACXjG,KAAKu3U,UAAYtxU,GAErBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,OAAQ,CAK7C69B,IAAK,WACD,OAASpnC,KAAK+E,MAAQq3gB,GAAagP,MAAQ,GAE/C94a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,SAAU,CAK/C69B,IAAK,WACD,OAASpnC,KAAK+E,MAAQq3gB,GAAaiP,QAAU,GAEjD/4a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,YAAa,CAKlD69B,IAAK,WACD,OAASpnC,KAAK+E,MAAQq3gB,GAAakP,WAAa,GAEpDh5a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,YAAa,CAKlD69B,IAAK,WACD,OAASpnC,KAAK+E,MAAQq3gB,GAAamP,WAAa,GAEpDj5a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,UAAW,CAKhD69B,IAAK,WACD,OAAOpnC,KAAKwrhB,aAEhBh2e,IAAK,SAAUvvC,GACXjG,KAAKwrhB,YAAcvlhB,GAEvBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe4ghB,EAAQ1hhB,UAAW,UAAW,CAgBhD69B,IAAK,WACD,OAAOpnC,KAAKyrhB,kBAEhBn5a,YAAY,EACZC,cAAc,IAElB04a,EAAQ1hhB,UAAUmihB,cAAgB,SAAUlqf,EAAM+oc,EAAMC,EAAMC,EAAMC,GAChE,GAAoB,kBAATlpc,GAAqC,qBAAT+oc,EACnC,OAAOvqe,KAAK0rhB,cAAclqf,EAAM,MAE/B,GAAoB,kBAATA,IAAsB+oc,aAAgB,IAA2B,MAARA,IAAiC,qBAATC,GAAwC,qBAATC,EAAsB,CAClJ,IAAI21C,EAAW71C,EACXohD,EAAmB,EACnBC,EAAc,EAClB,OAAO5rhB,KAAK0rhB,cAAclqf,EAAM4+e,EAAUuL,EAAkBC,GAE3D,GAAoB,kBAATpqf,IAAsB+oc,aAAgB,IAA2B,MAARA,IAAiC,kBAATC,GAAqC,kBAATC,EAAmB,CACxI21C,EAAW71C,EACf,OAAOvqe,KAAK0rhB,cAAclqf,EAAM,EAAG4+e,EAAU51C,EAAMC,GASlD,GAAoB,kBAATjpc,GAAqC,kBAAT+oc,IAAsBC,aAAgB,IAA2B,MAARA,IAAiC,kBAATC,GAAqC,kBAATC,EAAmB,CACxK,IAAImhD,EAAa,IAAI1S,EAAM5uC,EAAM,GAC7BuhD,EAAWthD,EACf,OAAOxqe,KAAK0rhB,cAAclqf,EAAMqqf,EAAYC,EAAUrhD,EAAMC,GAU5D,GAAY,MAARlpc,EACA,MAAM2R,MAAM,iCAEZite,EAAW71C,EACXuhD,EAAWthD,EADf,IAEIuhD,EAAW,IAAI,GACfhohB,EAASgohB,EAAShuU,OAAOv8K,EAAMxhC,KAAM8rhB,EAAU1L,GAAU,EAAO,IAAIjH,EAAM,EAAG,IAIjF,OAFA1uC,EAAOjpc,EAAKz3B,OACZ2ge,EAAQ3me,EAAY,MAAI,EAAIA,EAAOskhB,MAAMt+gB,OAClChG,EAAOumhB,YAStBW,EAAQ1hhB,UAAUyihB,SAAW,SAAUp/e,GACnC,IAAI7oC,EAAS/D,KAAKishB,aAAar/e,GAC/B,OAAO7oC,GAMXknhB,EAAQ1hhB,UAAU2ihB,aAAe,WAC7B,OAAOlshB,KAAKyrhB,kBAMhBR,EAAQ1hhB,UAAU4ihB,aAAe,SAAUC,GACvC,GAAiB,MAAbA,EACA,MAAM,IAAIj5e,MAAM,mCAEpBnzC,KAAKyrhB,iBAAmBW,GAM5BnB,EAAQ1hhB,UAAUqe,SAAW,SAAU7iB,GACnC/E,KAAKu3U,UAAYxyU,GAMrBkmhB,EAAQ1hhB,UAAU8ihB,oBAAsB,SAAUhF,EAAMnjgB,EAAQ7c,GAI5D,IAAIilhB,EAAYjlhB,EAChB,GAAc,MAAV6c,GAAkB7c,EAAQ,IAEM,IAA5B6c,EAAOqogB,mBACPD,IAAcjF,EAAKt9gB,OAAS,GAAKma,EAAOqogB,kBAGjB,IAAvBrogB,EAAO87f,aAAmB,CAC1B,IAAIlsK,EAAUizK,GAAgBW,OAC1B8E,EAAmBzF,GAAgBC,cAAcK,EAAMvzK,GAC3Dw4K,GAAaE,EAAmBtogB,EAAO87f,YAG/C,OAAOsM,GAQXrB,EAAQwB,mBAAqB,KAK7BxB,EAAQyB,WAAa,IAAI3jhB,OAClBkihB,EAnQiB,GEJxB,GAAyC,WACzC,SAAS0B,EAAwB1mhB,GAM7BjG,KAAK4shB,aAAe,IAAQn7gB,KAAKsuD,GAE7B//D,KAAK6shB,qBAAuB,IAAI,GAAO,EAAM,EAAM,EADlC,qBAAV5mhB,EACkD,GAGC,EAHK,EAAM,GAqG7E,OA/FA8C,OAAOsB,eAAesihB,EAAwBpjhB,UAAW,SAAU,CAM/D69B,IAAK,WACD,OAAOpnC,KAAK6shB,sBAEhBr3e,IAAK,SAAUvvC,GACXjG,KAAK6shB,qBAAuB5mhB,GAEhCqsG,YAAY,EACZC,cAAc,IAOlBo6a,EAAwBpjhB,UAAU7F,UAAY,SAAUsO,EAASC,GAC7DjS,KAAK6shB,qBAAqBnphB,UAAUsO,EAASC,IAMjD06gB,EAAwBpjhB,UAAUujhB,MAAQ,SAAU5xV,EAAQC,GACxDn7L,KAAK6shB,qBAAqB1gc,SAAS,GAAK+uG,EACxCl7L,KAAK6shB,qBAAqB1gc,SAAS,GAAKgvG,GAM5CwxV,EAAwBpjhB,UAAUi2D,OAAS,SAAUiB,GAEjDA,EAASA,EAAQhvD,KAAKsuD,GAAM,IAE5B//D,KAAK6shB,qBAAqB1gc,SAAS,GAAK16E,KAAKkvD,IAAIF,GACjDzgE,KAAK6shB,qBAAqB1gc,SAAS,GAAK16E,KAAKswC,IAAI0e,GACjDzgE,KAAK6shB,qBAAqB1gc,SAAS,IAAM16E,KAAKswC,IAAI0e,GAClDzgE,KAAK6shB,qBAAqB1gc,SAAS,GAAK16E,KAAKkvD,IAAIF,IAOrDksd,EAAwBpjhB,UAAUmQ,SAAW,WAGzC,IAFA,IAAI23f,EAAU,GACV55C,EAAa,IACRrtd,EAAI,EAAGqgB,EAAMzqB,KAAK6shB,qBAAqB1gc,SAASpiF,OAAQK,EAAIqgB,EAAKrgB,IAAK,CAChEpK,KAAKo9F,OAAOjR,SAAS/hF,GAChCingB,GAAWvE,EAAUQ,cAActtgB,KAAK6shB,qBAAqB1gc,SAAS/hF,IACtEingB,GAAW55C,EAEf,OAAO45C,GAOXsb,EAAwBpjhB,UAAUwjhB,SAAW,SAAU3vb,GACnDp9F,KAAK6shB,qBAAqBE,SAAS3vb,EAAOA,SAM9Cuvb,EAAwBK,iBAAmB,SAAUC,GACjD,OAAOjthB,KAAKkthB,aAAeD,GAM/BN,EAAwBpjhB,UAAU4jhB,iBAAmB,SAAUzsd,GAC3D,OAAO1gE,KAAK4shB,aAAelsd,GAM/Bisd,EAAwBpjhB,UAAUuzC,MAAQ,WACtC,OAAO98C,MAQX2shB,EAAwBO,aAAez7gB,KAAKsuD,GAAK,IAC1C4sd,EA9GiC,GAiHxC,GAAwB,WACxB,SAASS,EAAO/wb,EAAMkuY,EAAMC,EAAMC,EAAMC,EAAMC,GACtB,qBAATtuY,EACPr8F,KAAKqthB,eAAiB,GAED,kBAAThxb,GACZr8F,KAAKqthB,eAAiB,GACtBrthB,KAAKqthB,eAAe34gB,KAAK2nF,GACzBr8F,KAAKqthB,eAAe34gB,KAAK61d,GACzBvqe,KAAKqthB,eAAe34gB,KAAK81d,GACzBxqe,KAAKqthB,eAAe34gB,KAAK+1d,GACzBzqe,KAAKqthB,eAAe34gB,KAAKg2d,GACzB1qe,KAAKqthB,eAAe34gB,KAAKi2d,IAGzB3qe,KAAKqthB,eAAiBhxb,EA0F9B,OAvFAtzF,OAAOsB,eAAe+ihB,EAAO7jhB,UAAW,WAAY,CAMhD69B,IAAK,WACD,OAAOpnC,KAAKqthB,gBAEhB/6a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+ihB,EAAO7jhB,UAAW,UAAW,CAK/C69B,IAAK,WACD,OAAOpnC,KAAKqthB,eAAe,IAE/B/6a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe+ihB,EAAO7jhB,UAAW,UAAW,CAK/C69B,IAAK,WACD,OAAOpnC,KAAKqthB,eAAe,IAE/B/6a,YAAY,EACZC,cAAc,IAOlB66a,EAAO7jhB,UAAU7F,UAAY,SAAUsO,EAASC,GAC5CjS,KAAKqthB,eAAe,GAAKr7gB,EACzBhS,KAAKqthB,eAAe,GAAKp7gB,GAM7Bm7gB,EAAO7jhB,UAAUimG,UAAY,SAAUmwR,GACnC,IAAI/wX,EAAI+wX,EAAM/wX,EACVvM,EAAIs9X,EAAMt9X,EACV+ia,EAAKx2Z,EAAI5O,KAAKmsF,SAAS,GAAK9pF,EAAIrC,KAAKmsF,SAAS,GAAKnsF,KAAKgS,QACxDqzZ,EAAKz2Z,EAAI5O,KAAKmsF,SAAS,GAAK9pF,EAAIrC,KAAKmsF,SAAS,GAAKnsF,KAAKiS,QAC5D,OAAO,IAAIingB,EAAO9zG,EAAIC,IAM1B+nH,EAAO7jhB,UAAUwjhB,SAAW,SAAU3vb,GAClC,IAAIkwb,EAAa,GACjBA,EAAW54gB,KAAK1U,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,GAAKnsF,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,IAC3Fmhc,EAAW,GAAMtthB,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,GAAKnsF,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,GAC5Fmhc,EAAW,GAAMtthB,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,GAAKnsF,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,GAC5Fmhc,EAAW,GAAMtthB,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,GAAKnsF,KAAKmsF,SAAS,GAAKiR,EAAOjR,SAAS,GAC5Fmhc,EAAW,GAAMtthB,KAAKgS,QAAUorF,EAAOjR,SAAS,GAAKnsF,KAAKiS,QAAUmrF,EAAOjR,SAAS,GAAKiR,EAAOprF,QAChGs7gB,EAAW,GAAMtthB,KAAKgS,QAAUorF,EAAOjR,SAAS,GAAKnsF,KAAKiS,QAAUmrF,EAAOjR,SAAS,GAAKiR,EAAOnrF,QAChG,IAAK,IAAI7H,EAAI,EAAGA,EAAIkjhB,EAAWvjhB,OAAQK,IACnCpK,KAAKmsF,SAAS/hF,GAAKkjhB,EAAWljhB,IAQtCgjhB,EAAO7jhB,UAAUgkhB,QAAU,WACvBvthB,KAAKqthB,eAAiB,MAO1BD,EAAO7jhB,UAAUuzC,MAAQ,WACrB,IAAIj7C,EAAI,IAAIurhB,EAAOpthB,KAAKqthB,gBACxB,OAAOxrhB,GAEJurhB,EAzGgB,GCrHvBI,GAA+B,WAC/B,SAASA,IAKLxthB,KAAKythB,IAAM,MAKXzthB,KAAKwhC,KAAO,OAKZxhC,KAAK0thB,OAAS,SAKd1thB,KAAK2thB,OAAS,SAKd3thB,KAAK4thB,OAAS,SAElB,OAAOJ,EA5BuB,GCC9BK,GAAqC,WACrC,SAASA,IAKL7thB,KAAK8thB,MAAQ,GAKb9thB,KAAK+thB,QAAU,GAkHnB,OA5GAF,EAAoBtkhB,UAAUskC,KAAO,WACjC,OAAO7tC,KAAK8thB,MAAM/jhB,QAMtB8jhB,EAAoBtkhB,UAAU4K,IAAM,SAAUtQ,EAAKoC,GAC/C,QAAYN,IAAR9B,GAA6B,OAARA,QAA0B8B,IAAVM,GAAiC,OAAVA,EAC5D,MAAM,IAAI+nhB,eAAe,uCAE7B,IAAIl5gB,EAAQ9U,KAAK8thB,MAAM5ghB,QAAQrJ,GAC/B,GAAIiR,EAAQ,EAGR,OAFA9U,KAAK8thB,MAAMp5gB,KAAK7Q,GAChB7D,KAAK+thB,QAAQr5gB,KAAKzO,GACX,EAGP,MAAM,IAAIyhF,WAAW,sDAO7Bmmc,EAAoBtkhB,UAAU2T,KAAO,WACjC,OAAOld,KAAK8thB,OAMhBD,EAAoBtkhB,UAAUmwG,OAAS,WACnC,OAAO15G,KAAK+thB,SAMhBF,EAAoBtkhB,UAAU2iC,SAAW,SAAUroC,GAC/C,QAAY8B,IAAR9B,GAA6B,OAARA,EACrB,MAAM,IAAImqhB,eAAe,8BAE7B,IAAIl5gB,EAAQ9U,KAAK8thB,MAAM5ghB,QAAQrJ,GAC/B,GAAIiR,EAAQ,EACR,MAAM,IAAI4yE,WAAW,kDAGrB,OAAO1nF,KAAK+thB,QAAQj5gB,IAO5B+4gB,EAAoBtkhB,UAAUge,SAAW,SAAU1jB,EAAKoC,GACpD,QAAYN,IAAR9B,GAA6B,OAARA,EACrB,MAAM,IAAImqhB,eAAe,8BAE7B,IAAIl5gB,EAAQ9U,KAAK8thB,MAAM5ghB,QAAQrJ,GAC3BiR,EAAQ,GACR9U,KAAK8thB,MAAMp5gB,KAAK7Q,GAChB7D,KAAK+thB,QAAQr5gB,KAAKzO,IAGlBjG,KAAK+thB,QAAQj5gB,GAAS7O,GAO9B4nhB,EAAoBtkhB,UAAU0E,OAAS,SAAUpK,GAC7C,QAAY8B,IAAR9B,GAA6B,OAARA,EACrB,MAAM,IAAImqhB,eAAe,8BAE7B,IAAIl5gB,EAAQ9U,KAAK8thB,MAAM5ghB,QAAQrJ,GAC/B,GAAIiR,EAAQ,EACR,MAAM,IAAI4yE,WAAW,kDAKrB,OAFA1nF,KAAK8thB,MAAM/4gB,OAAOD,EAAO,GACzB9U,KAAK+thB,QAAQh5gB,OAAOD,EAAO,IACpB,GAOf+4gB,EAAoBtkhB,UAAU20f,YAAc,SAAUr6f,GAClD,QAAY8B,IAAR9B,GAA6B,OAARA,EACrB,MAAM,IAAImqhB,eAAe,8BAE7B,IAAIl5gB,EAAQ9U,KAAK8thB,MAAM5ghB,QAAQrJ,GAC/B,QAAIiR,EAAQ,IAShB+4gB,EAAoBtkhB,UAAUqH,MAAQ,WAClC5Q,KAAK8thB,MAAQ,GACb9thB,KAAK+thB,QAAU,IAEZF,EA7H6B,GCGpC,GAAiC,WA+BjC,SAASI,EAAgBtrB,EAAQC,EAAMrka,GAOnCv+F,KAAKuqgB,WAAa,IAAI,EAMtBvqgB,KAAK4qgB,qBAAuB,IAAIjF,EAChC3lgB,KAAKuqgB,WAAWn5d,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB1D,GAAI,IAAI4F,EAAUnK,IAC3E3igB,KAAKuqgB,WAAWn5d,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB3D,GAAI,IAAI6F,EAAUlK,IAC3E5igB,KAAKuqgB,WAAWn5d,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBvD,GAAI,IAAIjG,EAAQ7ia,EAAK7kF,aAmClF,OAjCA3Q,OAAOsB,eAAe4jhB,EAAgB1khB,UAAW,UAAW,CA2BxD69B,IAAK,WACD,OAAOpnC,KAAKuqgB,YAEhBj4Z,YAAY,EACZC,cAAc,IAEX07a,EAlFyB,GCJhCC,GAAiD,WAKjD,SAASA,IAKLluhB,KAAKmuhB,2BAA6B,GAuBtC,OApBAplhB,OAAOsB,eAAe6jhB,EAAgC3khB,UAAW,kBAAmB,CAKhF69B,IAAK,WACD,OAAOpnC,KAAKmuhB,4BAEhB77a,YAAY,EACZC,cAAc,IAQlB27a,EAAgC3khB,UAAU4K,IAAM,SAAUi6gB,GACtD,OAAOpuhB,KAAKquhB,gBAAgB35gB,KAAK05gB,IAE9BF,EAjCyC,GCDhDI,GAAoC,WAEpC,SAASA,KAsBT,OAfAA,EAAmB/khB,UAAUglhB,WAAa,SAAUC,EAAU5/gB,EAAGvM,GAC7D,IAAIoshB,EAAmB,IAAN7/gB,GAAiB,IAANvM,EACxBqshB,EAAS,KAETD,IAEAC,EAASF,EAASvuP,OAClBuuP,EAASG,mBAAmB//gB,EAAGvM,IAEnCrC,KAAK4uhB,aAAaJ,GACdC,GAEAD,EAASK,QAAQH,IAGlBJ,EAxB4B,GCHnC,GAAwC,WACxC,IAAIzlhB,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAyBxC,GAAmC,SAAU4C,GAG7C,SAAS6ihB,IACL,IAAItihB,EAAQP,EAAOQ,KAAKzM,OAASA,KAIjC,OAFAwM,EAAMuihB,eAAiB,IAAI3V,GAAW,EAAG,EAAG,EAAG,GAC/C5sgB,EAAMwihB,qBAAuB,IAAI7V,EAAM,EAAG,GACnC3sgB,EA4HX,OAnIA,GAAUsihB,EAAmB7ihB,GAS7BlD,OAAOsB,eAAeykhB,EAAkBvlhB,UAAW,SAAU,CAEzD69B,IAAK,WACD,OAAOpnC,KAAK+uhB,gBAEhBv5e,IAAK,SAAUvvC,GACXjG,KAAK+uhB,eAAiB9ohB,GAE1BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeykhB,EAAkBvlhB,UAAW,OAAQ,CACvD69B,IAAK,WACD,OAAO,IAAI+xe,EAAMn5gB,KAAKuugB,OAAOlngB,MAAOrH,KAAKuugB,OAAOtngB,SAEpDuuC,IAAK,SAAUvvC,GACXjG,KAAKuugB,OAAOlngB,MAAQpB,EAAMoB,MAC1BrH,KAAKuugB,OAAOtngB,OAAShB,EAAMgB,QAE/BqrG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeykhB,EAAkBvlhB,UAAW,WAAY,CAC3D69B,IAAK,WACD,OAAO,IAAI8xe,EAAOl5gB,KAAKuugB,OAAO3/f,EAAG5O,KAAKuugB,OAAOlsgB,IAEjDmzC,IAAK,SAAUvvC,GACXjG,KAAKuugB,OAAO3/f,EAAI3I,EAAM2I,EACtB5O,KAAKuugB,OAAOlsgB,EAAI4D,EAAM5D,GAE1BiwG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeykhB,EAAkBvlhB,UAAW,OAAQ,CACvD69B,IAAK,WACD,OAAOpnC,KAAKivhB,cAEhBz5e,IAAK,SAAUvvC,GACXjG,KAAKivhB,aAAehphB,GAExBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeykhB,EAAkBvlhB,UAAW,QAAS,CACxD69B,IAAK,WACD,OAAOpnC,KAAKkvhB,eAEhB15e,IAAK,SAAUvvC,GACXjG,KAAKkvhB,cAAgBjphB,GAEzBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeykhB,EAAkBvlhB,UAAW,MAAO,CACtD69B,IAAK,WACD,OAAOpnC,KAAKmvhB,aAEhB35e,IAAK,SAAUvvC,GACXjG,KAAKmvhB,YAAclphB,GAEvBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAeykhB,EAAkBvlhB,UAAW,eAAgB,CAC/D69B,IAAK,WACD,OAAOpnC,KAAKovhB,sBAEhB55e,IAAK,SAAUvvC,GACXjG,KAAKovhB,qBAAuBnphB,GAEhCqsG,YAAY,EACZC,cAAc,IAElBu8a,EAAkBvlhB,UAAU8lhB,kBAAoB,SAAUb,EAAUh1e,EAAU81e,EAAUC,GACpF,GAA2B,IAAvBvvhB,KAAKuugB,OAAOtngB,QAAsC,IAAtBjH,KAAKuugB,OAAOlngB,MAAa,CACrD,IAAIm6B,EAAOxhC,KAAKksC,SAASsif,GACzBxuhB,KAAKgvhB,qBAAuBhvhB,KAAKwvhB,UAAU9D,cAAclqf,EAAMxhC,KAAK6tC,KAAM7tC,KAAKyvhB,gBAGvFX,EAAkBvlhB,UAAUmmhB,KAAO,SAAUrzb,EAAMkuY,EAAMC,GACrD,GAAoB,qBAATD,EAAsB,CAC7B,IAAIolD,EAAa,IAAIzW,EAAO,EAAG,GAC/Bl5gB,KAAK0vhB,KAAKrzb,EAAMszb,QAEf,GAAIplD,aAAgB2uC,EACrBl5gB,KAAK0vhB,KAAKrzb,EAAMkuY,EAAK37d,EAAG27d,EAAKloe,OAE5B,CACDrC,KAAKuuhB,WAAWlyb,EAAMkuY,EAAMC,GAC5B,IAAIxpc,EAAO,IAAI,GAAsBhhC,KAAM,IAAIk5gB,EAAO3uC,EAAMC,IAC5DnuY,EAAKgyb,gBAAgBl6gB,IAAI6sB,KAGjC8tf,EAAkBvlhB,UAAU81D,QAAU,WAClC,OAA2B,IAAvBr/D,KAAKuugB,OAAOtngB,QAAsC,IAAtBjH,KAAKuugB,OAAOlngB,MACjCrH,KAAKgvhB,qBAGLhvhB,KAAK6tC,MAGpBihf,EAAkBvlhB,UAAUqlhB,aAAe,SAAUJ,KAIrDM,EAAkBvlhB,UAAUqmhB,SAAW,WACnC,MAAsC,qBAAvB5vhB,KAAKkvhB,eAAuD,MAAtBlvhB,KAAKkvhB,cAAyB,IAAI,GAAc,IAAI,GAAS,EAAG,EAAG,IAAMlvhB,KAAKkvhB,eAEvIJ,EAAkBvlhB,UAAUimhB,QAAU,WAClC,MAAqC,qBAAtBxvhB,KAAKivhB,cAAqD,MAArBjvhB,KAAKivhB,aAAwB,GAAYY,YAAc7vhB,KAAKivhB,cAGpHH,EAAkBvlhB,UAAUumhB,oBAAsB,SAAUtB,GACxD,GAA6B,qBAAlBA,EAASjkf,MAA0C,OAAlBikf,EAASjkf,KAAe,CAChE,IAAIA,EAAOikf,EAASjkf,KACpB,OAAOA,EAGHA,EAAOikf,EAAS3ub,YACpB,OAAOt1D,GAGRukf,EApI2B,CAqIpCR,ICpJE,GAAuC,WACvC,SAASyB,EAAsBhlf,EAAOyO,EAAU0hJ,EAAQC,GAMpDn7L,KAAKgwhB,wBAA0B,IAAI9W,EAKnCl5gB,KAAKiwhB,gBAAkB,KAKvBjwhB,KAAKk7L,OAAS,EAKdl7L,KAAKm7L,OAAS,EACU,qBAAb3hJ,GAA4BzO,aAAiBglf,GACpD/vhB,KAAKiwhB,gBAAkBllf,EAAMA,MAC7B/qC,KAAKgwhB,wBAA0Bjlf,EAAMyO,SACrCx5C,KAAKk7L,OAASnwJ,EAAMukf,SACpBtvhB,KAAKm7L,OAASpwJ,EAAMwkf,UAEG,qBAAXr0V,GAA0B1hJ,aAAoB0/d,GAAUnue,aAAiB,IACrF/qC,KAAKiwhB,gBAAkBllf,EACvB/qC,KAAKgwhB,wBAA0Bx2e,IAG/Bx5C,KAAKiwhB,gBAAkBllf,EACvB/qC,KAAKgwhB,wBAA0Bx2e,EAC/Bx5C,KAAKk7L,OAASA,EACdl7L,KAAKm7L,OAASA,GA6DtB,OA1DApyL,OAAOsB,eAAe0lhB,EAAsBxmhB,UAAW,WAAY,CAO/D69B,IAAK,WACD,OAAOpnC,KAAKgwhB,yBAEhBx6e,IAAK,SAAUvvC,GACXjG,KAAKgwhB,wBAA0B/phB,GAEnCqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe0lhB,EAAsBxmhB,UAAW,QAAS,CAK5D69B,IAAK,WACD,OAAOpnC,KAAKiwhB,iBAEhBz6e,IAAK,SAAUvvC,GACXjG,KAAKiwhB,gBAAkBhqhB,GAE3BqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe0lhB,EAAsBxmhB,UAAW,WAAY,CAK/D69B,IAAK,WACD,OAAOpnC,KAAKk7L,QAEhB1lJ,IAAK,SAAUvvC,GACXjG,KAAKk7L,OAASj1L,GAElBqsG,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe0lhB,EAAsBxmhB,UAAW,WAAY,CAK/D69B,IAAK,WACD,OAAOpnC,KAAKm7L,QAEhB3lJ,IAAK,SAAUvvC,GACXjG,KAAKm7L,OAASl1L,GAElBqsG,YAAY,EACZC,cAAc,IAEXw9a,EAlG+B,GCLtCG,GAA2B,WAM3B,SAASA,EAAUnmhB,GAMf/J,KAAKmwhB,UAAY,EACjBnwhB,KAAKuoG,OAAS,IAAIqH,WAAW7lG,GAC7B/J,KAAKowhB,SAAW,IAAI5/C,SAASxwe,KAAKuoG,OAAOA,QAqH7C,OAnHAx/F,OAAOsB,eAAe6lhB,EAAU3mhB,UAAW,WAAY,CAMnD69B,IAAK,WACD,OAAOpnC,KAAKmwhB,WAEhB36e,IAAK,SAAUvvC,GACXjG,KAAKmwhB,UAAYlqhB,GAErBqsG,YAAY,EACZC,cAAc,IAQlB29a,EAAU3mhB,UAAU6zT,KAAO,SAAU70N,EAAQ7gG,EAAQgiC,GACjD,IAAK,IAAI50B,EAAQpN,EAAQoN,EAAQ40B,EAAO50B,IAAS,CAC7C,IAAI9P,EAAWhF,KAAKgF,SACpBujG,EAAOA,OAAOzzF,GAAS9U,KAAKygU,SAASz7T,GACrChF,KAAKgF,aAMbkrhB,EAAU3mhB,UAAU8mhB,UAAY,SAAUv7gB,GACtC,OAAO9U,KAAKuoG,OAAOzzF,IAKvBo7gB,EAAU3mhB,UAAU+mhB,sBAAwB,SAAUzxM,GAClD,IAAIv3S,EAAMtnC,KAAK84T,cAAc+lB,GAC7B7+U,KAAKuoG,OAASjhE,GAKlB4of,EAAU3mhB,UAAUuvT,cAAgB,SAAU5wT,GAC1C,IACI6wT,EACAC,EACAC,EACAs3N,EACAC,EACAC,EACAC,EAPAp3N,EAAS,oEAQTlvT,EAAI,EACJmvT,EAAc,EAElBrxT,EAAQA,EAAMua,QAAQ,sBAAuB,IAC7C,IAAIimM,EAA6B,EAAfxgN,EAAM6B,OAAa,EACjC7B,EAAM2f,OAAO3f,EAAM6B,OAAS,KAAOuvT,EAAOzxS,OAAO,KACjD6gM,IAEJ,IAAIvlN,EAAS,IAAIysG,WAAyB,EAAd84G,GAC5B,MAAOt+M,EAAIlC,EAAM6B,OACbwmhB,EAAOj3N,EAAOpsT,QAAQhF,EAAM2f,OAAOzd,MACnComhB,EAAOl3N,EAAOpsT,QAAQhF,EAAM2f,OAAOzd,MACnCqmhB,EAAOn3N,EAAOpsT,QAAQhF,EAAM2f,OAAOzd,MACnCsmhB,EAAOp3N,EAAOpsT,QAAQhF,EAAM2f,OAAOzd,MACnC2uT,EAAQw3N,GAAQ,EAAMC,GAAQ,EAC9Bx3N,GAAgB,GAAPw3N,IAAc,EAAMC,GAAQ,EACrCx3N,GAAgB,EAAPw3N,IAAa,EAAKC,EAC3BvthB,EAAOo2T,KAAiBR,EACxB51T,EAAOo2T,KAAiBP,EACxB71T,EAAOo2T,KAAiBN,EAE5B,OAAO91T,GAKX+shB,EAAU3mhB,UAAUk3T,SAAW,SAAU/4T,GACrC,OAAQ1H,KAAKuoG,OAAO7gG,IAExBqB,OAAOsB,eAAe6lhB,EAAU3mhB,UAAW,iBAAkB,CAIzD69B,IAAK,WACD,OAAOpnC,KAAKuoG,QAEhB+J,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe6lhB,EAAU3mhB,UAAW,QAAS,CAIhD69B,IAAK,WACD,OAAOpnC,KAAKuoG,OAAOi4N,YAEvBluN,YAAY,EACZC,cAAc,IAOlB29a,EAAU3mhB,UAAUonhB,iBAAmB,SAAU1+a,GAC7C,IAAI99E,EAAO89E,EAAOwuN,SAASzgU,KAAKgF,UAKhC,OAJAhF,KAAKgF,WACLmvB,IAAS,EACTA,GAAQ89E,EAAOwuN,SAASzgU,KAAKgF,UAC7BhF,KAAKgF,WACEmvB,GAEJ+7f,EAnImB,GCF1BU,GAA8B,WAC9B,SAASA,KAeT,OAbA7nhB,OAAOsB,eAAeumhB,EAAarnhB,UAAW,QAAS,CAMnD69B,IAAK,WACD,IAAImwc,EAASv3e,KAAK0H,SAAW1H,KAAK+J,QAAU/J,KAAK+J,SAAW/J,KAAK26G,UAA8B,IAAlB36G,KAAK26G,SAClF,OAAO48X,GAEXjlY,YAAY,EACZC,cAAc,IAEXq+a,EAhBsB,GCH7BC,GAA8B,WAC9B,SAASA,KAET,OAAOA,EAHsB,GCG7BC,GAA+B,WAC/B,SAASA,KAET,OAAOA,EAHuB,GCA9BC,GAA8B,WAC9B,SAASA,KAET,OAAOA,EAHsB,GCH7BC,GAA4B,WAC5B,SAASA,KAuBT,OArBAjohB,OAAOsB,eAAe2mhB,EAAWznhB,UAAW,WAAY,CAKpD69B,IAAK,WACD,OAAgC,KAAP,EAAhBpnC,KAAKixhB,WAElB3+a,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe2mhB,EAAWznhB,UAAW,SAAU,CAIlD69B,IAAK,WACD,OAAgC,KAAP,EAAhBpnC,KAAKixhB,WAElB3+a,YAAY,EACZC,cAAc,IAEXy+a,EAxBoB,GCG3BE,GAA0C,WAC1C,SAASA,KAET,OAAOA,EAHkC,GCCzCC,GAA6B,WAC7B,SAASA,KAET,OAAOA,EAHqB,GCD5BC,GAA8B,WAC9B,SAASA,KAET,OAAOA,EAHsB,GCA7BC,GAAkC,WAClC,SAASA,KAET,OAAOA,EAH0B,GCAjCC,GAAiC,WACjC,SAASA,KAET,OAAOA,EAHyB,GCAhCC,GAA8B,WAC9B,SAASA,KAET,OAAOA,EAHsB,GCA7BC,GAA8B,WAC9B,SAASA,KAsBT,OApBAzohB,OAAOsB,eAAemnhB,EAAajohB,UAAW,QAAS,CAKnD69B,IAAK,WACD,IAAImwc,EAASv3e,KAAK8U,QAAU9U,KAAKqH,OAASrH,KAAKqH,QAAUrH,KAAKmnM,UAA8B,IAAlBnnM,KAAKmnM,SAC/E,OAAOowS,GAEXjlY,YAAY,EACZC,cAAc,IAMlBi/a,EAAajohB,UAAUuxO,UAAY,SAAUluM,GACzC,IAAI6kf,EAAQ7kf,EACZ,OAAO5sC,KAAK8U,MAAQ28gB,EAAM38gB,OAEvB08gB,EAvBsB,GCA7BE,GAA8B,WAC9B,SAASA,KAET,OAAOA,EAHsB,GCA7BC,GAAsC,WACtC,SAASA,KAET,OAAOA,EAH8B,GCArCC,GAA0C,WAC1C,SAASA,KAET,OAAOA,EAHkC,GCAzCC,GAAwC,WACxC,SAASA,KAET,OAAOA,EAHgC,GCAvCC,GAAgC,WAChC,SAASA,KAET,OAAOA,EAHwB,GCA/BC,GAAiC,WAKjC,SAASA,EAAgBC,GAKrBhyhB,KAAKiyhB,UAAY,EAIjBjyhB,KAAKkyhB,UAAY,EAIjBlyhB,KAAKmyhB,UAAY,EACjBnyhB,KAAKoyhB,aAAeJ,EACpBhyhB,KAAKuoG,OAAS,GA4FlB,OA1FAx/F,OAAOsB,eAAe0nhB,EAAgBxohB,UAAW,OAAQ,CAKrD69B,IAAK,WACD,GAAIpnC,KAAKuoG,OAAOx+F,OAAS/J,KAAKoyhB,aAE1B,IADA,IAAIxogB,EAAW5pB,KAAKoyhB,aAAepyhB,KAAKuoG,OAAOx+F,OACtCK,EAAI,EAAGA,EAAIwf,EAAUxf,IAC1BpK,KAAKuoG,OAAO7zF,KAAK,GAGzB,OAAO1U,KAAKuoG,QAEhB+J,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe0nhB,EAAgBxohB,UAAW,WAAY,CAIzD69B,IAAK,WAID,YAH8BzhC,IAA1B3F,KAAKqyhB,kBAA4D,OAA1BryhB,KAAKqyhB,mBAC5CryhB,KAAKqyhB,iBAAmB,GAErBryhB,KAAKqyhB,kBAEhB//a,YAAY,EACZC,cAAc,IAKlBw/a,EAAgBxohB,UAAU+ohB,WAAa,SAAUrshB,GAC7C,IAAIm/T,EAAQ,EAAW,MAARn/T,IAAuB,EAAY,IAARA,GAC1CjG,KAAKwzG,MAAM4xN,IAKf2sN,EAAgBxohB,UAAUgphB,SAAW,SAAUtshB,GAC3C,IAAIushB,GAAc,WAARvshB,IAAuB,GACjCushB,EAAKA,EAAK,EAAI,IAAMA,EAAKA,EACzB,IAAIC,GAAc,SAARxshB,IAAuB,GACjCwshB,EAAKA,EAAK,EAAI,IAAMA,EAAKA,EACzB,IAAIC,GAAc,MAARzshB,IAAuB,EACjCyshB,EAAKA,EAAK,EAAI,IAAMA,EAAKA,EACzB,IAAIC,EAAa,IAAR1shB,EACT0shB,EAAKA,EAAK,EAAI,IAAMA,EAAKA,EACzB,IAAIvtN,EAAQ,EAAU,WAARn/T,IAAuB,IAAa,SAARA,IAAuB,IAAa,MAARA,IAAuB,EAAW,IAARA,GAChGjG,KAAKwzG,MAAM4xN,IAKf2sN,EAAgBxohB,UAAUqphB,UAAY,SAAU3shB,GAC5C,IAAI4shB,EAAO,EAAU,WAAR5shB,IAAuB,IAAa,SAARA,IAAuB,IAAa,MAARA,IAAuB,EAAW,IAARA,GAC/FjG,KAAKwzG,MAAMq/a,IAKfd,EAAgBxohB,UAAUuphB,YAAc,SAAU7shB,GAC9C,GAAa,MAATA,EACA,MAAM,IAAIktC,MAAM,mCAGpB,IADA,IAAIiyR,EAAQ,GACHh7T,EAAI,EAAGA,EAAInE,EAAM8D,OAAQK,IAC9Bg7T,EAAM1wT,KAAKzO,EAAMo4B,WAAWj0B,IAEhCpK,KAAKwzG,MAAM4xN,IAKf2sN,EAAgBxohB,UAAU6lgB,WAAa,SAAUnpgB,GAC7CjG,KAAKwzG,MAAMvtG,IAGf8rhB,EAAgBxohB,UAAUiqG,MAAQ,SAAUq/a,GACxC,GAAa,OAATA,EACA,MAAM,IAAI1/e,MAAM,kCAGpB,IADA,IAAInuC,EAAWhF,KAAKgF,SACXoF,EAAI,EAAGA,EAAIyohB,EAAK9ohB,OAAQK,IAC7BpK,KAAKuoG,OAAOvjG,GAAY6thB,EAAKzohB,GAC7BpF,IAEJhF,KAAKqyhB,kBAAoBQ,EAAK9ohB,QAE3BgohB,EAhHyB,GCuBhC,GAA2B,WAE3B,SAASgB,EAAUC,GACfhzhB,KAAKiyhB,UAAY,EACjBjyhB,KAAKizhB,WAAY,EACjBjzhB,KAAKkzhB,UAAW,EAChBlzhB,KAAKmzhB,YAAc,GACnBnzhB,KAAKozhB,UAAW,EAChBpzhB,KAAKqzhB,aAAe,EACpBrzhB,KAAKszhB,WAAa,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACnFtzhB,KAAKuzhB,eAAiB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnFvzhB,KAAKgzhB,SAAWA,EAChBhzhB,KAAK8M,aA4rCT,OA1rCA/D,OAAOsB,eAAe0ohB,EAAUxphB,UAAW,YAAa,CAKpD69B,IAAK,WAID,OAHiC,OAA7BpnC,KAAKwzhB,0BAA6D7thB,IAA7B3F,KAAKwzhB,sBAC1CxzhB,KAAKwzhB,oBAAsB,IAAI,GAE5BxzhB,KAAKwzhB,qBAEhBlhb,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe0ohB,EAAUxphB,UAAW,YAAa,CAIpD69B,IAAK,WAID,OAHiC,OAA7BpnC,KAAKyzhB,0BAA6D9thB,IAA7B3F,KAAKyzhB,sBAC1CzzhB,KAAKyzhB,oBAAsB,IAAI,GAE5BzzhB,KAAKyzhB,qBAEhBnhb,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe0ohB,EAAUxphB,UAAW,kBAAmB,CAI1D69B,IAAK,WAID,OAHqC,OAAjCpnC,KAAK0zhB,8BAAqE/thB,IAAjC3F,KAAK0zhB,0BAC9C1zhB,KAAK0zhB,wBAA0B,IAAI,GAEhC1zhB,KAAK0zhB,yBAEhBphb,YAAY,EACZC,cAAc,IAElBxpG,OAAOsB,eAAe0ohB,EAAUxphB,UAAW,kBAAmB,CAI1D69B,IAAK,WAID,OAHqC,OAAjCpnC,KAAK2zhB,8BAAqEhuhB,IAAjC3F,KAAK2zhB,0BAC9C3zhB,KAAK2zhB,wBAA0B,IAAI,GAEhC3zhB,KAAK2zhB,yBAEhBrhb,YAAY,EACZC,cAAc,IAGlBwgb,EAAUxphB,UAAUuD,WAAa,gBACRnH,IAAjB3F,KAAKmrhB,UACLnrhB,KAAKmrhB,QAAU,IAAI6F,IAEvBhxhB,KAAK4zhB,qBACL,IAAIC,EAAY7zhB,KAAK8zhB,gBACjBC,EAAY/zhB,KAAKg0hB,gBACrBh0hB,KAAKi0hB,mBAAmBJ,GACxB7zhB,KAAKmrhB,QAAQ8F,SAAW8C,EAAU9C,UAEtC8B,EAAUxphB,UAAUqqhB,mBAAqB,WACrC5zhB,KAAK0H,OAAS,EACA1H,KAAKk0hB,iBAAnB,IAEIC,EAAYn0hB,KAAKq9T,UAAUr9T,KAAK0H,QAClB1H,KAAKq9T,UAAUr9T,KAAK0H,QAClB1H,KAAKq9T,UAAUr9T,KAAK0H,QACvB1H,KAAKq9T,UAAUr9T,KAAK0H,aACT/B,IAAxB3F,KAAKo0hB,iBACLp0hB,KAAKo0hB,eAAiB,IAAI,GAE9B,IAAK,IAAIhqhB,EAAI,EAAGA,EAAI+phB,IAAa/phB,EAAG,CAChC,IAAI+nC,EAAQ,IAAIy+e,GACZyD,EAAWr0hB,KAAKs0hB,WAAWt0hB,KAAKiyhB,WACpC9/e,EAAMwoE,SAAW36G,KAAKogU,UAAUpgU,KAAK0H,QACrCyqC,EAAMzqC,OAAS1H,KAAKogU,UAAUpgU,KAAK0H,QACnCyqC,EAAMpoC,OAAS/J,KAAKogU,UAAUpgU,KAAK0H,QACnC1H,KAAKo0hB,eAAe7sgB,SAAS8sgB,EAAUlif,GAE3CnyC,KAAKu0hB,eAAiBv0hB,KAAK0H,OACtB1H,KAAKizhB,WACNjzhB,KAAKw0hB,cAGbzB,EAAUxphB,UAAUirhB,WAAa,WAI7B,IAHA,IAAIC,EAAYj5f,OAAOC,UAEnBi5f,EAAY10hB,KAAKo0hB,eAAel3gB,OAC3B9S,EAAI,EAAGA,EAAIsqhB,EAAU3qhB,OAAQK,IAAK,CACvC,IAAInE,EAAQjG,KAAKo0hB,eAAelof,SAASwof,EAAUtqhB,IAC/C1C,EAASzB,EAAMyB,OACnB,GAAI+shB,EAAY/shB,IACZ+shB,EAAY/shB,EACR+shB,GAAaz0hB,KAAKu0hB,gBAClB,MAIZ,IAAIxggB,EAAQ0ggB,EAAYz0hB,KAAKu0hB,eAC7B,GAAc,IAAVxggB,EAAa,CACb,IAAIoe,EAAQ,IAAI,EAChB,IAAS/nC,EAAI,EAAGA,EAAIsqhB,EAAU3qhB,OAAQK,IAAK,CACnCnE,EAAQjG,KAAKo0hB,eAAelof,SAASwof,EAAUtqhB,IACnDnE,EAAMyB,QAAUqsB,EAChBoe,EAAM5qB,SAASmtgB,EAAUtqhB,GAAInE,GAEjCjG,KAAKo0hB,eAAiBjif,IAG9B4gf,EAAUxphB,UAAU2qhB,eAAiB,WACjC,IAAIjzf,EAAUjhC,KAAKogU,UAAUpgU,KAAK0H,QAElC,GADA1H,KAAKkzhB,SAAwB,aAAZjyf,EACD,QAAZA,GAAmC,aAAZA,GAAsC,aAAZA,EAAwB,CACzEjhC,KAAKizhB,WAAY,EACjBjzhB,KAAK0H,OAAS,EACd,IAAIithB,EAAU30hB,KAAKs0hB,WAAW,GAC9B,GAAgB,SAAZK,EACA,MAAM,IAAIxhf,MAAM,8BAGpBnzC,KAAK0H,QAAU,EACf,IAAIkthB,EAA0B50hB,KAAKogU,UAAUpgU,KAAK0H,QAClD,GAAIkthB,EAA0B,EAC1B,MAAM,IAAIzhf,MAAM,8BAEpBnzC,KAAK0H,OAAS1H,KAAKogU,UAAUpgU,KAAK0H,QAClCu5B,EAAUjhC,KAAKogU,UAAUpgU,KAAK0H,QAElC,OAAOu5B,GAEX8xf,EAAUxphB,UAAUuqhB,cAAgB,WAChC,IAAIe,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAIyqC,EAAQ,IAAI0+e,GAChB1+e,EAAM2if,eAAiB90hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC5CyqC,EAAM6if,aAAeh1hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC1CyqC,EAAMzqC,OAAS1H,KAAK+0hB,WAAW/0hB,KAAK0H,QACpCyqC,EAAM8if,YAAc,GAGpB,IAFA,IAAIC,EAAa,GACblwhB,EAAWhF,KAAK0H,OACX0C,EAAI,EAAGA,EAAI+nC,EAAM6if,aAAc5qhB,IAAK,CACzCpK,KAAK0H,OAAS1C,EACd,IAAI28E,EAAS,IAAImvc,GACjBnvc,EAAOwzc,WAAan1hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCi6E,EAAOyzc,WAAap1hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCi6E,EAAO0zc,WAAar1hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCi6E,EAAO2zc,OAASt1hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACrCi6E,EAAO53E,OAAS/J,KAAK+0hB,WAAW/0hB,KAAK0H,QACrCi6E,EAAOj6E,OAAS1H,KAAK+0hB,WAAW/0hB,KAAK0H,QACrC1H,KAAK0H,OAASmthB,EAAUnthB,OAASyqC,EAAMzqC,OAASi6E,EAAOj6E,OACvD,IAAI6thB,EAAiC,IAAtB5zc,EAAOwzc,YAA0C,IAAtBxzc,EAAOwzc,WACjDxzc,EAAOh6E,KAAO3H,KAAKs0hB,WAAW3yc,EAAO53E,OAAQwrhB,GAC7Cpjf,EAAM8if,YAAY7qhB,GAAKu3E,EACvB38E,GAAYkwhB,EAEhB,OAAO/if,GAEX4gf,EAAUxphB,UAAUyqhB,cAAgB,WAChC,IAAIa,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAIyqC,EAAQ,IAAI4+e,GAkBhB,OAjBA5+e,EAAMlR,QAAUjhC,KAAKw1hB,UAAUx1hB,KAAK0H,QACpCyqC,EAAMsjf,aAAez1hB,KAAKw1hB,UAAUx1hB,KAAK0H,QACzCyqC,EAAMujf,mBAAqB11hB,KAAK21hB,WAAW31hB,KAAK0H,QAChDyqC,EAAMyjf,YAAc51hB,KAAK21hB,WAAW31hB,KAAK0H,QACzCyqC,EAAMilW,MAAQp3Y,KAAK+0hB,WAAW/0hB,KAAK0H,QACnCyqC,EAAM0jf,WAAa71hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACxCyqC,EAAMpN,QAAU/kC,KAAK81hB,UAAU91hB,KAAK0H,QACpCyqC,EAAMima,SAAWp4c,KAAK81hB,UAAU91hB,KAAK0H,QACrCyqC,EAAM4jf,KAAO/1hB,KAAKq9T,UAAUr9T,KAAK0H,QACjCyqC,EAAM6jf,KAAOh2hB,KAAKq9T,UAAUr9T,KAAK0H,QACjCyqC,EAAM8jf,KAAOj2hB,KAAKq9T,UAAUr9T,KAAK0H,QACjCyqC,EAAM+jf,KAAOl2hB,KAAKq9T,UAAUr9T,KAAK0H,QACjCyqC,EAAM8+e,SAAWjxhB,KAAK+0hB,WAAW/0hB,KAAK0H,QACtCyqC,EAAMgkf,mBAAqBn2hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAChDyqC,EAAMikf,kBAAoBp2hB,KAAKq9T,UAAUr9T,KAAK0H,QAC9CyqC,EAAMkkf,mBAAqBr2hB,KAAKq9T,UAAUr9T,KAAK0H,QAC/CyqC,EAAMmkf,gBAAkBt2hB,KAAKq9T,UAAUr9T,KAAK0H,QACrCyqC,GAEX4gf,EAAUxphB,UAAUgthB,0BAA4B,WAC5C,IAAI1B,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAIyqC,EAAQ,IAAI++e,GAehB,OAdA/+e,EAAMlR,QAAUjhC,KAAKw1hB,UAAUx1hB,KAAK0H,QACpCyqC,EAAMqkf,SAAWx2hB,KAAKq9T,UAAUr9T,KAAK0H,QACrCyqC,EAAMskf,UAAYz2hB,KAAKq9T,UAAUr9T,KAAK0H,QACtCyqC,EAAMukf,QAAU12hB,KAAKq9T,UAAUr9T,KAAK0H,QACpCyqC,EAAMwkf,gBAAkB32hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC7CyqC,EAAMykf,mBAAqB52hB,KAAKq9T,UAAUr9T,KAAK0H,QAC/CyqC,EAAM0kf,oBAAsB72hB,KAAKq9T,UAAUr9T,KAAK0H,QAChDyqC,EAAM2kf,WAAa92hB,KAAKq9T,UAAUr9T,KAAK0H,QACvCyqC,EAAM4kf,eAAiB/2hB,KAAKq9T,UAAUr9T,KAAK0H,QAC3CyqC,EAAM6kf,cAAgBh3hB,KAAKq9T,UAAUr9T,KAAK0H,QAE1C1H,KAAK0H,QAAU,GACfyqC,EAAM8kf,iBAAmBj3hB,KAAKq9T,UAAUr9T,KAAK0H,QAC7CyqC,EAAM+kf,iBAAmBl3hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACvCyqC,GAEX4gf,EAAUxphB,UAAU4thB,aAAe,WAC/B,IAAItC,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAIyqC,EAAQ,IAAIg/e,GA+ChB,OA9CAh/e,EAAMlR,QAAUjhC,KAAK+0hB,WAAW/0hB,KAAK0H,QACrCyqC,EAAMilf,cAAgBp3hB,KAAKq9T,UAAUr9T,KAAK0H,QAC1CyqC,EAAMklf,cAAgBr3hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC3CyqC,EAAMmlf,aAAet3hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC1CyqC,EAAMolf,OAASv3hB,KAAKq9T,UAAUr9T,KAAK0H,QACnCyqC,EAAMqlf,gBAAkBx3hB,KAAKq9T,UAAUr9T,KAAK0H,QAC5CyqC,EAAMslf,gBAAkBz3hB,KAAKq9T,UAAUr9T,KAAK0H,QAC5CyqC,EAAMulf,kBAAoB13hB,KAAKq9T,UAAUr9T,KAAK0H,QAC9CyqC,EAAMwlf,kBAAoB33hB,KAAKq9T,UAAUr9T,KAAK0H,QAC9CyqC,EAAMylf,kBAAoB53hB,KAAKq9T,UAAUr9T,KAAK0H,QAC9CyqC,EAAM0lf,kBAAoB73hB,KAAKq9T,UAAUr9T,KAAK0H,QAC9CyqC,EAAM2lf,oBAAsB93hB,KAAKq9T,UAAUr9T,KAAK0H,QAChDyqC,EAAM4lf,oBAAsB/3hB,KAAKq9T,UAAUr9T,KAAK0H,QAChDyqC,EAAM6lf,eAAiBh4hB,KAAKq9T,UAAUr9T,KAAK0H,QAC3CyqC,EAAM8lf,mBAAqBj4hB,KAAKq9T,UAAUr9T,KAAK0H,QAC/CyqC,EAAM+lf,aAAel4hB,KAAKq9T,UAAUr9T,KAAK0H,QACzCyqC,EAAMgmf,OAASn4hB,KAAKo4hB,UAAU,IAC9Bjmf,EAAMkmf,gBAAkBr4hB,KAAK21hB,WAAW31hB,KAAK0H,QAC7CyqC,EAAMmmf,gBAAkBt4hB,KAAK21hB,WAAW31hB,KAAK0H,QAC7CyqC,EAAMomf,gBAAkBv4hB,KAAK21hB,WAAW31hB,KAAK0H,QAC7CyqC,EAAMqmf,gBAAkBx4hB,KAAK21hB,WAAW31hB,KAAK0H,QAC7CyqC,EAAMsmf,iBAAmBz4hB,KAAKo4hB,UAAU,GACxCjmf,EAAMumf,YAAc14hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCyqC,EAAMwmf,iBAAmB34hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC9CyqC,EAAMymf,gBAAkB54hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC7CyqC,EAAM0mf,cAAgB74hB,KAAKq9T,UAAUr9T,KAAK0H,QAC1CyqC,EAAM2mf,eAAiB94hB,KAAKq9T,UAAUr9T,KAAK0H,QAC3CyqC,EAAM4mf,aAAe/4hB,KAAKq9T,UAAUr9T,KAAK0H,QACzCyqC,EAAM6mf,YAAch5hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCyqC,EAAM8mf,aAAej5hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC1CyqC,EAAM+mf,iBAAmBl5hB,KAAK21hB,WAAW31hB,KAAK0H,QAC9CyqC,EAAMgnf,iBAAmBn5hB,KAAK21hB,WAAW31hB,KAAK0H,QAC1CyqC,EAAMlR,QAAU,GAChBkR,EAAMinf,SAAWp5hB,KAAKq9T,UAAUr9T,KAAK0H,QACrCyqC,EAAMknf,WAAar5hB,KAAKq9T,UAAUr9T,KAAK0H,QACvCyqC,EAAMmnf,cAAgBt5hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC3CyqC,EAAMonf,YAAcv5hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCyqC,EAAMqnf,aAAex5hB,KAAK+0hB,WAAW/0hB,KAAK0H,UAG1CyqC,EAAMinf,SAAW,EACjBjnf,EAAMknf,WAAa,EACnBlnf,EAAMmnf,cAAgB,EACtBnnf,EAAMonf,YAAc,EACpBpnf,EAAMqnf,aAAe,GAElBrnf,GAEX4gf,EAAUxphB,UAAUkwhB,cAAgB,WAChC,IAAI5E,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAIyqC,EAAQ,IAAIi/e,GAUhB,OATAj/e,EAAM2hN,WAAa9zP,KAAKw1hB,UAAUx1hB,KAAK0H,QACvCyqC,EAAM61d,YAAchogB,KAAKw1hB,UAAUx1hB,KAAK0H,QACxCyqC,EAAMunf,kBAAoB15hB,KAAKq9T,UAAUr9T,KAAK0H,QAC9CyqC,EAAMwnf,mBAAqB35hB,KAAKq9T,UAAUr9T,KAAK0H,QAC/CyqC,EAAMynf,aAAe55hB,KAAK21hB,WAAW31hB,KAAK0H,QAC1CyqC,EAAM0nf,UAAY75hB,KAAK21hB,WAAW31hB,KAAK0H,QACvCyqC,EAAM2nf,UAAY95hB,KAAK21hB,WAAW31hB,KAAK0H,QACvCyqC,EAAM4nf,SAAW/5hB,KAAK21hB,WAAW31hB,KAAK0H,QACtCyqC,EAAM6nf,SAAWh6hB,KAAK21hB,WAAW31hB,KAAK0H,QAC/ByqC,GAKX4gf,EAAUxphB,UAAU0whB,eAAiB,SAAUC,EAAYrE,GACvD,IAAIhB,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OAExB,IADA,IAAIL,EAAQ,GACH+C,EAAI,EAAGA,EAAI8vhB,EAAY9vhB,IAAK,CACjC,IAAIqnhB,EAAQ,IAAIJ,GAChBI,EAAM0I,aAAen6hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC1C+phB,EAAM2I,IAAMp6hB,KAAKq9T,UAAUr9T,KAAK0H,QAChC,IAAI2yhB,EAAkC,IAArB5I,EAAM0I,aAAsBtE,EAC7CxuhB,EAAMqN,KAAKjD,KAAK6sD,MAAM+7d,IAE1B,OAAOhzhB,GAKX0rhB,EAAUxphB,UAAU+whB,cAAgB,WAChC,IAAIzF,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAIyqC,EAAQ,IAAIo/e,GAChBp/e,EAAMlR,QAAUjhC,KAAK+0hB,WAAW/0hB,KAAK0H,QACrCyqC,EAAM6lY,YAAch4a,KAAK+0hB,WAAW/0hB,KAAK0H,QAGzC,IAFA,IAAI1C,EAAWhF,KAAK0H,OAChB6yhB,EAAY,GACPnwhB,EAAI,EAAGA,EAAI+nC,EAAM6lY,YAAa5ta,IAAK,CACxCpK,KAAK0H,OAAS1C,EACd,IAAIw1hB,EAAW,IAAIlJ,GACnBkJ,EAASrF,WAAan1hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC3C8yhB,EAASpF,WAAap1hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC3C8yhB,EAAS9yhB,OAAS1H,KAAK21hB,WAAW31hB,KAAK0H,QACvC1C,EAAWhF,KAAK0H,OAChB1H,KAAKy6hB,iBAAiBD,GACtBD,EAAUnwhB,GAAKowhB,EAEnB,OAAOD,GAKXxH,EAAUxphB,UAAUkxhB,iBAAmB,SAAUD,GAC7C,IAAI3F,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OAAS8yhB,EAAS9yhB,OAC1C,IAAIwc,EAASlkB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC9BihU,EAAW3oU,KAAK06hB,gBAAgBF,EAASrF,WAAYqF,EAASpF,YAClDzsN,IAAag0M,GAAgBge,UAAa/d,GAAc+d,UAAY/d,GAAcge,UAClG,GAAIjyN,IAAag0M,GAAgBke,QAC7B,OAAQ32gB,GACJ,KAAKw4f,GAAcoe,MACf96hB,KAAK+6hB,mBAAmBP,EAAU7xN,GAClC,MACJ,KAAK+zM,GAAcke,UACf56hB,KAAKg7hB,uBAAuBR,EAAU7xN,GACtC,MACJ,KAAK+zM,GAAcue,QACfj7hB,KAAKk7hB,qBAAqBV,EAAU7xN,GACpC,QAOhBoqN,EAAUxphB,UAAUwxhB,mBAAqB,SAAUP,EAAU7xN,GACzD,IAAIksN,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OAAS8yhB,EAAS9yhB,OAC1C,IAAIyqC,EAAQ,IAAIw/e,GAChBx/e,EAAMjuB,OAASlkB,KAAK+0hB,WAAW/0hB,KAAK0H,QACpCyqC,EAAMpoC,OAAS/J,KAAK+0hB,WAAW/0hB,KAAK0H,QACpCyqC,EAAMlR,QAAUjhC,KAAK+0hB,WAAW/0hB,KAAK0H,QACZ,OAArB1H,KAAKm7hB,kBAA6Cx1hB,IAArB3F,KAAKm7hB,cAClCn7hB,KAAKm7hB,YAAc,GAEvB,IAAK,IAAI/whB,EAAI,EAAGA,EAAI,MAAOA,EAAG,CAC1B,IAAIgxhB,EAAY,IAAI5J,GACpB4J,EAAUtmhB,MAAQ9U,KAAKygU,SAASzgU,KAAK0H,QACrC0zhB,EAAU/zhB,MAAQrH,KAAK45Z,SAASwhI,EAAUtmhB,OAC1CsmhB,EAAUj0V,SAAW/8L,EACrBpK,KAAKq7hB,UAAU9zgB,SAASnd,EAAGgxhB,GAC3Bp7hB,KAAKs7hB,SAASF,EAAWzyN,GAEzB3oU,KAAKm7hB,YAAc1phB,KAAKyP,IAAI9W,EAAGpK,KAAKm7hB,eAM5CpI,EAAUxphB,UAAUyxhB,uBAAyB,SAAUR,EAAU7xN,GAC7D,IAAIksN,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OAAS8yhB,EAAS9yhB,OAC1C,IAAIy3E,EAAcwpP,IAAag0M,GAAgB4e,QAAWv7hB,KAAKw7hB,UAAYx7hB,KAAKq7hB,UAC5Elpf,EAAQ,IAAIy/e,GAChBz/e,EAAMjuB,OAASlkB,KAAK+0hB,WAAW/0hB,KAAK0H,QACpCyqC,EAAMpoC,OAAS/J,KAAK+0hB,WAAW/0hB,KAAK0H,QACpCyqC,EAAMlR,QAAUjhC,KAAK+0hB,WAAW/0hB,KAAK0H,QACrCyqC,EAAMspf,WAAaz7hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACxCyqC,EAAMupf,YAAc17hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCyqC,EAAMwpf,cAAgB37hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAC3CyqC,EAAMypf,WAAa57hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACxC,IAAIm0hB,EAAW1pf,EAAMspf,WAAa,EAClCtpf,EAAM2pf,SAAW97hB,KAAK+7hB,gBAAgBF,GACtC1pf,EAAM6pf,YAAch8hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACzCyqC,EAAM8pf,WAAaj8hB,KAAK+7hB,gBAAgBF,GACxC1pf,EAAM+pf,QAAUl8hB,KAAK+7hB,gBAAgBF,GACrC1pf,EAAMgqf,cAAgBn8hB,KAAK+7hB,gBAAgBF,GAC3C,IAAI9xhB,EAAUooC,EAAMpoC,OAAS,EAAI,EAAiB,EAAX8xhB,EACvC1pf,EAAMiqf,QAAUp8hB,KAAK+7hB,gBAAgBhyhB,GAIrC,IAFA,IAAIsyhB,EAAa,EACbvnhB,EAAQ,EACHo4B,EAAI,EAAGA,EAAI2uf,EAAU3uf,IAC1B,IAAK,IAAIw0D,EAAIvvD,EAAM8pf,WAAW/uf,GAAIw0D,GAAKvvD,EAAM2pf,SAAS5uf,IAAY,QAANw0D,EAAaA,IAAK,CAC1E,GAA+B,IAA3BvvD,EAAMgqf,cAAcjvf,GACpBmvf,EAAc36b,EAAIvvD,EAAM+pf,QAAQhvf,GAAM,UAErC,CAED,GADAp4B,EAAQo4B,EAAIiF,EAAMgqf,cAAcjvf,GAAK,EAAI2uf,EAAWn6b,EAAIvvD,EAAM8pf,WAAW/uf,GACrEp4B,GAASq9B,EAAMiqf,QAAQryhB,OACvB,SAEJsyhB,EAAclqf,EAAMiqf,QAAQtnhB,GAASq9B,EAAM+pf,QAAQhvf,GAAM,MAE7D,IAAIukf,EAAQ,IAAID,GAChBC,EAAM38gB,MAAQunhB,EACd5K,EAAMpqhB,MAAQrH,KAAK45Z,SAAS63H,EAAM38gB,OAClC,IAAIlB,EAAM+0T,IAAag0M,GAAgB/kV,QAA4B,SAAZ,MAAJl2F,GAA6B,IAAJA,EAAgBA,EAC5F+vb,EAAMtqV,SAAWvzL,EACjBurE,EAAW53D,SAAS3T,EAAI69gB,GACxBzxhB,KAAKs7hB,SAAS7J,EAAO9oN,KAOjCoqN,EAAUxphB,UAAU2xhB,qBAAuB,SAAUV,EAAU7xN,GAC3D,IAAIksN,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OAAS8yhB,EAAS9yhB,OAC1C,IAAIyqC,EAAQ,IAAI0/e,GAChB1/e,EAAMjuB,OAASlkB,KAAK+0hB,WAAW/0hB,KAAK0H,QACpCyqC,EAAMpoC,OAAS/J,KAAK+0hB,WAAW/0hB,KAAK0H,QACpCyqC,EAAMlR,QAAUjhC,KAAK+0hB,WAAW/0hB,KAAK0H,QACrCyqC,EAAMmqf,UAAYt8hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACvCyqC,EAAMoqf,WAAav8hB,KAAK+0hB,WAAW/0hB,KAAK0H,QACxC,IAAK,IAAI0C,EAAI,EAAGA,EAAI+nC,EAAMoqf,aAAcnyhB,EAAG,CACvC,IAAIgxhB,EAAY,IAAI5J,GACpB4J,EAAUtmhB,MAAQ9U,KAAK+0hB,WAAW/0hB,KAAK0H,QACvC0zhB,EAAU/zhB,MAAQrH,KAAK45Z,SAASwhI,EAAUtmhB,OAC1CsmhB,EAAUj0V,SAAW/8L,EAAI+nC,EAAMmqf,UAC/Bt8hB,KAAKq7hB,UAAU9zgB,SAASnd,EAAGgxhB,GAC3Bp7hB,KAAKs7hB,SAASF,EAAWzyN,GAEzB3oU,KAAKm7hB,YAAc1phB,KAAKyP,IAAI9W,EAAGpK,KAAKm7hB,eAG5CpI,EAAUxphB,UAAU0qhB,mBAAqB,SAAUJ,GAC/C,IAAK,IAAIzphB,EAAI,EAAGA,EAAIyphB,EAAUmB,aAAc5qhB,IAAK,CAC7C,IAAIu3E,EAASkyc,EAAUoB,YAAY7qhB,GAUnC,GATsB,IAAlBu3E,EAAO2zc,OAEPt1hB,KAAKmrhB,QAAQnuU,WAAar7H,EAAOh6E,KAEV,IAAlBg6E,EAAO2zc,SAEZt1hB,KAAKmrhB,QAAQqR,eAAiB76c,EAAOh6E,MAGT,OAA5B3H,KAAKmrhB,QAAQnuU,iBAAmDr3M,IAA5B3F,KAAKmrhB,QAAQnuU,YAA4D,OAAhCh9M,KAAKmrhB,QAAQqR,qBAA2D72hB,IAAhC3F,KAAKmrhB,QAAQqR,eAClI,QAKZzJ,EAAUxphB,UAAU8zF,SAAW,SAAU11F,GAIrC,IACIilC,EADAuF,EAAQ,IAAIy+e,GAQhB,OANI5whB,KAAKo0hB,eAAel2B,YAAYv2f,KAChCilC,EAAM5sC,KAAKo0hB,eAAelof,SAASvkC,IAE3B,OAARilC,QAAwBjnC,IAARinC,IAChBuF,EAAQvF,GAELuF,GAKX4gf,EAAUxphB,UAAUqwZ,SAAW,SAAU6iI,GAErC,OADAA,EAAaA,EAAYz8hB,KAAKqH,MAAM0C,OAAU0yhB,EAAYz8hB,KAAKqH,MAAM0C,OAAS,EACvE/J,KAAKqH,MAAMo1hB,IAMtB1J,EAAUxphB,UAAUmxhB,gBAAkB,SAAUvF,EAAYC,GACxD,IAAIlxgB,EAASy4f,GAAgBke,QAgB7B,OAfI1F,GAAcvY,GAAcge,WAAaxF,GAAcvY,GAAuB6f,UAG9Ex4gB,EAASy4f,GAAgB/kV,OAEpBu9V,GAAcvY,GAAcge,WAAaxF,GAAcvY,GAAuB0e,QAGnFr3gB,EAASy4f,GAAgB4e,QAEpBpG,GAAcvY,GAAc+d,WAAavF,GAActY,GAAuB6f,QAGnFz4gB,EAASy4f,GAAgBge,WAEtBz2gB,GAMX6ugB,EAAUxphB,UAAU+xhB,SAAW,SAAU7J,EAAO9oN,GAC5C,IAAIxpP,EAAa,KACjB,OAAQwpP,GACJ,KAAKg0M,GAAgB4e,QACjBp8c,EAAan/E,KAAK48hB,gBAClB,MACJ,KAAKjgB,GAAgBge,UACrB,KAAKhe,GAAgB/kV,OACjBz4G,EAAan/E,KAAK68hB,gBAClB,MAER19c,EAAW53D,SAASkqgB,EAAM38gB,MAAO28gB,IAMrCsB,EAAUxphB,UAAUuzhB,kBAAoB,SAAUjJ,EAAWE,EAAWgJ,EAAqBC,EAAUC,EAAWC,GAK9Gl9hB,KAAKi0hB,mBAAmBJ,GAGxB,IADA,IAAIsJ,GAAU,EACL/yhB,EAAI,EAAGA,EAAI8yhB,EAAWnzhB,OAAQK,IAAK,CACxC,IAAIowhB,EAAW0C,EAAW9yhB,GACtBu+T,EAAW3oU,KAAK06hB,gBAAgBF,EAASrF,WAAYqF,EAASpF,YAClE,GAAIzsN,IAAag0M,GAAgB/kV,OAAQ,CACrCulW,GAAU,EACV,OAGRn9hB,KAAKmrhB,QAAQiS,SAAWD,EACxBn9hB,KAAKmrhB,QAAQ8F,SAAW8C,EAAU9C,SAClCjxhB,KAAKmrhB,QAAQyO,aAA2C,IAA3BqD,EAAUrD,aACvC55hB,KAAKmrhB,QAAQnjB,YAAci1B,EAAUj1B,YACrC,IAAIq1B,EAAS,IAAOtJ,EAAU8B,WAC9B71hB,KAAKmrhB,QAAQmS,UAAYN,EAASnE,cAAgBwE,EAClDr9hB,KAAKmrhB,QAAQoS,UAAYR,EAAoBvG,SAAW6G,EAGxDr9hB,KAAKmrhB,QAAQljB,UAAqC,IAAxB+0B,EAAS3D,WAAoB2D,EAAS3D,WAAa,GAAMtF,EAAU8B,WAAawH,EAC1Gr9hB,KAAKmrhB,QAAQqS,WAAaR,EAASlE,eAAiBuE,EACpDr9hB,KAAKmrhB,QAAQsS,WAAaV,EAAoBtG,UAAY4G,EAE1Dr9hB,KAAKmrhB,QAAQ/iB,SAAW40B,EAASnE,cAAgBmE,EAASlE,eAAiBkE,EAASjE,cAAgBsE,EACpGr9hB,KAAKmrhB,QAAQuL,QAAUjlhB,KAAKsxC,KAAKg6e,EAAoBrG,QAAU2G,GAC/D,IAAI14hB,EAAOovhB,EAAUgC,KAAOsH,EACxBz4hB,EAAM6M,KAAKsxC,KAAK/iD,KAAKmrhB,QAAQoS,UAAYv9hB,KAAKmrhB,QAAQuL,SACtDpvhB,EAAQyshB,EAAUkC,KAAOoH,EACzBr2hB,EAAShH,KAAKmrhB,QAAQsS,WAC1Bz9hB,KAAKmrhB,QAAQuS,QAAU,IAAInkB,GAAU50gB,EAAMC,EAAK0C,EAAON,GAEvDhH,KAAKmrhB,QAAQpjB,MAAQ,GACrB/ngB,KAAKmrhB,QAAQwS,WAAa39hB,KAAK49hB,cAC/B59hB,KAAKmrhB,QAAQ/jhB,SAAWpH,KAAKo0hB,eAAel2B,YAAY,OACxDl+f,KAAKmrhB,QAAQ0S,oBAAsB9J,EAAU8B,WAAamH,EAASvF,gBACnEz3hB,KAAKmrhB,QAAQ2S,sBAAwB/J,EAAU8B,WAAamH,EAASnF,mBAKzE9E,EAAUxphB,UAAUq0hB,YAAc,WAC9B,IAAIl0f,EAAQ,IACR07R,EAAQ,GACZ,GAAIplU,KAAKmrhB,QAAQiS,SACb,IAAK,IAAIhzhB,EAAI,EAAGA,EAAIs/B,EAAOt/B,IAAK,CAC5B,IAAIgxhB,EAAYp7hB,KAAK+9hB,SAASl+hB,OAAOyhC,aAAal3B,IAClDg7T,EAAMh7T,GAAMgxhB,EAAe,MAAI,EAAIA,EAAU/zhB,UAIjD,KAAI22hB,EAAgB,GAChBC,EAAU,IACVx4V,EAAQ5lM,OAAOyhC,aAAa,IAChC,IAASl3B,EAAI,EAAGA,EAAIs/B,EAAOt/B,IAAK,CAC5B4zhB,EAAc,GAAK5zhB,EACnB,IAAIo3B,EAAOxhC,KAAKk+hB,UAAUF,EAAe,EAAGA,EAAcj0hB,QACtD+0c,EAAMt9a,EAAKz3B,OAAS,EAAKy3B,EAAK,GAAKy8f,EACnC7C,EAAYp7hB,KAAK+9hB,SAASj/E,GACzBs8E,EAAU7jD,OAIX6jD,EAAYp7hB,KAAK+9hB,SAASt4V,GAC1B2/H,EAAMh7T,GAAMgxhB,EAAe,MAAI,EAAIA,EAAU/zhB,OAJ7C+9T,EAAMh7T,GAAKgxhB,EAAU/zhB,OAQjC,OAAO+9T,GAKX2tN,EAAUxphB,UAAU40hB,gBAAkB,WAClC,IAAI1M,EAAQzxhB,KAAK+9hB,SAAShX,GAAgB/kB,YAC1C,OAAOyvB,GAKXsB,EAAUxphB,UAAU20hB,UAAY,SAAUF,EAAet0gB,EAAO3f,GAE5D,IADA,IAAIhG,EAAS,GACJ+Q,EAAQ,EAAGA,EAAQ/K,EAAQ+K,IAChC/Q,GAAUlE,OAAOyhC,aAAa08f,EAAclphB,EAAQ4U,IAExD,OAAO3lB,GAKXgvhB,EAAUxphB,UAAU60hB,cAAgB,SAAUC,GAC1C,IAAIxJ,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAIyqC,EAAQ,IAAIu/e,GACZnpb,EAAS,KACb,GAAI81b,EAAQ,CACR,IAAI5zgB,EAAMoqgB,EAAU9qhB,OAAS,EAC7Bw+F,EAAS,GACT,IAAK,IAAIn+F,EAAI,EAAGA,EAAIqgB,EAAKrgB,IACrBm+F,EAAOn+F,GAAoC,EAA/BpK,KAAK+0hB,WAAW/0hB,KAAK0H,YAGpC,CACG+iB,EAAMoqgB,EAAU9qhB,OAAS,EAC7Bw+F,EAAS,GACT,IAASn+F,EAAI,EAAGA,EAAIqgB,EAAKrgB,IACrBm+F,EAAOn+F,GAAKpK,KAAK21hB,WAAW31hB,KAAK0H,QAIzC,OADAyqC,EAAM0lF,QAAUtvB,EACTp2D,GAKX4gf,EAAUxphB,UAAU+0hB,iBAAmB,SAAUC,EAAYC,GAKpDD,EAAWrgC,YAAY,IACxBqgC,EAAWh3gB,SAAS,EAAG,GAI3B,IAFA,IAAIu1B,EAAQ,IAAI,EACZ2hf,EAAgBF,EAAWrhhB,OACtB9S,EAAI,EAAGA,EAAIq0hB,EAAc10hB,OAAQK,IACtC0yC,EAAMv1B,SAASk3gB,EAAcr0hB,GAAIm0hB,EAAWryf,SAASuyf,EAAcr0hB,KAEvE,IAASA,EAAI,EAAGA,EAAIq0hB,EAAc10hB,OAAQK,IAAK,CAC3C,IAAIs0hB,EAAUD,EAAcr0hB,GAC5BpK,KAAK2+hB,sBAAsBJ,EAAYG,EAASF,KAMxDzL,EAAUxphB,UAAUo1hB,sBAAwB,SAAUJ,EAAY9M,EAAO+M,GAKrE,GAAI/M,EAAQ+M,EAAU3ma,QAAQ9tH,OAAS,EAAG,CACtC,IAAI60hB,EAAcJ,EAAU3ma,QAAQ45Z,GACpC,GAAImN,IAAgBJ,EAAU3ma,QAAQ45Z,EAAQ,GAAI,CAC9C,IAAIoD,EAAY70hB,KAAKq9F,SAAS,QAC9Br9F,KAAK0H,OAASmthB,EAAUnthB,OAASk3hB,EACjC,IAAIC,EAAc,IAAI/M,GAOtB,GANA+M,EAAYC,iBAAmB9+hB,KAAKq9T,UAAUr9T,KAAK0H,QACnDm3hB,EAAY9I,KAAO/1hB,KAAKq9T,UAAUr9T,KAAK0H,QACvCm3hB,EAAY7I,KAAOh2hB,KAAKq9T,UAAUr9T,KAAK0H,QACvCm3hB,EAAY5I,KAAOj2hB,KAAKq9T,UAAUr9T,KAAK0H,QACvCm3hB,EAAY3I,KAAOl2hB,KAAKq9T,UAAUr9T,KAAK0H,QAEnCm3hB,EAAYC,iBAAmB,EAAG,CAClC,IAAIC,EAAY,EACZltZ,GAAQ,EACZ,MAAOA,EAAO,CACV,IAAIulQ,EAAQp3Y,KAAK+0hB,WAAW/0hB,KAAK0H,QAC7Bs3hB,EAAah/hB,KAAK+0hB,WAAW/0hB,KAAK0H,QAItC,GAHK62hB,EAAWrgC,YAAY8gC,IACxBT,EAAWh3gB,SAASy3gB,EAAY,GAEoB,KAAnD5nJ,EAAQ4lI,GAAuBiiB,gBAChC,MAEJF,EAAmE,KAArD3nJ,EAAQ4lI,GAAuBkiB,kBAA2B,EAAI,EACvB,KAAhD9nJ,EAAQ4lI,GAAuBmiB,aAChCJ,GAAa,EAE6C,KAApD3nJ,EAAQ4lI,GAAuBoiB,iBACrCL,GAAa,EAE4C,KAAnD3nJ,EAAQ4lI,GAAuBqiB,kBACrCN,GAAa,GAEjB/+hB,KAAK0H,QAAUq3hB,OAUnChM,EAAUxphB,UAAU+1hB,mBAAqB,SAAUf,EAAYC,EAAWe,EAAcC,GAKpFD,EAAe,GAEf,IAAIE,EAAelB,EAAWrhhB,OAC9BuihB,EAAahyf,MAAK,SAAU5S,EAAG/xB,GAAK,OAAO+xB,EAAI/xB,KAE/C,IADA,IAAI42hB,EAAY,EACPt1hB,EAAI,EAAGA,EAAIq1hB,EAAa11hB,OAAQK,IAAK,CAC1C,IAAI40hB,EAAaS,EAAar1hB,GAC1Bo0hB,EAAU3ma,QAAQ9tH,OAAS,IAC3B21hB,GAAalB,EAAU3ma,QAAQmna,EAAa,GAAKR,EAAU3ma,QAAQmna,IAG3E,IAAIW,EAAmB3/hB,KAAK0tL,MAAMgyW,GAClCF,EAAgB,GAChB,IAASp1hB,EAAI,EAAGA,EAAIu1hB,EAAkBv1hB,IAClCo1hB,EAAc9qhB,KAAK,GAEvB,IAAIkrhB,EAAkB,EAClBC,EAAiB,EACjB1tf,EAAQnyC,KAAKq9F,SAAS,QAE1B,IAASjzF,EAAI,EAAGA,EAAIo0hB,EAAU3ma,QAAQ9tH,OAAQK,IAE1C,GADAm1hB,EAAa7qhB,KAAKkrhB,GACdC,EAAiBJ,EAAa11hB,QAAU01hB,EAAaI,KAAoBz1hB,EAAG,GAC1Ey1hB,EACFN,EAAan1hB,GAAKw1hB,EAClB,IAAIE,EAAiBtB,EAAU3ma,QAAQztH,GACnC21hB,EAAqBvB,EAAU3ma,QAAQztH,EAAI,GAAK01hB,EACpD,GAAIC,EAAqB,EAAG,CACxB//hB,KAAK0H,OAASyqC,EAAMzqC,OAASo4hB,EAC7B,IAAI/7hB,EAAS/D,KAAKo9T,KAAKoiO,EAAeI,EAAiBG,GACvDP,EAAgBz7hB,EAAOwkG,OACvBq3b,GAAmBG,GAI/B,MAAO,CAAEC,eAAgBN,EAAWH,aAAcA,EAAcC,cAAeA,IAMnFzM,EAAUxphB,UAAU02hB,gBAAkB,SAAUV,EAAcW,EAAcC,GAExE,GAAqB,OAAjBZ,EACA,MAAM,IAAIpsf,MAAM,0CAMpB,IAJA,IAAItF,EAAO,EAAuC,EAAtB0xf,EAAax1hB,OAAmC,EAAtBw1hB,EAAax1hB,OAC/D2/B,EAAQ1pC,KAAK0tL,MAAM7/I,GAEnB+pE,EAAS,IAAIm6a,GAAgBrof,GACxBt/B,EAAI,EAAGA,EAAIm1hB,EAAax1hB,OAAQK,IAAK,CAC1C,IAAInE,EAAQs5hB,EAAan1hB,GACrB81hB,GACAj6hB,GAAS,EACT2xG,EAAO06a,WAAWrshB,IAGlB2xG,EAAO26a,SAAStshB,GAGxB,MAAO,CAAEm6hB,eAAgBxob,EAAOzjF,KAAMksgB,YAAaxyf,IAKvDklf,EAAUxphB,UAAUmkL,MAAQ,SAAUznL,GAClC,OAAQA,EAAQ,GAAK,GAMzB8shB,EAAUxphB,UAAU+2hB,eAAiB,SAAUH,EAAiBX,EAAeQ,EAAgBO,GAE3F,GAAwB,OAApBJ,EACA,MAAM,IAAIhtf,MAAM,6CAEpB,GAAsB,OAAlBqsf,EACA,MAAM,IAAIrsf,MAAM,2CAEHnzC,KAAKszhB,WAAtB,IACIvvhB,EAAS/D,KAAKwgiB,qBAAqBL,EAAiBX,EAAe,GACnEiB,EAAoB18hB,EAAO08hB,kBAC3BtM,EAAYpwhB,EAAOowhB,UACnBv8a,EAAS,IAAIm6a,GAAgB0O,GACjC7ob,EAAO26a,SAAS,OAChB36a,EAAO06a,WAAW6B,GAClB,IAAIwH,EAAgB37hB,KAAKuzhB,eAAeY,GAQxC,OAPAv8a,EAAO06a,WAAyC,IAA7B,IAAsB,GAAhBqJ,KACzB/jb,EAAO06a,WAAWqJ,GAClB/jb,EAAO06a,WAAuD,IAA3C6B,GAAa,IAAsB,GAAhBwH,MAEtC37hB,KAAK0giB,eAAe9ob,EAAQu8a,EAAWgM,EAAiBX,EAAeQ,EAAgBO,GAEvFvgiB,KAAK2giB,YAAY/ob,EAAQuob,EAAiBX,GACnC5nb,EAAOzjF,MAGlB4+f,EAAUxphB,UAAUi3hB,qBAAuB,SAAUL,EAAiBX,EAAerL,GAEjF,GAAwB,OAApBgM,EACA,MAAM,IAAIhtf,MAAM,6CAEpB,GAAsB,OAAlBqsf,EACA,MAAM,IAAIrsf,MAAM,2CAGpBghf,EAAY,EAGZ,IAFA,IAAIb,EAAatzhB,KAAKszhB,WAClBmN,EAAoB,EACfr2hB,EAAI,EAAGA,EAAIkphB,EAAWvphB,OAAQK,IAAK,CACxC,IAAIikC,EAAYilf,EAAWlphB,GAC3B,GAAkB,SAAdikC,GAAsC,SAAdA,EAAsB,CAC9C,IAAI8D,EAAQnyC,KAAKq9F,SAAShvD,GACrB8D,EAAMolc,UACL48C,EACFsM,GAAqBzgiB,KAAK0tL,MAAMv7I,EAAMpoC,UAIlD02hB,GAAqBN,EAAgBp2hB,OACrC02hB,GAAqBjB,EAAcz1hB,OACnC,IAAI62hB,EAA6B,GAAZzM,EAAiB,GAEtC,OADAsM,GAAqBG,EACd,CAAEH,kBAAmBA,EAAmBtM,UAAWA,IAM9DpB,EAAUxphB,UAAUm3hB,eAAiB,SAAU9ob,EAAQu8a,EAAWgM,EAAiBX,EAAeQ,EAAgBO,GAE9G,GAAe,OAAX3ob,EACA,MAAM,IAAIzkE,MAAM,oCAEpB,GAAwB,OAApBgtf,EACA,MAAM,IAAIhtf,MAAM,6CAEpB,GAAsB,OAAlBqsf,EACA,MAAM,IAAIrsf,MAAM,2CAKpB,IAHA,IAAImgf,EAAatzhB,KAAKszhB,WAClBsN,EAA6B,GAAZzM,EAAiB,GAClC0M,EAAgB,EACXz2hB,EAAI,EAAGA,EAAIkphB,EAAWvphB,OAAQK,IAAK,CACxC,IAAIikC,EAAYilf,EAAWlphB,GACvByqhB,EAAY70hB,KAAKq9F,SAAShvD,GAC9B,IAAIwmf,EAAUt9C,MAAd,CAIA,GADA3/X,EAAOk7a,YAAYzkf,GACD,SAAdA,EAAsB,CACtB,IAAIssE,EAAW36G,KAAK8giB,kBAAkBtB,GACtC5nb,EAAO26a,SAAS53a,GAChBkmb,EAAgBb,OAEf,GAAkB,SAAd3xf,EAAsB,CACvBssE,EAAW36G,KAAK8giB,kBAAkBX,GACtCvob,EAAO26a,SAAS53a,GAChBkmb,EAAgBN,OAGhB3ob,EAAO26a,SAASsC,EAAUl6a,UAC1Bkmb,EAAgBhM,EAAU9qhB,OAE9B6tG,EAAOg7a,UAAUgO,GACjBhpb,EAAOg7a,UAAUiO,GACjBD,GAAkB5giB,KAAK0tL,MAAMmzW,MAMrC9N,EAAUxphB,UAAUu3hB,kBAAoB,SAAU17N,GAC9C,GAAc,OAAVA,EACA,MAAM,IAAIjyR,MAAM,mCAOpB,IALA,IAAIttC,EAAM,EACNk7hB,EAAQ,EACRC,EAAQ,EACRC,EAAQ,EACRC,EAAQ,EACH92hB,EAAI,EAAGA,GAAKg7T,EAAMr7T,OAAS,GAAK,EAAGK,IACxC82hB,GAAyB,IAAf97N,EAAMv/T,KAChBo7hB,GAAyB,IAAf77N,EAAMv/T,KAChBm7hB,GAAyB,IAAf57N,EAAMv/T,KAChBk7hB,GAAyB,IAAf37N,EAAMv/T,KAEpB,IAAI9B,EAASg9hB,EAIb,OAHAh9hB,GAAWi9hB,GAAS,EACpBj9hB,GAAWk9hB,GAAS,GACpBl9hB,GAAWm9hB,GAAS,GACbn9hB,GAKXgvhB,EAAUxphB,UAAUo3hB,YAAc,SAAU/ob,EAAQ2nb,EAAcC,GAC9D,GAAe,OAAX5nb,EACA,MAAM,IAAIzkE,MAAM,oCAEpB,GAAqB,OAAjBosf,EACA,MAAM,IAAIpsf,MAAM,6CAEpB,GAAsB,OAAlBqsf,EACA,MAAM,IAAIrsf,MAAM,2CAGpB,IADA,IAAImgf,EAAatzhB,KAAKszhB,WACblphB,EAAI,EAAGA,EAAIkphB,EAAWvphB,OAAQK,IAAK,CACxC,IAAIikC,EAAYilf,EAAWlphB,GACvByqhB,EAAY70hB,KAAKq9F,SAAShvD,GAC9B,IAAIwmf,EAAUt9C,MAGd,GAAkB,SAAdlpc,EACAupE,EAAOw3Z,WAAWowB,QAEjB,GAAkB,SAAdnxf,EACLupE,EAAOw3Z,WAAWmwB,OAEjB,CAGD,IAFA,IAAI71f,EAAQ1pC,KAAK0tL,MAAMmnW,EAAU9qhB,QAC7B8ohB,EAAO,GACFv8d,EAAM,EAAGA,EAAM5sB,EAAO4sB,IAC3Bu8d,EAAKn+gB,KAAK,GAEd1U,KAAK0H,OAASmthB,EAAUnthB,OACxB,IAAI3D,EAAS/D,KAAKo9T,KAAKy1N,EAAM,EAAGgC,EAAU9qhB,QAC1C6tG,EAAOw3Z,WAAWrrgB,EAAOwkG,WAQrCwqb,EAAUxphB,UAAU43hB,UAAY,SAAUz5hB,GACtC1H,KAAK0H,OAASA,GAMlBqrhB,EAAUxphB,UAAU63hB,gBAAkB,WAClCphiB,KAAKmrhB,QAAU,IAAI6F,GACnB,IAAI6C,EAAY7zhB,KAAK8zhB,gBACjBC,EAAY/zhB,KAAKg0hB,gBACrBh0hB,KAAKqhiB,aAAiD,IAAjCtN,EAAUsC,mBAC/B,IAAI0G,EAAsB/8hB,KAAKu2hB,4BAC3ByG,EAAWh9hB,KAAKm3hB,eAChB8F,EAAYj9hB,KAAKy5hB,gBACrBz5hB,KAAKqH,MAAQrH,KAAKi6hB,eAAe8C,EAAoB7F,iBAAkBnD,EAAU8B,YACjF,IAAI0E,EAAYv6hB,KAAKs6hB,gBACrBt6hB,KAAK88hB,kBAAkBjJ,EAAWE,EAAWgJ,EAAqBC,EAAUC,EAAW1C,IAE3FxH,EAAUxphB,UAAUw0hB,SAAW,SAAU52V,GACrC,GAAwB,kBAAbA,EAAuB,CAC9B,IAAIsjK,EAAO,KACNzqW,KAAKmrhB,QAAQiS,UAAoC,MAAxBp9hB,KAAK48hB,gBAK1B58hB,KAAKmrhB,QAAQiS,UAAoC,MAAxBp9hB,KAAK68hB,iBAC/B78hB,KAAK68hB,gBAAgB3+B,YAAY/2T,KACjCsjK,EAAOzqW,KAAK68hB,gBAAgB3wf,SAASi7J,IANrCnnM,KAAK48hB,gBAAgB1+B,YAAY/2T,KACjCsjK,EAAOzqW,KAAK48hB,gBAAgB1wf,SAASi7J,IAQ7C,IAAIsqV,EAAiB,MAARhnL,EAAgBA,EAAOzqW,KAAKm+hB,kBACzC,OAAO1M,EAGP,IAAI7kf,EAAM,KACNrmB,EAAO4gL,EAAS9oK,WAAW,GAC1Br+B,KAAKmrhB,QAAQiS,UAA+B,OAAnBp9hB,KAAKw7hB,WAW1Bx7hB,KAAKmrhB,QAAQiS,UAA+B,OAAnBp9hB,KAAKq7hB,WAAsBr7hB,KAAKozhB,YAErC,IAArBpzhB,KAAKm7hB,YACL50gB,GAAQvmB,KAAKm7hB,YAAc,EAG3B50gB,EAA4B,SAAZ,MAAPA,GAAmC,IAAPA,EAAcA,EAEnDvmB,KAAKq7hB,UAAUn9B,YAAY33e,KAC3BqmB,EAAM5sC,KAAKq7hB,UAAUnvf,SAAS3lB,GAC9BvmB,KAAKshiB,eAAgB,IApBrBthiB,KAAKw7hB,UAAUt9B,YAAY33e,IAC3BqmB,EAAM5sC,KAAKw7hB,UAAUtvf,SAAS3lB,GAC1BA,IAASwggB,GAAgB/kB,WAAW3je,WAAW,KAC/Cr+B,KAAKshiB,eAAgB,IAGpB/6gB,IAASwggB,GAAgB/kB,WAAW3je,WAAW,KACpDr+B,KAAKshiB,eAAgB,GAiBzBn6V,IAAa4/U,GAAgB/kB,YAAsB,OAARp1d,IAC3CA,EAAM,IAAI4kf,IAEVC,EAAiB,OAAR7kf,EAAgBA,EAAM5sC,KAAKm+hB,kBACxC,OAAO1M,GAMfsB,EAAUxphB,UAAUg4hB,cAAgB,SAAUzsE,GAC1C,GAAc,OAAVA,QAA4Bnvd,IAAVmvd,EAClB,MAAM,IAAI3hb,MAAM,mCAIpB,IAFA,IAAIo3d,EAAa,IAAI,EACjBi3B,EAAW1sE,EAAM53c,OACZ9S,EAAI,EAAGA,EAAIo3hB,EAASz3hB,OAAQK,IAAK,CACtC,IAAI00c,EAAK0iF,EAASp3hB,GACdqnhB,EAAQzxhB,KAAK+9hB,SAASj/E,GACrB2yE,EAAMl6C,OACPgzB,EAAWhjf,SAASkqgB,EAAM38gB,MAAOgqc,EAAGzgb,WAAW,IAGvD,OAAOkse,GAKXwoB,EAAUxphB,UAAUk4hB,aAAe,WAI/B,IAHA,IAAIC,EAAe,GACf1ggB,EAAO,IAAIwwf,GACX18gB,EAAQ,EACH1K,EAAI,EAAGA,EAAIpK,KAAKqH,MAAM0C,OAAQK,IAAK,CACxC,IAAI/C,EAAQrH,KAAKqH,MAAM+C,GACvB42B,EAAKlsB,MAAQA,EACbksB,EAAK35B,MAAQA,EACbq6hB,EAAahthB,KAAKssB,GAClBlsB,IAEJ,OAAO4shB,GAMX3O,EAAUxphB,UAAUo4hB,gBAAkB,SAAU7sE,GAC5C,IAAIypE,EAAav+hB,KAAKuhiB,cAAczsE,GAChC0pE,EAAYx+hB,KAAKo+hB,cAAcp+hB,KAAKqhiB,cACpC9C,EAAW1wf,OAASinb,EAAMjnb,SAC1B7tC,KAAKqzhB,aAAev+D,EAAMjnb,OAAS0wf,EAAW1wf,QAElD7tC,KAAKs+hB,iBAAiBC,EAAYC,GAElC,IAAI39f,EAAU7gC,KAAKs/hB,mBAAmBf,EAAYC,EAAW,KAAM,MAE/DwB,EAAiBn/f,EAAQm/f,eACzBT,EAAe1+f,EAAQ0+f,aACvBC,EAAgB3+f,EAAQ2+f,cACxB1+f,EAAU9gC,KAAKigiB,gBAAgBV,EAAcv/hB,KAAKqhiB,aAAc,MAChEhB,EAAcv/f,EAAQu/f,YACtBD,EAAiBt/f,EAAQs/f,eACzBwB,EAAc5hiB,KAAKsgiB,eAAeF,EAAgBZ,EAAeQ,EAAgBK,GACrF,OAAOuB,GAKX7O,EAAUxphB,UAAUs4hB,cAAgB,SAAUrggB,GAC1C,GAAa,OAATA,EACA,MAAM,IAAI2R,MAAM,kCAIpB,IAFA,IAAIs+e,EAAQ,GAEH/vb,EAAI,EAAGA,EAAIlgE,EAAKz3B,OAAQ23F,IAAK,CAClC,IAAIo9W,EAAKt9a,EAAKkgE,GACV05b,EAAYp7hB,KAAK+9hB,SAASj/E,GACzBs8E,EAAU7jD,QACXk6C,GAAS5xhB,OAAOyhC,aAAa85f,EAAUtmhB,QAI/C,OAAO28gB,GAKXsB,EAAUxphB,UAAUu4hB,aAAe,SAAUv7gB,GACzC,IAAI60gB,EAAYp7hB,KAAK+9hB,SAASx3gB,GAC9B60gB,EAAcA,EAAU7jD,MAAqBv3e,KAAKm+hB,kBAAjB/C,EACjC,IAAI2G,EAAc3G,EAAU7jD,MAA2B,EAAlB6jD,EAAU/zhB,MAC/C,OAAO06hB,GAEXhP,EAAUxphB,UAAU+qhB,WAAa,SAAUvqhB,EAAQi4hB,GAC/C,QAAkBr8hB,IAAdq8hB,EACA,OAAOhiiB,KAAKs0hB,WAAWvqhB,GAAQ,GAI/B,IAAIhG,EAAS,GACb,GAAIi+hB,EACA,IAAK,IAAI53hB,EAAI,EAAGA,EAAIL,EAAQK,IACpBA,EAAI,IAAM,IACVrG,GAAUlE,OAAOyhC,aAAathC,KAAKgzhB,SAAShzhB,KAAK0H,UAErD1H,KAAK0H,QAAU,OAInB,IAAS0C,EAAI,EAAGA,EAAIL,EAAQK,IACxBrG,GAAUlE,OAAOyhC,aAAathC,KAAKgzhB,SAAShzhB,KAAK0H,SACjD1H,KAAK0H,QAAU,EAGvB,OAAO3D,GAGfgvhB,EAAUxphB,UAAUishB,UAAY,SAAU9thB,GACtC,IAAIw5W,EAAUlhX,KAAKq9T,UAAU31T,GACzBu6hB,EAAYjiiB,KAAKq9T,UAAU31T,EAAS,GACpC83W,EAAWyiL,EAAY,MAC3B,OAAO/gL,EAAU1B,GAErBuzK,EAAUxphB,UAAU62T,UAAY,SAAU14T,GACtC,IAAI8qhB,EAAKxyhB,KAAKgzhB,SAAStrhB,EAAS,GAC5B+qhB,EAAKzyhB,KAAKgzhB,SAAStrhB,EAAS,GAC5BgrhB,EAAK1yhB,KAAKgzhB,SAAStrhB,EAAS,GAC5BirhB,EAAK3yhB,KAAKgzhB,SAAStrhB,GAEvB,OADA1H,KAAK0H,QAAU,EACR8qhB,GAAMC,GAAM,IAAMC,GAAM,KAAOC,GAAM,KAEhDI,EAAUxphB,UAAUoshB,WAAa,SAAUjuhB,GACvC,IAAI8qhB,EAAKxyhB,KAAKgzhB,SAAStrhB,EAAS,GAC5B+qhB,EAAKzyhB,KAAKgzhB,SAAStrhB,EAAS,GAC5BgrhB,EAAK1yhB,KAAKgzhB,SAAStrhB,EAAS,GAC5BirhB,EAAK3yhB,KAAKgzhB,SAAStrhB,GAEvB,OADA1H,KAAK0H,QAAU,EACP8qhB,EAAKC,GAAM,EAAIC,GAAM,GAAKC,GAAM,IAO5CI,EAAUxphB,UAAU8zT,UAAY,SAAU31T,GACtC,IAAI3D,GAAU/D,KAAKgzhB,SAAStrhB,IAAW,GAAK1H,KAAKgzhB,SAAStrhB,EAAS,GAGnE,OAFA3D,EAAkB,MAATA,EAAqBA,EAAS,MAAUA,EACjD/D,KAAK0H,QAAU,EACR3D,GAEXgvhB,EAAUxphB,UAAUushB,UAAY,SAAUpuhB,GACtC,IAAIw6hB,EAAMliiB,KAAKogU,UAAU14T,EAAS,GAC9BjE,EAA6B,WAAzBzD,KAAKogU,UAAU14T,GAAyBw6hB,EAIhD,OAHIA,EAAM,IACNz+hB,GAAK,YAEFA,GAEXsvhB,EAAUxphB,UAAUwrhB,WAAa,SAAUrthB,GACvC,IAAI3D,EAAU/D,KAAKgzhB,SAAStrhB,IAAW,EAAK1H,KAAKgzhB,SAAStrhB,EAAS,GAEnE,OADA1H,KAAK0H,QAAU,EACR3D,GAKXgvhB,EAAUxphB,UAAUwyhB,gBAAkB,SAAUhyhB,GAE5C,IADA,IAAIw+F,EAAS,GACJn+F,EAAI,EAAGA,EAAIL,EAAQK,IACxBm+F,EAAOn+F,GAAKpK,KAAK+0hB,WAAW/0hB,KAAK0H,QAErC,OAAO6gG,GAEXwqb,EAAUxphB,UAAU6uhB,UAAY,SAAUruhB,GAEtC,IADA,IAAIhG,EAAS,GACJqG,EAAI,EAAGA,EAAIL,EAAQK,IACxBrG,EAAO2Q,KAAK1U,KAAKgzhB,SAAShzhB,KAAK0H,SAC/B1H,KAAK0H,QAAU,EAEnB,OAAO3D,GAEXgvhB,EAAUxphB,UAAUk3T,SAAW,SAAU/4T,GACrC,IAAI3D,EAAS/D,KAAKgzhB,SAAStrhB,GAE3B,OADA1H,KAAK0H,QAAU,EACR3D,GAMXgvhB,EAAUxphB,UAAU6zT,KAAO,SAAU70N,EAAQzzF,EAAO40B,GAChD,GAAe,OAAX6+D,EACA,MAAM,IAAIp1D,MAAM,oCAEpB,IAAIgvf,EAAU,EACV/kO,EAAO,EACX,EAAG,CACC,IAAK,IAAIhzT,EAAI,EAAIA,EAAIs/B,EAAQy4f,GAAaniiB,KAAK0H,OAAS0C,EAAIpK,KAAKgzhB,SAASjphB,OAASK,IAC/Em+F,EAAOzzF,EAAQ1K,GAAKpK,KAAKgzhB,SAAShzhB,KAAK0H,OAAS0C,GAEpDgzT,EAAO1zR,EAAQy4f,EACfniiB,KAAK0H,QAAU01T,EACf+kO,GAAW/kO,QACN+kO,EAAUz4f,GACnB,MAAO,CAAE6+D,OAAQA,EAAQ45b,QAASA,IAE/BpP,EAxsCmB,GC1B1B,GAAwC,WACxC,IAAIlqhB,EAAgB,SAAU5G,EAAG6G,GAI7B,OAHAD,EAAgBE,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUjH,EAAG6G,GAAK7G,EAAEgH,UAAYH,IACvE,SAAU7G,EAAG6G,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIlH,EAAEkH,GAAKL,EAAEK,KAClEN,EAAc5G,EAAG6G,IAE5B,OAAO,SAAU7G,EAAG6G,GAEhB,SAASO,IAAOrJ,KAAKsJ,YAAcrH,EADnC4G,EAAc5G,EAAG6G,GAEjB7G,EAAEsH,UAAkB,OAANT,EAAaC,OAAOS,OAAOV,IAAMO,EAAGE,UAAYT,EAAES,UAAW,IAAIF,IAV3C,GAoBxC,GAAgC,WAChC,SAAS+4hB,IAKLpiiB,KAAK02hB,QAAU,EA6FnB,OAtFA0L,EAAe74hB,UAAU84hB,UAAY,SAAUn+gB,GAC3C,IAAIiwB,EAAcn0C,KAAKkogB,OAAS,GAAQukB,mBAAqBzshB,KAAKq/D,QAAQn7C,GAC1E,OAAOiwB,GAMXiuf,EAAe74hB,UAAU+4hB,WAAa,SAAUp+gB,GAC5C,IAAIiwB,EAAcn0C,KAAKmogB,QAAU,GAAQskB,mBAAqBzshB,KAAKq/D,QAAQn7C,GAC3E,OAAOiwB,GAMXiuf,EAAe74hB,UAAUg5hB,WAAa,SAAUr+gB,GAC5C,IAAIiwB,EAAcn0C,KAAK02hB,QAAU,GAAQjK,mBAAqBzshB,KAAKq/D,QAAQn7C,GAC3E,OAAOiwB,GAMXiuf,EAAe74hB,UAAUuub,UAAY,SAAU5za,GAI3C,IAHA,IAAIjd,EACAu7hB,EAAiB,CAAC,UAAW,UAAW,aAAc,SAAU,cAChEC,EAA0B,GACrB3thB,EAAQ,EAAGA,EAAQ0thB,EAAez4hB,OAAQ+K,IAAS,CACxD,IAAIu8T,EAAOmxN,EAAe1thB,GAC1B2thB,EAAwB/thB,KAAK28T,GAYjC,OANIpqU,EAJAjH,KAAKsiiB,WAAWp+gB,GAAU,EAIhBlkB,KAAKqiiB,UAAUn+gB,GAAUlkB,KAAKsiiB,WAAWp+gB,GAAUlkB,KAAKuiiB,WAAWr+gB,GAInElkB,KAAKqiiB,UAAUn+gB,GAAUlkB,KAAKsiiB,WAAWp+gB,GAAUlkB,KAAKuiiB,WAAWr+gB,GAE1Ejd,GAMXm7hB,EAAe74hB,UAAU81D,QAAU,SAAUn7C,GACzC,IAAI2pB,EAAO7tC,KAAK6tC,KAChB,GAAc,MAAV3pB,EACA,OAAQA,EAAOw+gB,gBACX,KAAKlmB,GAAkBmmB,UACnB90f,GAAQ7tC,KAAK69hB,oBACb,MACJ,KAAKrhB,GAAkBomB,YACnB/0f,GAAQ7tC,KAAK89hB,sBACb,MAGZ,OAAOjwf,GAMXu0f,EAAe74hB,UAAUuzC,MAAQ,WAC7B,IAAIque,EAAUnrhB,KAEd,OADAmrhB,EAAQwS,WAAakF,GAAW/lf,QACzBque,GAEXpihB,OAAOsB,eAAe+3hB,EAAe74hB,UAAW,aAAc,CAM1D69B,IAAK,WACD,OAAOpnC,KAAK8iiB,oBAEhBttf,IAAK,SAAUvvC,GACXjG,KAAK8iiB,mBAAqB78hB,GAE9BqsG,YAAY,EACZC,cAAc,IAEX6vb,EAnGwB,GAsG/BS,GAA4B,WAC5B,SAASA,KAST,OAHAA,EAAW/lf,MAAQ,WACf,OAAO,MAEJ+lf,EAVoB,GAa3B,GAAoC,SAAU52hB,GAO9C,SAAS82hB,EAAmBC,GACxB,IAAIx2hB,EAAQP,EAAOQ,KAAKzM,OAASA,KACjC,GAAc,MAAVgjiB,EACA,MAAM,IAAI7vf,MAAM,gCAGpB,OADA3mC,EAAMw2hB,OAASA,EACRx2hB,EA2CX,OAvDA,GAAUu2hB,EAAoB92hB,GAmB9B82hB,EAAmBx5hB,UAAU6nC,MAAQ,SAAUt8B,GAC3C,GAAIA,EAAQ,GAAKA,GAAS9U,KAAKgjiB,OAAOj5hB,OAClC,MAAM,IAAIopC,MAAM,kFAEpB,IAAIpvC,EAAS/D,KAAKgjiB,OAAOluhB,GACzB,OAAO/Q,GAEXgF,OAAOsB,eAAe04hB,EAAmBx5hB,UAAW,SAAU,CAK1D69B,IAAK,WACD,OAAOpnC,KAAKgjiB,OAAOj5hB,QAEvBuoG,YAAY,EACZC,cAAc,IAOlBwwb,EAAmBx5hB,UAAUuzC,MAAQ,WACjC,IAAImmf,EAAMjjiB,KAEV,OADAijiB,EAAID,OAAShjiB,KAAKgjiB,OACXC,GAMXF,EAAmBx5hB,UAAU+zb,QAAU,WACnC,IAAIh2Z,EAAM,IAAI,EAAStnC,KAAKgjiB,QAC5B,OAAO17f,GAEJy7f,EAxD4B,CAyDrCF,IC5KE,GAAqC,WAOrC,SAASK,EAAoBzhO,EAAc5zR,GAwCvC,GAtCA7tC,KAAKmjiB,WAAa,6BAKlBnjiB,KAAK4qgB,qBAAuB,IAAIjF,EAKhC3lgB,KAAKojiB,YAAa,EAIlBpjiB,KAAKqjiB,aAAc,EAKnBrjiB,KAAKsjiB,WAAa,iEAAmExhC,EAAUI,QAA7E,mJAAiPJ,EAAUI,QAK7QligB,KAAKujiB,sBAAwB,oBAAsBzhC,EAAUI,QAI7DligB,KAAKwjiB,eAAiB,eAAiB1hC,EAAUI,QAIjDligB,KAAKyjiB,aAAe,aAAe3hC,EAAUI,QAK7CligB,KAAK0jiB,WAAa,8EAAqF5hC,EAAUI,QAC5F,OAAjBzgM,QAA0C97T,IAAjB87T,EACzB,MAAM,IAAItuR,MAAM,sCAEpBnzC,KAAK+xD,SAAWlkB,EAChB7tC,KAAK2jiB,WAAaliO,EAClBzhU,KAAK4jiB,aAmbT,OA7aAV,EAAoB35hB,UAAUu4hB,aAAe,SAAU36V,GACnD,IAAI46V,EAAY/hiB,KAAK6jiB,UAAU/B,aAAa36V,GAC5C,OAAO46V,GAKXmB,EAAoB35hB,UAAU2/gB,aAAe,SAAU7B,GAKnD,IADA,IAAIhghB,EAAQ,EACH+C,EAAI,EAAGqgB,EAAM48f,EAAKt9gB,OAAQK,EAAIqgB,EAAKrgB,IAAK,CAC7C,IAAI00c,EAAKuoE,EAAKj9gB,GACV05hB,EAAY9jiB,KAAK8hiB,aAAahjF,GAClCz3c,GAASy8hB,EAEb,OAAOz8hB,GAMX67hB,EAAoB35hB,UAAUq6hB,WAAa,WACvC,IAAIl0B,EAAY,IAAIwgB,GAAUlwhB,KAAK2jiB,WAAW55hB,QAC9C2lgB,EAAU4gB,sBAAsBtwhB,KAAK2jiB,YACrC3jiB,KAAKgzhB,SAAWtjB,EAAUq0B,eAC1B/jiB,KAAK6jiB,UAAY,IAAI,GAAU7jiB,KAAKgzhB,UACpChzhB,KAAKgkiB,WAAahkiB,KAAK6jiB,UAAU1Y,SAErC+X,EAAoB35hB,UAAU63hB,gBAAkB,WAC5CphiB,KAAKikiB,eAAiB,IAAI,EAC1BjkiB,KAAK4hiB,YAAc,IAAI,EACvB5hiB,KAAKkkiB,KAAO,IAAI,EAChBlkiB,KAAKmkiB,eAAiB,IAAI,EAC1BnkiB,KAAKmrhB,QAAU,IAAI,GACnBnrhB,KAAK6jiB,UAAUzC,kBACfphiB,KAAKgkiB,WAAahkiB,KAAK6jiB,UAAU1Y,QACjCnrhB,KAAK88hB,oBAEL98hB,KAAKokiB,WAAapkiB,KAAKqkiB,cACvBrkiB,KAAKskiB,uBACLtkiB,KAAKukiB,aACLvkiB,KAAKwkiB,uBACLxkiB,KAAKykiB,qBAETvB,EAAoB35hB,UAAU2ihB,aAAe,WACzC,OAAOlshB,KAAKikiB,gBAKhBf,EAAoB35hB,UAAUuzhB,kBAAoB,WAC9C,IAAIkH,EAAahkiB,KAAK6jiB,UAAU1Y,QAChCnrhB,KAAKmrhB,QAAQjjB,OAAS87B,EAAWzG,UACjCv9hB,KAAKmrhB,QAAQhjB,QAAU67B,EAAWvG,WAClCz9hB,KAAKmrhB,QAAQlkhB,OAAS+8hB,EAAWzG,UAAYyG,EAAWvG,WAAauG,EAAWtN,QAChF12hB,KAAKmrhB,QAAQxjhB,KAAOq8hB,EAAWhnV,WAC/Bh9M,KAAKmrhB,QAAQqR,eAAiBwH,EAAWxH,eACzCx8hB,KAAKmrhB,QAAQt9e,KAAO7tC,KAAK+xD,SACzB/xD,KAAKmrhB,QAAQwS,WAAa,IAAI,GAAmBqG,EAAWrG,YAC5D39hB,KAAKmrhB,QAAQuL,QAAUsN,EAAWtN,QAClC12hB,KAAKmrhB,QAAQ0S,oBAAsBmG,EAAWnG,oBAC9C79hB,KAAKmrhB,QAAQ2S,sBAAwBkG,EAAWlG,sBAChD99hB,KAAKmrhB,QAAQuZ,OAASV,EAAWU,QAKrCxB,EAAoB35hB,UAAU86hB,YAAc,WAIxC,IAHA,IACI18hB,EADA0pgB,EAAU,GAGLjngB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI0K,EAAQrD,KAAK6sD,MAAsB,GAAhB7sD,KAAK2sD,UAA2B,EACvDizc,GAAWrxgB,KAAKmjiB,WAAWruhB,GAU/B,OARAu8f,GAAW,IAEXA,GAAWrxgB,KAAK6jiB,UAAU1Y,QAAQqR,eAClC70hB,EAAO0pgB,EAAQ33f,WAIf/R,EAAO3H,KAAK2kiB,WAAWh9hB,GAChBA,GAKXu7hB,EAAoB35hB,UAAUo7hB,WAAa,SAAU9uO,GAOjD,IAAIvrR,EAAMurR,EAASpzS,QAAQ,IAAK,OAUhC,OATA6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OACvB6nB,EAAMA,EAAI7nB,QAAQ,IAAK,OAChB6nB,EAAI7nB,QAAQ,IAAK,QAK5ByghB,EAAoB35hB,UAAU+6hB,qBAAuB,WAEjDtkiB,KAAKmkiB,eAAejgQ,YAAa,EACjClkS,KAAKmkiB,eAAer4B,wBAA0B,IAAIW,EAA+BzsgB,MACjFA,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/zf,KAAM,IAAIuqf,EAAQphgB,KAAK4qgB,qBAAqBv5L,OACzGrxU,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB1E,QAAS,IAAI9E,EAAQphgB,KAAK4qgB,qBAAqBpD,eAC5GxngB,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB3E,SAAU,IAAI7E,EAAQphgB,KAAKokiB,aACxFpkiB,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBnD,YAAa,IAAIrG,EAAQphgB,KAAK4qgB,qBAAqBntE,WAChHz9b,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBlD,GAAI,IAAIoF,EAAU,MAC/E9sgB,KAAK2ngB,eAAiB3ngB,KAAK4kiB,uBAC3B5kiB,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBjD,eAAgB,IAAI,EAAmB3ngB,KAAK2ngB,iBACzG,IAAIk9B,EAAa7kiB,KAAK8kiB,mBACtB9kiB,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBhD,cAAei9B,IAKhF3B,EAAoB35hB,UAAUq7hB,qBAAuB,WACjD,IAAIx5K,EAAa,IAAI,EACjB+/J,EAAUnrhB,KAAK6jiB,UAAU1Y,QAmB7B,OAjBA//J,EAAWlnF,YAAa,EACxBknF,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/zf,KAAM,IAAIuqf,EAAQphgB,KAAK4qgB,qBAAqBjD,iBAChGv8I,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/0M,SAAU,IAAIurM,EAAQphgB,KAAKokiB,aAC/Eh5K,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBxzH,MAAO,IAAI01H,EAAU9sgB,KAAK+kiB,uBAC9E35K,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/C,SAAU,EAASyG,cAActugB,KAAKgliB,gBAC1F55K,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB9C,aAAc,IAAIgF,EAAUqe,EAAQwS,WAAW,MACnGvyK,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB7C,MAAO,IAAI+E,EAAUqe,EAAQpjB,QACjF38I,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB5C,YAAa,IAAI8E,EAAUqe,EAAQnjB,cACvF58I,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB3C,UAAW,IAAI6E,EAAUqe,EAAQljB,YACrF78I,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB1C,OAAQ,IAAI4E,EAAUqe,EAAQmS,YAClFlyK,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBzC,QAAS,IAAI2E,EAAUqe,EAAQqS,aACnFpyK,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBxC,QAAS,IAAI0E,EAAUqe,EAAQ/iB,UACnFh9I,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBvC,SAAU,IAAIyE,EAAUqe,EAAQwS,WAAW,MAC/FvyK,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBtC,UAAW,IAAI,EAAmBtogB,KAAK4hiB,cAC3Fx2K,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB5yf,SAAU,IAAI80f,EAAUqe,EAAQwS,WAAW,MAC/FvyK,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBrC,QAAS,IAAIuE,EAAU,IAC3E1hJ,EAAWh6U,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBpC,MAAO,IAAIsE,EAAU,IAClE1hJ,GAMX83K,EAAoB35hB,UAAUg7hB,WAAa,WACvCvkiB,KAAKkkiB,KAAK50B,cAAgB,IAAIW,EAAqBjwgB,OAKvDkjiB,EAAoB35hB,UAAUi7hB,qBAAuB,WAEjDxkiB,KAAKikiB,eAAe//P,YAAa,EACjClkS,KAAKikiB,eAAer4B,wBAA0B,IAAIc,EAA+B1sgB,MACjFA,KAAKikiB,eAAe7yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/zf,KAAM,IAAIuqf,EAAQphgB,KAAK4qgB,qBAAqBv5L,OACzGrxU,KAAKikiB,eAAe7yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB3E,SAAU,IAAI7E,EAAQphgB,KAAKokiB,aACxFpkiB,KAAKikiB,eAAe7yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB1E,QAAS,IAAI9E,EAAQphgB,KAAK4qgB,qBAAqBjC,QAC5G3ogB,KAAKikiB,eAAe7yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBjiM,SAAU,IAAIy4L,EAAQphgB,KAAK4qgB,qBAAqBhC,YAC7G,IAAIq8B,EAAY,IAAI,EAChB15L,EAAY,IAAI,EAAmBvrW,KAAKmkiB,gBAE5Cc,EAAUp3B,QAAS,EACnBo3B,EAAU9whB,IAAIo3V,GACdvrW,KAAKikiB,eAAe7yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB9B,gBAAiBm8B,IAKlF/B,EAAoB35hB,UAAUk7hB,kBAAoB,WAC9CzkiB,KAAK4hiB,YAAYpyB,qBAAuB,IAAIU,EAA4BlwgB,OAM5EkjiB,EAAoB35hB,UAAUu7hB,iBAAmB,WAC7C,IAAID,EAAa,IAAI,EAIrB,OAHAA,EAAWzzf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBnC,SAAU,IAAI6H,EAAU,UAC5Eu0B,EAAWzzf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBhd,SAAU,IAAI0iB,EAAUtwgB,KAAK4qgB,qBAAqBntE,WACtGonG,EAAWzzf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqBlC,WAAY,IAAIoE,EAAU,IACvE+3B,GAKX3B,EAAoB35hB,UAAUuigB,wBAA0B,WACpD,GAAuB,OAAnB9rgB,KAAKkliB,gBAAyCv/hB,IAAnB3F,KAAKkliB,WAA2BlliB,KAAKkliB,UAAUr3f,OAAS,EAAG,CACtF,IAAIxmC,EAAQrH,KAAKmliB,qBACH,OAAV99hB,GACArH,KAAKmkiB,eAAe/yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB71e,EAAG1tB,KAO5E67hB,EAAoB35hB,UAAU+lgB,cAAgB,WAC1CtvgB,KAAKoliB,gBAMTlC,EAAoB35hB,UAAUqigB,wBAA0B,WAC7B,OAAnB5rgB,KAAKkliB,gBAAyCv/hB,IAAnB3F,KAAKkliB,WAA2BlliB,KAAKkliB,UAAUr3f,OAAS,IAAM7tC,KAAKikiB,eAAe/lC,YAAYl+f,KAAK4qgB,qBAAqB/B,YACnJ7ogB,KAAKikiB,eAAe7yf,MAAM7pB,SAASvnB,KAAK4qgB,qBAAqB/B,UAAW,IAAI,EAAmB7ogB,KAAKkkiB,QAO5GhB,EAAoB35hB,UAAUimgB,qBAAuB,WACjDxvgB,KAAKojiB,YAAa,EAClBpjiB,KAAKqliB,uBAKTnC,EAAoB35hB,UAAU47hB,mBAAqB,WAC/C,IAAI1vd,EAAQ,IAAI,EAChB,GAAuB,OAAnBz1E,KAAKkliB,gBAAyCv/hB,IAAnB3F,KAAKkliB,WAA2BlliB,KAAKkliB,UAAUr3f,OAAS,EAAG,CAItF,IAHA,IAAIutf,EAAY,GAEZl+gB,EAAOld,KAAKkliB,UAAUhohB,OACjB9S,EAAI,EAAGA,EAAI8S,EAAKnT,OAAQK,IAAK,CAClC,IAAIk7hB,EAAQpohB,EAAK9S,GACbqnhB,EAAQzxhB,KAAK6jiB,UAAU9F,SAASuH,GAChC7T,EAAMl6C,OAGV6jD,EAAU1mhB,KAAK+8gB,GAKnB2J,EAAU3tf,MAAK,SAAU5S,EAAG/xB,GAAK,OAAO+xB,EAAE/lB,MAAQhM,EAAEgM,SACpD,IAAIywhB,EAAkB,EAClBC,EAAiB,EACjBC,GAAwB,EACxBC,EAAe,IAAI,EAEvB,IAASt7hB,EAAI,EAAGA,EAAIgxhB,EAAUrxhB,OAAQK,IAAK,CACnCqnhB,EAAQ2J,EAAUhxhB,GACjBq7hB,IACDA,GAAwB,EACxBF,EAAkB9T,EAAM38gB,MACxB0whB,EAAiB/T,EAAM38gB,MAAQ,IAE9B0whB,EAAiB,IAAM/T,EAAM38gB,OAAU1K,EAAI,IAAMgxhB,EAAUrxhB,SAAYqxhB,EAAUrxhB,OAAS,IAE3F0rE,EAAMthE,IAAI,IAAI24f,EAAUy4B,IACd,IAANn7hB,GACAqrE,EAAMthE,IAAIuxhB,GAEdH,EAAkB9T,EAAM38gB,MACxB4whB,EAAe,IAAI,GAEvBA,EAAavxhB,IAAI,IAAI24f,EAAU2kB,EAAMpqhB,QACjC+C,EAAI,IAAMgxhB,EAAUrxhB,SACpB0rE,EAAMthE,IAAI,IAAI24f,EAAUy4B,IACxB9vd,EAAMthE,IAAIuxhB,IAEdF,EAAiB/T,EAAM38gB,OAqB/B,OAAO2gE,GAKXytd,EAAoB35hB,UAAU67hB,aAAe,WACzC,GAAuB,OAAnBpliB,KAAKkliB,gBAAyCv/hB,IAAnB3F,KAAKkliB,WAA2BlliB,KAAKkliB,UAAUr3f,OAAS,EAAG,CACtF,IAAI0wf,EAAav+hB,KAAK6jiB,UAAUtC,cAAcvhiB,KAAKkliB,WACnD,GAAI3G,EAAW1wf,OAAS,EAAG,CACvB,IAAI3wB,EAAOqhhB,EAAWrhhB,OAAOuwB,OAEzBqsE,EAAQ58F,EAAK,GACb68F,EAAO78F,EAAKA,EAAKnT,OAAS,GAC1B47hB,EAAa3liB,KAAK4liB,YAAY9rb,GAAO,GAAS95G,KAAK4liB,YAAY7rb,GAAM,GAAS+nZ,EAAUI,QACxFmP,EAAU,GACdA,GAAWrxgB,KAAKsjiB,WAChBjyB,GAAWs0B,EACXt0B,GAAWrxgB,KAAKujiB,sBAEhB,IADA,IAAIsC,EAAY,EACPz7hB,EAAI,EAAGA,EAAI8S,EAAKnT,OAAQK,IAAK,CAChB,IAAdy7hB,IACU,IAANz7hB,IACAingB,GAAWrxgB,KAAKyjiB,cAEpBoC,EAAYp0hB,KAAK2S,IAAI,IAAKlH,EAAKnT,OAASK,GACxCingB,GAAWw0B,EACXx0B,GAAWvP,EAAUE,WACrBqP,GAAWrxgB,KAAKwjiB,gBAEpBqC,GAAa,EACb,IAAIhiiB,EAAMqZ,EAAK9S,GAEfingB,GAAWrxgB,KAAK4liB,YAAY/hiB,GAAK,GAAQ7D,KAAK4liB,YAAY/hiB,GAAK,GAAQ7D,KAAK4liB,YAAYrH,EAAWryf,SAASroC,IAAM,GAAQ,KAG9HwtgB,GAAWrxgB,KAAK0jiB,WAChB1jiB,KAAKkkiB,KAAKh1B,cACVlvgB,KAAKkkiB,KAAKhgQ,YAAa,EACvBlkS,KAAKkkiB,KAAKzxb,MAAM4+Z,MAO5B6xB,EAAoB35hB,UAAU87hB,oBAAsB,WAChD,IAAIzD,EAAc,KAClB5hiB,KAAKkliB,UAAgC,OAAnBlliB,KAAKkliB,gBAAyCv/hB,IAAnB3F,KAAKkliB,UAA2B,IAAI,EAAelliB,KAAKkliB,UACrGlliB,KAAK6jiB,UAAU1C,UAAU,GACzBS,EAAc5hiB,KAAK6jiB,UAAUlC,gBAAgB3hiB,KAAKkliB,WAClDlliB,KAAK4hiB,YAAY1yB,cACjBlvgB,KAAK4hiB,YAAY19P,YAAa,EAC9BlkS,KAAK4hiB,YAAYxyB,WAAWwyB,IAMhCsB,EAAoB35hB,UAAUw7hB,mBAAqB,WAC/C,IAAI3tJ,EAAQ,EACR+zI,EAAUnrhB,KAAK6jiB,UAAU1Y,QAgB7B,OAfIA,EAAQyO,eACRxiJ,GAAS2lI,GAAoB+oB,YAE7B3a,EAAQiS,SACRhmJ,GAAS2lI,GAAoBgpB,SAG7B3uJ,GAAS2lI,GAAoBipB,YAE7B7a,EAAQ8a,WACR7uJ,GAAS2lI,GAAoBsO,QAE7BF,EAAQuZ,SACRttJ,GAAS2lI,GAAoBmpB,WAE1B9uJ,GAMX8rJ,EAAoB35hB,UAAUy7hB,YAAc,WACxC,IAAI3+L,EAAOrmW,KAAK6jiB,UAAU1Y,QAAQuS,QAC9Br2hB,EAAQoK,KAAKyuI,IAAImmN,EAAK/+V,MAAQ++V,EAAK1hW,MACnCsC,EAASwK,KAAKyuI,IAAImmN,EAAKzhW,IAAMyhW,EAAKr/V,QAClCmhhB,EAAY,IAAI/O,GAAW/yK,EAAK1hW,KAAM0hW,EAAKr/V,OAAQK,EAAOJ,GAC9D,OAAOkhhB,GAKX+a,EAAoB35hB,UAAUq8hB,YAAc,SAAUniiB,EAAG0iiB,GACrD,IAAIxkiB,EAAI8B,EAAEiW,SAAS,IAInB,OAHIyshB,IACAxkiB,EAAIA,EAAEg4I,eAEH,QAAQl7G,UAAU,EAAG,EAAI98B,EAAEoI,QAAUpI,EAAI,KAKpDuhiB,EAAoB35hB,UAAU68hB,WAAa,SAAU5kgB,GACjD,GAAa,OAATA,EACA,MAAM,IAAI2R,MAAM,kCAEG,OAAnBnzC,KAAKkliB,gBAAyCv/hB,IAAnB3F,KAAKkliB,YAChClliB,KAAKkliB,UAAY,IAAI,GAEzB,IAAK,IAAI96hB,EAAI,EAAGA,EAAIo3B,EAAKz3B,OAAQK,IAAK,CAClC,IAAI00c,EAAKt9a,EAAKp3B,GACdpK,KAAKkliB,UAAU39gB,SAASu3b,EAAIj/c,OAAOyhC,aAAa,KAkB3B,IAArBthC,KAAKqjiB,aACLrjiB,KAAKmliB,sBAGNjC,EAve6B,GChBpC,GAAqC,WAGrC,SAASmD,IAELrmiB,KAAKsmiB,gBAAkB,CAAC,CAAC,IAAU,KAAW,CAAC,IAAU,IAAU,KAC/D,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,KACrB,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC,IAAU,IAAU,IAAU,IAAU,KACzC,CAAC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hB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,OAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,OAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,OAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,OAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,OAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAE7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAM,MAC7CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,MAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,MAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,MAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,MAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,MAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,MAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,MAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,KAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAyB5hhB,SAAS,MAAO,OAC9CvnB,KAAKmpiB,yBAAy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ACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTf,EAA8B6B,WAAa,CACvC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,I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AU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IA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","file":"js/chunk-vendors.963ff290.js","sourcesContent":["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","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || element.classList.contains('e-date-range-wrapper') || element.classList.contains('e-multiselect'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit, destroy as collisionDestroy } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail && (showAnimation.effect == 'None' ||\n (this.isReact && typeof ctrlObj.content != 'string'))) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.getBoundingClientRect().left) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.getBoundingClientRect().top) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0 && this.animation.close.effect == 'None') {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))\n && !this.isSticky) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n collisionDestroy();\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\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, Touch } 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.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.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\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 if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\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 if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\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-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false', 'aria-label': this.getModuleName()\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 if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\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', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\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', 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 EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, 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 if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\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 EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\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 if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\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 }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\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.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\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) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\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')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\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 {\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 if (e.action === 'tab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n e.preventDefault();\n this.headerTitleElement.focus();\n }\n if (e.action === 'shiftTab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n break;\n }\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.getModuleName() !== 'datetimepicker') && (+this.value !== +this.previousDate)) || ((this.getModuleName() === 'datetimepicker') && (+this.value !== +this.previousDateTime)))) {\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 pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\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 else {\n format = this.formatString;\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 var modifiedValue = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n date = this.globalize.parseDate(modifiedValue, dateOptions);\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 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 === (this.enableMask ? this.maskedDateValue : '')) {\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, id: this.inputElement.id + '_options' });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\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' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { 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' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\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.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\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 if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\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.modelCloseHandler = function (e) {\n this.hide();\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 this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\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 else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\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 >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(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 if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\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) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n _super.prototype.destroy.call(this);\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\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 if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\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 (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !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', isBlur: isBlur\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-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\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) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\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 if (!isNullOrUndefined(this.inputWrapper)) {\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 if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\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 if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\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 Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\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(false)\n ], DatePicker.prototype, \"fullScreenMode\", 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","'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(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\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(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nexport var properties = ['isLazyUpdate', 'plugins', 'cssClass', 'currency', 'currencyCode', 'decimals', 'enablePersistence', 'enableRtl', 'enabled', 'floatLabelType', 'format', 'htmlAttributes', 'locale', 'max', 'min', 'placeholder', 'readonly', 'showClearButton', 'showSpinButton', 'step', 'strictMode', 'validateDecimalOnType', 'value', 'width', 'blur', 'change', 'created', 'destroyed', 'focus'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS NumericTextBox Component\n * ```html\n * \n * ```\n */\nexport var NumericTextBoxComponent = vueDefineComponent({\n name: 'NumericTextBoxComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new NumericTextBox({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n decrement: function (step) {\n return this.ej2Instances.decrement(step);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n getText: function () {\n return this.ej2Instances.getText();\n },\n increment: function (step) {\n return this.ej2Instances.increment(step);\n },\n }\n});\nexport var NumericTextBoxPlugin = {\n name: 'ejs-numerictextbox',\n install: function (Vue) {\n Vue.component(NumericTextBoxPlugin.name, NumericTextBoxComponent);\n }\n};\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\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","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\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 { 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 *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param 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 *\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 *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param ds\n * @param query\n * @param 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 *\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 *\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 *\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 *\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 *\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 *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\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 *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.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 *\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 *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\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 *\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 *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\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 *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.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 *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\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 *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\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 *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\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 *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param 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 *\n * @param {Object} req\n * @param request\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 *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('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.headers.get('Content-Type') &&\n xhr.headers.get('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 *\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 *\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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\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 *\n * @param {DataManager} dm\n * @param {Request} 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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\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 *\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 *\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 *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param 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 if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\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 if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\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 === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\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 *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param 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 *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param 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 *\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 *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param 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.headers.set('Accept', this.options.multipartAccept);\n request.headers.set('DataServiceVersion', '2.0');\n //request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.headers.set('Accept', this.options.accept);\n }\n request.headers.set('DataServiceVersion', '2.0');\n request.headers.set('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param 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.fetchRequest.headers.get('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 *\n * @param {Object} req\n * @param request\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\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 *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\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 *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\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 *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\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.headers.get('Content-Type') && xhr.headers.get('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.headers.get('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 *\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 *\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 *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param 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 *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.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 *\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 *\n * @param {string} e\n * @param e.selects\n * @param e.expands\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 *\n * @param {string} e\n * @param distinctFields\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 *\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 *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} 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.headers.set('Prefer', 'return=representation');\n }\n request.headers.set('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].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 var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\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 *\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.headers.set('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param 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.fetchRequest.headers.get('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 *\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 *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param 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 *\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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\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 * Fetch Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\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 *\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 /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-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 *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param 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 // tslint:disable-next-line:no-string-literal\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 *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param 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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\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 // tslint:disable-next-line:typedef\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 *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param 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 = 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 *\n * @param {string} url\n * @param {Query} query?\n * @param 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 *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var 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 /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param 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 /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\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 *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param 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.headers.set('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.headers.set('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\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","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\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 { 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 ele.classList.remove(CLS_RTL);\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 rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\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 leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\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 if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\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 if (addDisable && removeDisable) {\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, CLS_RTL]);\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","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 TAB = 'tab';\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 // eslint-disable-next-line\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.replace(/\\s+/g, ' ').trim().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 else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\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 keyConfigs.tab = TAB;\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.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\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 case TAB:\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 || e.action === TAB) ? 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 var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else 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 var _this = this;\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 var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[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 var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\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.currentTarget = e.target;\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_1 = 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_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[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 if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\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 if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\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 // eslint-disable-next-line\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 else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\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 && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\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 if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\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 if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, 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 if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\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.replace(/\\s+/g, ' ').trim().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 if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\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 // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n if (cul) {\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 };\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 if (!iconLi) {\n return;\n }\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 if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', 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 args.curData[args.fields.text] : args.curData[args.fields.id];\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.setAttribute('role', 'separator');\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 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 args.item.removeAttribute('aria-level');\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 else {\n ul.setAttribute('role', 'menubar');\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.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n this.isTapHold = this.isTapHold ? false : this.isTapHold;\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 if (isNullOrUndefined(cul)) {\n return;\n }\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 MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\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 if (ul) {\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 }\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 Object.assign(newItem, item);\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.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\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 }\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 if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\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 if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\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 (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\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 && !isNullOrUndefined(idx)) {\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 var item;\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 item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\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 if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\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 (!isNullOrUndefined(idx) && 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 this.rippleFn = null;\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(true)\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 (typeof this.template !== 'function' && 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 this.updateMenuItems(this.items);\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(true)\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","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var MenuItemsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-menu-items';\n }\n }\n});\nexport var MenuItemsPlugin = {\n name: 'e-menu-items',\n install: function (Vue) {\n Vue.component(MenuItemsPlugin.name, MenuItemsDirective);\n }\n};\nexport var MenuItemDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-';\n }\n }\n});\nexport var MenuItemPlugin = {\n name: 'e-',\n install: function (Vue) {\n Vue.component(MenuItemPlugin.name, MenuItemDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { MenuItemsDirective, MenuItemDirective, MenuItemsPlugin, MenuItemPlugin } from './items.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'animationSettings', 'cssClass', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'enableScrolling', 'fields', 'filter', 'hamburgerMode', 'hoverDelay', 'items', 'locale', 'orientation', 'showItemOnClick', 'target', 'template', 'title', 'beforeClose', 'beforeItemRender', 'beforeOpen', 'created', 'onClose', 'onOpen', 'select'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS Menu Component.\n * ```html\n * \n * ```\n */\nexport var MenuComponent = vueDefineComponent({\n name: 'MenuComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Menu({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-menu-items\": \"e-\" },\n tagNameMapper: { \"e-menu-items\": \"e-items\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('ul', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n close: function () {\n return this.ej2Instances.close();\n },\n enableItems: function (items, enable, isUniqueId) {\n return this.ej2Instances.enableItems(items, enable, isUniqueId);\n },\n getItemIndex: function (item, isUniqueId) {\n return this.ej2Instances.getItemIndex(item, isUniqueId);\n },\n hideItems: function (items, isUniqueId) {\n return this.ej2Instances.hideItems(items, isUniqueId);\n },\n insertAfter: function (items, text, isUniqueId) {\n return this.ej2Instances.insertAfter(items, text, isUniqueId);\n },\n insertBefore: function (items, text, isUniqueId) {\n return this.ej2Instances.insertBefore(items, text, isUniqueId);\n },\n open: function () {\n return this.ej2Instances.open();\n },\n removeItems: function (items, isUniqueId) {\n return this.ej2Instances.removeItems(items, isUniqueId);\n },\n setItem: function (item, id, isUniqueId) {\n return this.ej2Instances.setItem(item, id, isUniqueId);\n },\n showItems: function (items, isUniqueId) {\n return this.ej2Instances.showItems(items, isUniqueId);\n },\n }\n});\nexport var MenuPlugin = {\n name: 'ejs-menu',\n install: function (Vue) {\n Vue.component(MenuPlugin.name, MenuComponent);\n Vue.component(MenuItemPlugin.name, MenuItemDirective);\n Vue.component(MenuItemsPlugin.name, MenuItemsDirective);\n }\n};\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n spinnerInnerContainer.setAttribute('aria-disabled', 'true');\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n // eslint-disable-next-line\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n // eslint-disable-next-line\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n }\n else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\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","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-len */\nimport { isNullOrUndefined, closest, extend, EventHandler, setStyleAttribute } 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.isPreventTimezone) {\n event_1 = this_1.processTimezone(event_1);\n }\n for (var level = 0; level < resourceCollection.length; level++) {\n if (event_1[resourceCollection[parseInt(level.toString(), 10)].field] === null || event_1[resourceCollection[parseInt(level.toString(), 10)].field] === 0) {\n event_1[resourceCollection[parseInt(level.toString(), 10)].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, 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, 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.isAllDay]) {\n return event;\n }\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[parseInt(data.toString(), 10)];\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 predicate = this.parent.dataModule.getStartEndQuery(startDate, endDate);\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[parseInt(level.toString(), 10)].field] = resourceTdData.groupOrder[parseInt(level.toString(), 10)];\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 && (typeof (this.parent.eventSettings.sortComparer) === 'function' || typeof (this.parent.eventSettings.sortComparer) === 'string')) {\n appointmentsCollection = this.customSorting(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 && (typeof (this.parent.eventSettings.sortComparer) === 'function' || typeof (this.parent.eventSettings.sortComparer) === 'string')) {\n appointments = this.customSorting(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.customSorting = function (appointments) {\n if (typeof (this.parent.eventSettings.sortComparer) === 'function') {\n return this.parent.eventSettings.sortComparer.call(this.parent, appointments);\n }\n else if (typeof (this.parent.eventSettings.sortComparer) === 'string') {\n var splits = this.parent.eventSettings.sortComparer.split('.');\n var sortFn = void 0;\n if (!isNullOrUndefined(window)) {\n sortFn = window[splits[splits.length - 1]];\n }\n if (sortFn) {\n return sortFn(appointments);\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[parseInt(level.toString(), 10)];\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[parseInt(startIndex.toString(), 10)] !== orgStart);\n var isRight = (slot[parseInt(endIndex.toString(), 10)] !== orgEnd);\n ranges.push(this.cloneEventObject(event, slot[parseInt(startIndex.toString(), 10)], slot[parseInt(endIndex.toString(), 10)], 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[parseInt(i.toString(), 10)], orgStart, orgEnd)) {\n availSlot.push(slot[parseInt(i.toString(), 10)]);\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, false);\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 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, preventFocus) {\n if (this.parent.currentView !== 'MonthAgenda') {\n this.parent.removeSelectedClass();\n }\n addClass(cells, cls.APPOINTMENT_BORDER);\n if (cells.length > 0 && !preventFocus) {\n cells[cells.length - 1].focus();\n }\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.getSelectedCells();\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 if (this.parent.activeEventData && this.parent.activeEventData.element && selectedAppointments.indexOf(this.parent.activeEventData.element) > -1) {\n this.parent.activeEventData.element.focus();\n return;\n }\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[parseInt(i.toString(), 10)].field];\n if (!isNullOrUndefined(resourceData)) {\n resource = this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)];\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 = ((util.getUniversalTime(event[fieldMapping.endTime]) - util.getUniversalTime(event[fieldMapping.startTime]))\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 this.parent.selectedElements = [];\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 _this.parent.selectedElements = [];\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 (eventData) {\n var _this = this;\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n if (eventData.type === 'touchstart') {\n this.activeEventData(eventData, true);\n }\n this.removeSelectedAppointmentClass();\n this.parent.selectedElements = [];\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 var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });\n this.parent.trigger(event.eventDoubleClick, args, function (eventDoubleClickArgs) {\n if (!eventDoubleClickArgs.cancel) {\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 });\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 appIds = datas.map(function (event) { return event[_this.parent.eventFields.id]; });\n var maxId = appIds.reduce(function (a, b) { return Math.max(a, b); });\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 + '\"]')), true);\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, 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 timeZoneDiff = endDate.getTimezoneOffset() - startDate.getTimezoneOffset();\n var duration = (endDate.getTime() - startDate.getTime()) - (timeZoneDiff * 60000);\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(viewDate, 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, 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 date = this.getDSTAdjustedTime(date, clonedObject);\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.getDSTAdjustedTime = function (date, event) {\n var occurDate = date;\n if (this.parent.timezone &&\n (event[this.parent.eventFields.startTimezone] || event[this.parent.eventFields.endTimezone])) {\n var eventOffset = this.getDSTDiff(event[this.parent.eventFields.startTime], new Date(date), event[this.parent.eventFields.startTimezone]);\n var schOffset = this.getDSTDiff(event[this.parent.eventFields.startTime], new Date(date), this.parent.timezone);\n occurDate = (new Date(date).getTime() - (eventOffset - schOffset) * 60000);\n }\n return occurDate;\n };\n EventBase.prototype.getDSTDiff = function (startDate, occurDate, timezone) {\n var startOffset = this.parent.tzModule.offset(new Date(startDate), timezone);\n var occurOffset = this.parent.tzModule.offset(new Date(occurDate), timezone);\n return startOffset - occurOffset;\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[parseInt(i.toString(), 10)];\n });\n if (edited.length === 0) {\n var exDate = getDateFromRecurrenceDateString(exDateString_1[parseInt(i.toString(), 10)]);\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[parseInt(i.toString(), 10)];\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, isResourceEventTemplate) {\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-disabled': 'true'\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' + (isResourceEventTemplate &&\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', { className: cls.SUBJECT_CLASS });\n this.parent.sanitize(eventSubject, appointmentSubject);\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[parseInt(i.toString(), 10)]).getTime() === util.resetTime(new Date(this.parent.minDate)).getTime()) {\n firstDate = i;\n }\n if (util.resetTime(dateRender[parseInt(i.toString(), 10)]).getTime() === util.resetTime(new Date(this.parent.maxDate)).getTime()) {\n lastDate = i;\n }\n }\n filteredDates = dateRender.filter(function (date) { return date >= dateRender[parseInt(firstDate.toString(), 10)] && date <= dateRender[parseInt(lastDate.toString(), 10)]; });\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 if (startTime.getTime() < endTime.getTime()) {\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 }\n return { startDate: startTime, endDate: endTime };\n };\n EventBase.prototype.createEventWrapper = function (type, index) {\n if (type === void 0) { type = ''; }\n if (index === void 0) { index = 0; }\n var tr = createElement('tr');\n var levels = this.parent.activeView.colLevels.slice(-1)[0];\n for (var i = 0, len = levels.length; i < len; i++) {\n var col = levels[parseInt(i.toString(), 10)];\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 + '-' + index.toString(),\n className: cls.APPOINTMENT_WRAPPER_CLASS\n });\n appointmentWrap.appendChild(innerWrapper);\n }\n tr.appendChild(appointmentWrap);\n index = index + 1;\n }\n return tr;\n };\n EventBase.prototype.getPageCoordinates = function (e) {\n if (isNullOrUndefined(e)) {\n return e;\n }\n var eventArgs = e.event;\n return eventArgs && eventArgs.changedTouches ? eventArgs.changedTouches[0] : e.changedTouches ? e.changedTouches[0] :\n eventArgs || e;\n };\n EventBase.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 EventBase.prototype.addCellHeight = function (selector, eventHeight, eventGap, headerHeight, indHeight, isScrollUpdate) {\n if (isScrollUpdate === void 0) { isScrollUpdate = true; }\n if (this.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight) {\n var rows = [].slice.call(this.parent.element.querySelectorAll(selector));\n var weekNumberRows = this.parent.showWeekNumber\n ? [].slice.call(this.parent.element.querySelectorAll('.' + cls.WEEK_NUMBER_WRAPPER_CLASS + ' tbody tr'))\n : [];\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var height = (this.parent.activeViewOptions.maxEventsPerRow *\n ((eventHeight + (this.parent.currentView === 'Month' ? eventGap : 2)))) + headerHeight + indHeight;\n if (weekNumberRows.length > 0) {\n setStyleAttribute(weekNumberRows[rows.indexOf(row)].firstElementChild, { 'height': height + 'px' });\n }\n setStyleAttribute(row.firstElementChild, { 'height': height + 'px' });\n }\n if (!this.parent.enablePersistence && !this.parent.activeViewOptions.allowVirtualScrolling && isScrollUpdate) {\n this.parent.notify(event.contentReady, {});\n }\n }\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","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\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 FLOATTEXTCONTENT: 'e-float-text-content',\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 * Defines the constant attributes for the input element container.\n */\nexport var containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nexport var TEXTBOX_FOCUS = 'e-input-focus';\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 args.element.__eventHandlers = {};\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) {\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)) {\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 createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindFocusEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindBlurEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindInputEventHandler(args) {\n checkInputValue(args.floatLabelType, args.element);\n }\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n var focusHandler = function () { return bindFocusEventHandler(args); };\n var blurHandler = function () { return bindBlurEventHandler(args); };\n var inputHandler = function () { return bindInputEventHandler(args); };\n args.element.addEventListener('focus', focusHandler);\n args.element.addEventListener('blur', blurHandler);\n args.element.addEventListener('input', inputHandler);\n args.element.__eventHandlers[\"inputFocusHandler\"] = { focusHandler: focusHandler };\n args.element.__eventHandlers[\"inputBlurHandler\"] = { blurHandler: blurHandler };\n args.element.__eventHandlers[\"inputHandler\"] = { inputHandler: inputHandler };\n }\n Input.bindInitialEvent = bindInitialEvent;\n function unbindInitialEvent(args) {\n if (!isNullOrUndefined(args.element)) {\n if (!isNullOrUndefined(args.element.__eventHandlers)) {\n if (!isNullOrUndefined(args.element.__eventHandlers[\"inputFocusHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputBlurHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputHandler\"])) {\n var focusHandler_1 = args.element.__eventHandlers[\"inputFocusHandler\"].focusHandler;\n var blurHandler_1 = args.element.__eventHandlers[\"inputBlurHandler\"].blurHandler;\n var inputHandler_1 = args.element.__eventHandlers[\"inputHandler\"].inputHandler;\n args.element.removeEventListener('focus', focusHandler_1);\n args.element.removeEventListener('blur', blurHandler_1);\n args.element.removeEventListener('input', inputHandler_1);\n // Clean up stored bound functions\n delete args.element.__eventHandlers[\"inputFocusHandler\"];\n delete args.element.__eventHandlers[\"inputBlurHandler\"];\n delete args.element.__eventHandlers[\"inputHandler\"];\n }\n }\n }\n }\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\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 if (!isNullOrUndefined(element)) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n }\n function inputEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function blurEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\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 inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\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 var inputFloatHandler = function () { return inputEventHandler(args); };\n var blurFloatHandler = function () { return blurEventHandler(args); };\n // Add event listeners using the defined functions\n args.element.addEventListener('input', inputFloatHandler);\n args.element.addEventListener('blur', blurFloatHandler);\n // Store the event handler functions to remove them later\n args.element.__eventHandlers[\"floatInputHandler\"] = { inputFloatHandler: inputFloatHandler };\n args.element.__eventHandlers[\"floatBlurHandler\"] = { blurFloatHandler: blurFloatHandler };\n }\n else {\n unWireFloatLabelEvents(args);\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function unWireFloatLabelEvents(args) {\n if (!isNullOrUndefined(args.element) && !isNullOrUndefined(args.element.__eventHandlers)\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatInputHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatBlurHandler\"])) {\n var inputFloatHandler = args.element.__eventHandlers[\"floatInputHandler\"].inputFloatHandler;\n var blurFloatHandler = args.element.__eventHandlers[\"floatBlurHandler\"].blurFloatHandler;\n // Remove the event listeners using the defined functions\n args.element.removeEventListener('input', inputFloatHandler);\n args.element.removeEventListener('blur', blurFloatHandler);\n // Clean up stored event handler functions\n delete args.element.__eventHandlers[\"floatInputHandler\"];\n delete args.element.__eventHandlers[\"floatBlurHandler\"];\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, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\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 addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function clickHandler(event, element, button) {\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 function inputHandler(element, button) {\n updateIconState(element.value, button);\n }\n function focusHandler(element, button) {\n updateIconState(element.value, button, element.readOnly);\n }\n function blurHandler(element, button) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n var clickHandlerEvent = function (e) { return clickHandler(e, element, button); };\n button.addEventListener('click', clickHandlerEvent);\n element.__eventHandlers[\"clearClickHandler\"] = { clickHandlerEvent: clickHandlerEvent };\n }\n var inputHandlerEvent = function () { return inputHandler(element, button); };\n var focusHandlerEvent = function () { return focusHandler(element, button); };\n var blurHandlerEvent = function () { return blurHandler(element, button); };\n element.addEventListener('input', inputHandlerEvent);\n element.addEventListener('focus', focusHandlerEvent);\n element.addEventListener('blur', blurHandlerEvent);\n // Store the bound functions to remove them later\n element.__eventHandlers[\"clearInputHandler\"] = { inputHandlerEvent: inputHandlerEvent };\n element.__eventHandlers[\"clearFocusHandler\"] = { focusHandlerEvent: focusHandlerEvent };\n element.__eventHandlers[\"clearBlurHandler\"] = { blurHandlerEvent: blurHandlerEvent };\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function unWireClearBtnEvents(element, button) {\n if (!isNullOrUndefined(element) && !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers[\"clearClickHandler\"])) {\n var clickHandlerEvent = element.__eventHandlers[\"clearClickHandler\"].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers[\"clearClickHandler\"];\n }\n if (!isNullOrUndefined(element.__eventHandlers[\"clearInputHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearFocusHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearBlurHandler\"])) {\n var inputHandlerEvent = element.__eventHandlers[\"clearInputHandler\"].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers[\"clearFocusHandler\"].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers[\"clearBlurHandler\"].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers[\"clearInputHandler\"];\n delete element.__eventHandlers[\"clearFocusHandler\"];\n delete element.__eventHandlers[\"clearBlurHandler\"];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) { button = null; }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n }\n privateInputObj = null;\n }\n Input.destroy = destroy;\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 (floatLabelType === 'Auto' && value === '') {\n calculateWidth(element, element.parentElement);\n }\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 && !isNullOrUndefined(parentElement) && 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 placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\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 calculateWidth(container.firstChild, container);\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('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : 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('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('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': '', '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 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 if (type !== 'Never') {\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 createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\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 }\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 else {\n unWireFloatLabelEvents(args);\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\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[parseInt(i.toString())].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[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].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 if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\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 var element = result[parseInt(i.toString())];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\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 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 function updateHTMLAttributesToElement(htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) < 0) {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;\n function updateCssClass(newClass, oldClass, container) {\n setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));\n }\n Input.updateCssClass = updateCssClass;\n function getInputValidClassList(inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n Input.getInputValidClassList = getInputValidClassList;\n function updateHTMLAttributesToWrapper(htmlAttributes, container) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + htmlAttributes[\"\" + key]) :\n htmlAttributes[\"\" + key];\n container.setAttribute(key, setStyle);\n }\n else {\n container.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;\n function isBlank(inputString) {\n return (!inputString || /^\\s*$/.test(inputString));\n }\n Input.isBlank = isBlank;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { DateTimePicker } from '@syncfusion/ej2-calendars';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enableMask', 'enablePersistence', 'enableRtl', 'enabled', 'firstDayOfWeek', 'floatLabelType', 'format', 'fullScreenMode', 'htmlAttributes', 'isMultiSelection', 'keyConfigs', 'locale', 'maskPlaceholder', 'max', 'min', 'openOnFocus', 'placeholder', 'readonly', 'scrollTo', 'serverTimezoneOffset', 'showClearButton', 'showTodayButton', 'start', 'step', 'strictMode', 'timeFormat', 'value', 'values', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DateTimePicker Component.\n * ```html\n * \n * ```\n */\nexport var DateTimePickerComponent = vueDefineComponent({\n name: 'DateTimePickerComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DateTimePicker({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addDate: function (dates) {\n return this.ej2Instances.addDate(dates);\n },\n createContent: function () {\n return this.ej2Instances.createContent();\n },\n currentView: function () {\n return this.ej2Instances.currentView();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n hide: function (e) {\n return this.ej2Instances.hide(e);\n },\n navigateTo: function (view, date) {\n return this.ej2Instances.navigateTo(view, date);\n },\n removeDate: function (dates) {\n return this.ej2Instances.removeDate(dates);\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n show: function (type, e) {\n return this.ej2Instances.show(type, e);\n },\n toggle: function (e) {\n return this.ej2Instances.toggle(e);\n },\n }\n});\nexport var DateTimePickerPlugin = {\n name: 'ejs-datetimepicker',\n install: function (Vue) {\n Vue.component(DateTimePickerPlugin.name, DateTimePickerComponent);\n }\n};\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\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 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\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","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input, containerAttributes, TEXTBOX_FOCUS } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\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 (!Input.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.updateHTMLAttributesToElement();\n this.updateHTMLAttributesToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : 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 Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\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 Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\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 Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textboxWrapper.container);\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.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' && attributeName !== 'class') {\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 else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttributesToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\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) && containerAttributes.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) && this.element.value !== '') {\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 = Input.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.updateHTMLAttributesToWrapper();\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 if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textboxWrapper.container);\n };\n TextBox.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.respectiveElement ? this.respectiveElement : (this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea : this.element));\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, 'keydown', this.keydownHandler, 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 if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input')) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\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) && this.floatLabelType !== 'Always') {\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.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.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === \"\") && (this.value === null || this.value === \"\") && this.respectiveElement.value === \"\")) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\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 if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\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 //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\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 if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\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, 'keydown', this.keydownHandler);\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.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\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-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 Input.destroy({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\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","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nexport var properties = ['isLazyUpdate', 'plugins', 'autocomplete', 'cssClass', 'enablePersistence', 'enableRtl', 'enabled', 'floatLabelType', 'htmlAttributes', 'locale', 'multiline', 'placeholder', 'readonly', 'showClearButton', 'type', 'value', 'width', 'blur', 'change', 'created', 'destroyed', 'focus', 'input'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS TextBox Component\n * ```html\n * \n * ```\n */\nexport var TextBoxComponent = vueDefineComponent({\n name: 'TextBoxComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new TextBox({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addAttributes: function (attributes) {\n return this.ej2Instances.addAttributes(attributes);\n },\n addIcon: function (position, icons) {\n return this.ej2Instances.addIcon(position, icons);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n removeAttributes: function (attributes) {\n return this.ej2Instances.removeAttributes(attributes);\n },\n }\n});\nexport var TextBoxPlugin = {\n name: 'ejs-textbox',\n install: function (Vue) {\n Vue.component(TextBoxPlugin.name, TextBoxComponent);\n }\n};\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","import { Draggable, Droppable, EventHandler } 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, getParsedFieldID, isComplexField, findCellIndex, resetRowIndex } from '../base/util';\nimport { resetCachedRowIndex, groupReorderRowObject } from '../base/util';\nimport { generateExpandPredicates, getPredicates, capitalizeFirstLetter } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\nimport { RowRenderer } from '../renderer/row-renderer';\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 /** @hidden */\n this.groupSortFocus = false;\n /** @hidden */\n this.groupTextFocus = false;\n /** @hidden */\n this.groupCancelFocus = false;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.isAppliedCaptionRowBorder = 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[parseInt(c.toString(), 10)]);\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 ? column.headerText : undefined });\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 if (!this.parent.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n }\n if (!(e.column.allowGrouping && (parentsUntil(e.target, 'e-groupdroparea') ||\n (parentsUntil(e.target, 'e-headercell') &&\n parentsUntil(e.target, 'e-headercell').isEqualNode(this.parent.getColumnHeaderByField(e.column.field))))) &&\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.target && parentsUntil(e.target, 'e-groupheadercell') && (e.action === 'tab' || e.action === 'shiftTab')) {\n var focusableGroupedItems = this.getFocusableGroupedItems();\n if ((e.action === 'tab' && e.target === focusableGroupedItems[focusableGroupedItems.length - 1])\n || (e.action === 'shiftTab' && e.target === focusableGroupedItems[0])) {\n return;\n }\n for (var i = 0; i < focusableGroupedItems.length; i++) {\n if (e.target === focusableGroupedItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n focusableGroupedItems[parseInt(index.toString(), 10)].focus();\n return;\n }\n }\n }\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'downArrow') {\n e.action = 'ctrlDownArrow';\n }\n else if (e.action === 'upArrow') {\n e.action = 'ctrlUpArrow';\n }\n }\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\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 e.preventDefault();\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[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-detailrow')) {\n grpRow = rows[parseInt(i.toString(), 10)];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n e.preventDefault();\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n e.preventDefault();\n this.collapseAll();\n break;\n case 'enter':\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n e.preventDefault();\n this.applySortFromTarget(e.target);\n break;\n }\n else if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n e.preventDefault();\n this.unGroupFromTarget(e.target);\n break;\n }\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null) ||\n parentsUntil(e.target, 'e-pager') || parentsUntil(e.target, 'e-toolbar')) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\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 if (element.children.length && (element.children[0].classList.contains('e-icon-grightarrow') ||\n element.children[0].classList.contains('e-icon-gdownarrow'))) {\n e.preventDefault();\n this.expandCollapseRows(row);\n }\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 e.preventDefault();\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 /**\n * @returns {Element[]} - Return the focusable grouping items\n * @hidden */\n Group.prototype.getFocusableGroupedItems = function () {\n var focusableGroupedItems = [];\n if (this.groupSettings.columns.length) {\n var focusableGroupedHeaderItems = this.element.querySelectorAll('.e-groupheadercell');\n for (var i = 0; i < focusableGroupedHeaderItems.length; i++) {\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-grouptext'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-groupsort'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-ungroupbutton'));\n }\n }\n return focusableGroupedItems;\n };\n Group.prototype.wireEvent = function () {\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n EventHandler.add(this.parent.element, 'auxclick', this.auxilaryclickHandler, this);\n };\n Group.prototype.unWireEvent = function () {\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n EventHandler.remove(this.parent.element, 'auxclick', this.auxilaryclickHandler);\n };\n Group.prototype.onFocusIn = function (e) {\n if (this.parent.focusModule.currentInfo && this.parent.focusModule.currentInfo.element) {\n removeClass([this.parent.focusModule.currentInfo.element, this.parent.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.parent.focusModule.currentInfo.element.tabIndex = -1;\n }\n this.addOrRemoveFocus(e);\n };\n Group.prototype.onFocusOut = function (e) {\n this.addOrRemoveFocus(e);\n };\n Group.prototype.addOrRemoveFocus = function (e) {\n if (e.target.classList.contains('e-groupdroparea') || e.target.classList.contains('e-grouptext')\n || e.target.classList.contains('e-groupsort')\n || e.target.classList.contains('e-ungroupbutton')) {\n var target = e.target.classList.contains('e-grouptext') ?\n e.target.parentElement.parentElement : e.target;\n if (e.type === 'focusin') {\n this.parent.focusModule.currentInfo.element = e.target;\n this.parent.focusModule.currentInfo.elementToFocus = e.target;\n addClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = 0;\n }\n else {\n removeClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = -1;\n }\n }\n };\n Group.prototype.clickHandler = function (e) {\n if (e.target.classList.contains('e-grouptext')) {\n this.groupTextFocus = true;\n }\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n }\n if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n }\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')) {\n e.preventDefault();\n }\n var trgtEle = parentsUntil(e.target, 'e-recordplusexpand') ||\n parentsUntil(e.target, 'e-recordpluscollapse');\n if (trgtEle && (trgtEle.children[0].classList.contains('e-icon-gdownarrow') || trgtEle.children[0].classList.contains('e-icon-grightarrow'))) {\n this.expandCollapseRows(e.target);\n }\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.auxilaryclickHandler = function (e) {\n if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')\n && (e.button === 1)) {\n e.preventDefault();\n }\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 = [].slice.call(this.parent.getContentTable().querySelector(literals.tbody).children);\n if (this.parent.editSettings.showAddNewRow) {\n if (rowNodes[0].classList.contains('e-addedrow')) {\n rowNodes.shift();\n }\n else if (rowNodes[rowNodes.length - 1].classList.contains('e-addedrow')) {\n rowNodes.pop();\n }\n }\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 trgt.firstElementChild.setAttribute('title', 'expanded');\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 if ((this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length ||\n this.parent.searchSettings.key.length) && this.parent.getContent().firstElementChild.scrollTop === 0) {\n this.parent.contentModule.isTop = true;\n }\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\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 trgt.firstElementChild.setAttribute('title', 'collapsed');\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\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 var cacheStartIdx = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings &&\n gObj.infiniteScrollSettings.enableCache && rowObjs.length !== rowNodes.length ?\n Array.from(rowNodes).indexOf(trgt.parentElement) : undefined;\n for (var i = startIdx; i < rowObjs.length; i++) {\n if (i > startIdx && rowObjs[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDetailRow) {\n var visible = rowObjs[i - 1].isExpand && rowObjs[i - 1].visible;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = visible ? '' : 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = visible ? '' : 'none';\n }\n }\n else if (rowsState[rowObjs[parseInt(i.toString(), 10)].parentUid] === false) {\n rowObjs[parseInt(i.toString(), 10)].visible = false;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = 'none';\n }\n }\n else {\n if (!(rowObjs[parseInt(i.toString(), 10)].isDataRow || rowObjs[parseInt(i.toString(), 10)].isCaptionRow\n || rowObjs[parseInt(i.toString(), 10)].isDetailRow || rowObjs[parseInt(i.toString(), 10)].isAggregateRow)) {\n var visible = rowObjs[parseInt(i.toString(), 10)].cells\n .some(function (cell) { return cell.isDataCell && cell.visible; });\n if (visible === rowObjs[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n }\n rowObjs[parseInt(i.toString(), 10)].visible = true;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = '';\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].classList.remove('e-hide');\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = '';\n rowNodes[parseInt(i.toString(), 10)].classList.remove('e-hide');\n }\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowsState[rowObjs[parseInt(i.toString(), 10)].uid] = rowObjs[parseInt(i.toString(), 10)].isExpand\n && rowObjs[parseInt(i.toString(), 10)].visible;\n }\n if (!isNullOrUndefined(cacheStartIdx)) {\n cacheStartIdx++;\n }\n }\n this.lastCaptionRowBorder();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n if (!this.parent.enableInfiniteScrolling || !this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.captionActionComplete, { isCollapse: isHide, parentUid: uid });\n }\n }\n };\n /**\n * The function is used to set border in last row\n *\n * @returns { void }\n * @hidden\n */\n Group.prototype.lastCaptionRowBorder = function () {\n var table = this.parent.getContentTable();\n var clientHeight = this.parent.getContent().clientHeight;\n if ((!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) ||\n this.parent.groupSettings.enableLazyLoading) {\n if (table.scrollHeight < clientHeight || this.isAppliedCaptionRowBorder) {\n if (this.isAppliedCaptionRowBorder || table.querySelector('.e-lastrowcell')) {\n var borderCells = table.querySelectorAll('.e-lastrowcell');\n for (var i = 0, len = borderCells.length; i < len; i++) {\n removeClass([borderCells[parseInt(i.toString(), 10)]], 'e-lastrowcell');\n }\n this.isAppliedCaptionRowBorder = false;\n }\n var rowNodes = this.parent.getContentTable().querySelector(literals.tbody).children;\n var lastRow = rowNodes[rowNodes.length - 1];\n if (lastRow.style.display !== 'none' && !lastRow.classList.contains('e-groupcaptionrow')) {\n if (table.scrollHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n }\n }\n else {\n for (var i = rowNodes.length - 1, len = 0; i > len; i--) {\n if (rowNodes[parseInt(i.toString(), 10)].style.display !== 'none'\n && rowNodes[parseInt(i.toString(), 10)].classList.contains('e-groupcaptionrow')) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelector('.e-recordpluscollapse')) {\n addClass(rowNodes[parseInt(i.toString(), 10)].childNodes, 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n break;\n }\n }\n }\n }\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n 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[parseInt(i.toString(), 10)].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[parseInt(i.toString(), 10)].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n if (isExpand) {\n row.className = 'e-recordplusexpand';\n row.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n row.setAttribute('aria-expanded', 'true');\n row.firstElementChild.setAttribute('title', 'expanded');\n }\n else {\n row.className = 'e-recordpluscollapse';\n row.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n row.setAttribute('aria-expanded', 'false');\n row.firstElementChild.setAttribute('title', 'collapsed');\n }\n }\n if (!(rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowObjs[parseInt(i.toString(), 10)].isExpand = isExpand ? true : false;\n }\n }\n this.parent.updateVisibleExpandCollapseRows();\n this.lastCaptionRowBorder();\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 this.wireEvent();\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 || this.parent.rowRenderingMode === 'Vertical') {\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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].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': this.l10n.getConstant('GroupedDrag') }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1' }\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': this.l10n.getConstant('UnGroupAria') }\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': this.l10n.getConstant('GroupedSortIcon') + column.headerText, role: 'button' }\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': this.l10n.getConstant('UnGroupIcon') + column.headerText, role: 'button' },\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 getParsedFieldID(getComplexFieldID(field)) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + getParsedFieldID(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 var focusModule = this.parent.focusModule;\n focusModule.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (focusModule.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(focusModule.active.matrix.matrix, firstContentCellIndex, true);\n }\n focusModule.active.matrix.current = firstContentCellIndex;\n var row = focusModule.active.getTable().rows[focusModule.active.matrix.current[0]];\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n else {\n focusModule.focus();\n }\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': this.l10n.getConstant('GroupSeperator') },\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[parseInt(i.toString(), 10)].classList.contains('e-emptycell')) || (headers[parseInt(i.toString(), 10)].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[parseInt(i.toString(), 10)].getElementsByClassName('e-grptogglebtn').length) {\n remove(headers[parseInt(i.toString(), 10)].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[parseInt(i.toString(), 10)].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' + (this.groupSettings.columns.indexOf(column.field) > -1 ?\n 'e-toggleungroup e-icon-ungroup' : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1',\n 'aria-label': isNullOrUndefined(this.l10n) ? this.parent.localeObj.getConstant('GroupButton')\n : this.l10n.getConstant('GroupButton') }\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 if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\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[parseInt(j.toString(), 10)].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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)]);\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[parseInt(i.toString(), 10)]) === -1) {\n this.parent.getColumnByField(columns[parseInt(i.toString(), 10)]).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 this.parent.headerModule.refreshUI();\n }\n else {\n this.element.style.display = 'none';\n }\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\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[parseInt(i.toString(), 10)]).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[parseInt(i.toString(), 10)].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.unWireEvent();\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[parseInt(i.toString(), 10)]);\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[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].field) && this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).getElementsByClassName('e-groupsort').length) {\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[parseInt(i.toString(), 10)]).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 if (this.parent.groupSettings.enableLazyLoading) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.updateLazyLoadGroupAggregates(editedData);\n }\n return;\n }\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[parseInt(i.toString(), 10)];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[parseInt(i.toString(), 10)] ? summaryRows[parseInt(i.toString(), 10)].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregates = function (data, remoteResult) {\n var _this = this;\n var groupCaptionTemplates = this.getGroupAggregateTemplates(true);\n var groupFooterTemplates = this.getGroupAggregateTemplates(false);\n if (!groupCaptionTemplates.length && !groupFooterTemplates.length) {\n return;\n }\n var gObj = this.parent;\n var isRemote = gObj.getDataModule().isRemote();\n var updatedData = data[0];\n var editedRow = data.row;\n var groupedCols = gObj.groupSettings.columns;\n var groupLazyLoadRenderer = gObj.contentModule;\n var groupCache = groupLazyLoadRenderer.getGroupCache();\n var currentPageGroupCache = groupCache[gObj.pageSettings.currentPage];\n var result = remoteResult ? remoteResult : [];\n var _loop_1 = function (i) {\n var groupField = groupedCols[parseInt(i.toString(), 10)];\n var groupKey = updatedData[\"\" + groupField];\n var groupCaptionRowObject = this_1.getGroupCaptionRowObject(editedRow, groupedCols.length - i);\n if (isRemote && result.length) {\n if (i !== 0) {\n var prevGroupField = groupedCols[i - 1];\n var prevGroupKey_1 = updatedData[\"\" + prevGroupField];\n result = result.find(function (data) {\n return data.key === prevGroupKey_1;\n }).items;\n }\n this_1.updateLazyLoadGroupAggregatesRow(result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n else {\n var query = gObj.renderModule.data.generateQuery();\n if (i !== 0) {\n var currentLevelCaptionRowObjects = currentPageGroupCache.filter(function (data) {\n return data.isCaptionRow && data.parentUid === groupCaptionRowObject.parentUid;\n });\n var index = currentLevelCaptionRowObjects.indexOf(groupCaptionRowObject);\n var fields = gObj.groupSettings.columns.slice(0, i).reverse();\n var keys = fields.map(function (data) {\n return updatedData[\"\" + data];\n });\n var pred = generateExpandPredicates(fields, keys, groupLazyLoadRenderer);\n var predicateList = getPredicates(pred);\n var lazyLoad = { level: i, skip: index, take: 1, where: predicateList };\n query.lazyLoad.push({ key: 'onDemandGroupInfo', value: lazyLoad });\n }\n gObj.renderModule.data.getData({}, query).then(function (e) {\n if (isRemote) {\n _this.updateLazyLoadGroupAggregates(data, e.result);\n }\n else {\n _this.updateLazyLoadGroupAggregatesRow(e.result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n if (i === groupedCols.length - 1 || isRemote) {\n _this.destroyRefreshGroupCaptionFooterTemplate();\n }\n }).catch(function (e) { return gObj.renderModule.dataManagerFailure(e, { requestType: 'grouping' }); });\n if (isRemote) {\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < groupedCols.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Group.prototype.destroyRefreshGroupCaptionFooterTemplate = function () {\n var gObj = this.parent;\n if (gObj.isAngular || gObj.isReact || gObj.isVue) {\n gObj.destroyTemplate(['groupCaptionTemplate', 'groupFooterTemplate']);\n }\n gObj.refreshGroupCaptionFooterTemplate();\n gObj.removeMaskRow();\n gObj.hideSpinner();\n };\n Group.prototype.updateLazyLoadGroupAggregatesRow = function (result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates) {\n var updatedGroupCaptionData = result.find(function (data) {\n return data.key === groupKey;\n });\n if (groupCaptionTemplates.length) {\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupCaptionRowObject, groupCaptionTemplates);\n }\n if (groupFooterTemplates.length) {\n var groupFooterRowObject = currentPageGroupCache.find(function (data) {\n return data.isAggregateRow && data.parentUid === groupCaptionRowObject.uid;\n });\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupFooterRowObject, groupFooterTemplates);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregatesCell = function (updatedGroupCaptionData, captionFooterRowObject, captionFooterTemplates) {\n var prevCaptionFooterData = captionFooterRowObject.data;\n var updatedGroupCaptionDataAggregates = updatedGroupCaptionData.aggregates;\n if (captionFooterRowObject.isCaptionRow) {\n prevCaptionFooterData.aggregates = updatedGroupCaptionDataAggregates;\n }\n for (var i = 0; i < captionFooterTemplates.length; i++) {\n var template = captionFooterTemplates[parseInt(i.toString(), 10)];\n var key = template.field + ' - ' + template.type;\n var fieldData = prevCaptionFooterData[template.field];\n fieldData[\"\" + key] = updatedGroupCaptionDataAggregates[\"\" + key];\n fieldData[capitalizeFirstLetter(template.type)] = updatedGroupCaptionDataAggregates[\"\" + key];\n if (fieldData[template.type]) {\n fieldData[template.type] = updatedGroupCaptionDataAggregates[\"\" + key];\n }\n }\n };\n Group.prototype.getGroupCaptionRowObject = function (element, groupCaptionIndex) {\n var gObj = this.parent;\n var uid = element.getAttribute('data-uid');\n var parentCaptionRowObject = gObj.getRowObjectFromUID(uid);\n for (var i = 0; i < groupCaptionIndex; i++) {\n parentCaptionRowObject = gObj.getRowObjectFromUID(parentCaptionRowObject.parentUid);\n }\n return parentCaptionRowObject;\n };\n /**\n * @param { boolean } groupCaptionTemplate - Defines template either group caption or footer\n * @returns { Object[] } - Returns template array\n * @hidden\n */\n Group.prototype.getGroupAggregateTemplates = function (groupCaptionTemplate) {\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n if ((groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupCaptionTemplate)\n || (!groupCaptionTemplate && row.columns[parseInt(k.toString(), 10)].groupFooterTemplate)) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n }\n return aggregates;\n };\n /**\n * @param { Row } fromRowObj - Defines group key changed Data row object.\n * @param { Row } toRowObj - Defines group key setting reference Data row object.\n * @returns { void }\n * @hidden\n */\n Group.prototype.groupedRowReorder = function (fromRowObj, toRowObj) {\n var dragRow = this.parent.getRowElementByUID(fromRowObj.uid);\n var dropRow = this.parent.getRowElementByUID(toRowObj.uid);\n var dropArgs = {\n rows: [dragRow], target: dropRow, fromIndex: fromRowObj.index, dropIndex: toRowObj.index\n };\n if (!isNullOrUndefined(fromRowObj) && !isNullOrUndefined(toRowObj) &&\n fromRowObj.parentUid !== toRowObj.parentUid) {\n if (dropRow) {\n if (dropRow['style'].display === 'none') {\n dragRow['style'].display = 'none';\n }\n if (dropArgs.fromIndex > dropArgs.dropIndex) {\n this.parent.getContentTable().querySelector(literals.tbody).insertBefore(dragRow, dropRow);\n }\n else {\n this.parent.getContentTable().querySelector(literals.tbody).insertBefore(dragRow, dropRow.nextSibling);\n }\n }\n else {\n remove(dragRow);\n }\n this.groupReorderHandler(fromRowObj, toRowObj);\n var tr = [].slice.call(this.parent.getContentTable().getElementsByClassName(literals.row));\n groupReorderRowObject(this.parent, dropArgs, tr, toRowObj);\n if (this.parent.enableVirtualization) {\n resetCachedRowIndex(this.parent);\n }\n else {\n resetRowIndex(this.parent, this.parent.getRowsObject().filter(function (data) { return data.isDataRow; }), tr);\n }\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n };\n Group.prototype.groupReorderHandler = function (dragRowObject, dropRowObject) {\n var gObj = this.parent;\n var dragRowObjectData = dragRowObject.data;\n var dropRowObjectData = dropRowObject.data;\n var groupAggregateTemplate = gObj['groupModule'].getGroupAggregateTemplates(false);\n var dropParentRowObject = gObj.getRowObjectFromUID(dropRowObject.parentUid);\n var dragParentRowObject = gObj.getRowObjectFromUID(dragRowObject.parentUid);\n var dropRootParentRowObjects = [dropParentRowObject];\n var dragRootParentRowObjects = [dragParentRowObject];\n var groupColumns = gObj.groupSettings.columns;\n for (var j = 0; j < groupColumns.length; j++) {\n dragRowObjectData[groupColumns[parseInt(j.toString(), 10)]] = dropRowObjectData[groupColumns[parseInt(j.toString(), 10)]];\n if (j > 0) {\n dropRootParentRowObjects.push(gObj.getRowObjectFromUID(dropRootParentRowObjects[j - 1].parentUid));\n dragRootParentRowObjects.push(gObj.getRowObjectFromUID(dragRootParentRowObjects[j - 1].parentUid));\n }\n }\n dragRowObject.parentUid = dropRowObject.parentUid;\n dragRowObject.visible = dropRowObject.visible;\n dragRowObject['parentGid'] = dropRowObject['parentGid'];\n if (dragRowObject.changes !== dragRowObjectData) {\n dragRowObject.changes = dragRowObjectData;\n }\n var updatedCurrentViewData = this.iterateGroupAggregates([{ dragRowObjects: dragRootParentRowObjects,\n dropRowObjects: dropRootParentRowObjects }]);\n var updatedDragCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'].toString()));\n });\n var updatedDropCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'].toString()));\n });\n updatedCurrentViewData = [];\n if (!isNullOrUndefined(updatedDragCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDragCurrentViewData[0]);\n }\n if (!isNullOrUndefined(updatedDropCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDropCurrentViewData[0]);\n }\n var currentViewData = gObj.currentViewData;\n for (var i = 0; i < currentViewData.length; i++) {\n if (isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (!isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDragCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDragCurrentViewData[0];\n }\n else if (!isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDropCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDropCurrentViewData[0];\n }\n }\n var updatedRowObject = this.groupGenerator.generateRows(updatedCurrentViewData, {});\n var dragRootParentAggregateRowObject = [];\n var dropRootParentAggregateRowObject = [];\n for (var i = 0; i < dragRootParentRowObjects.length; i++) {\n dragRootParentAggregateRowObject\n .push.apply(dragRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dragRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n for (var i = 0; i < dropRootParentRowObjects.length; i++) {\n dropRootParentAggregateRowObject\n .push.apply(dropRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dropRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n dragRootParentRowObjects.push.apply(dragRootParentRowObjects, dragRootParentAggregateRowObject);\n dropRootParentRowObjects.push.apply(dropRootParentRowObjects, dropRootParentAggregateRowObject);\n this.updatedRowObjChange(dragRootParentRowObjects, updatedRowObject, groupAggregateTemplate, true);\n this.updatedRowObjChange(dropRootParentRowObjects, updatedRowObject, groupAggregateTemplate);\n this.groupReorderRefreshHandler(dragRootParentRowObjects);\n this.groupReorderRefreshHandler(dropRootParentRowObjects);\n };\n Group.prototype.updatedRowObjChange = function (rootParentRowObjects, updatedRowObjects, groupAggregateTemplate, isDraggedRow) {\n var gObj = this.parent;\n var rowObjects = gObj.getRowsObject();\n var cache = {};\n var virtualCacheRowObjects = [];\n if (gObj.enableVirtualization) {\n cache = gObj.contentModule['vgenerator'].cache;\n virtualCacheRowObjects = gObj.vcRows;\n }\n for (var i = 0; i < rootParentRowObjects.length; i++) {\n var keyPresent = false;\n var parentRowObject = rootParentRowObjects[parseInt(i.toString(), 10)];\n for (var j = 0; j < updatedRowObjects.length; j++) {\n var updatedRowObject = updatedRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(updatedRowObject) && !isNullOrUndefined(parentRowObject.data['key']) &&\n !isNullOrUndefined(updatedRowObject.data['key']) && ((parentRowObject.data['key'] ===\n updatedRowObject.data['key'] || (parentRowObject.data['key'] instanceof Date &&\n parentRowObject.data['key'].toString() === updatedRowObject.data['key'].toString())))) {\n var isParentKeyPresent = true;\n var nextParentObject = rootParentRowObjects[parseInt((i + 1).toString(), 10)];\n if (isDraggedRow && nextParentObject && !nextParentObject.isAggregateRow) {\n var key = nextParentObject.data['key'].toString();\n var field = nextParentObject.data['field'];\n var groupedData = updatedRowObject.data['items'].records ?\n updatedRowObject.data['items'].records : updatedRowObject.data['items'];\n if (groupedData && groupedData.length && groupedData[0][\"\" + field] &&\n groupedData[0][\"\" + field].toString() !== key) {\n isParentKeyPresent = false;\n }\n }\n if (!isParentKeyPresent && isDraggedRow) {\n continue;\n }\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = ['gSummary'];\n updatedRowObjects.splice(j, 1);\n j--;\n keyPresent = true;\n break;\n }\n else if (parentRowObject.isAggregateRow &&\n updatedRowObject.isAggregateRow) {\n for (var l = 0; l < groupAggregateTemplate.length; l++) {\n if (this.evaluateGroupAggregateValueChange(parentRowObject, updatedRowObject, groupAggregateTemplate[parseInt(l.toString(), 10)])) {\n var index = rowObjects.indexOf(parentRowObject);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObject.data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(parentRowObject);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data = updatedRowObject.data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] = updatedRowObject['gSummary'];\n }\n }\n parentRowObject.data = updatedRowObject.data;\n parentRowObject['gSummary'] = updatedRowObject['gSummary'];\n keyPresent = true;\n break;\n }\n }\n if (keyPresent) {\n break;\n }\n }\n }\n if (!keyPresent) {\n var removeElem = gObj.getRowElementByUID(parentRowObject.uid);\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n rowObjects.splice(rowObjects.indexOf(parentRowObject), 1);\n if (gObj.enableVirtualization) {\n virtualCacheRowObjects.splice(virtualCacheRowObjects.indexOf(parentRowObject), 1);\n for (var k = 1; k <= Object.keys(cache).length; k++) {\n var vcIndex = cache[parseInt(k.toString(), 10)].indexOf(parentRowObject);\n if (vcIndex !== -1) {\n cache[parseInt(k.toString(), 10)].splice([parseInt(vcIndex.toString(), 10)], 1);\n }\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n }\n }\n };\n Group.prototype.groupReorderRefreshHandler = function (parentRowObjects) {\n var gObj = this.parent;\n var row = new RowRenderer(gObj['serviceLocator'], null, gObj);\n var columns = gObj.getColumns();\n for (var j = 0; j < parentRowObjects.length; j++) {\n var rowObject = parentRowObjects[parseInt(j.toString(), 10)];\n if (!isNullOrUndefined(rowObject.uid) &&\n !isNullOrUndefined(gObj.getRowElementByUID(rowObject.uid))) {\n row.refresh(rowObject, columns, false);\n }\n }\n };\n Group.prototype.getGroupParentFooterAggregateRowObject = function (parentUid) {\n var rowObjects = this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache &&\n this.parent.groupSettings.columns.length ? this.parent.contentModule['rows'] : this.parent.getRowsObject();\n var parentFooterAggregates = [];\n for (var i = 0; i < rowObjects.length; i++) {\n var rowObject = rowObjects[parseInt(i.toString(), 10)];\n if (rowObject.parentUid === parentUid && rowObject.isAggregateRow) {\n parentFooterAggregates.push(rowObject);\n }\n }\n return parentFooterAggregates;\n };\n Group.prototype.evaluateGroupAggregateValueChange = function (rowObjects, updatedRowObject, groupAggregateTemplate) {\n var change = false;\n if (rowObjects.data[groupAggregateTemplate['field']]['field'] === updatedRowObject.data[groupAggregateTemplate['field']]['field']\n && rowObjects.data[groupAggregateTemplate['field']]['key'] === updatedRowObject.data[groupAggregateTemplate['field']]['key'] &&\n rowObjects.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type']) &&\n updatedRowObject.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type'])) {\n change = true;\n }\n return change;\n };\n Group.prototype.gettingVirtualData = function (parentRowObjs, curViewRec, pK) {\n var datas = [];\n var _loop_2 = function (i) {\n if (curViewRec.indexOf(parentRowObjs[parseInt(i.toString(), 10)].data) === -1) {\n datas.push(parentRowObjs[parseInt(i.toString(), 10)].data);\n }\n if (parentRowObjs[parseInt(i.toString(), 10)].data['field'] === this_2.parent.groupSettings.columns[0]) {\n var draggedData_1 = parentRowObjs[parseInt(i.toString(), 10)].data['items'];\n if (!isNullOrUndefined(draggedData_1['records'])) {\n draggedData_1 = draggedData_1['records'];\n }\n var _loop_3 = function (j) {\n if (pK && curViewRec.findIndex(function (data) { return data[pK.toString()] ===\n draggedData_1[parseInt(j.toString(), 10)][pK.toString()]; }) === -1) {\n datas.push(draggedData_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < draggedData_1.length; j++) {\n _loop_3(j);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < parentRowObjs.length; i++) {\n _loop_2(i);\n }\n return datas;\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var _this = this;\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords().slice();\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dragParentRowObjects = editedData && editedData.length ?\n editedData[0]['dragRowObjects'] : null;\n var dropParentRowObjects = editedData && editedData.length ?\n editedData[0]['dropRowObjects'] : null;\n var dropRootKey = null;\n var dragRootKey = null;\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length &&\n (!isNullOrUndefined(dragParentRowObjects) || !isNullOrUndefined(dropParentRowObjects))) {\n if (dragParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dragParentRowObjects, initData, field));\n }\n if (dropParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dropParentRowObjects, initData, field));\n }\n }\n var isInfiniteGroup = this.parent.enableInfiniteScrolling && this.parent.allowGrouping && editedData.length &&\n this.parent.groupSettings.columns.length && !isNullOrUndefined(dragParentRowObjects) &&\n !isNullOrUndefined(dropParentRowObjects);\n if (isInfiniteGroup) {\n initData = [];\n dropRootKey = dropParentRowObjects[dropParentRowObjects.length - 1].data['key'];\n dragRootKey = dragParentRowObjects[dragParentRowObjects.length - 1].data['key'];\n this.parent.getRowsObject().map(function (row) {\n var groupKey = row.data[_this.parent.groupSettings.columns[0]];\n if (row.isDataRow &&\n ((groupKey === dropRootKey || groupKey === dragRootKey) || (groupKey instanceof Date &&\n (groupKey.toString() === dropRootKey.toString() || groupKey.toString() === dragRootKey.toString())))) {\n initData.push(row.data);\n }\n });\n }\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 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[parseInt(i.toString(), 10)]);\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[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[parseInt(k.toString(), 10)].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[parseInt(l.toString(), 10)], aggregates, null, null);\n }\n if (isInfiniteGroup) {\n var lastGroupKey = this.parent.currentViewData[this.parent.currentViewData.length - 1]['key'];\n if ((lastGroupKey instanceof Date && (lastGroupKey.toString() === dropRootKey.toString() ||\n lastGroupKey.toString() === dragRootKey.toString())) ||\n (lastGroupKey === dropRootKey || lastGroupKey === dragRootKey)) {\n var groups_1 = [];\n for (var i = 0; i < result.length; i++) {\n groups_1.push(result[parseInt(i.toString(), 10)]);\n }\n var predicate_1 = [];\n var addWhere = function (input) {\n for (var i = 0; i < groups_1.length; i++) {\n predicate_1.push(new Predicate('field', '==', groups_1[parseInt(i.toString(), 10)].field).\n and(_this.parent.renderModule.getPredicate('key', 'equal', groups_1[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate_1));\n };\n var newQuery = this.parent.getDataModule().generateQuery(true);\n addWhere(newQuery);\n var updatedGroupData = this.parent.getDataModule().dataManager.executeLocal(newQuery);\n this.parent.renderModule.updateGroupInfo(result, updatedGroupData);\n }\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[parseInt(i.toString(), 10)];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_4 = function (j) {\n var childRow = rows[parseInt(j.toString(), 10)];\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_2 = _loop_4(j);\n if (state_2 === \"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","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n ejInst.element = wrapper;\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enableMask', 'enablePersistence', 'enableRtl', 'enabled', 'firstDayOfWeek', 'floatLabelType', 'format', 'fullScreenMode', 'htmlAttributes', 'isMultiSelection', 'keyConfigs', 'locale', 'maskPlaceholder', 'max', 'min', 'openOnFocus', 'placeholder', 'readonly', 'serverTimezoneOffset', 'showClearButton', 'showTodayButton', 'start', 'strictMode', 'value', 'values', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DatePicker Component.\n * ```html\n * \n * ```\n */\nexport var DatePickerComponent = vueDefineComponent({\n name: 'DatePickerComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DatePicker({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addDate: function (dates) {\n return this.ej2Instances.addDate(dates);\n },\n createContent: function () {\n return this.ej2Instances.createContent();\n },\n currentView: function () {\n return this.ej2Instances.currentView();\n },\n focusIn: function (triggerEvent) {\n return this.ej2Instances.focusIn(triggerEvent);\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n navigateTo: function (view, date) {\n return this.ej2Instances.navigateTo(view, date);\n },\n removeDate: function (dates) {\n return this.ej2Instances.removeDate(dates);\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n show: function (type, e) {\n return this.ej2Instances.show(type, e);\n },\n }\n});\nexport var DatePickerPlugin = {\n name: 'ejs-datepicker',\n install: function (Vue) {\n Vue.component(DatePickerPlugin.name, DatePickerComponent);\n }\n};\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\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 = getElementHeight(el);\n remove(el);\n return height;\n}\n/**\n * Method to get width from element\n *\n * @param {Element} container Accepts the DOM element\n * @param {string} elementClass Accepts the element class\n * @returns {number} Returns the width of the element\n */\nexport function getElementWidthFromClass(container, elementClass) {\n var width = 0;\n var el = createElement('div', { className: elementClass }).cloneNode();\n el.style.visibility = 'hidden';\n el.style.position = 'absolute';\n container.appendChild(el);\n width = getElementWidth(el);\n remove(el);\n return width;\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 translateX value\n *\n * @param {HTMLElement | Element} element Accepts the DOM element\n * @returns {number} Returns the translateX value of given element\n */\nexport function getTranslateX(element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m41 : 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/** @private */\nvar pixelRatio = 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 if (pixelRatio === null) {\n pixelRatio = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;\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 reset scrollbar width\n *\n * @private\n * @returns {void}\n */\nexport function resetScrollbarWidth() {\n var zoomPixelRatio = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;\n if (pixelRatio && pixelRatio !== zoomPixelRatio) {\n scrollWidth = null;\n pixelRatio = zoomPixelRatio;\n }\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[parseInt(i.toString(), 10)][\"\" + 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[parseInt(i.toString(), 10)][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 element.removeChild(elementChild);\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 * Method to get element cell width\n *\n * @param {HTMLElement} element Accepts the DOM element\n * @returns {number} Returns the width of the given element\n */\nexport function getElementWidth(element) {\n return document.body.style.transform.includes('scale') ? element.offsetWidth : element.getBoundingClientRect().width;\n}\n/**\n * Method to get element cell Height\n *\n * @param {HTMLElement} element Accepts the DOM element\n * @returns {number} Returns the Height of the given element\n */\nexport function getElementHeight(element) {\n return document.body.style.transform.includes('scale') ? element.offsetHeight : element.getBoundingClientRect().height;\n}\n/**\n * Method to get element cell Top\n *\n * @param {HTMLElement} element Accepts the DOM element\n * @returns {number} Returns the top value of the given element\n */\nexport function getElementTop(element) {\n return document.body.style.transform.includes('scale') ? element.offsetTop : element.getBoundingClientRect().top;\n}\n","/* eslint-disable */\nimport { 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/* eslint-enable */ \n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } 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 var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { '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 { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, 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, JsonAdaptor } 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.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.preventSetCurrentData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\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.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\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 if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\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 (e) {\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, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\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 if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value) {\n _this.updateVirtualReOrderList();\n }\n _this.loadTemplate();\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n var query = this.getForQuery(this.value, true).clone();\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n if (isCheckBoxUpdate) {\n this.loadTemplate();\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.enableVirtualization && this.list && this.mode === 'CheckBox') {\n var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n }\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n this.isPreventScrollAction = true;\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 value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n if (this.enableVirtualization) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n this.scrollBottom(focusedItem);\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 if (this.enableVirtualization) {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\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 var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n Search(value, 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 if (((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() && this.closePopupOnSelect && !this.enableVirtualization) || this.closePopupOnSelect && !this.enableVirtualization) {\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\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', 'aria-label': 'list' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\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 selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem !== null) {\n this.removeSelectedChip(e);\n return;\n }\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.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n var customValue = this.allowObjectBinding ? this.getDataByValue(value) : 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, isCheckbox) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n if (this.enableVirtualization) {\n if (isCheckbox) {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'equal', value);\n }\n else {\n predicate = predicate.or(field, 'equal', value);\n }\n }\n return new Query().where(predicate);\n }\n else {\n for (var i = 0; i < valuecheck.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n if (i === 0) {\n predicate = new Predicate(field, 'notequal', value);\n }\n else {\n predicate = predicate.and(field, 'notequal', value);\n }\n }\n return new Query().where(predicate);\n }\n }\n else {\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 }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\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 && !this.enableVirtualization) {\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', proxy.value[i]) : proxy.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered && this.inputElement.value && this.inputElement.value !== '') {\n var query = new Query();\n query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n this.checkForCustomValue(query, this.fields);\n this.isCustomRendered = true;\n }\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 if (this.isCustomRendered) {\n return;\n }\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && 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(e);\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.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : 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 this.updateAriaActiveDescendant();\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.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\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.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : 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 ((!this.enableVirtualization && ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll))) || (this.enableVirtualization && this.mode === 'CheckBox' && this.showSelectAll && this.virtualSelectAll && this.value && this.value.length === this.totalItemCount)) {\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' && !this.isPopupOpen()) {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\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 && this.inputElement) {\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.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if ((this.targetElement() !== null && !this.enableVirtualization) || (this.enableVirtualization && this.targetElement() !== null && this.targetElement().trim() !== '')) {\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 if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll) {\n return this.virtualFilterQuery(filterQuery);\n }\n return filterQuery;\n }\n else {\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && !this.virtualSelectAll && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n return this.virtualFilterQuery(filterQuery);\n }\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n var takeValue = this.getTakeValue();\n var isReOrder = true;\n var isSkip = true;\n var isTake = true;\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (this.getModuleName() === 'multiselect' && ((filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.condition == 'or') || (filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n isSkip = false;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n isTake = false;\n }\n }\n if ((this.allowFiltering && isSkip) || !isReOrder || (!this.allowFiltering && isSkip)) {\n if (!isReOrder) {\n filterQuery.skip(this.viewPortInfo.startIndex);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (isTake) {\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n return filterQuery;\n };\n MultiSelect.prototype.getTakeValue = function () {\n return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.targetElement().trim() === '') {\n var list = this.enableVirtualization ? this.list.cloneNode(true) : 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 if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.UpdateSkeleton();\n if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\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 if (this.enableVirtualization && this.allowFiltering) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && (isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\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 if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\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 var field = fields ? fields : this.fields;\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (customData && typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem_1 = {};\n setValue(field.text, value, dataItem_1);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem_1);\n }\n else {\n setValue(field.value, value, dataItem_1);\n }\n var emptyObject_1 = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ? Object.keys(this.firstItem) : Object.keys(dataItem_1);\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject_1[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, dataItem_1) : null;\n });\n }\n dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n if (this.enableVirtualization) {\n this.virtualCustomData = dataItem_1;\n var tempData = this.virtualGroupDataSource ? JSON.parse(JSON.stringify(this.virtualGroupDataSource)) : JSON.parse(JSON.stringify(this.dataSource));\n var totalData = [];\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n totalData = tempData.concat(this.virtualCustomSelectData);\n }\n tempData.splice(0, 0, dataItem_1);\n this.isCustomDataUpdated = true;\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.resetList(tempData, field, query);\n this.isCustomDataUpdated = false;\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem_1);\n this.resetList(tempData, field, query);\n }\n }\n else if (this.listData) {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, 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 else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n this.isRemoteSelection = false;\n this.resetList(this.listData, field, query);\n }\n else if (!this.allowFiltering && this.list) {\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 }\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 this.keyboardEvent = null;\n this.isKeyBoardAction = 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(e);\n }\n else {\n this.hidePopup(e);\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.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\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(eve);\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 Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\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 (!isNullOrUndefined(this.searchWrapper)) {\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 };\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: this.allowObjectBinding ? oldVal : oldVal,\n value: this.allowObjectBinding ? newVal : 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 this.selectedValueInfo = this.viewPortInfo;\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\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 if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps >= 0 && this.viewPortInfo.startIndex != 0 ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[this.skeletonCount];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n else if (this.viewPortInfo.startIndex == 0) {\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n }\n else {\n this.addListFocus(previousItem);\n this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n }\n };\n MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\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 if (this.enableVirtualization && this.skeletonCount > 0) {\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if (this.enableVirtualization && isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\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 var _this = this;\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 setTimeout(function () {\n _this.calculateWidth();\n }, 150);\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(e);\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(e);\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, isVirtualKeyAction) {\n this.removeFocus();\n if (this.enableVirtualization) {\n if (isHome) {\n if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && ((!this.value && this.viewPortInfo.endIndex !== this.totalItemCount) || (this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length))) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n var query = new Query().clone();\n if (this.value && this.value.length > 0) {\n query = this.getForQuery(this.value).clone();\n query = query.skip(this.totalItemCount - this.itemCount);\n }\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\n this.UpdateSkeleton();\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 if (this.enableVirtualization && isHome) {\n element = scrollEle[this.skeletonCount];\n }\n this.removeFocus();\n element.classList.add(dropDownBaseClasses.focus);\n if (this.enableVirtualization && isHome) {\n this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n }\n else if (!isVirtualKeyAction) {\n this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n }\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.updateSelectionList = function () {\n if (!isNullOrUndefined(this.value) && this.value.length) {\n for (var index = 0; index < this.value.length; index++) {\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n var selectedItem = this.getElementByValue(value);\n if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n selectedItem.classList.add('e-active');\n }\n }\n }\n };\n MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex;\n this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 40:\n this.arrowDown(e, true);\n break;\n case 38:\n this.arrowUp(e, true);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n var count = (this.getPageCount() * 2) - 4;\n activeIndex = Math.round(count);\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount(), true);\n this.updateAriaAttribute();\n }\n break;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPageCount() + 1, true);\n this.updateAriaAttribute();\n }\n break;\n case 35:\n case 36:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false, true);\n this.isPreventScrollAction = true;\n break;\n }\n this.keyboardEvent = null;\n this.isScrollChanged = true;\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.preventSetCurrentData = false;\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\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 this.isKeyBoardAction = true;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.isMouseScrollAction = true;\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPageCount() - 1);\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.getPageCount());\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(e);\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(e);\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 if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n this.isKeyBoardAction = false;\n };\n MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n e.preventDefault();\n this.moveByList(1, isVirtualKeyAction);\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, isVirtualKeyAction) {\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 this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\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, isVirtualKeyAction);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : 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.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n this.removeValue(this.value[this.value.length - 1], 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.allowObjectBinding) {\n temp = this.tempValues ? this.tempValues.slice() : [];\n }\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, isInitialSelection, keyCode) {\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyCode === void 0) { keyCode = null; }\n if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) || (this.enableVirtualization && isNullOrUndefined(selectedLI))) {\n selectedLI = this.liCollections[this.skeletonCount];\n }\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n var boxRange = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 34 ? this.getPageCount() - 1 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyCode != 35 && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n this.list.scrollTop += selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 35) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyCode == 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset + (selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n if (keyCode === void 0) { keyCode = null; }\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? selectedLI.offsetTop + (this.virtualListInfo.startIndex * selectedLI.offsetHeight) : selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * selectedLI.offsetHeight) + selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n var liCount = keyCode == 33 ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyCode != 36 && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyCode == 36) {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyCode == 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset - (selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(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 e.preventDefault();\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(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\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 if (this.enableVirtualization) {\n if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData && this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n this.virtualCustomData = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.renderItems(this.mainData, this.fields);\n }\n else {\n this.onActionComplete(this.list, this.listData);\n }\n }\n else {\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\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.allowObjectBinding ? this.value.slice() : this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n var currentChip = this.allowObjectBinding ? this.getDataByValue(selectedElem.getAttribute('data-value')) : selectedElem.getAttribute('data-value');\n this.removeValue(currentChip, e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\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.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\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 if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n }\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\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 if (this.enableVirtualization && isVirtualKeyAction) {\n this.addListFocus(elements[temp]);\n }\n else {\n this.addListFocus(elements[++temp]);\n }\n if (temp > -1) {\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n this.currentFocuedListElement = elements[temp];\n }\n }\n }\n else {\n if (temp > 0) {\n if (this.enableVirtualization) {\n var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n if (isVirtualKeyAction || !isVirtualElement) {\n this.removeFocus();\n }\n if (isVirtualKeyAction || !isVirtualElement) {\n this.addListFocus(elements[elementIndex]);\n this.updateCheck(elements[elementIndex]);\n this.scrollTop(elements[elementIndex], temp);\n this.currentFocuedListElement = elements[elementIndex];\n }\n }\n else {\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 };\n MultiSelect.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n 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.allowObjectBinding ? this.getDataByValue(customVal) : 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(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\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.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : 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 var currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n this.updateMainList(true, currentValue, 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 this.updateAriaActiveDescendant();\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.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : 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 currentValue = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var element_1 = this.findListElement(this.list, 'li', 'data-value', currentValue);\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 _this.virtualSelectAll = false;\n var removeVal = _this.value.slice(0);\n if (_this.enableVirtualization && isClearAll) {\n removeVal = [];\n }\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (_this.enableVirtualization) {\n var currentText = index == 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n _this.setProperties({ text: currentText.toString() }, true);\n }\n if (element_1 !== null) {\n var currentValue_1 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\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 var currentValue_2 = _this.allowObjectBinding ? getValue(((_this.fields.value) ? _this.fields.value : ''), value) : value;\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(currentValue_2);\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, currentValue_2);\n _this.removeChip(currentValue_2, isClearAll);\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 && _this.isSelectAllTarget)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\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 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 addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value, isClearAll) {\n if (this.chipCollectionWrapper) {\n if (this.enableVirtualization && isClearAll) {\n var childElements = this.chipCollectionWrapper.querySelectorAll('.e-chips');\n }\n else {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\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.indexOfObjectInArray = function (objectToFind, array) {\n var _loop_1 = function (i) {\n var item = array[i];\n if (Object.keys(objectToFind).every(function (key) { return item.hasOwnProperty(key) && item[key] === objectToFind[key]; })) {\n return { value: i };\n }\n };\n for (var i = 0; i < array.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1; // Return -1 if the object is not found\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if ((this.allowObjectBinding && !this.isObjectInArray(value, this.value)) || (!this.allowObjectBinding && this.value.indexOf(currentValue) < 0)) {\n this.setProperties({ value: [].concat([], this.value, [currentValue]) }, true);\n if (this.enableVirtualization) {\n var data = this.viewWrapper.innerHTML;\n var temp = void 0;\n data += (this.value.length === 1) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(this.value.length - 1);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\n if (this.enableVirtualization && this.mode === 'CheckBox') {\n var temp = void 0;\n var currentText = [];\n var value_1 = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value_1);\n var textValues = this.text != null ? this.text + ',' + temp : temp;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n }\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 value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\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 value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n if ((_this.enableVirtualization && value) || !_this.enableVirtualization) {\n _this.updateListSelectEventCallback(value, element, eve);\n }\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 + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\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 (typeof multiselectTemplate !== 'function' && 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.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\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 (typeof this.valueTemplate !== 'function' && 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 append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\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 if (!isNullOrUndefined(this.popupWrapper)) {\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.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n this.listItemHeight = this.getItems()[1].offsetHeight;\n }\n if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n else if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n }\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',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { 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() !== '') && !_this.enableVirtualization) {\n _this.loadTemplate();\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.UpdateSkeleton();\n }\n }\n _this.isPreventScrollAction = true;\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value) {\n _this.updateSelectionList();\n }\n else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n }, 5);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n this.popupContentElement = this.popupObj.element.querySelector('.e-content');\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 };\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 (typeof this.headerTemplate !== 'function' && 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 append(elements, this.header);\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 (typeof this.footerTemplate !== 'function' && 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 append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.updateInitialData = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.listData = currentData;\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\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 this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n if (!this.isCustomDataUpdated) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\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 this.resetFilteredData = true;\n this.preventSetCurrentData = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\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 if (this.allowCustomValue) {\n this.isRemoteSelection = true;\n }\n if (!this.backCommand) {\n this.checkAndResetCache();\n }\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 = this.allowFiltering && (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n if (this.enableVirtualization) {\n if (this.dataSource instanceof DataManager) {\n this.dataUpdater(this.virtualGroupDataSource, query, this.fields);\n }\n else {\n this.dataUpdater(this.dataSource, query, this.fields);\n }\n }\n else {\n this.dataUpdater(this.mainData, query, this.fields);\n }\n this.UpdateSkeleton();\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var type = this.typeOfData(this.listData).typeof;\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = false;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n if (!isNullOrUndefined(activeElement)) {\n break;\n }\n if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeElement.index) {\n if ((!(this.viewPortInfo.startIndex >= activeElement.index)) || (!(activeElement.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeElement.index - ((this.itemCount / 2) - 2) > 0 ? activeElement.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeElement.item)) {\n var index_1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeElement && activeElement.item) {\n activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n }\n }\n if (activeElement && activeElement.item) {\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 if (this.enableVirtualization && this.allowFiltering) {\n this.getFilteringSkeletonCount();\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.preventSetCurrentData = false;\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n this.isCustomRendered = false;\n this.isRemoteSelection = false;\n this.isSelectAllTarget = true;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\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 if (!this.enableVirtualization) {\n this.listData = this.mainData;\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[index]) : this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (this.enableVirtualization) {\n listValue = this.findListElement((!isNullOrUndefined(this.list) ? this.list : this.ulElement), 'li', 'data-value', valueItem);\n }\n if (isNullOrUndefined(listValue) && !this.allowCustomValue && !this.enableVirtualization) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n if (this.enableVirtualization) {\n if (delim) {\n data = this.delimiterWrapper && this.delimiterWrapper.innerHTML == \"\" ? data : this.delimiterWrapper.innerHTML;\n }\n var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n temp = this.getTextByValue(value);\n var textValues = this.text != null && this.text != \"\" ? this.text + ',' + temp : temp;\n data += temp + delimiterChar + ' ';\n text.push(textValues);\n break;\n }\n else {\n temp = this.getTextByValue(valueItem);\n }\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n if (!this.enableVirtualization || (this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove)) {\n this.setProperties({ text: text.toString() }, true);\n }\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n this.setProperties({ value: value }, 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, null, isEmptyData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function (listItems) {\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.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n var isCustomData = false;\n if (this.enableVirtualization) {\n text = null;\n if (listItems != null && listItems.length > 0) {\n for (var i = 0; i < listItems.length; i++) {\n if (getValue((this.fields.value ? this.fields.value : 'value'), listItems[i]) === value) {\n text = getValue(this.fields.text, listItems[i]);\n break;\n }\n }\n }\n if (isNullOrUndefined(text) && this.allowCustomValue) {\n text = this.getTextByValue(value);\n isCustomData = true;\n }\n }\n else {\n text = this.getTextByValue(value);\n }\n if (((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) || (this.enableVirtualization && value != null && text != null && !isCustomData)) {\n var currentText = [];\n var textValues = this.text != null ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n if (this.enableVirtualization) {\n if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n this.virtualCustomSelectData.push(newValue);\n }\n else {\n this.virtualCustomSelectData = [newValue];\n }\n }\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 var currentText = [];\n var textValues = this.text != null ? this.text + ',' + text : text;\n currentText.push(textValues);\n this.setProperties({ text: currentText.toString() }, true);\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.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1) || (this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value)))) {\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 && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\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] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (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.allowObjectBinding ? this.getDataByValue(customVal) : 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.allowObjectBinding && this.value.indexOf(value) === -1) || (this.allowObjectBinding && this.indexOfObjectInArray(value, this.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 value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value) && (!this.enableVirtualization || (this.enableVirtualization && this.virtualCustomData))) {\n var temp_1 = li ? li.cloneNode(true) : li;\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 if (_this.enableVirtualization && _this.virtualCustomData) {\n if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n _this.virtualCustomSelectData.push(data_1);\n }\n else {\n _this.virtualCustomSelectData = [data_1];\n }\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n else {\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 }\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 removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\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 this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\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' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\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 this.selectedElementID = 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 this.keyboardEvent = null;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n return;\n }\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(e);\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 if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.virtualItemStartIndex);\n this.resetList(this.dataSource, this.fields, query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.virtualItemCount = this.itemCount;\n if (this.mode !== 'CheckBox') {\n this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.querySelector('.e-virtual-ddl-content')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n }\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 = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = 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 if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\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 if (!this.enableVirtualization) {\n this.updateWrapperText(this.viewWrapper, data);\n }\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 var items = this.text && this.text.split(this.delimiterChar);\n if (!this.enableVirtualization) {\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 }\n else if (items) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = items[index];\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n }\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 if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\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 var value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(value);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(value);\n }\n }\n else {\n temp = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), this.value[index]) : this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\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 }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\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 }\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 this.updateAriaActiveDescendant();\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 this.addValidInputClass();\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) || (this.enableVirtualization && !state)) {\n var index_2 = 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 if (this.enableVirtualization) {\n if (state) {\n this.virtualSelectAll = true;\n this.resetList(this.dataSource, this.fields, new Query().skip(this.viewPortInfo.startIndex));\n if (this.virtualSelectAllData instanceof Array) {\n for (var i = 0; i < this.virtualSelectAllData.length; i++) {\n if (li[this.skeletonCount + i]) {\n var value_2 = this.allowObjectBinding ? this.getDataByValue(li[this.skeletonCount + i].getAttribute('data-value')) : this.getFormattedValue(li[this.skeletonCount + i].getAttribute('data-value'));\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value_2) === 1) || (this.allowObjectBinding && this.indexOfObjectInArray(value_2, this.value) === 1))) {\n continue;\n }\n this.updateListSelection(li[this.skeletonCount + i], event, length - i);\n }\n else {\n if (this.fields) {\n var value_3 = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value_3 = this.allowObjectBinding ? this.getDataByValue(value_3) : value_3;\n if (((!this.allowObjectBinding && this.value && this.value.indexOf(value_3) === 1) || (this.allowObjectBinding && this.indexOfObjectInArray(value_3, this.value) === 1))) {\n continue;\n }\n if (this.value && value_3 != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value_3) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_3, this.value)))) {\n this.dispatchSelect(value_3, event, null, false, length);\n }\n }\n }\n }\n if (this.virtualSelectAllData && this.value.length != this.virtualSelectAllData.length && this.virtualItemStartIndex != 0) {\n if (this.virtualItemStartIndex > this.itemCount) {\n for (var i = 0; i < this.itemCount; i++) {\n if (this.fields) {\n var value_4 = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value_4 = this.allowObjectBinding ? this.getDataByValue(value_4) : value_4;\n if (this.value && value_4 != null && Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value_4) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_4, this.value)))) {\n this.setProperties({ value: [].concat([], this.value, this.allowObjectBinding ? [this.virtualSelectAllData[i]] : [value_4]) }, true);\n }\n }\n }\n }\n }\n else {\n for (var i = 0; i < this.virtualItemStartIndex; i++) {\n if (this.fields) {\n var value = getValue(this.fields.value, this.virtualSelectAllData[i]);\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n if (Array.isArray(this.value) && ((!this.allowObjectBinding && this.value.indexOf(value) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value, this.value)))) {\n this.setProperties({ value: [].concat([], this.value, this.allowObjectBinding ? [this.virtualSelectAllData[i]] : [value]) }, true);\n }\n }\n }\n }\n }\n }\n else {\n while (index_2 < this.value.length && index_2 <= 50 && index_2 < count_1 && this.value.length > 0) {\n this.removeValue(this.value[index_2], event, this.value.length - index_2);\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < _this.value.length && index_2 < count_1 && _this.value.length > 0) {\n _this.removeValue(value[index_2], event, _this.value.length - index_2);\n index_2++;\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 this.value = [];\n this.virtualSelectAll = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ulElement = this.renderItems(this.listData, this.fields);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n (virtualTrackElement).style = this.GetVirtualTrackHeight();\n }\n this.UpdateSkeleton();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n (virtualContentElement).style = this.getTransformValues();\n }\n }\n else {\n while (index_2 < length && index_2 <= 50 && index_2 < count_1) {\n this.isSelectAllTarget = (length === index_2 + 1);\n this.updateListSelection(li[index_2], event, length - index_2);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_2]);\n }\n index_2++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_2 < length && index_2 < count_1) {\n _this.isSelectAllTarget = (length === index_2 + 1);\n _this.updateListSelection(li[index_2], event, length - index_2);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_2]);\n }\n index_2++;\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 if (_this.popupWrapper && li[index_2 - 1].classList.contains('e-item-focus')) {\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li[index_2 - 1].classList.remove('e-item-focus');\n }\n }\n }, 0);\n }\n }\n }\n else {\n for (var i_1 = 0; i_1 < li.length && i_1 < count_1; i_1++) {\n this.removeHover();\n var customVal = li[i_1].getAttribute('data-value');\n var value_5 = this.getFormattedValue(customVal);\n value_5 = this.allowObjectBinding ? this.getDataByValue(value_5) : value_5;\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_1] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if ((!this.allowObjectBinding && this.value.indexOf(value_5) < 0) || (this.allowObjectBinding && !this.isObjectInArray(value_5, this.value))) {\n this.setProperties({ value: [].concat([], this.value, [value_5]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i_1], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value_5, event, false, li[i_1], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i_1]);\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.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) && this.isSelectAllTarget) {\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 this.virtualSelectAll = false;\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 if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\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 this.calculateWidth();\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 Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\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 case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\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.totalItemsCount = function () {\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.mode === 'CheckBox') {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount : this.totalItemCount;\n }\n else {\n this.totalItemCount = dataSourceCount != 0 ? dataSourceCount - this.value.length : this.totalItemCount;\n }\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', value);\n if (!checkEle) {\n var checkvalue = this.allowObjectBinding ? this.getDataByValue(this.value[i]) : this.value[i];\n valuecheck.push(checkvalue);\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 if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\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 (e) {\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, event: e || null };\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 _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\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 if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ? _this.viewPortInfo.endIndex : _this.itemCount;\n _this.previousStartIndex = 0;\n _this.previousEndIndex = 0;\n }\n var dataSourceCount = void 0;\n if (_this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.virtualGroupDataSource && _this.virtualGroupDataSource.length ? _this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n }\n if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) && _this.value != null && _this.targetElement() && _this.totalItemCount !== dataSourceCount) {\n _this.updateInitialData();\n _this.checkAndResetCache();\n }\n if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 && _this.viewPortInfo.endIndex === _this.itemCount) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.renderItems(_this.mainData, _this.fields);\n }\n _this.virtualCustomData = null;\n _this.isVirtualTrackHeight = false;\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 (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\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 if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n _super.prototype.render.call(_this, e);\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) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' || _this.getModuleName() === 'combobox')) {\n _this.removeHover();\n }\n if (!_this.beforePopupOpen) {\n if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n _this.totalItemsCount();\n }\n if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) && !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n _this.notify(\"setCurrentViewDataAsync\", {\n component: _this.getModuleName(),\n module: \"VirtualScroll\",\n });\n }\n }\n }\n if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null && _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n _this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n if (_this.enableVirtualization) {\n _this.updatevirtualizationList();\n }\n else {\n if (_this.value && _this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = _this.getItems();\n for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = _this.allowObjectBinding ? getValue((_this.fields.value) ? _this.fields.value : '', value) : value;\n element = _this.getElementByValue(checkValue);\n if (element) {\n _this.addListSelection(element);\n }\n }\n }\n }\n _this.preventSetCurrentData = true;\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 if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\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 this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\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 role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n }\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\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 var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n valueCol.push(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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_2;\n if (this.enableVirtualization) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var predicate = void 0;\n for (var i = 0; i < this.value.length; i++) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value[i]) : this.value[i];\n if (i === 0) {\n predicate = new Predicate(fields, 'equal', value);\n }\n else {\n predicate = predicate.or(fields, 'equal', value);\n }\n }\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(predicate))\n .then(function (e) {\n if (e.result.result.length > 0) {\n listItems_2 = e.result.result;\n }\n });\n }\n else {\n listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate(listItems_2);\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate(listItems_2);\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.updatevirtualizationList = function () {\n if (this.value && this.value.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var element = void 0;\n var listItems = this.getItems();\n for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n var value = _a[_i];\n var checkValue = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n element = this.getElementByValue(checkValue);\n if (element) {\n this.addListSelection(element);\n }\n }\n if (this.enableVirtualization && this.hideSelectedItem) {\n var visibleListElements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n if (visibleListElements.length) {\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n if (visibleListElements.length < (actualCount + 2)) {\n var query = this.getForQuery(this.value).clone();\n query = query.skip(this.viewPortInfo.startIndex);\n this.resetList(this.dataSource, this.fields, query);\n }\n }\n }\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.overAllWrapper)) {\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 };\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.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\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', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && 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 this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\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(true)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableVirtualization\", 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(false)\n ], MultiSelect.prototype, \"allowObjectBinding\", 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","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nexport var properties = ['isLazyUpdate', 'plugins', 'actionFailureTemplate', 'addTagOnBlur', 'allowCustomValue', 'allowFiltering', 'allowObjectBinding', 'changeOnBlur', 'closePopupOnSelect', 'cssClass', 'dataSource', 'delimiterChar', 'enableGroupCheckBox', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'enableSelectionOrder', 'enableVirtualization', 'enabled', 'fields', 'filterBarPlaceholder', 'filterType', 'floatLabelType', 'footerTemplate', 'groupTemplate', 'headerTemplate', 'hideSelectedItem', 'htmlAttributes', 'ignoreAccent', 'ignoreCase', 'itemTemplate', 'locale', 'maximumSelectionLength', 'mode', 'noRecordsTemplate', 'openOnClick', 'placeholder', 'popupHeight', 'popupWidth', 'query', 'readonly', 'selectAllText', 'showClearButton', 'showDropDownIcon', 'showSelectAll', 'sortOrder', 'text', 'unSelectAllText', 'value', 'valueTemplate', 'width', 'zIndex', 'actionBegin', 'actionComplete', 'actionFailure', 'beforeOpen', 'beforeSelectAll', 'blur', 'change', 'chipSelection', 'close', 'created', 'customValueSelection', 'dataBound', 'destroyed', 'filtering', 'focus', 'open', 'removed', 'removing', 'select', 'selectedAll', 'tagging'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * MultiSelect component allows the user to select a value from the predefined list of values.\n * ```html\n * \n * ```\n */\nexport var MultiSelectComponent = vueDefineComponent({\n name: 'MultiSelectComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new MultiSelect({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addItem: function (items, itemIndex) {\n return this.ej2Instances.addItem(items, itemIndex);\n },\n clear: function () {\n return this.ej2Instances.clear();\n },\n filter: function (dataSource, query, fields) {\n return this.ej2Instances.filter(dataSource, query, fields);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n getDataByValue: function (value) {\n return this.ej2Instances.getDataByValue(value);\n },\n getItems: function () {\n return this.ej2Instances.getItems();\n },\n hidePopup: function (e) {\n return this.ej2Instances.hidePopup(e);\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n selectAll: function (state) {\n return this.ej2Instances.selectAll(state);\n },\n showPopup: function (e) {\n return this.ej2Instances.showPopup(e);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n }\n});\nexport var MultiSelectPlugin = {\n name: 'ejs-multiselect',\n install: function (Vue) {\n Vue.component(MultiSelectPlugin.name, MultiSelectComponent);\n }\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\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 created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { 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 *\n * @param {string|string[]} from?\n * @param 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 *\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 *\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 *\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 *\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 *\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 *\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 * @param fields\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 *\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 *\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 * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\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 *\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 * @param ignoreAccent\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 *\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 isFromGroup\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 *\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 isFromGroup\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 *\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 *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\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.matchCase = matchCase;\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 this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\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 *\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 *\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 * @param ignoreCase\n * @param ignoreAccent\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 *\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 *\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 * @param ignoreCase\n * @param ignoreAccent\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 * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = 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 not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\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 * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = 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 not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\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 * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\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 *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\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 matchCase: this.matchCase\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","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } 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 if (gObj.isVue) {\n gObj.setProperties({ query: gObj.query instanceof Query ? gObj.query : new Query() }, true);\n }\n else {\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\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 * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\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[parseInt(i.toString(), 10)].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 if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\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[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].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[parseInt(i.toString(), 10)][\"\" + 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[parseInt(i.toString(), 10)][\"\" + 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 && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : 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[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], 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[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], 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 = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).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[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).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, col.isForeignKey).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 if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\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.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && 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","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar CONTENTTABLE = 'e-calendar-content-table';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar FOCUSEDCELL = 'e-focused-cell';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() != 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\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 }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n this.todayElement.setAttribute('tabindex', '0');\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveRight':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveUp':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.getModuleName() != 'daterangepicker' && !isNullOrUndefined(e.target) && e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n }\n break;\n case 'select':\n if (e.target === this.headerTitleElement) {\n this.navigateTitle(e);\n }\n else if (e.target === this.previousIcon) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n case 'tab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.todayElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n case 'shiftTab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.headerTitleElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\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, getUniqueID, formatUnit, NotifyPropertyChanges, Property, attributes, removeClass, addClass } from '@syncfusion/ej2-base';\nvar cssClassName = {\n TEXTSHAPE: 'e-skeleton-text',\n CIRCLESHAPE: 'e-skeleton-circle',\n SQUARESHAPE: 'e-skeleton-square',\n RECTANGLESHAPE: 'e-skeleton-rectangle',\n WAVEEFFECT: 'e-shimmer-wave',\n PULSEEFFECT: 'e-shimmer-pulse',\n FADEEFFECT: 'e-shimmer-fade',\n VISIBLENONE: 'e-visible-none'\n};\n/**\n * Defines the shape of Skeleton.\n */\nexport var SkeletonType;\n(function (SkeletonType) {\n /**\n * Defines the skeleton shape as text.\n */\n SkeletonType[\"Text\"] = \"Text\";\n /**\n * Defines the skeleton shape as circle.\n */\n SkeletonType[\"Circle\"] = \"Circle\";\n /**\n * Defines the skeleton shape as square.\n */\n SkeletonType[\"Square\"] = \"Square\";\n /**\n * Defines the skeleton shape as rectangle.\n */\n SkeletonType[\"Rectangle\"] = \"Rectangle\";\n})(SkeletonType || (SkeletonType = {}));\n/**\n * Defines the animation effect of Skeleton.\n */\nexport var ShimmerEffect;\n(function (ShimmerEffect) {\n /**\n * Defines the animation as shimmer wave effect.\n */\n ShimmerEffect[\"Wave\"] = \"Wave\";\n /**\n * Defines the animation as fade effect.\n */\n ShimmerEffect[\"Fade\"] = \"Fade\";\n /**\n * Defines the animation as pulse effect.\n */\n ShimmerEffect[\"Pulse\"] = \"Pulse\";\n /**\n * Defines the animation as no effect.\n */\n ShimmerEffect[\"None\"] = \"None\";\n})(ShimmerEffect || (ShimmerEffect = {}));\n/**\n * The Shimmer is a placeholder that animates a shimmer effect to let users know that the page’s content is loading at the moment.\n * In other terms, it simulates the layout of page content while loading the actual content.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Skeleton = /** @class */ (function (_super) {\n __extends(Skeleton, _super);\n /**\n * Constructor for creating Skeleton component.\n *\n * @param {SkeletonModel} options - Defines the model of Skeleton class.\n * @param {HTMLElement} element - Defines the target HTML element.\n */\n function Skeleton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Get component module name.\n *\n * @returns {string} - Module name\n * @private\n */\n Skeleton.prototype.getModuleName = function () {\n return 'skeleton';\n };\n Skeleton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Skeleton.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.updateCssClass();\n attributes(this.element, { role: 'alert', 'aria-busy': 'true', 'aria-live': 'polite', 'aria-label': this.label });\n };\n /**\n * Method for initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Skeleton.prototype.render = function () {\n this.initialize();\n };\n Skeleton.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 case 'height':\n this.updateDimension();\n break;\n case 'shape':\n this.updateShape();\n break;\n case 'shimmerEffect':\n this.updateEffect();\n break;\n case 'visible':\n this.updateVisibility();\n break;\n case 'label':\n this.element.setAttribute('aria-label', this.label);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n this.updateCssClass();\n break;\n }\n }\n };\n /**\n * Method to destroys the Skeleton component.\n *\n * @returns {void}\n */\n Skeleton.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var attrs = ['role', 'aria-live', 'aria-busy', 'aria-label'];\n var cssClass = [];\n if (this.cssClass) {\n cssClass = cssClass.concat(this.cssClass.split(' '));\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[parseInt(i.toString(), 10)]);\n }\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n removeClass([this.element], cssClass);\n };\n Skeleton.prototype.initialize = function () {\n this.updateShape();\n this.updateEffect();\n this.updateVisibility();\n };\n Skeleton.prototype.updateShape = function () {\n var shapeCss = cssClassName[this.shape.toUpperCase() + 'SHAPE'];\n var removeCss = (this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n this.updateDimension();\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [shapeCss]);\n };\n Skeleton.prototype.updateDimension = function () {\n var width = (!this.width && (['Text', 'Rectangle'].indexOf(this.shape) > -1)) ? '100%' : formatUnit(this.width);\n var height = ['Circle', 'Square'].indexOf(this.shape) > -1 ? width : formatUnit(this.height);\n this.element.style.width = width;\n this.element.style.height = height;\n };\n Skeleton.prototype.updateEffect = function () {\n var removeCss = (this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n };\n Skeleton.prototype.updateVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](cssClassName.VISIBLENONE);\n };\n Skeleton.prototype.updateCssClass = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n __decorate([\n Property('')\n ], Skeleton.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], Skeleton.prototype, \"visible\", void 0);\n __decorate([\n Property('Text')\n ], Skeleton.prototype, \"shape\", void 0);\n __decorate([\n Property('Wave')\n ], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate([\n Property('Loading...')\n ], Skeleton.prototype, \"label\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate([\n NotifyPropertyChanges\n ], Skeleton);\n return Skeleton;\n}(Component));\nexport { Skeleton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\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 virtualList: 'e-list-item e-virtual-list',\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\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 _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 10;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\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 (typeof baseTemplate !== 'function' && 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 (typeof template !== 'function' && 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 noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || noDataElement[i] instanceof Text) {\n ele.appendChild(noDataElement[i]);\n }\n }\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') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : '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 liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var difference = this.dataCount - this.viewPortInfo.endIndex;\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : difference > this.skeletonCount ? this.skeletonCount : difference > 0 ? difference : 0;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 2 < this.itemCount ? this.itemCount : actualCount * 2;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2) + 2;\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild && isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\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 = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\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 /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\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, e);\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 * @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', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\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.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_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, event) {\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 if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager && !_this.virtualGroupDataSource) {\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 (!_this.virtualGroupDataSource && _this.isVirtualizationEnabled) {\n _this.isRemoteDataUpdated = true;\n if ((_this.getModuleName() === 'combobox' && !_this.initialRemoteRender && _this.isAllowFiltering && _this.isVirtualizationEnabled && e.result)) {\n e.result = e.result.result;\n }\n if (e.result.length > 0) {\n var dataSource_2 = e.result;\n if (_this.isVirtualizationEnabled && _this.fields.groupBy) {\n var data = new DataManager(dataSource_2).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n else {\n _this.virtualGroupDataSource = dataSource_2;\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.setListData(dataSource_2, fields, query, event);\n return;\n }\n }\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.updatePopupState();\n return;\n }\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n _this.dataCount = e.count;\n _this.totalItemCount = e.count;\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.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = true;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled && !_this.virtualSelectAll ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\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 (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\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 };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\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.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n });\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.isRequesting = 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 if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\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 if (!this.isVirtualizationEnabled) {\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 };\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 DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\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 (typeof this.groupTemplate !== 'function' && 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) {\n if (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 return null;\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.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\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 var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n var groupListLength = this.list.querySelectorAll('.e-list-group-item').length;\n var loadedGroupList = 0;\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n loadedGroupList++;\n if (count >= this.getPageCount()) {\n break;\n }\n if (groupListLength <= loadedGroupList) {\n break;\n }\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = this.list.parentElement.offsetTop + this.list.offsetTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\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, isCheckBoxUpdate) {\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 if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\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 (typeof this.itemTemplate !== 'function' && 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 if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\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 if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\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 * 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.getIndexByValueFilter = function (value) {\n var index;\n var listItems = this.renderItems(this.selectData, this.fields);\n if (listItems && listItems.children) {\n for (var i = 0; i < listItems.children.length; i++) {\n if (!isNullOrUndefined(value) && listItems.children[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\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 if (element) {\n element.dispatchEvent(evt);\n }\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, e) {\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 dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && 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, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\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, oldProp);\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 '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 (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\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 if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\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 = typeof this.itemTemplate !== 'function' &&\n 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 if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\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 (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\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 this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\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(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([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","/**\n * 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 dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\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/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\n","/* eslint-disable max-len */\nimport { isNullOrUndefined, getDefaultDateObject, getValue, cldrData } from '@syncfusion/ej2-base';\nimport { MS_PER_DAY, addDays, resetTime, capitalizeFirstWord } from '../schedule/base/util';\nimport { Islamic, Gregorian } from '../common/calendar-util';\nimport { Timezone } from '../schedule/timezone/timezone';\n/**\n * Date Generator from Recurrence Rule\n */\n/**\n * Generate Summary from Recurrence Rule\n *\n * @param {string} rule Accepts the Recurrence rule\n * @param {L10n} localeObject Accepts the locale object\n * @param {string} locale Accepts the locale name\n * @param {CalendarType} calendarType Accepts the calendar type\n * @returns {string} Returns the summary string from given recurrence rule\n */\nexport function generateSummary(rule, localeObject, locale, calendarType) {\n if (calendarType === void 0) { calendarType = 'Gregorian'; }\n var ruleObject = extractObjectFromRule(rule);\n var summary = localeObject.getConstant(EVERY) + ' ';\n var cldrObj;\n var cldrObj1;\n var calendarMode = calendarType.toLowerCase();\n if (locale === 'en' || locale === 'en-US') {\n var nameSpace1 = 'months.stand-alone.abbreviated';\n var nameSpace = 'days.stand-alone.abbreviated';\n cldrObj1 = (getValue(nameSpace1, getDefaultDateObject(calendarMode)));\n cldrObj = (getValue(nameSpace, getDefaultDateObject(calendarMode)));\n }\n else {\n var nameSpace1 = 'main.' + locale + '.dates.calendars.' + calendarMode + '.months.stand-alone.abbreviated';\n var nameSpace = 'main.' + locale + '.dates.calendars.' + calendarMode + '.days.stand-alone.abbreviated';\n cldrObj1 =\n (getValue(nameSpace1, cldrData));\n cldrObj =\n (getValue(nameSpace, cldrData));\n }\n if (ruleObject.interval > 1) {\n summary += ruleObject.interval + ' ';\n }\n switch (ruleObject.freq) {\n case 'DAILY':\n summary += localeObject.getConstant(DAYS);\n break;\n case 'WEEKLY':\n summary += localeObject.getConstant(WEEKS) + ' ' + localeObject.getConstant(ON) + ' ';\n ruleObject.day.forEach(function (day, index) {\n summary += capitalizeFirstWord(getValue(DAYINDEXOBJECT[\"\" + day], cldrObj), 'single');\n summary += (((ruleObject.day.length - 1) === index) ? '' : ', ');\n });\n break;\n case 'MONTHLY':\n summary += localeObject.getConstant(MONTHS) + ' ' + localeObject.getConstant(ON) + ' ';\n summary += getMonthSummary(ruleObject, cldrObj, localeObject);\n break;\n case 'YEARLY':\n summary += localeObject.getConstant(YEARS) + ' ' + localeObject.getConstant(ON) + ' ';\n summary += capitalizeFirstWord(getValue((ruleObject.month[0]).toString(), cldrObj1), 'single') + ' ';\n summary += getMonthSummary(ruleObject, cldrObj, localeObject);\n break;\n }\n if (ruleObject.count) {\n summary += ', ' + (ruleObject.count) + ' ' + localeObject.getConstant(TIMES);\n }\n else if (ruleObject.until) {\n var tempDate = ruleObject.until;\n summary += ', ' + localeObject.getConstant(UNTIL)\n + ' ' + tempDate.getDate()\n + ' ' + capitalizeFirstWord(getValue((tempDate.getMonth() + 1).toString(), cldrObj1), 'single')\n + ' ' + tempDate.getFullYear();\n }\n return summary;\n}\n/**\n * Generates Month summary\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {string[]} cldrObj Accepts the collections of month name from calendar\n * @param {L10n} localeObj Accepts the locale object\n * @returns {string} Returns the month summary string from given recurrence rule object\n * @private\n */\nfunction getMonthSummary(ruleObject, cldrObj, localeObj) {\n var summary = '';\n if (ruleObject.monthDay.length) {\n summary += ruleObject.monthDay[0];\n }\n else if (ruleObject.day) {\n var pos = ruleObject.setPosition - 1;\n summary += localeObj.getConstant(WEEKPOS[pos > -1 ? pos : (WEEKPOS.length - 1)])\n + ' ' + capitalizeFirstWord(getValue(DAYINDEXOBJECT[ruleObject.day[0]], cldrObj), 'single');\n }\n return summary;\n}\n/**\n * Generates the date collections from the given recurrence rule\n *\n * @param {Date} startDate Accepts the rule start date\n * @param {string} rule Accepts the recurrence rule\n * @param {string} excludeDate Accepts the exception dates in string format\n * @param {number} startDayOfWeek Accepts the start day index of week\n * @param {number} maximumCount Accepts the maximum number count to generate date collections\n * @param {Date} viewDate Accepts the current date instead of start date\n * @param {CalendarType} calendarMode Accepts the calendar type\n * @param {string} newTimezone Accepts the timezone name\n * @returns {number[]} Returns the collection of dates\n */\nexport function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount, viewDate, calendarMode, newTimezone) {\n if (maximumCount === void 0) { maximumCount = MAXOCCURRENCE; }\n if (viewDate === void 0) { viewDate = null; }\n if (calendarMode === void 0) { calendarMode = 'Gregorian'; }\n if (newTimezone === void 0) { newTimezone = null; }\n var ruleObject = extractObjectFromRule(rule);\n var cacheDate;\n calendarUtil = getCalendarUtil(calendarMode);\n var data = [];\n var modifiedDate = new Date(startDate.getTime());\n tempExcludeDate = [];\n var tempDate = isNullOrUndefined(excludeDate) ? [] : excludeDate.split(',');\n var tz = new Timezone();\n tempDate.forEach(function (content) {\n var parsedDate = getDateFromRecurrenceDateString(content);\n if (newTimezone) {\n parsedDate = tz.add(new Date(parsedDate.getTime()), newTimezone);\n }\n tempExcludeDate.push(new Date(parsedDate.getTime()).setHours(0, 0, 0, 0));\n });\n ruleObject.recExceptionCount = !isNullOrUndefined(ruleObject.count) ? tempExcludeDate.length : 0;\n if (viewDate && viewDate > startDate && !ruleObject.count) {\n tempViewDate = new Date(new Date(viewDate.getTime()).setHours(0, 0, 0));\n }\n else {\n tempViewDate = null;\n }\n if (!ruleObject.until && tempViewDate) {\n cacheDate = new Date(tempViewDate.getTime());\n cacheDate.setDate(tempViewDate.getDate() + maximumCount * (ruleObject.interval));\n ruleObject.until = cacheDate;\n }\n if (ruleObject.until && startDate > ruleObject.until) {\n return data;\n }\n maxOccurrence = maximumCount;\n setFirstDayOfWeek(DAYINDEX[parseInt(startDayOfWeek.toString(), 10)]);\n if (ruleObject.until) {\n var end = resetTime(ruleObject.until);\n ruleObject.until = new Date(end.getFullYear(), end.getMonth(), end.getDate(), 23, 59, 59);\n }\n switch (ruleObject.freq) {\n case 'DAILY':\n dailyType(modifiedDate, ruleObject.until, data, ruleObject);\n break;\n case 'WEEKLY':\n weeklyType(modifiedDate, ruleObject.until, data, ruleObject);\n break;\n case 'MONTHLY':\n monthlyType(modifiedDate, ruleObject.until, data, ruleObject);\n break;\n case 'YEARLY':\n yearlyType(modifiedDate, ruleObject.until, data, ruleObject);\n }\n return data;\n}\n/**\n * Generate date object from given date string\n *\n * @param {string} recDateString Accepts the exception date as string\n * @returns {Date} Returns the date from exception date string\n */\nexport function getDateFromRecurrenceDateString(recDateString) {\n return new Date(recDateString.substr(0, 4) +\n '-' + recDateString.substr(4, 2) +\n '-' + recDateString.substr(6, 5) +\n ':' + recDateString.substr(11, 2) +\n ':' + recDateString.substr(13));\n}\n/**\n * Internal method to handle exclude date\n *\n * @param {number[]} data Accepts the exception date collections\n * @param {number} date Accepts the new exclude date\n * @returns {void}\n * @private\n */\nfunction excludeDateHandler(data, date) {\n var zeroIndex = new Date(date).setHours(0, 0, 0, 0);\n if (tempExcludeDate.indexOf(zeroIndex) === -1 && (!tempViewDate || zeroIndex >= tempViewDate.getTime())) {\n data.push(date);\n }\n}\n/**\n * Internal method for get date count\n *\n * @param {Date} startDate Accepts the date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {number} Returns the number of date count\n * @private\n */\nfunction getDateCount(startDate, ruleObject) {\n var count = maxOccurrence;\n if (ruleObject.count) {\n count = ruleObject.count;\n }\n else if (ruleObject.until) {\n if (ruleObject.freq === 'DAILY' || ruleObject.freq === 'WEEKLY') {\n count = Math.floor((ruleObject.until.getTime() - startDate.getTime()) / MS_PER_DAY) + 1;\n }\n else if (ruleObject.freq === 'MONTHLY' || ruleObject.freq === 'YEARLY') {\n count = Math.floor(((ruleObject.until.getMonth() + 12 * ruleObject.until.getFullYear()) -\n (startDate.getMonth() + 12 * startDate.getFullYear())) / ruleObject.interval) +\n (ruleObject.day.length > 1 ? (Math.floor((ruleObject.until.getTime() - startDate.getTime()) / MS_PER_DAY) + 1) : 1);\n if (ruleObject.freq === 'YEARLY') {\n count = ruleObject.month.length > 1 ? (count * ruleObject.month.length) : count;\n }\n }\n }\n return count;\n}\n/**\n * Internal method for daily type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction dailyType(startDate, endDate, data, ruleObject) {\n var tempDate = new Date(startDate.getTime());\n var interval = ruleObject.interval;\n var expectedCount = getDateCount(startDate, ruleObject);\n var state;\n var expectedDays = ruleObject.day;\n while (compareDates(tempDate, endDate)) {\n state = true;\n state = validateRules(tempDate, ruleObject);\n if (state && (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1 || expectedDays.length === 0)) {\n excludeDateHandler(data, tempDate.getTime());\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n }\n tempDate.setDate(tempDate.getDate() + interval);\n if (tempDate.getHours() !== startDate.getHours()) {\n tempDate.setHours(startDate.getHours());\n }\n }\n}\n/**\n * Internal method for weekly type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction weeklyType(startDate, endDate, data, ruleObject) {\n var tempDate = new Date(startDate.getTime());\n if (!ruleObject.day.length) {\n ruleObject.day.push(DAYINDEX[startDate.getDay()]);\n }\n var interval = ruleObject.interval;\n var expectedDays = ruleObject.day;\n var expectedCount = getDateCount(startDate, ruleObject);\n var weekState = true;\n var wkstIndex;\n var weekCollection = [];\n if (expectedDays.length > 1) {\n if (isNullOrUndefined(ruleObject.wkst) || ruleObject.wkst === '') {\n ruleObject.wkst = dayIndex[0];\n }\n wkstIndex = DAYINDEX.indexOf(ruleObject.wkst);\n while (compareDates(tempDate, endDate)) {\n var startDateDiff = DAYINDEX.indexOf(DAYINDEX[tempDate.getDay()]) - wkstIndex;\n startDateDiff = startDateDiff === -1 ? 6 : startDateDiff;\n var weekstartDate = addDays(tempDate, -startDateDiff);\n var weekendDate = addDays(weekstartDate, 6);\n var compareTempDate = new Date(tempDate.getTime());\n weekendDate = resetTime(weekendDate);\n compareTempDate = resetTime(compareTempDate);\n while (weekendDate >= compareTempDate) {\n if (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n weekCollection.push([tempDate.getTime()]);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n tempDate.setDate(tempDate.getDate() + 1);\n if (tempDate.getHours() !== startDate.getHours()) {\n tempDate.setHours(startDate.getHours());\n }\n compareTempDate = new Date(tempDate.getTime());\n compareTempDate = resetTime(compareTempDate);\n }\n tempDate.setDate(tempDate.getDate() - 1);\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n tempDate.setDate((tempDate.getDate()) + 1 + ((interval - 1) * 7));\n insertDataCollection(weekCollection, weekState, startDate, endDate, data, ruleObject);\n weekCollection = [];\n }\n }\n else {\n tempDate = getStartDateForWeek(startDate, ruleObject.day);\n while (compareDates(tempDate, endDate)) {\n weekState = validateRules(tempDate, ruleObject);\n if (weekState && (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1)) {\n excludeDateHandler(data, tempDate.getTime());\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n tempDate.setDate(tempDate.getDate() + (interval * 7));\n }\n insertDataCollection(weekCollection, weekState, startDate, endDate, data, ruleObject);\n weekCollection = [];\n }\n}\n/**\n * Internal method for monthly type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyType(startDate, endDate, data, ruleObject) {\n // Set monthday value if BYDAY, BYMONTH and Month day property is not set based on start date\n if (!ruleObject.month.length && !ruleObject.day.length && !ruleObject.monthDay.length) {\n ruleObject.monthDay.push(startDate.getDate());\n if (ruleObject.freq === 'YEARLY') {\n ruleObject.month.push(startDate.getMonth() + 1);\n }\n }\n else if (ruleObject.month.length > 0 && !ruleObject.day.length && !ruleObject.monthDay.length) {\n ruleObject.monthDay.push(startDate.getDate());\n }\n var ruleType = validateMonthlyRuleType(ruleObject);\n switch (ruleType) {\n case 'day':\n switch (ruleObject.freq) {\n case 'MONTHLY':\n monthlyDayTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n break;\n case 'YEARLY':\n monthlyDayTypeProcess(startDate, endDate, data, ruleObject);\n break;\n }\n break;\n case 'both':\n case 'date':\n switch (ruleObject.freq) {\n case 'MONTHLY':\n monthlyDateTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n break;\n case 'YEARLY':\n monthlyDateTypeProcess(startDate, endDate, data, ruleObject);\n break;\n }\n break;\n }\n}\n/**\n * Internal method for yearly type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction yearlyType(startDate, endDate, data, ruleObject) {\n var typeValue = checkYearlyType(ruleObject);\n switch (typeValue) {\n case 'MONTH':\n monthlyType(startDate, endDate, data, ruleObject);\n break;\n case 'WEEKNO':\n processWeekNo(startDate, endDate, data, ruleObject);\n break;\n case 'YEARDAY':\n processYearDay(startDate, endDate, data, ruleObject);\n break;\n }\n}\n/**\n * Internal method for process week no\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction processWeekNo(startDate, endDate, data, ruleObject) {\n var stDate = calendarUtil.getYearLastDate(startDate, 0);\n var tempDate;\n var expectedCount = getDateCount(startDate, ruleObject);\n var state;\n var startDay;\n var firstWeekSpan;\n var weekNos = ruleObject.weekNo;\n var weekNo;\n var maxDate;\n var minDate;\n var weekCollection = [];\n var expectedDays = ruleObject.day;\n while (compareDates(stDate, endDate)) {\n startDay = dayIndex.indexOf(DAYINDEX[stDate.getDay()]);\n firstWeekSpan = (6 - startDay) + 1;\n for (var index = 0; index < weekNos.length; index++) {\n weekNo = weekNos[parseInt(index.toString(), 10)];\n weekNo = (weekNo > 0) ? weekNo : 53 + weekNo + 1;\n maxDate = (weekNo === 1) ? firstWeekSpan : firstWeekSpan + ((weekNo - 1) * 7);\n minDate = (weekNo === 1) ? firstWeekSpan - 7 : firstWeekSpan + ((weekNo - 2) * 7);\n while (minDate < maxDate) {\n tempDate = new Date(stDate.getTime() + (MS_PER_DAY * minDate));\n if (expectedDays.length === 0 || expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n if (isNullOrUndefined(ruleObject.setPosition)) {\n insertDateCollection(state, startDate, endDate, data, ruleObject, tempDate.getTime());\n }\n else {\n weekCollection.push([tempDate.getTime()]);\n }\n }\n minDate++;\n }\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(weekCollection, state, startDate, endDate, data, ruleObject);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n stDate = calendarUtil.getYearLastDate(tempDate, ruleObject.interval);\n weekCollection = [];\n }\n}\n/**\n * Internal method for process year day\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction processYearDay(startDate, endDate, data, ruleObject) {\n var stDate = calendarUtil.getYearLastDate(startDate, 0);\n var tempDate;\n var expectedCount = getDateCount(startDate, ruleObject);\n var state;\n var dateCollection = [];\n var date;\n var expectedDays = ruleObject.day;\n while (compareDates(stDate, endDate)) {\n for (var index = 0; index < ruleObject.yearDay.length; index++) {\n date = ruleObject.yearDay[parseInt(index.toString(), 10)];\n tempDate = new Date(stDate.getTime());\n if ((date === calendarUtil.getLeapYearDaysCount() || date === -calendarUtil.getLeapYearDaysCount()) &&\n (!calendarUtil.isLeapYear(calendarUtil.getFullYear(tempDate), 1))) {\n tempDate.setDate(tempDate.getDate() + 1);\n continue;\n }\n tempDate.setDate(tempDate.getDate() + ((date < 0) ?\n calendarUtil.getYearDaysCount(tempDate, 1) + 1 + date : date));\n if (expectedDays.length === 0 || expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n if (ruleObject.setPosition == null) {\n insertDateCollection(state, startDate, endDate, data, ruleObject, tempDate.getTime());\n }\n else {\n dateCollection.push([tempDate.getTime()]);\n }\n }\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(dateCollection, state, startDate, endDate, data, ruleObject);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n stDate = calendarUtil.getYearLastDate(tempDate, ruleObject.interval);\n dateCollection = [];\n }\n}\n/**\n * Internal method to check yearly type\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {YearRuleType} Returns the Yearly rule type object\n * @private\n */\nfunction checkYearlyType(ruleObject) {\n if (ruleObject.yearDay.length) {\n return 'YEARDAY';\n }\n else if (ruleObject.weekNo.length) {\n return 'WEEKNO';\n }\n return 'MONTH';\n}\n/**\n * Internal method to initialize recurrence rule variables\n *\n * @param {Date} startDate Accepts the start date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {RuleData} Return the rule data object\n * @private\n */\nfunction initializeRecRuleVariables(startDate, ruleObject) {\n var ruleData = {\n monthCollection: [],\n index: 0,\n tempDate: new Date(startDate.getTime()),\n mainDate: new Date(startDate.getTime()),\n expectedCount: getDateCount(startDate, ruleObject),\n monthInit: 0,\n dateCollection: []\n };\n if (ruleObject.month.length) {\n calendarUtil.setMonth(ruleData.tempDate, ruleObject.month[0], ruleData.tempDate.getDate());\n }\n return ruleData;\n}\n/**\n * Internal method for process monthly date type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDateTypeProcess(startDate, endDate, data, ruleObject) {\n if (ruleObject.month.length) {\n monthlyDateTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n return;\n }\n var ruleData = initializeRecRuleVariables(startDate, ruleObject);\n var currentMonthDate;\n ruleData.tempDate = ruleData.mainDate = calendarUtil.getMonthStartDate(ruleData.tempDate);\n while (compareDates(ruleData.tempDate, endDate)) {\n currentMonthDate = new Date(ruleData.tempDate.getTime());\n while (calendarUtil.isSameYear(currentMonthDate, ruleData.tempDate) &&\n (ruleData.expectedCount && (data.length + ruleObject.recExceptionCount) <= ruleData.expectedCount)) {\n if (ruleObject.month.length === 0 || (ruleObject.month.length > 0\n && !calendarUtil.checkMonth(ruleData.tempDate, ruleObject.month))) {\n processDateCollectionForByMonthDay(ruleObject, ruleData, endDate, false);\n ruleData.beginDate = new Date(ruleData.tempDate.getTime());\n ruleData.monthInit = setNextValidDate(ruleData.tempDate, ruleObject, ruleData.monthInit, ruleData.beginDate);\n }\n else {\n calendarUtil.setValidDate(ruleData.tempDate, 1, 1);\n ruleData.tempDate = getStartDateForWeek(ruleData.tempDate, ruleObject.day);\n break;\n }\n }\n ruleData.tempDate.setFullYear(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), currentMonthDate.getDate());\n insertDataCollection(ruleData.dateCollection, ruleData.state, startDate, endDate, data, ruleObject);\n if (calendarUtil.isLastMonth(ruleData.tempDate)) {\n calendarUtil.setValidDate(ruleData.tempDate, 1, 1);\n ruleData.tempDate = getStartDateForWeek(ruleData.tempDate, ruleObject.day);\n }\n if (ruleData.expectedCount && (data.length + ruleObject.recExceptionCount) >= ruleData.expectedCount) {\n return;\n }\n ruleData.tempDate.setFullYear(ruleData.tempDate.getFullYear() + ruleObject.interval - 1);\n ruleData.tempDate = getStartDateForWeek(ruleData.tempDate, ruleObject.day);\n ruleData.monthInit = setNextValidDate(ruleData.tempDate, ruleObject, ruleData.monthInit, ruleData.beginDate);\n ruleData.dateCollection = [];\n }\n}\n/**\n * Internal method for process monthly date type with month frequency from recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDateTypeProcessforMonthFreq(startDate, endDate, data, ruleObject) {\n var ruleData = initializeRecRuleVariables(startDate, ruleObject);\n ruleData.tempDate = ruleData.mainDate = calendarUtil.getMonthStartDate(ruleData.tempDate);\n if (((ruleObject.freq === 'MONTHLY' && ruleObject.interval === 12) || (ruleObject.freq === 'YEARLY')) &&\n calendarUtil.getMonthDaysCount(startDate) < ruleObject.monthDay[0]) {\n return;\n }\n while (compareDates(ruleData.tempDate, endDate)) {\n ruleData.beginDate = new Date(ruleData.tempDate.getTime());\n processDateCollectionForByMonthDay(ruleObject, ruleData, endDate, true, startDate, data);\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(ruleData.dateCollection, ruleData.state, startDate, endDate, data, ruleObject);\n }\n if (ruleData.expectedCount && (data.length + ruleObject.recExceptionCount) >= ruleData.expectedCount) {\n return;\n }\n ruleData.monthInit = setNextValidDate(ruleData.tempDate, ruleObject, ruleData.monthInit, ruleData.beginDate);\n ruleData.dateCollection = [];\n }\n}\n/**\n * To process date collection for Monthly & Yearly based on BYMONTH Day property\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {RuleData} recRuleVariables Accepts the rule data\n * @param {Date} endDate Accepts the end date\n * @param {boolean} isByMonth Accepts the boolean to validate either month or not\n * @param {Date} startDate Accepts the start date\n * @param {number[]} data Accepts the collection of dates\n * @returns {void}\n * @private\n */\nfunction processDateCollectionForByMonthDay(ruleObject, recRuleVariables, endDate, isByMonth, startDate, data) {\n for (var index = 0; index < ruleObject.monthDay.length; index++) {\n recRuleVariables.date = ruleObject.monthDay[parseInt(index.toString(), 10)];\n recRuleVariables.tempDate = calendarUtil.getMonthStartDate(recRuleVariables.tempDate);\n var maxDate = calendarUtil.getMonthDaysCount(recRuleVariables.tempDate);\n recRuleVariables.date = recRuleVariables.date > 0 ? recRuleVariables.date : (maxDate + recRuleVariables.date + 1);\n if (validateProperDate(recRuleVariables.tempDate, recRuleVariables.date, recRuleVariables.mainDate)\n && (recRuleVariables.date > 0)) {\n calendarUtil.setDate(recRuleVariables.tempDate, recRuleVariables.date);\n if (endDate && recRuleVariables.tempDate > endDate) {\n return;\n }\n if (ruleObject.day.length === 0 || ruleObject.day.indexOf(DAYINDEX[recRuleVariables.tempDate.getDay()]) > -1) {\n if (isByMonth && isNullOrUndefined(ruleObject.setPosition) && (recRuleVariables.expectedCount\n && (data.length + ruleObject.recExceptionCount) < recRuleVariables.expectedCount)) {\n insertDateCollection(recRuleVariables.state, startDate, endDate, data, ruleObject, recRuleVariables.tempDate.getTime());\n }\n else {\n recRuleVariables.dateCollection.push([recRuleVariables.tempDate.getTime()]);\n }\n }\n }\n }\n}\n/**\n * Internal method to set next valid date\n *\n * @param {Date} tempDate Accepts the date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {number} monthInit Accepts the initial month\n * @param {Date} beginDate Accepts the initial date\n * @param {number} interval Accepts the interval duration\n * @returns {number} Returnx the next valid date\n * @private\n */\nfunction setNextValidDate(tempDate, ruleObject, monthInit, beginDate, interval) {\n if (beginDate === void 0) { beginDate = null; }\n var monthData = beginDate ? beginDate.getMonth() : 0;\n var startDate = calendarUtil.getMonthStartDate(tempDate);\n interval = isNullOrUndefined(interval) ? ruleObject.interval : interval;\n tempDate.setFullYear(startDate.getFullYear());\n tempDate.setMonth(startDate.getMonth());\n tempDate.setDate(startDate.getDate());\n if (ruleObject.month.length) {\n monthInit++;\n monthInit = monthInit % ruleObject.month.length;\n calendarUtil.setMonth(tempDate, ruleObject.month[parseInt(monthInit.toString(), 10)], 1);\n if (monthInit === 0) {\n calendarUtil.addYears(tempDate, interval, ruleObject.month[0]);\n }\n }\n else {\n if (beginDate && (beginDate.getFullYear() < tempDate.getFullYear())) {\n monthData = tempDate.getMonth() - 1;\n }\n calendarUtil.setValidDate(tempDate, interval, 1, monthData, beginDate);\n }\n return monthInit;\n}\n/**\n * To get month collection when BYDAY property having more than one value in list.\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction getMonthCollection(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var tempDate = new Date(startDate.getTime());\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n var monthCollection = [];\n var dateCollection = [];\n var dates = [];\n var index;\n var state;\n var expectedCount = getDateCount(startDate, ruleObject);\n var monthInit = 0;\n var beginDate;\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], 1);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate)\n && (expectedCount && (data.length + ruleObject.recExceptionCount) < expectedCount)) {\n var currentMonthDate = new Date(tempDate.getTime());\n var isHavingNumber = expectedDays.map(function (item) { return HASNUMBER.test(item); });\n if (isHavingNumber.indexOf(true) > -1) {\n for (var j = 0; j <= expectedDays.length - 1; j++) {\n var expectedDaysArray = expectedDays[parseInt(j.toString(), 10)].match(SPLITNUMBERANDSTRING);\n var position = parseInt(expectedDaysArray[0], 10);\n tempDate = new Date(tempDate.getTime());\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n tempDate = getStartDateForWeek(tempDate, expectedDays);\n currentMonthDate.setFullYear(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());\n while (calendarUtil.isSameYear(currentMonthDate, tempDate) && calendarUtil.isSameMonth(currentMonthDate, tempDate)) {\n if (expectedDaysArray[expectedDaysArray.length - 1] === DAYINDEX[currentMonthDate.getDay()]) {\n monthCollection.push([currentMonthDate.getTime()]);\n }\n currentMonthDate.setDate(currentMonthDate.getDate() + (1));\n }\n currentMonthDate.setDate(currentMonthDate.getDate() - (1));\n if (expectedDaysArray[0].indexOf('-') > -1) {\n index = monthCollection.length - (-1 * position);\n }\n else {\n index = position - 1;\n }\n index = isNaN(index) ? 0 : index;\n if (monthCollection.length > 0) {\n if (isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n else {\n dateCollection = [(filterDateCollectionByIndex(monthCollection, index, dates))];\n }\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n monthCollection = [];\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDateCollectionBasedonBySetPos(dateCollection, state, startDate, endDate, data, ruleObject);\n dates = [];\n }\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n else {\n var weekCollection = [];\n var dayCycleData = processWeekDays(expectedDays);\n currentMonthDate.setFullYear(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());\n var initialDate = new Date(tempDate.getTime());\n beginDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameMonth(initialDate, tempDate)) {\n weekCollection.push(tempDate.getTime());\n if (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n monthCollection.push(weekCollection);\n weekCollection = [];\n }\n tempDate.setDate(tempDate.getDate()\n + dayCycleData[DAYINDEX[tempDate.getDay()]]);\n }\n index = ((ruleObject.setPosition < 1) ? (monthCollection.length + ruleObject.setPosition) : ruleObject.setPosition - 1);\n if (isNullOrUndefined(ruleObject.setPosition)) {\n index = 0;\n var datas = [];\n for (var week = 0; week < monthCollection.length; week++) {\n for (var row = 0; row < monthCollection[parseInt(week.toString(), 10)].length; row++) {\n datas.push(monthCollection[parseInt(week.toString(), 10)][parseInt(row.toString(), 10)]);\n }\n }\n monthCollection = [datas];\n }\n if (monthCollection.length > 0) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n }\n}\n/**\n * To process monday day type for FREQ=MONTHLY\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDayTypeProcessforMonthFreq(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n // When BYDAY property having more than 1 value.\n if (expectedDays.length > 1) {\n getMonthCollection(startDate, endDate, data, ruleObject);\n return;\n }\n var tempDate = new Date(startDate.getTime());\n var expectedCount = getDateCount(startDate, ruleObject);\n var monthCollection = [];\n var beginDate;\n var monthInit = 0;\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], 1);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate) && (expectedCount && (data.length + ruleObject.recExceptionCount) < expectedCount)) {\n beginDate = new Date(tempDate.getTime());\n var currentMonthDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameMonth(tempDate, currentMonthDate)) {\n monthCollection.push([currentMonthDate.getTime()]);\n currentMonthDate.setDate(currentMonthDate.getDate() + (7));\n }\n // To filter date collection based on BYDAY Index, then BYSETPOS and to insert datas into existing collection\n insertDateCollectionBasedonIndex(monthCollection, startDate, endDate, data, ruleObject);\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n}\n/**\n * To process monday day type for FREQ=YEARLY\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDayTypeProcess(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var isHavingNumber = expectedDays.map(function (item) { return HASNUMBER.test(item); });\n // If BYDAY property having more than 1 value in list\n if (expectedDays.length > 1 && isHavingNumber.indexOf(true) > -1) {\n processDateCollectionforByDayWithInteger(startDate, endDate, data, ruleObject);\n return;\n }\n else if (ruleObject.month.length && expectedDays.length === 1 && isHavingNumber.indexOf(true) > -1) {\n monthlyDayTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n return;\n }\n var tempDate = new Date(startDate.getTime());\n var currentMonthDate;\n var expectedCount = getDateCount(startDate, ruleObject);\n var interval = ruleObject.interval;\n var monthCollection = [];\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], tempDate.getDate());\n }\n // Set the date as start date of the yeear if yearly freq having ByDay property alone\n if (isNullOrUndefined(ruleObject.setPosition) && ruleObject.month.length === 0 && ruleObject.weekNo.length === 0) {\n tempDate.setFullYear(startDate.getFullYear(), 0, 1);\n }\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate)) {\n currentMonthDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameYear(currentMonthDate, tempDate) &&\n (expectedCount && (data.length + ruleObject.recExceptionCount) <= expectedCount)) {\n currentMonthDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameYear(currentMonthDate, tempDate)) {\n if (ruleObject.month.length === 0 || (ruleObject.month.length > 0\n && !calendarUtil.checkMonth(tempDate, ruleObject.month))) {\n if (expectedDays.length > 1) {\n if (calendarUtil.compareMonth(currentMonthDate, tempDate)) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n break;\n }\n if (expectedDays.indexOf(DAYINDEX[currentMonthDate.getDay()]) > -1) {\n monthCollection.push([currentMonthDate.getTime()]);\n }\n currentMonthDate.setDate(currentMonthDate.getDate() + (1));\n }\n else {\n // If BYDAY property having 1 value in list\n if (currentMonthDate.getFullYear() > tempDate.getFullYear()) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n break;\n }\n var newstr = getDayString(expectedDays[0]);\n if (DAYINDEX[currentMonthDate.getDay()] === newstr\n && new Date(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), 0)\n > new Date(startDate.getFullYear())) {\n monthCollection.push([currentMonthDate.getTime()]);\n }\n currentMonthDate.setDate(currentMonthDate.getDate() + (7));\n }\n }\n else {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n break;\n }\n }\n }\n tempDate.setFullYear(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), currentMonthDate.getDate());\n // To filter date collection based on BYDAY Index, then BYSETPOS and to insert datas into existing collection\n insertDateCollectionBasedonIndex(monthCollection, startDate, endDate, data, ruleObject);\n if (calendarUtil.isLastMonth(tempDate)) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n }\n tempDate.setFullYear(tempDate.getFullYear() + interval - 1);\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n}\n/**\n * To process the recurrence rule when BYDAY property having values with integer\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction processDateCollectionforByDayWithInteger(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var expectedCount = getDateCount(startDate, ruleObject);\n var tempDate = new Date(startDate.getTime());\n var interval = ruleObject.interval;\n var monthCollection = [];\n var dateCollection = [];\n var index;\n var state;\n var monthInit = 0;\n var currentMonthDate;\n var currentDate;\n var beginDate;\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n var datas = [];\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], 1);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate)) {\n currentMonthDate = new Date(tempDate.getTime());\n for (var i = 0; i <= ruleObject.month.length; i++) {\n for (var j = 0; j <= expectedDays.length - 1; j++) {\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n while (calendarUtil.isSameYear(currentMonthDate, tempDate) &&\n (expectedCount && (data.length + ruleObject.recExceptionCount) <= expectedCount)) {\n while (calendarUtil.isSameYear(currentMonthDate, tempDate)) {\n currentMonthDate = new Date(tempDate.getTime());\n if (ruleObject.month.length === 0 ||\n (ruleObject.month.length > 0 && ruleObject.month[parseInt(i.toString(), 10)] === calendarUtil.getMonth(currentMonthDate))) {\n var expectedDaysArray = expectedDays[parseInt(j.toString(), 10)].match(SPLITNUMBERANDSTRING);\n var position = parseInt(expectedDaysArray[0], 10);\n currentDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameYear(currentDate, tempDate)\n && calendarUtil.isSameMonth(currentDate, tempDate)) {\n if (expectedDaysArray[expectedDaysArray.length - 1] === DAYINDEX[currentDate.getDay()]) {\n monthCollection.push([currentDate.getTime()]);\n }\n currentDate.setDate(currentDate.getDate() + (1));\n }\n currentDate.setDate(currentDate.getDate() - (1));\n if (expectedDaysArray[0].indexOf('-') > -1) {\n index = monthCollection.length - (-1 * position);\n }\n else {\n index = position - 1;\n }\n index = isNaN(index) ? 0 : index;\n }\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n }\n }\n tempDate = j === 0 && currentDate ? new Date(currentDate.getTime()) : new Date(currentMonthDate.getTime());\n if (monthCollection.length > 0) {\n if (isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n else {\n dateCollection = [(filterDateCollectionByIndex(monthCollection, index, datas))];\n }\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n }\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDateCollectionBasedonBySetPos(dateCollection, state, startDate, endDate, data, ruleObject);\n datas = [];\n }\n if (calendarUtil.isLastMonth(tempDate)) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate.setFullYear(tempDate.getFullYear() + interval - 1);\n }\n else {\n tempDate.setFullYear(tempDate.getFullYear() + interval);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], tempDate.getDate());\n }\n }\n}\n/**\n * To get recurrence collection if BYSETPOS is null\n *\n * @param {number[]} monthCollection Accepts the month collection dates\n * @param {string[]} expectedDays Accepts the exception dates\n * @returns {RuleData} Returns the rule data object\n * @private\n */\nfunction getRecurrenceCollection(monthCollection, expectedDays) {\n var index;\n var recurrenceCollectionObject = { monthCollection: [], index: 0 };\n if (expectedDays.length === 1) {\n // To split numeric value from BYDAY property value\n var expectedDaysArrays = expectedDays[0].match(SPLITNUMBERANDSTRING);\n var arrPosition = void 0;\n if (expectedDaysArrays.length > 1) {\n arrPosition = parseInt(expectedDaysArrays[0], 10);\n index = ((arrPosition < 1) ? (monthCollection.length + arrPosition) : arrPosition - 1);\n }\n else {\n index = 0;\n monthCollection = getDateCollectionforBySetPosNull(monthCollection);\n }\n }\n else {\n index = 0;\n monthCollection = getDateCollectionforBySetPosNull(monthCollection);\n }\n recurrenceCollectionObject.monthCollection = monthCollection;\n recurrenceCollectionObject.index = index;\n return recurrenceCollectionObject;\n}\n/**\n * Internal method to process the data collections\n *\n * @param {number[]} dateCollection Accepts the date collections\n * @param {boolean} state Accepts the state\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of numbers\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction insertDataCollection(dateCollection, state, startDate, endDate, data, ruleObject) {\n var index = ((ruleObject.setPosition < 1) ?\n (dateCollection.length + ruleObject.setPosition) : ruleObject.setPosition - 1);\n if (isNullOrUndefined(ruleObject.setPosition)) {\n index = 0;\n dateCollection = getDateCollectionforBySetPosNull(dateCollection);\n }\n if (dateCollection.length > 0) {\n insertDatasIntoExistingCollection(dateCollection, state, startDate, endDate, data, ruleObject, index);\n }\n}\n/**\n * To process month collection if BYSETPOS is null\n *\n * @param {number[]} monthCollection Accepts the month date collections\n * @returns {number[]} Returns the month date collections\n * @private\n */\nfunction getDateCollectionforBySetPosNull(monthCollection) {\n var datas = [];\n for (var week = 0; week < monthCollection.length; week++) {\n for (var row = 0; row < monthCollection[parseInt(week.toString(), 10)].length; row++) {\n datas.push(new Date(monthCollection[parseInt(week.toString(), 10)][parseInt(row.toString(), 10)]).getTime());\n }\n }\n monthCollection = datas.length > 0 ? [datas] : [];\n return monthCollection;\n}\n/**\n * To filter date collection based on BYDAY Index, then BYSETPOS and to insert datas into existing collection\n *\n * @param {number[]} monthCollection Accepts the month date collections\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the date collections\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction insertDateCollectionBasedonIndex(monthCollection, startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var state;\n var datas = [];\n var dateCollection = [];\n var recurrenceCollections = getRecurrenceCollection(monthCollection, expectedDays);\n monthCollection = recurrenceCollections.monthCollection;\n var index = recurrenceCollections.index;\n if (ruleObject.setPosition != null) {\n dateCollection = [(filterDateCollectionByIndex(monthCollection, index, datas))];\n insertDateCollectionBasedonBySetPos(dateCollection, state, startDate, endDate, data, ruleObject);\n }\n else {\n if (monthCollection.length > 0) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n }\n datas = [];\n}\n/**\n * To filter date collection when BYDAY property having values with number\n *\n * @param {number[]} monthCollection Accepts the date collections\n * @param {number} index Accepts the index of date collections\n * @param {number[]} datas Accepts the collection of dates\n * @returns {number[]} Returns the collection of dates\n * @private\n */\nfunction filterDateCollectionByIndex(monthCollection, index, datas) {\n for (var week = 0; week < monthCollection[parseInt(index.toString(), 10)].length; week++) {\n datas.push(monthCollection[parseInt(index.toString(), 10)][parseInt(week.toString(), 10)]);\n }\n return datas;\n}\n/**\n * To insert processed date collection in final array element\n *\n * @param {boolean} state Accepts the state of the recurrence rule\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {number} dayData Accepts the date index\n * @returns {void}\n * @private\n */\nfunction insertDateCollection(state, startDate, endDate, data, ruleObject, dayData) {\n var expectedCount = getDateCount(startDate, ruleObject);\n var chDate = new Date(dayData);\n state = validateRules(chDate, ruleObject);\n if ((chDate >= startDate) && compareDates(chDate, endDate) && state\n && expectedCount && (data.length + ruleObject.recExceptionCount) < expectedCount) {\n excludeDateHandler(data, dayData);\n }\n}\n/**\n * Return the last week number of given month and year.\n *\n * @param {number} year Accepts the Year in number format\n * @param {number} startDayOfWeek Accepts the start date\n * @param {number[]} monthCollection Accepts the collection of dates\n * @param {number} week Accepts the week in number format\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {number} returns week number\n * @private\n */\nfunction weekCount(year, startDayOfWeek, monthCollection, week, ruleObject) {\n var firstDayOfWeek = startDayOfWeek || 0;\n var firstOfMonth = new Date(year, ruleObject.month[0] - 1, 1);\n var lastOfMonth = new Date(year, ruleObject.month[0], 0);\n var numberOfDaysInMonth = lastOfMonth.getDate();\n var firstWeekDay = (firstOfMonth.getDay() - firstDayOfWeek + 7) % 7;\n var used = firstWeekDay + numberOfDaysInMonth;\n var count = Math.ceil(used / 7) - 1;\n var dayData = monthCollection[parseInt(week.toString(), 10)][parseInt(count.toString(), 10)];\n var chDate = new Date(dayData);\n var state = validateRules(chDate, ruleObject);\n return (state) ? count : count - 1;\n}\n/**\n * To process date collection based on Byset position after process the collection based on BYDAY property value index: EX:BYDAY=1SUm-1SU\n *\n * @param {number[]} monthCollection Accepts the collection of dates\n * @param {boolean} state Accepts the state of the recurrence rule\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction insertDateCollectionBasedonBySetPos(monthCollection, state, startDate, endDate, data, ruleObject) {\n if (monthCollection.length > 0) {\n for (var week = 0; week < monthCollection.length; week++) {\n monthCollection[parseInt(week.toString(), 10)].sort();\n var expectedDays = ruleObject.day;\n var isHavingNumber = expectedDays.map(function (item) { return HASNUMBER.test(item); });\n var weekIndex = (ruleObject.freq === 'YEARLY' && (ruleObject.validRules.indexOf('BYMONTH') > -1) &&\n !(isHavingNumber.indexOf(true) > -1)) ?\n weekCount(new Date(monthCollection[0][0]).getFullYear(), 0, monthCollection, week, ruleObject)\n : (monthCollection[parseInt(week.toString(), 10)].length + ruleObject.setPosition);\n var index = ((ruleObject.setPosition < 1) ? weekIndex : ruleObject.setPosition - 1);\n var dayData = monthCollection[parseInt(week.toString(), 10)][parseInt(index.toString(), 10)];\n insertDateCollection(state, startDate, endDate, data, ruleObject, dayData);\n }\n }\n}\n/**\n * To insert datas into existing collection which is processed from previous loop.\n *\n * @param {number[]} monthCollection Accepts the collection of dates\n * @param {boolean} state Accepts the state of the recurrence rule\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {number} index Accepts the index value\n * @returns {void}\n * @private\n */\nfunction insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index) {\n if (monthCollection.length > 0) {\n index = !isNullOrUndefined(index) ? index :\n ((ruleObject.setPosition < 1)\n ? (monthCollection.length + ruleObject.setPosition) : ruleObject.setPosition - 1);\n monthCollection[parseInt(index.toString(), 10)].sort();\n for (var week = 0; week < monthCollection[parseInt(index.toString(), 10)].length; week++) {\n var dayData = monthCollection[parseInt(index.toString(), 10)][parseInt(week.toString(), 10)];\n insertDateCollection(state, startDate, endDate, data, ruleObject, dayData);\n }\n }\n}\n/**\n * Internal method to compare dates\n *\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @returns {boolean} Returns the result of checking start and end dates\n * @private\n */\nfunction compareDates(startDate, endDate) {\n return endDate ? (startDate <= endDate) : true;\n}\n/**\n * Internal method to get day string\n *\n * @param {string} expectedDays Accepts the exception date string\n * @returns {string} Returns the valid string\n * @private\n */\nfunction getDayString(expectedDays) {\n // To get BYDAY value without numeric value\n var newstr = expectedDays.replace(REMOVENUMBERINSTRING, '');\n return newstr;\n}\n/**\n * Internal method to check day index\n *\n * @param {number} day Accepts the day index\n * @param {string[]} expectedDays Accepts the exception dates\n * @returns {boolean} Returns the index date\n * @private\n */\nfunction checkDayIndex(day, expectedDays) {\n var sortedExpectedDays = [];\n expectedDays.forEach(function (element) {\n var expectedDaysNumberSplit = element.match(SPLITNUMBERANDSTRING);\n if (expectedDaysNumberSplit.length === 2) {\n sortedExpectedDays.push(expectedDaysNumberSplit[1]);\n }\n else {\n sortedExpectedDays.push(expectedDaysNumberSplit[0]);\n }\n });\n return (sortedExpectedDays.indexOf(DAYINDEX[parseInt(day.toString(), 10)]) === -1);\n}\n/**\n * Internal method to get start date of week\n *\n * @param {Date} startDate Accepts the start date\n * @param {string[]} expectedDays Accepts the exception dates\n * @returns {Date} Return the week start date\n * @private\n */\nfunction getStartDateForWeek(startDate, expectedDays) {\n var tempDate = new Date(startDate.getTime());\n var newstr;\n if (expectedDays.length > 0) {\n var expectedDaysArr = [];\n for (var i = 0; i <= expectedDays.length - 1; i++) {\n newstr = getDayString(expectedDays[parseInt(i.toString(), 10)]);\n expectedDaysArr.push(newstr);\n }\n if (expectedDaysArr.indexOf(DAYINDEX[tempDate.getDay()]) === -1) {\n do {\n tempDate.setDate(tempDate.getDate() + 1);\n } while (expectedDaysArr.indexOf(DAYINDEX[tempDate.getDay()]) === -1);\n }\n }\n return tempDate;\n}\n/**\n * Method to generate recurrence rule object from given rule\n *\n * @param {string} rules Accepts the recurrence rule\n * @returns {RecRule} Returns the recurrence rule object\n */\nexport function extractObjectFromRule(rules) {\n var ruleObject = {\n freq: null,\n interval: 1,\n count: null,\n until: null,\n day: [],\n wkst: null,\n month: [],\n weekNo: [],\n monthDay: [],\n yearDay: [],\n setPosition: null,\n validRules: []\n };\n var rulesList = rules.split(';');\n var splitData = [];\n var temp;\n rulesList.forEach(function (data) {\n splitData = data.split('=');\n switch (splitData[0]) {\n case 'UNTIL':\n temp = splitData[1];\n ruleObject.until = getDateFromRecurrenceDateString(temp);\n break;\n case 'BYDAY':\n ruleObject.day = splitData[1].split(',');\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYMONTHDAY':\n ruleObject.monthDay = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYMONTH':\n ruleObject.month = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYYEARDAY':\n ruleObject.yearDay = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYWEEKNO':\n ruleObject.weekNo = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'INTERVAL':\n ruleObject.interval = parseInt(splitData[1], 10);\n break;\n case 'COUNT':\n ruleObject.count = parseInt(splitData[1], 10);\n break;\n case 'BYSETPOS':\n ruleObject.setPosition = parseInt(splitData[1], 10) > 4 ? -1 : parseInt(splitData[1], 10);\n break;\n case 'FREQ':\n ruleObject.freq = splitData[1];\n break;\n case 'WKST':\n ruleObject.wkst = splitData[1];\n break;\n }\n });\n if ((ruleObject.freq === 'MONTHLY') && (ruleObject.monthDay.length === 0)) {\n var index = ruleObject.validRules.indexOf('BYDAY');\n ruleObject.validRules.splice(index, 1);\n }\n return ruleObject;\n}\n/**\n * Internal method to validate proper date\n *\n * @param {Date} tempDate Accepts the date value\n * @param {number} data Accepts the data value\n * @param {Date} startDate Accepts the start date\n * @returns {boolean} Returns the result of date validate\n * @private\n */\nfunction validateProperDate(tempDate, data, startDate) {\n var maxDate = calendarUtil.getMonthDaysCount(tempDate);\n return (data <= maxDate) && (tempDate >= startDate);\n}\n/**\n * Internal method to process week days\n *\n * @param {string[]} expectedDays Accepts the expection dates\n * @returns {Object} Returns the weekdays object\n * @private\n */\nfunction processWeekDays(expectedDays) {\n var dayCycle = {};\n expectedDays.forEach(function (element, index) {\n if (index === expectedDays.length - 1) {\n var startIndex = dayIndex.indexOf(element);\n var temp = startIndex;\n while (temp % 7 !== dayIndex.indexOf(expectedDays[0])) {\n temp++;\n }\n dayCycle[\"\" + element] = temp - startIndex;\n }\n else {\n dayCycle[\"\" + element] = dayIndex.indexOf(expectedDays[(index + 1)]) - dayIndex.indexOf(element);\n }\n });\n return dayCycle;\n}\n/**\n * Internal method to check date\n *\n * @param {Date} tempDate Accepts the date value\n * @param {number[]} expectedDate Accepts the exception dates\n * @returns {boolean} Returns the boolean value\n * @private\n */\nfunction checkDate(tempDate, expectedDate) {\n var temp = expectedDate.slice(0);\n var data;\n var maxDate = calendarUtil.getMonthDaysCount(tempDate);\n data = temp.shift();\n while (data) {\n if (data < 0) {\n data = data + maxDate + 1;\n }\n if (data === tempDate.getDate()) {\n return false;\n }\n data = temp.shift();\n }\n return true;\n}\n/**\n * Internal method to check the year value\n *\n * @param {Date} tempDate Accepts the date value\n * @param {number[]} expectedyearDay Accepts the exception dates in year\n * @returns {boolean} Returns the boolean value\n * @private\n */\nfunction checkYear(tempDate, expectedyearDay) {\n var temp = expectedyearDay.slice(0);\n var data;\n var yearDay = getYearDay(tempDate);\n data = temp.shift();\n while (data) {\n if (data < 0) {\n data = data + calendarUtil.getYearDaysCount(tempDate, 0) + 1;\n }\n if (data === yearDay) {\n return false;\n }\n data = temp.shift();\n }\n return true;\n}\n/**\n * Internal method to get the year day\n *\n * @param {Date} currentDate Accepts the date value\n * @returns {number} Returns the boolean value\n * @private\n */\nfunction getYearDay(currentDate) {\n if (!startDateCollection[calendarUtil.getFullYear(currentDate)]) {\n startDateCollection[calendarUtil.getFullYear(currentDate)] = calendarUtil.getYearLastDate(currentDate, 0);\n }\n var tempDate = startDateCollection[calendarUtil.getFullYear(currentDate)];\n var diff = currentDate.getTime() - tempDate.getTime();\n return Math.ceil(diff / MS_PER_DAY);\n}\n/**\n * Internal method to validate monthly rule type\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {MonthlyType} Returns the monthly type object\n * @private\n */\nfunction validateMonthlyRuleType(ruleObject) {\n if (ruleObject.monthDay.length && !ruleObject.day.length) {\n return 'date';\n }\n else if (!ruleObject.monthDay.length && ruleObject.day.length) {\n return 'day';\n }\n return 'both';\n}\n/**\n * Internal method to re-order the week days based on first day of week\n *\n * @param {string[]} days Accepts the week days value\n * @returns {void}\n * @private\n */\nfunction rotate(days) {\n var data = days.shift();\n days.push(data);\n}\n/**\n * Internal method to set first day of week\n *\n * @param {string} day Accepts the first day string\n * @returns {void}\n * @private\n */\nfunction setFirstDayOfWeek(day) {\n while (dayIndex[0] !== day) {\n rotate(dayIndex);\n }\n}\n/**\n * Internal method to validate recurrence rule\n *\n * @param {Date} tempDate Accepts the date value\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {boolean} Returns the boolean value\n * @private\n */\nfunction validateRules(tempDate, ruleObject) {\n var state = true;\n var expectedDays = ruleObject.day;\n var expectedMonth = ruleObject.month;\n var expectedDate = calendarUtil.getExpectedDays(tempDate, ruleObject.monthDay);\n var expectedyearDay = ruleObject.yearDay;\n ruleObject.validRules.forEach(function (rule) {\n switch (rule) {\n case 'BYDAY':\n if (checkDayIndex(tempDate.getDay(), expectedDays)) {\n state = false;\n }\n break;\n case 'BYMONTH':\n if (calendarUtil.checkMonth(tempDate, expectedMonth)) {\n state = false;\n }\n break;\n case 'BYMONTHDAY':\n if (checkDate(tempDate, expectedDate)) {\n state = false;\n }\n break;\n case 'BYYEARDAY':\n if (checkYear(tempDate, expectedyearDay)) {\n state = false;\n }\n break;\n }\n });\n return state;\n}\n/**\n * Internal method to get calendar util\n *\n * @param {CalendarType} calendarMode Accepts the calendar type object\n * @returns {CalendarUtil} Returns the calendar util object\n * @private\n */\nexport function getCalendarUtil(calendarMode) {\n if (calendarMode === 'Islamic') {\n return new Islamic();\n }\n return new Gregorian();\n}\nvar startDateCollection = {};\nvar tempExcludeDate;\nvar dayIndex = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\nvar maxOccurrence;\nvar tempViewDate;\nvar calendarUtil;\nvar DAYINDEX = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\nvar MAXOCCURRENCE = 43;\nvar WEEKPOS = ['first', 'second', 'third', 'fourth', 'last'];\nvar TIMES = 'summaryTimes';\nvar ON = 'summaryOn';\nvar EVERY = 'every';\nvar UNTIL = 'summaryUntil';\nvar DAYS = 'summaryDay';\nvar WEEKS = 'summaryWeek';\nvar MONTHS = 'summaryMonth';\nvar YEARS = 'summaryYear';\nvar DAYINDEXOBJECT = {\n SU: 'sun',\n MO: 'mon',\n TU: 'tue',\n WE: 'wed',\n TH: 'thu',\n FR: 'fri',\n SA: 'sat'\n};\n// To check string has number\nvar HASNUMBER = /\\d/;\n// To find the numbers in string\nvar REMOVENUMBERINSTRING = /[^A-Z]+/;\n// To split number and string\nvar SPLITNUMBERANDSTRING = /[a-z]+|[^a-z]+/gi;\n/**\n * Method to generate string from date\n *\n * @param {Date} date Accepts the date value\n * @returns {string} Returns the string value\n */\nexport function getRecurrenceStringFromDate(date) {\n return [date.getUTCFullYear(),\n roundDateValues(date.getUTCMonth() + 1),\n roundDateValues(date.getUTCDate()),\n 'T',\n roundDateValues(date.getUTCHours()),\n roundDateValues(date.getUTCMinutes()),\n roundDateValues(date.getUTCSeconds()),\n 'Z'].join('');\n}\n/**\n * Internal method to round the date values\n *\n * @param {string | number} date Accepts the date value in either string or number format\n * @returns {string} Returns the date value in string format\n * @private\n */\nfunction roundDateValues(date) {\n return ('0' + date).slice(-2);\n}\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\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 toJSON() {\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","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\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 { 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})();\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.setContentHeight(content, timeCells, scrollerHeight);\n this.setColWidth(content);\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 if (this.parent.currentView.indexOf('Timeline') > -1) {\n content.scrollTop = this.parent.uiStateValues.top;\n }\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(scrollDate)) {\n var headerElement = this.element.querySelector('.' + cls.HEADER_CELLS_CLASS + '[data-date=\"' + new Date(util.resetTime(scrollDate)).getTime() + '\"]');\n if (headerElement) {\n if (this.parent.enableRtl) {\n var conWrap = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n this.getScrollableElement().scrollLeft = -(conWrap.offsetWidth - headerElement.offsetLeft - headerElement.offsetWidth);\n }\n else {\n this.getScrollableElement().scrollLeft = headerElement.offsetLeft;\n }\n }\n }\n if (isNullOrUndefined(date)) {\n return;\n }\n this.getScrollableElement().scrollTop = this.getTopFromDateTime(date);\n };\n VerticalView.prototype.scrollToDate = function (scrollDate) {\n this.scrollToHour(null, scrollDate);\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.activeViewOptions.group.hideNonWorkingDays) {\n while (columnLevels[0].length === 0) {\n this.parent.setProperties({ selectedDate: this.parent.activeView.getNextPreviousDate(this.previousNextAction) }, true);\n this.parent.activeView.getRenderDates();\n if (this.parent.headerModule) {\n this.parent.headerModule.setCalendarDate(this.parent.selectedDate);\n this.parent.headerModule.updateDateRange();\n }\n level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n columnLevels = this.parent.resourceBase.generateResourceLevels(level);\n }\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 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 var currentDate = this.parent.getCurrentTime();\n if (this.parent.showTimeIndicator && this.isWorkHourRange(currentDate)) {\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 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 var currentDate = util.resetTime(this.parent.getCurrentTime());\n if (this.parent.virtualScrollModule && this.parent.activeViewOptions.allowVirtualScrolling &&\n this.parent.activeViewOptions.group.byDate) {\n for (var _i = 0, _a = this.parent.resourceBase.expandedResources; _i < _a.length; _i++) {\n var resource = _a[_i];\n if (util.resetTime(resource.date).getTime() === currentDate.getTime()) {\n currentDateIndex.push(count);\n }\n count += 1;\n }\n }\n else {\n for (var _b = 0, _c = this.parent.resourceBase.renderedResources; _b < _c.length; _b++) {\n var resource = _c[_b];\n var index = this.parent.getIndexOfDate(resource.renderDates, currentDate);\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 }\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[parseInt(i.toString(), 10)].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[parseInt(day.toString(), 10)].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[parseInt(rowIndex.toString(), 10)]) {\n addClass([timeTrs[parseInt(rowIndex.toString(), 10)].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(util.getElementHeight(this.element.querySelector('.' + cls.WORK_CELLS_CLASS)).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 && !this.parent.uiStateValues.isGroupAdaptive) {\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 if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.resourceBase.renderedResources = extend([], this.parent.resourceBase.lastResourceLevel, null, true);\n }\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 var levels = this.colLevels.slice(0);\n if (this.parent.virtualScrollModule) {\n this.resetColLevels();\n }\n var wrap = this.renderContentArea();\n workTd.appendChild(wrap);\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 if (this.parent.virtualScrollModule) {\n this.colLevels = levels;\n this.parent.virtualScrollModule.renderVirtualTrack(wrap);\n }\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[parseInt(i.toString(), 10)][0] && this.colLevels[parseInt(i.toString(), 10)][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', { className: cls.HEADER_ROW_CLASS });\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 var level = this.colLevels[parseInt(i.toString(), 10)];\n for (var j = 0; j < level.length; j++) {\n ntr.appendChild(this.createTd(level[parseInt(j.toString(), 10)]));\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', { className: cls.ALLDAY_ROW_CLASS });\n for (var j = 0; j < tdData.length; j++) {\n var td = extend({}, tdData[parseInt(j.toString(), 10)]);\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.parent.eventBase.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.setAriaAttributes(tbl);\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 tBody = table.querySelector('tbody');\n append(this.getContentRows(), tBody);\n this.renderContentTableHeader(table);\n };\n VerticalView.prototype.getContentRows = function () {\n var _this = this;\n var rows = [];\n var tr = createElement('tr');\n var td = createElement('td', { attrs: { 'aria-selected': 'false' } });\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 rows.push(ntr);\n return r;\n };\n this.getTimeSlotRows(handler);\n return rows;\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.parent.eventBase.createEventWrapper());\n if (this.parent.activeViewOptions.timeScale.enable) {\n thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));\n }\n prepend([thead], table);\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 var milliSeconds = (startHour.getTimezoneOffset() !== endHour.getTimezoneOffset()) ?\n (msEndHour - msStartHour) - 3600000 : (msEndHour - msStartHour);\n length = Math.round(milliSeconds / msInterval);\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.getAdjustedDate = function (startTime) {\n if (!this.parent.activeViewOptions.timeScale.enable) {\n return new Date(startTime.setHours(0, 0, 0, 0));\n }\n else {\n var timeSlots = this.getTimeSlotRows();\n var startDate = new Date(new Date(timeSlots[0].date.getTime()).\n setHours(startTime.getHours(), startTime.getMinutes(), startTime.getMilliseconds()));\n for (var i = 0; i < timeSlots.length; i++) {\n if (timeSlots[parseInt(i.toString(), 10)].date.getTime() > startDate.getTime()) {\n startTime.setHours(timeSlots[i - 1].date.getHours(), timeSlots[i - 1].date.getMinutes(), timeSlots[i - 1].date.getMilliseconds());\n return new Date(startTime);\n }\n }\n }\n return null;\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","'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","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\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 { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\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","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line no-undef\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar 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;\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 dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\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, this);\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, animationMode } 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';\nvar DLG_DRAG = 'e-draggable';\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.needsID = true;\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 Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\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.initializeValue();\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 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 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.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\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 this.updatePersistData();\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 var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\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 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 var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // 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 if (this.isModal) {\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.setPopupPosition();\n }\n }\n }\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.getTargetContainer = function (targetValue) {\n var targetElement = null;\n if (typeof targetValue === 'string') {\n if (targetValue.startsWith('#')) {\n targetElement = document.getElementById(targetValue.substring(1));\n }\n else if (targetValue.startsWith('.')) {\n var elements = document.getElementsByClassName(targetValue.substring(1));\n targetElement = elements.length > 0 ? elements[0] : null;\n }\n else {\n if (!(targetValue instanceof HTMLElement) && targetValue !== document.body) {\n targetElement = document.querySelector(targetValue);\n }\n }\n }\n else if (targetValue instanceof HTMLElement) {\n targetElement = targetValue;\n }\n return targetElement;\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 if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\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', { className: this.cssClass, 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 Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.headerEle) {\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' + ' ' + this.element.id + '_dialog-content' });\n }\n else {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n }\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.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // 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') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\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-describedby': this.element.id + '_title' });\n attributes(this.element, { 'aria-label': \"dialog\" });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\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 (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.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.unBindEvent(this.element);\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 if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\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 this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\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) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.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 this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\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 var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\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(['width', 'height', 'position']);\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.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\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 this.ftrTemplateContent = null;\n this.headerContent = null;\n this.contentEle = null;\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 this.boundWindowResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundWindowResizeHandler);\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.boundWindowResizeHandler);\n this.boundWindowResizeHandler = null;\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 if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\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 if (_this.enableResize && _this.boundWindowResizeHandler == null && !_this.initialRender) {\n _this.wireWindowResizeEvent();\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 var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'In' : _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' && animationMode === 'Enable') ? _this.popupObj.show(openAnimation) : ((_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 (_this.enableResize) {\n _this.unWireWindowResizeEvent();\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 var closeAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'Out' : _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' && animationMode === 'Enable') ? _this.popupObj.hide(closeAnimation) : ((_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 if (!this.isModal) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n }\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, \"enablePersistence\", 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 : null;\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 options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\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 if (!isNullOrUndefined(option.isFlat)) {\n buttonProps.isFlat = option.isFlat;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ButtonsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-buttons';\n }\n }\n});\nexport var ButtonsPlugin = {\n name: 'e-buttons',\n install: function (Vue) {\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\n }\n};\n/**\n * 'e-button' directive represent a button of Vue Dialog\n * It must be contained in a Dialog component(`ejs-dialog`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var DialogButtonDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-dialogbutton';\n }\n }\n});\nexport var DialogButtonPlugin = {\n name: 'e-dialogbutton',\n install: function (Vue) {\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ButtonsDirective, DialogButtonDirective, ButtonsPlugin, DialogButtonPlugin } from './buttons.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowDragging', 'animationSettings', 'buttons', 'closeOnEscape', 'content', 'cssClass', 'enableHtmlSanitizer', 'enablePersistence', 'enableResize', 'enableRtl', 'footerTemplate', 'header', 'height', 'isModal', 'locale', 'minHeight', 'position', 'resizeHandles', 'showCloseIcon', 'target', 'visible', 'width', 'zIndex', 'beforeClose', 'beforeOpen', 'beforeSanitizeHtml', 'close', 'created', 'destroyed', 'drag', 'dragStart', 'dragStop', 'open', 'overlayClick', 'resizeStart', 'resizeStop', 'resizing'];\nexport var modelProps = ['visible'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the VueJS Dialog component\n * ```html\n * \n * ```\n */\nexport var DialogComponent = vueDefineComponent({\n name: 'DialogComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Dialog({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-buttons\": \"e-dialogbutton\" },\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n getButtons: function (index) {\n return this.ej2Instances.getButtons(index);\n },\n getDimension: function () {\n return this.ej2Instances.getDimension();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n refreshPosition: function () {\n return this.ej2Instances.refreshPosition();\n },\n sanitizeHelper: function (value) {\n return this.ej2Instances.sanitizeHelper(value);\n },\n show: function (isFullScreen) {\n return this.ej2Instances.show(isFullScreen);\n },\n }\n});\nexport var DialogPlugin = {\n name: 'ejs-dialog',\n install: function (Vue) {\n Vue.component(DialogPlugin.name, DialogComponent);\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\n }\n};\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\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 datarole: 'data-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","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\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.replace(/\\s+/g, ' ').trim().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 span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\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.replace(/\\s+/g, ' ').trim().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(true)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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 } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n var isClickBinded = itemObj && !isNOU(itemObj.click) && typeof itemObj.click == 'object' ? !isNOU(itemObj.click.observers) && itemObj.click.observers.length > 0 : !isNOU(itemObj) && !isNOU(itemObj.click);\n if (isClickBinded) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n popObj.width = this.getToolbarPopupWidth(this.element);\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n Toolbar.prototype.getToolbarPopupWidth = function (ele) {\n var eleStyles = window.getComputedStyle(ele);\n return parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = this.getToolbarPopupWidth(this.element);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n if (this.overflowMode !== 'Extended') {\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n }\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else if (this.overflowMode !== 'Extended') {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n else {\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n if (this.overflowMode !== 'Extended') {\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n }\n else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n var previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n if (previousEle) {\n previousEle.removeAttribute('tabindex');\n }\n previousEle = this.activeEle;\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNOU(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n this.getDataTabindex(previousEle) === '-1' ? previousEle.setAttribute('tabindex', '0') :\n previousEle.setAttribute('tabindex', this.getDataTabindex(previousEle));\n }\n else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n this.popObj.width = this.getToolbarPopupWidth(this.element);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","/* 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 FLOATTEXTCONTENT: 'e-float-text-content',\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 * Defines the constant attributes for the input element container.\n */\nexport var containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nexport var TEXTBOX_FOCUS = 'e-input-focus';\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 args.element.__eventHandlers = {};\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) {\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)) {\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 createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindFocusEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindBlurEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindInputEventHandler(args) {\n checkInputValue(args.floatLabelType, args.element);\n }\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n var focusHandler = function () { return bindFocusEventHandler(args); };\n var blurHandler = function () { return bindBlurEventHandler(args); };\n var inputHandler = function () { return bindInputEventHandler(args); };\n args.element.addEventListener('focus', focusHandler);\n args.element.addEventListener('blur', blurHandler);\n args.element.addEventListener('input', inputHandler);\n args.element.__eventHandlers[\"inputFocusHandler\"] = { focusHandler: focusHandler };\n args.element.__eventHandlers[\"inputBlurHandler\"] = { blurHandler: blurHandler };\n args.element.__eventHandlers[\"inputHandler\"] = { inputHandler: inputHandler };\n }\n Input.bindInitialEvent = bindInitialEvent;\n function unbindInitialEvent(args) {\n if (!isNullOrUndefined(args.element)) {\n if (!isNullOrUndefined(args.element.__eventHandlers)) {\n if (!isNullOrUndefined(args.element.__eventHandlers[\"inputFocusHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputBlurHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"inputHandler\"])) {\n var focusHandler_1 = args.element.__eventHandlers[\"inputFocusHandler\"].focusHandler;\n var blurHandler_1 = args.element.__eventHandlers[\"inputBlurHandler\"].blurHandler;\n var inputHandler_1 = args.element.__eventHandlers[\"inputHandler\"].inputHandler;\n args.element.removeEventListener('focus', focusHandler_1);\n args.element.removeEventListener('blur', blurHandler_1);\n args.element.removeEventListener('input', inputHandler_1);\n // Clean up stored bound functions\n delete args.element.__eventHandlers[\"inputFocusHandler\"];\n delete args.element.__eventHandlers[\"inputBlurHandler\"];\n delete args.element.__eventHandlers[\"inputHandler\"];\n }\n }\n }\n }\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\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 if (!isNullOrUndefined(element)) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n }\n function inputEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function blurEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\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 inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\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 var inputFloatHandler = function () { return inputEventHandler(args); };\n var blurFloatHandler = function () { return blurEventHandler(args); };\n // Add event listeners using the defined functions\n args.element.addEventListener('input', inputFloatHandler);\n args.element.addEventListener('blur', blurFloatHandler);\n // Store the event handler functions to remove them later\n args.element.__eventHandlers[\"floatInputHandler\"] = { inputFloatHandler: inputFloatHandler };\n args.element.__eventHandlers[\"floatBlurHandler\"] = { blurFloatHandler: blurFloatHandler };\n }\n else {\n unWireFloatLabelEvents(args);\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function unWireFloatLabelEvents(args) {\n if (!isNullOrUndefined(args.element) && !isNullOrUndefined(args.element.__eventHandlers)\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatInputHandler\"])\n && !isNullOrUndefined(args.element.__eventHandlers[\"floatBlurHandler\"])) {\n var inputFloatHandler = args.element.__eventHandlers[\"floatInputHandler\"].inputFloatHandler;\n var blurFloatHandler = args.element.__eventHandlers[\"floatBlurHandler\"].blurFloatHandler;\n // Remove the event listeners using the defined functions\n args.element.removeEventListener('input', inputFloatHandler);\n args.element.removeEventListener('blur', blurFloatHandler);\n // Clean up stored event handler functions\n delete args.element.__eventHandlers[\"floatInputHandler\"];\n delete args.element.__eventHandlers[\"floatBlurHandler\"];\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, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\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 addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function clickHandler(event, element, button) {\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 function inputHandler(element, button) {\n updateIconState(element.value, button);\n }\n function focusHandler(element, button) {\n updateIconState(element.value, button, element.readOnly);\n }\n function blurHandler(element, button) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n var clickHandlerEvent = function (e) { return clickHandler(e, element, button); };\n button.addEventListener('click', clickHandlerEvent);\n element.__eventHandlers[\"clearClickHandler\"] = { clickHandlerEvent: clickHandlerEvent };\n }\n var inputHandlerEvent = function () { return inputHandler(element, button); };\n var focusHandlerEvent = function () { return focusHandler(element, button); };\n var blurHandlerEvent = function () { return blurHandler(element, button); };\n element.addEventListener('input', inputHandlerEvent);\n element.addEventListener('focus', focusHandlerEvent);\n element.addEventListener('blur', blurHandlerEvent);\n // Store the bound functions to remove them later\n element.__eventHandlers[\"clearInputHandler\"] = { inputHandlerEvent: inputHandlerEvent };\n element.__eventHandlers[\"clearFocusHandler\"] = { focusHandlerEvent: focusHandlerEvent };\n element.__eventHandlers[\"clearBlurHandler\"] = { blurHandlerEvent: blurHandlerEvent };\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function unWireClearBtnEvents(element, button) {\n if (!isNullOrUndefined(element) && !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers[\"clearClickHandler\"])) {\n var clickHandlerEvent = element.__eventHandlers[\"clearClickHandler\"].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers[\"clearClickHandler\"];\n }\n if (!isNullOrUndefined(element.__eventHandlers[\"clearInputHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearFocusHandler\"])\n && !isNullOrUndefined(element.__eventHandlers[\"clearBlurHandler\"])) {\n var inputHandlerEvent = element.__eventHandlers[\"clearInputHandler\"].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers[\"clearFocusHandler\"].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers[\"clearBlurHandler\"].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers[\"clearInputHandler\"];\n delete element.__eventHandlers[\"clearFocusHandler\"];\n delete element.__eventHandlers[\"clearBlurHandler\"];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) { button = null; }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n }\n privateInputObj = null;\n }\n Input.destroy = destroy;\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 (floatLabelType !== 'Never') {\n calculateWidth(element, element.parentElement);\n }\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 && !isNullOrUndefined(parentElement) && 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 placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\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 calculateWidth(container.firstChild, container);\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('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : 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('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('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': '', '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 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 if (type !== 'Never') {\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 createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\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 }\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 else {\n unWireFloatLabelEvents(args);\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\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[parseInt(i.toString())].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[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].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 if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\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 var element = result[parseInt(i.toString())];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\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 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 function updateHTMLAttributesToElement(htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) < 0) {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;\n function updateCssClass(newClass, oldClass, container) {\n setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));\n }\n Input.updateCssClass = updateCssClass;\n function getInputValidClassList(inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n Input.getInputValidClassList = getInputValidClassList;\n function updateHTMLAttributesToWrapper(htmlAttributes, container) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + htmlAttributes[\"\" + key]) :\n htmlAttributes[\"\" + key];\n container.setAttribute(key, setStyle);\n }\n else {\n container.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;\n function isBlank(inputString) {\n return (!inputString || /^\\s*$/.test(inputString));\n }\n Input.isBlank = isBlank;\n})(Input || (Input = {}));\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 { 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 ele.classList.remove(CLS_RTL);\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 rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\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 leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\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 if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\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 if (addDisable && removeDisable) {\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 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 (!response.status || !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","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\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","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\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 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 var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + 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}\nexport function destroy() {\n targetContainer = null;\n parentDocument = null;\n}\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","import * as events from '../base/constant';\n/**\n * `Freeze` module is used to handle Frozen rows and columns.\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n function Freeze(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n Freeze.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.destroy, this.destroy, this);\n };\n Freeze.prototype.instantiateRenderer = function () {\n this.parent.log('limitation', this.getModuleName());\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n this.parent.off(events.destroy, this.destroy);\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Freeze;\n}());\nexport { Freeze };\n","import { parentsUntil } from '@syncfusion/ej2-grids';\nimport { Grid, Freeze as FreezeColumn } from '@syncfusion/ej2-grids';\nimport { addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Freeze module\n *\n * @hidden\n */\nvar Freeze = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Freeze(parent) {\n Grid.Inject(FreezeColumn);\n this.parent = parent;\n this.addEventListener();\n }\n Freeze.prototype.addEventListener = function () {\n this.parent.on('rowExpandCollapse', this.rowExpandCollapse, this);\n this.parent.on('dataBoundArg', this.dataBoundArg, this);\n this.parent.grid.on('dblclick', this.dblClickHandler, this);\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('rowExpandCollapse', this.rowExpandCollapse);\n this.parent.off('dataBoundArg', this.dataBoundArg);\n this.parent.grid.off('dblclick', this.dblClickHandler);\n };\n Freeze.prototype.rowExpandCollapse = function (args) {\n var movableRows = this.parent.getDataRows();\n var frozenrows = this.parent.getRows();\n var rows;\n var frozenRightRows;\n var freeze = (this.parent.getFrozenLeftColumnsCount() > 0 ||\n this.parent.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n frozenRightRows = this.parent.getRows().filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n if (!args.detailrows.length) {\n rows = movableRows.filter(function (e) {\n return e.querySelector('.e-gridrowindex' + args.record.index + 'level' + (args.record.level + 1));\n });\n }\n else {\n rows = args.detailrows;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n var rData = this.parent.grid.getRowObjectFromUID(row.getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(movableRows) && row.parentElement.firstElementChild.clientHeight > 0) {\n row.style.height = row.parentElement.firstElementChild.clientHeight + 'px';\n }\n row.style.display = args.action;\n if (freeze && frozenRightRows.length) {\n frozenRightRows[parseInt(i.toString(), 10)].style.display = args.action;\n }\n var queryselector = args.action === 'none' ? '.e-treecolumn-container .e-treegridcollapse'\n : '.e-treecolumn-container .e-treegridexpand';\n if (frozenrows[row.rowIndex].querySelector(queryselector)) {\n var cRow = [];\n for (var i_1 = 0; i_1 < movableRows.length; i_1++) {\n if (movableRows[parseInt(i_1.toString(), 10)].querySelector('.e-gridrowindex' + rData.index + 'level' + (rData.level + 1))) {\n cRow.push(movableRows[parseInt(i_1.toString(), 10)]);\n }\n }\n if (cRow.length) {\n var data = this.parent.getCurrentViewRecords()[cRow[0].rowIndex];\n this.rowExpandCollapse({ detailrows: cRow, action: args.action, record: data });\n }\n }\n }\n };\n Freeze.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, 'e-rowcell') &&\n this.parent.grid.editSettings.allowEditOnDblClick && this.parent.editSettings.mode !== 'Cell' && (!e.target['classList'].contains('e-treegridcollapse') && !e.target['classList'].contains('e-treegridexpand'))) {\n this.parent.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n Freeze.prototype.dataBoundArg = function () {\n var checkboxColumn = this.parent.getColumns().filter(function (e) {\n return e.showCheckbox;\n });\n if (checkboxColumn.length && this.parent.freezeModule && this.parent.initialRender) {\n addClass([this.parent.element.getElementsByClassName('e-grid')[0]], 'e-checkselection');\n }\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Freeze module name\n */\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n return Freeze;\n}());\nexport { Freeze };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { addClass, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { CellRenderer } from './cell-renderer';\nimport { addStickyColumnPosition, appendChildren, parentsUntil } from '../base/util';\nimport { destroy, commandColumnDestroy } from '../base/constant';\n/**\n * `CommandColumn` used to render command column in grid\n *\n * @hidden\n */\nvar CommandColumnRenderer = /** @class */ (function (_super) {\n __extends(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.childRefs = [];\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n tabindex: '-1', role: 'gridcell'\n }\n });\n _this.parent.on(destroy, _this.destroyButtons, _this);\n _this.parent.on(commandColumnDestroy, _this.destroyButtons, _this);\n return _this;\n }\n CommandColumnRenderer.prototype.destroyButtons = function (args) {\n for (var i = 0; i < this.childRefs.length; i++) {\n if (this.childRefs[parseInt(i.toString(), 10)] && !this.childRefs[parseInt(i.toString(), 10)].isDestroyed\n && !(this.parent.editSettings.showAddNewRow && this.parent.enableVirtualization\n && parentsUntil(this.childRefs[parseInt(i.toString(), 10)].element, 'e-addedrow'))) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n if (this.childRefs[parseInt(i.toString(), 10)].element) {\n this.childRefs[parseInt(i.toString(), 10)].element.innerHTML = '';\n }\n }\n }\n this.childRefs = [];\n if (args.type === 'refreshCommandColumn') {\n var elem = this.parent.element.querySelectorAll('.e-unboundcell');\n if (elem.length) {\n for (var i = 0; i < elem.length; i++) {\n if (elem[parseInt(i.toString(), 10)] && !(this.parent.editSettings.showAddNewRow && this.parent.enableVirtualization\n && parentsUntil(elem[parseInt(i.toString(), 10)], 'e-addedrow'))) {\n if (elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv')) {\n elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv').innerHTML = '';\n }\n elem[parseInt(i.toString(), 10)].innerHTML = '';\n }\n }\n elem = null;\n }\n }\n else {\n this.parent.off(destroy, this.destroyButtons);\n this.parent.off(commandColumnDestroy, this.destroyButtons);\n }\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isVirtualEdit - specifies virtual scroll editing\n * @returns {Element} returns the element\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes, isVirtualEdit) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', this.localizer.getConstant('CommandColumnAria') + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes.index, command[\"\" + uid]);\n }\n }\n this.setAttributes(node, cell, attributes);\n if ((!this.parent.enableVirtualization && (this.parent.isEdit && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && (!this.parent.element.querySelector('.e-editedrow')))))) || isVirtualEdit) {\n addClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n }\n else {\n addClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, cell.column, node);\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n buttonOption.buttonOption.cssClass = this.parent.cssClass ?\n buttonOption.buttonOption.cssClass + ' ' + this.parent.cssClass : buttonOption.buttonOption.cssClass;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n this.childRefs.push(buttonObj);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\nexport { CommandColumnRenderer };\n","import { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { click, keyPressed, commandClick, initialEnd, destroy } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport { CommandColumnRenderer } from '../renderer/command-column-renderer';\nimport { getUid } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `CommandColumn` used to handle the command column actions.\n *\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row = gObj.getRowObjectFromUID(closest(target, '.' + literals.row).getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].commands) {\n var commandCols = cols[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (commandCols[parseInt(j.toString(), 10)][\"\" + idInString] === uid && commandCols[parseInt(j.toString(), 10)][\"\" + typeInString] === type) {\n commandColumn = commandCols[parseInt(j.toString(), 10)];\n }\n else {\n var buttons = [].slice.call(closest(target, '.e-unboundcell').querySelectorAll('button'));\n var index = buttons.findIndex(function (ele) { return ele === target; });\n if (index < commandCols.length && commandCols[parseInt(index.toString(), 10)][\"\" + typeInString] === type &&\n String(commandCols[parseInt(j.toString(), 10)][\"\" + idInString]) === uid) {\n commandColumn = commandCols[parseInt(index.toString(), 10)];\n }\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute(literals.dataRowIndex), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n this.parent.off(destroy, this.destroy);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n this.parent.on(destroy, this.destroy, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[parseInt(i.toString(), 10)].commands) {\n var commandCol = col[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[parseInt(j.toString(), 10)][\"\" + uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Fetch } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, 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 *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param 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.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\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 if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\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 enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\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 (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\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 * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\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 *\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 if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\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 *\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 (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\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.requests = [];\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 /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\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 // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.fetchReqOption, request);\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, 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.fetchRequest, 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 fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1);\n };\n req = fetch_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(fetch_1);\n }\n else {\n this.fetchReqOption = 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].fetchRequest, _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].fetchRequest, _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].fetchRequest);\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.headers.set(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 *\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 * @param original\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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var fetch_2 = new Fetch(req);\n fetch_2.beforeSend = function () {\n _this.beforeSend(fetch_2.fetchRequest, fetch_2);\n };\n fetch_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n fetch_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.fetchRequest, request, changes, args));\n };\n fetch_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n fetch_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\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 * @param position\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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.dofetchRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\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 * @param original\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 dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.dofetchRequest(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 = typeof record === 'object' ? record : JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.fetchReqOption, 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.fetchRequest, request);\n this.fetchDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.fetchDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.dofetchRequest = function (res, fetchFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.fetchDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_3 = new Fetch(res);\n fetch_3.beforeSend = function () {\n _this.beforeSend(fetch_3.fetchRequest, fetch_3);\n };\n fetch_3.onSuccess = this.successFunc.bind(this);\n fetch_3.onFailure = this.failureFunc.bind(this);\n fetch_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.fetchReqOption = res;\n fetchFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.fetchDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\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 __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isTouched = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization && !this.fields.groupBy && this.getModuleName() !== 'combobox') {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n var count = (pageCount * 2) - 4;\n this.activeIndex = Math.round(count);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = 1;\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps >= 0 ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" && !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager && this.virtualGroupDataSource) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (this.query && this.query.queries.length > 0) {\n for (var queryElements_1 = 0; queryElements_1 < this.query.queries.length; queryElements_1++) {\n if (this.query.queries[queryElements_1].fn === 'onSkip') {\n querySkipValue = this.query.queries[queryElements_1].e.nos;\n }\n if (this.query.queries[queryElements_1].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements_1].e.nos ? this.query.queries[queryElements_1].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n var takeExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_2 = 0; queryElements_2 < filterQuery.queries.length; queryElements_2++) {\n if (filterQuery.queries[queryElements_2].fn === 'onSkip') {\n skipExists = true;\n }\n if (filterQuery.queries[queryElements_2].fn === 'onTake') {\n takeExists = true;\n filterQuery.queries[queryElements_2].e.nos = filterQuery.queries[queryElements_2].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements_2].e.nos;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (!takeExists) {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_5 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_5)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_6 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_6) ||\n (getValue(_this.fields.value, data) === value_6));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id);\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth);\n };\n ;\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageDown\" ? this.getPageCount() : liCount;\n }\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset + (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageUp\" ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset - (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.value != null && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'aria-label': this.getModuleName(), 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.inputElement.setAttribute('aria-controls', this.element.id + '_popups');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) : selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n this.setProperties({ 'text': dataItem.text, 'value': value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex)) {\n newProp.index = this.preselectedIndex;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_7 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_7)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\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 var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n if (this.isAngular) {\n this.inputElement = null;\n }\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\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","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\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","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\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.setDate(1);\n date.setFullYear(date.getFullYear());\n date.setMonth(interval - 1);\n var maxDay = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n date.setDate(Math.min(startDate, maxDay));\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[parseInt(i.toString(), 10)]);\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","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.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\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 AudioToolbar */\n RenderType[RenderType[\"AudioToolbar\"] = 6] = \"AudioToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"VideoToolbar\"] = 7] = \"VideoToolbar\";\n /** Defines RenderType as InlineToolbar */\n RenderType[RenderType[\"InlineToolbar\"] = 8] = \"InlineToolbar\";\n /** Defines RenderType as TableToolbar */\n RenderType[RenderType[\"TableToolbar\"] = 9] = \"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 DialogType as Audio*/\n DialogType[\"InsertAudio\"] = \"InsertAudio\";\n /** Defines DialogType as Video*/\n DialogType[\"InsertVideo\"] = \"InsertVideo\";\n /** Defines ToolbarType as Scrollable */\n DialogType[\"InsertTable\"] = \"InsertTable\";\n /* eslint-enable */\n})(DialogType || (DialogType = {}));\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 tableclass = 'tableclass';\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 tableModulekeyUp = 'tableModulekeyUp';\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 audioToolbarAction = 'audio-toolbar-action';\n/**\n * @hidden\n\n */\nexport var videoToolbarAction = 'video-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 insertAudio = 'insertAudio';\n/**\n * @hidden\n\n */\nexport var insertVideo = 'insertVideo';\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 audioDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var videoDelete = '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 videoSize = 'videoSize';\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 moduleDestroy = 'moduleDestroy';\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 fileSelected = 'fileSelected';\n/**\n * @hidden\n\n */\nexport var fileUploading = 'fileUploading';\n/**\n * @hidden\n\n */\nexport var fileUploadSuccess = 'fileUploadSuccess';\n/**\n * @hidden\n\n */\nexport var fileUploadFailed = 'fileUploadFailed';\n/**\n * @hidden\n\n */\nexport var fileRemoving = 'fileRemoving';\n/**\n * @hidden\n\n */\nexport var afterImageDelete = 'afterImageDelete';\n/**\n * @hidden\n\n */\nexport var afterMediaDelete = 'afterMediaDelete';\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 beforeFileUpload = 'beforeFileUpload';\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 showAudioDialog = 'showAudioDialog';\n/**\n * @hidden\n\n */\nexport var showVideoDialog = 'showVideoDialog';\n/**\n * @hidden\n\n */\nexport var closeImageDialog = 'closeImageDialog';\n/**\n * @hidden\n\n */\nexport var closeAudioDialog = 'closeAudioDialog';\n/**\n * @hidden\n\n */\nexport var closeVideoDialog = 'closeVideoDialog';\n/**\n * @hidden\n\n */\nexport var showTableDialog = 'showTableDialog';\n/**\n * @hidden\n\n */\nexport var closeTableDialog = 'closeTableDialog';\n/**\n * @hidden\n\n */\nexport var bindCssClass = 'closeTableDialog';\n/**\n * @hidden\n\n */\nexport var formatPainterClick = 'formatPainterClick';\n/**\n * @hidden\n\n */\nexport var formatPainterDoubleClick = 'formatPainterDoubleClick';\n/**\n * @hidden\n\n */\nexport var emojiPicker = 'emojiPicker';\n/**\n * @hidden\n\n */\nexport var destroyTooltip = 'destroyTooltip';\n/**\n * @hidden\n\n */\nexport var hidePopup = 'hidePopup';\n/**\n * @hidden\n\n */\nexport var cleanupResizeElements = 'cleanupResizeElements';\n/**\n * @hidden\n\n */\nexport var afterKeyDown = 'afterKeyDown';\n/**\n * @hidden\n\n */\nexport var updateValueOnIdle = 'updateValueOnIdle';\n/**\n * @hidden\n\n */\nexport var documentClickClosedBy = 'documentClickClosedBy';\n/**\n * @hidden\n\n */\nexport var showColorPicker = 'showColorPicker';\n/**\n * @hidden\n\n */\nexport var closeTooltip = 'closeTooltip';\n/**\n * @hidden\n\n */\nexport var blockEmptyNodes = \"address:empty, article:empty, aside:empty, blockquote:empty,\\n details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,\\n h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, li:empty, main:empty, nav:empty,\\n noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty\";\n/**\n * @hidden\n\n */\nexport var inlineEmptyNodes = \"a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,\\ncanvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,\\nins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,\\nq:empty, ruby:empty, s:empty, samp:empty, script:empty, select:empty, slot:empty, small:empty, span:empty, strong:empty, strike:empty, sub:empty, sup:empty, svg:empty,\\ntemplate:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty\";\n/**\n * @hidden\n\n */\nexport var supportedUnits = ['px', 'em', 'rem', 'pt', 'cm', 'mm', 'in', 'pc', 'vw', 'vh', 'vmin', 'vmax'];\n/**\n * @hidden\n\n */\nexport var conversionFactors = {\n 'px': {\n 'px': 1,\n 'em': 0.0625,\n 'rem': 0.0625,\n 'pt': 0.75,\n 'cm': 0.0264583,\n 'mm': 0.0026458,\n 'in': 0.0104167,\n 'pc': 0.0625,\n 'vw': 0.00625,\n 'vh': 0.00625,\n 'vmin': 0.00625,\n 'vmax': 0.00625\n },\n 'em': {\n 'px': 16,\n 'em': 1,\n 'rem': 1,\n 'pt': 12,\n 'cm': 0.423333,\n 'mm': 0.0423333,\n 'in': 0.166667,\n 'pc': 0.0625,\n 'vw': 1,\n 'vh': 1,\n 'vmin': 1,\n 'vmax': 1\n },\n 'rem': {\n 'px': 16,\n 'em': 1,\n 'rem': 1,\n 'pt': 12,\n 'cm': 0.423333,\n 'mm': 0.0423333,\n 'in': 0.166667,\n 'pc': 0.0625,\n 'vw': 1,\n 'vh': 1,\n 'vmin': 1,\n 'vmax': 1\n },\n 'pt': {\n 'px': 1.33333,\n 'em': 0.0833333,\n 'rem': 0.0833333,\n 'pt': 1,\n 'cm': 0.0352778,\n 'mm': 0.0035278,\n 'in': 0.0138889,\n 'pc': 0.0416667,\n 'vw': 0.00416667,\n 'vh': 0.00416667,\n 'vmin': 0.00416667,\n 'vmax': 0.00416667\n },\n 'cm': {\n 'px': 37.7953,\n 'em': 2.3622,\n 'rem': 2.3622,\n 'pt': 28.3465,\n 'cm': 1,\n 'mm': 0.1,\n 'in': 0.393701,\n 'pc': 0.148148,\n 'vw': 0.0377953,\n 'vh': 0.0377953,\n 'vmin': 0.0377953,\n 'vmax': 0.0377953\n },\n 'mm': {\n 'px': 3.77953,\n 'em': 0.23622,\n 'rem': 0.23622,\n 'pt': 2.83465,\n 'cm': 10,\n 'mm': 1,\n 'in': 0.0393701,\n 'pc': 0.0148148,\n 'vw': 0.00377953,\n 'vh': 0.00377953,\n 'vmin': 0.00377953,\n 'vmax': 0.00377953\n },\n 'in': {\n 'px': 96,\n 'em': 6,\n 'rem': 6,\n 'pt': 72,\n 'cm': 2.54,\n 'mm': 25.4,\n 'in': 1,\n 'pc': 0.375,\n 'vw': 0.09375,\n 'vh': 0.09375,\n 'vmin': 0.09375,\n 'vmax': 0.09375\n },\n 'pc': {\n 'px': 16,\n 'em': 1,\n 'rem': 1,\n 'pt': 12,\n 'cm': 0.423333,\n 'mm': 0.0423333,\n 'in': 0.166667,\n 'pc': 1,\n 'vw': 0.0625,\n 'vh': 0.0625,\n 'vmin': 0.0625,\n 'vmax': 0.0625\n },\n 'vw': {\n 'px': 160,\n 'em': 10,\n 'rem': 10,\n 'pt': 120,\n 'cm': 4.23333,\n 'mm': 0.423333,\n 'in': 1.66667,\n 'pc': 0.625,\n 'vw': 1,\n 'vh': 1,\n 'vmin': 1,\n 'vmax': 1\n },\n 'vh': {\n 'px': 160,\n 'em': 10,\n 'rem': 10,\n 'pt': 120,\n 'cm': 4.23333,\n 'mm': 0.423333,\n 'in': 1.66667,\n 'pc': 0.625,\n 'vw': 1,\n 'vh': 1,\n 'vmin': 1,\n 'vmax': 1\n },\n 'vmin': {\n 'px': 160,\n 'em': 10,\n 'rem': 10,\n 'pt': 120,\n 'cm': 4.23333,\n 'mm': 0.423333,\n 'in': 1.66667,\n 'pc': 0.625,\n 'vw': 1,\n 'vh': 1,\n 'vmin': 1,\n 'vmax': 1\n },\n 'vmax': {\n 'px': 160,\n 'em': 10,\n 'rem': 10,\n 'pt': 120,\n 'cm': 4.23333,\n 'mm': 0.423333,\n 'in': 1.66667,\n 'pc': 0.625,\n 'vw': 1,\n 'vh': 1,\n 'vmin': 1,\n 'vmax': 1\n }\n};\n/**\n * @hidden\n\n */\nexport var onHandleFontsizeChange = 'onHandleFontsizeChange';\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_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_TEXT_QUICK_TB = 'e-rte-text-quicktoolbar';\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_TEXT_POP = 'e-rte-text-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_AUDIOBREAK = 'e-audio-break';\n/**\n * @hidden\n\n */\nexport var CLS_CLICKELEM = 'e-clickelem';\n/**\n * @hidden\n\n */\nexport var CLS_VID_CLICK_ELEM = 'e-video-clickelem';\n/**\n * @hidden\n\n */\nexport var CLS_AUDIOWRAP = 'e-audio-wrap';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOWRAP = 'e-video-wrap';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOBREAK = 'e-video-break';\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_AUDIOINLINE = 'e-audio-inline';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOINLINE = 'e-video-inline';\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_ALIGN_TB_BTN = 'e-alignment-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_AUD_FOCUS = 'e-audio-focus';\n/**\n * @hidden\n\n */\nexport var CLS_VID_FOCUS = 'e-video-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/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_WEST = 'e-south-west';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_SOURCE_CODE_TXTAREA = 'e-rte-srctextarea';\n","import { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\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 if (isNullOrUndefined(this.parent)) {\n return;\n }\n this.removeEventListener();\n };\n Render.prototype.moduleDestroy = function () {\n this.parent = null;\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 this.parent.on(events.moduleDestroy, this.moduleDestroy, 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 this.parent.off(events.moduleDestroy, this.moduleDestroy);\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","/**\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/**\n * Format painter event constant\n *\n * @hidden\n */\nexport var FORMAT_PAINTER_ACTIONS = 'format_painter_actions';\n/**\n * Emoji picker event constant\n *\n * @hidden\n */\nexport var EMOJI_PICKER_ACTIONS = 'emoji_picker_actions';\n/**\n * Mouse down event constant\n *\n * @hidden\n */\nexport var MOUSE_DOWN = 'mouseDown';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 '<': 188,\n '>': 190\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, CLS_RTE_SOURCE_CODE_TXTAREA } 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 this.parent.on(events.moduleDestroy, this.moduleDestroy, 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.off(events.moduleDestroy, this.moduleDestroy);\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: CLS_RTE_SOURCE_CODE_TXTAREA + this.parent.getCssClass(true) });\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 && this.parent.getToolbarElement()) {\n var firstActiveItem = this.parent.getToolbarElement().querySelector('.e-toolbar-item:not(.e-overlay)[title]');\n firstActiveItem.firstElementChild.removeAttribute('tabindex');\n firstActiveItem.firstElementChild.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 var _this = this;\n this.parent.notify(events.hidePopup, {});\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.getID() + '_source-view'))) {\n rteContent = this.parent.createElement('div', {\n className: 'e-source-content', id: this.parent.getID() + '_source-view'\n });\n }\n else {\n rteContent = this.parent.element.querySelector('#' + this.parent.getID() + '_source-view');\n }\n rteContent.appendChild(this.previewElement);\n this.parent.element.appendChild(rteContent);\n rteContent.style.height = this.contentModule.getPanel().style.height;\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 var height = this.parent.inputElement.offsetHeight;\n this.contentModule.getPanel().appendChild(this.previewElement);\n this.getPanel().value = this.getTextAreaValue();\n this.previewElement.style.height = height + 'px';\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 var isExpand = this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n this.parent.setContentHeight('SourceCode', isExpand);\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 if (placeHolderWrapper) {\n placeHolderWrapper.style.display = 'none';\n }\n }\n this.parent.trigger(events.actionComplete, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n this.parent.invokeChangeEvent();\n if (!isNullOrUndefined(this.parent.saveInterval) && this.parent.saveInterval > 0 && this.parent.autoSaveOnIdle) {\n this.codeViewTimeInterval = setInterval(function () { _this.parent.notify(events.updateValueOnIdle, {}); }, this.parent.saveInterval);\n }\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 var isExpand = this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n this.parent.setContentHeight('Preview', isExpand);\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.addAudioVideoWrapper();\n clearTimeout(this.codeViewTimeInterval);\n this.parent.invokeChangeEvent();\n this.parent.notify(events.tableclass, {});\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 if (isNullOrUndefined(this.parent)) {\n return;\n }\n this.removeEventListener();\n };\n ViewSource.prototype.moduleDestroy = function () {\n this.parent = null;\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 'insertAudio': {\n command: 'Audios',\n subCommand: 'Audio'\n },\n 'insertVideo': {\n command: 'Videos',\n subCommand: 'Video'\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 'copyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-copy'\n },\n 'applyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-paste'\n },\n 'escapeFormatPainter': {\n command: 'FormatPainter',\n value: 'escape'\n }\n};\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * ServiceLocator\n *\n * @hidden\n\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n /* eslint-disable */\n /**\n * register method\n *\n * @param {string} name - specifies the name.\n * @param {T} type - specifies the type.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n /**\n * getService method\n *\n * @param {string} name - specifies the name.\n * @returns {void}\n * @hidden\n\n */\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n /**\n * addRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @param {IRenderer} type - specifies the renderer.\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n /**\n * getRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import * as events from '../base/constant';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\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 var formatPainterCopy = !isNOU(args.requestType) && args.requestType === 'FormatPainter' && args.action === 'format-copy';\n if (!isNOU(args) && !isNOU(args.requestType) && args.requestType !== 'Undo' && args.requestType !== 'Redo' && !formatPainterCopy) {\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, initializeCSPTemplate } 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, isPrimaryKey: true,\n template: '${name}',\n 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',\n template: initializeCSPTemplate(function (data) {\n return \"\" + data.size + \"\";\n }), format: 'n2'\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 defaultToolbarItems = ['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(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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(false)\n ], UploadSettings.prototype, \"directoryUpload\", 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","/* eslint-disable */\n/**\n * Export items model\n */\nexport var templateItems = ['alignments', 'formats', 'fontname', 'fontsize', 'fontcolor', 'backgroundcolor', 'align', 'display', 'audiolayoutoption', 'videolayoutoption', 'videoalign', '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-rte-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 'audio': {\n 'id': 'Audio',\n 'icon': 'e-audio',\n 'tooltip': 'Insert Audio',\n 'command': 'Audios',\n 'subCommand': 'Audio'\n },\n 'video': {\n 'id': 'Video',\n 'icon': 'e-video',\n 'tooltip': 'Insert Video',\n 'command': 'Videos',\n 'subCommand': 'Video'\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 'audioreplace': {\n 'id': 'AudioReplace',\n 'icon': 'e-audio-replace',\n 'tooltip': 'Audio Replace',\n 'command': 'Audios',\n 'subCommand': 'AudioReplace'\n },\n 'audioremove': {\n 'id': 'AudioRemove',\n 'icon': 'e-audio-remove',\n 'tooltip': 'Audio Remove',\n 'command': 'Audios',\n 'subCommand': 'AudioRemove'\n },\n 'audiolayoutoption': {\n 'id': 'AudioLayoutOption',\n 'icon': 'e-audio-display',\n 'tooltip': 'Audio LayoutOption',\n 'command': 'Audios',\n 'subCommand': 'AudioLayoutOption'\n },\n 'videoreplace': {\n 'id': 'VideoReplace',\n 'icon': 'e-video-replace',\n 'tooltip': 'Video Replace',\n 'command': 'Videos',\n 'subCommand': 'VideoReplace'\n },\n 'videoalign': {\n 'id': 'VideoAlign',\n 'icon': 'e-video-align',\n 'tooltip': 'Video Align',\n 'command': 'Videos',\n 'subCommand': 'VideoAlign'\n },\n 'videoremove': {\n 'id': 'VideoRemove',\n 'icon': 'e-video-remove',\n 'tooltip': 'Video Remove',\n 'command': 'Videos',\n 'subCommand': 'VideoRemove'\n },\n 'videolayoutoption': {\n 'id': 'VideoLayoutOption',\n 'icon': 'e-video-display',\n 'tooltip': 'Video LayoutOption',\n 'command': 'Videos',\n 'subCommand': 'VideoLayoutOption'\n },\n 'videodimension': {\n 'id': 'VideoDimension',\n 'icon': 'e-video-dimension',\n 'tooltip': 'Video Dimension',\n 'command': 'Videos',\n 'subCommand': 'VideoDimension'\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': 'Code View (Ctrl+Shift+H)',\n 'command': 'SourceCode',\n 'subCommand': 'SourceCode'\n },\n 'preview': {\n 'id': 'Preview',\n 'icon': 'e-preview',\n 'tooltip': 'Preview (Ctrl+Shift+H)',\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 'formatpainter': {\n 'id': 'FormatPainter',\n 'icon': 'e-rte-format-painter',\n 'tooltip': 'Format Painter',\n 'command': 'FormatPainter',\n 'subCommand': 'FormatPainter'\n },\n 'emojipicker': {\n 'id': 'EmojiPicker',\n 'icon': 'e-emoji',\n 'tooltip': 'Emoji Icon',\n 'command': 'EmojiPicker',\n 'subCommand': 'EmojiPicker'\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];\nexport var videoAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Videos', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Videos', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Videos', subCommand: 'JustifyRight' },\n];\nvar displayLocale = [\n { locale: 'imageDisplayDropDownInline', value: 'Inline' },\n { locale: 'imageDisplayDropDownBreak', value: 'Break' }\n];\nvar audioLayoutOptionLocale = [\n { locale: 'audioLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'audioLayoutOptionDropDownBreak', value: 'Break' }\n];\nvar videoLayoutOptionLocale = [\n { locale: 'videoLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'videoLayoutOptionDropDownBreak', 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 audioLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-audio-inline', command: 'Audios', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-audio-break', command: 'Audios', subCommand: 'Break' },\n];\nexport var videoLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-video-inline', command: 'Videos', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-video-break', command: 'Videos', 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 audioLayoutOptionItems.forEach(function (item, i) {\n audioLayoutOptionItems[i].text = getLocale(self, audioLayoutOptionLocale, audioLayoutOptionItems[i]);\n });\n videoLayoutOptionItems.forEach(function (item, i) {\n videoLayoutOptionItems[i].text = getLocale(self, videoLayoutOptionLocale, videoLayoutOptionItems[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}\nexport var windowKeys = {\n 'Insert Link': 'Ctrl+K',\n 'Insert Image': 'Ctrl+Shift+I',\n 'Create 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 'Upper Case': 'Ctrl+Shift+U',\n 'Lower Case': 'Ctrl+Shift+L',\n 'Superscript': 'Ctrl+Shift+=',\n 'Subscript': 'Ctrl+=',\n 'Code View': 'Ctrl+Shift+H',\n 'Maximize': 'Ctrl+Shift+F',\n 'Minimize': 'Esc',\n 'Clear Format': 'Ctrl+Shift+R',\n 'Numbered List': 'Ctrl+Shift+O',\n 'Bulleted List': 'Ctrl+Alt+O',\n 'Number Format List': 'Ctrl+Shift+O',\n 'Bullet Format List': 'Ctrl+Alt+O',\n 'Insert Audio': 'Ctrl+Shift+A',\n 'Insert Video': 'Ctrl+Alt+V',\n 'Increase Indent': 'Ctrl+]',\n 'Decrease Indent': 'Ctrl+[',\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 'Format Painter': 'Alt+Shift+C, Alt+Shift+V'\n};\nexport var defaultEmojiIcons = [{\n name: 'Smilies & People', code: '1F600', iconCss: 'e-emoji', icons: [{ code: '1F600', desc: 'Grinning face' },\n { code: '1F603', desc: 'Grinning face with big eyes' },\n { code: '1F604', desc: 'Grinning face with smiling eyes' },\n { code: '1F606', desc: 'Grinning squinting face' },\n { code: '1F605', desc: 'Grinning face with sweat' },\n { code: '1F602', desc: 'Face with tears of joy' },\n { code: '1F923', desc: 'Rolling on the floor laughing' },\n { code: '1F60A', desc: 'Smiling face with smiling eyes' },\n { code: '1F607', desc: 'Smiling face with halo' },\n { code: '1F642', desc: 'Slightly smiling face' },\n { code: '1F643', desc: 'Upside-down face' },\n { code: '1F60D', desc: 'Smiling face with heart-eyes' },\n { code: '1F618', desc: 'Face blowing a kiss' },\n { code: '1F61B', desc: 'Face with tongue' },\n { code: '1F61C', desc: 'Winking face with tongue' },\n { code: '1F604', desc: 'Grinning face with smiling eyes' },\n { code: '1F469', desc: 'Woman' },\n { code: '1F468', desc: 'Man' },\n { code: '1F467', desc: 'Girl' },\n { code: '1F466', desc: 'Boy' },\n { code: '1F476', desc: 'Baby' },\n { code: '1F475', desc: 'Old woman' },\n { code: '1F474', desc: 'Old man' },\n { code: '1F46E', desc: 'Police officer' },\n { code: '1F477', desc: 'Construction worker' },\n { code: '1F482', desc: 'Guard' },\n { code: '1F575', desc: 'Detective' },\n { code: '1F9D1', desc: 'Cook' }]\n }, {\n name: 'Animals & Nature', code: '1F435', iconCss: 'e-animals', icons: [{ code: '1F436', desc: 'Dog face' },\n { code: '1F431', desc: 'Cat face' },\n { code: '1F42D', desc: 'Mouse face' },\n { code: '1F439', desc: 'Hamster face' },\n { code: '1F430', desc: 'Rabbit face' },\n { code: '1F98A', desc: 'Fox face' },\n { code: '1F43B', desc: 'Bear face' },\n { code: '1F43C', desc: 'Panda face' },\n { code: '1F428', desc: 'Koala' },\n { code: '1F42F', desc: 'Tiger face' },\n { code: '1F981', desc: 'Lion face' },\n { code: '1F42E', desc: 'Cow face' },\n { code: '1F437', desc: 'Pig face' },\n { code: '1F43D', desc: 'Pig nose' },\n { code: '1F438', desc: 'Frog face' },\n { code: '1F435', desc: 'Monkey face' },\n { code: '1F649', desc: 'Hear-no-evil monkey' },\n { code: '1F64A', desc: 'Speak-no-evil monkey' },\n { code: '1F412', desc: 'Monkey' },\n { code: '1F414', desc: 'Chicken' },\n { code: '1F427', desc: 'Penguin' },\n { code: '1F426', desc: 'Bird' },\n { code: '1F424', desc: 'Baby chick' },\n { code: '1F986', desc: 'Duck' },\n { code: '1F985', desc: 'Eagle' }]\n }, {\n name: 'Food & Drink', code: '1F347', iconCss: 'e-food-and-drinks', icons: [{ code: '1F34E', desc: 'Red apple' },\n { code: '1F34C', desc: 'Banana' },\n { code: '1F347', desc: 'Grapes' },\n { code: '1F353', desc: 'Strawberry' },\n { code: '1F35E', desc: 'Bread' },\n { code: '1F950', desc: 'Croissant' },\n { code: '1F955', desc: 'Carrot' },\n { code: '1F354', desc: 'Hamburger' },\n { code: '1F355', desc: 'Pizza' },\n { code: '1F32D', desc: 'Hot dog' },\n { code: '1F35F', desc: 'French fries' },\n { code: '1F37F', desc: 'Popcorn' },\n { code: '1F366', desc: 'Soft ice cream' },\n { code: '1F367', desc: 'Shaved ice' },\n { code: '1F36A', desc: 'Cookie' },\n { code: '1F382', desc: 'Birthday cake' },\n { code: '1F370', desc: 'Shortcake' },\n { code: '1F36B', desc: 'Chocolate bar' },\n { code: '1F369', desc: 'Donut' },\n { code: '1F36E', desc: 'Custard' },\n { code: '1F36D', desc: 'Lollipop' },\n { code: '1F36C', desc: 'Candy' },\n { code: '1F377', desc: 'Wine glass' },\n { code: '1F37A', desc: 'Beer mug' },\n { code: '1F37E', desc: 'Bottle with popping cork' }]\n }, {\n name: 'Activities', code: '1F383', iconCss: 'e-activities', icons: [{ code: '26BD', desc: 'Soccer ball' },\n { code: '1F3C0', desc: 'Basketball' },\n { code: '1F3C8', desc: 'American football' },\n { code: '26BE', desc: 'Baseball' },\n { code: '1F3BE', desc: 'Tennis' },\n { code: '1F3D0', desc: 'Volleyball' },\n { code: '1F3C9', desc: 'Rugby football' },\n { code: '1F3B1', desc: 'Pool 8 ball' },\n { code: '1F3D3', desc: 'Ping pong' },\n { code: '1F3F8', desc: 'Badminton' },\n { code: '1F94A', desc: 'Boxing glove' },\n { code: '1F3CA', desc: 'Swimmer' },\n { code: '1F3CB', desc: 'Weightlifter' },\n { code: '1F6B4', desc: 'Bicyclist' },\n { code: '1F6F9', desc: 'Skateboard' },\n { code: '1F3AE', desc: 'Video game' },\n { code: '1F579', desc: 'Joystick' },\n { code: '1F3CF', desc: 'Cricket' },\n { code: '1F3C7', desc: 'Horse racing' },\n { code: '1F3AF', desc: 'Direct hit' },\n { code: '1F3D1', desc: 'Field hockey' },\n { code: '1F3B0', desc: 'Slot machine' },\n { code: '1F3B3', desc: 'Bowling' },\n { code: '1F3B2', desc: 'Game die' },\n { code: '265F', desc: 'Chess pawn' }]\n }, {\n name: 'Travel & Places', code: '1F30D', iconCss: 'e-travel-and-places', icons: [{ code: '2708', desc: 'Airplane' },\n { code: '1F697', desc: 'Automobile' },\n { code: '1F695', desc: 'Taxi' },\n { code: '1F6B2', desc: 'Bicycle' },\n { code: '1F68C', desc: 'Bus' },\n { code: '1F682', desc: 'Locomotive' },\n { code: '1F6F3', desc: 'Passenger ship' },\n { code: '1F680', desc: 'Rocket' },\n { code: '1F681', desc: 'Helicopter' },\n { code: '1F6A2', desc: 'Ship' },\n { code: '1F3DF', desc: 'Stadium' },\n { code: '1F54C', desc: 'Mosque' },\n { code: '26EA', desc: 'Church' },\n { code: '1F6D5', desc: 'Hindu Temple' },\n { code: '1F3D4', desc: 'Snow-capped mountain' },\n { code: '1F3EB', desc: 'School' },\n { code: '1F30B', desc: 'Volcano' },\n { code: '1F3D6', desc: 'Beach with umbrella' },\n { code: '1F3DD', desc: 'Desert island' },\n { code: '1F3DE', desc: 'National park' },\n { code: '1F3F0', desc: 'Castle' },\n { code: '1F5FC', desc: 'Tokyo tower' },\n { code: '1F5FD', desc: 'Statue of liberty' },\n { code: '26E9', desc: 'Shinto shrine' },\n { code: '1F3EF', desc: 'Japanese castle' },\n { code: '1F3A2', desc: 'Roller coaster' }]\n }, {\n name: 'Objects', code: '1F507', iconCss: 'e-objects', icons: [{ code: '1F4A1', desc: 'Light bulb' },\n { code: '1F526', desc: 'Flashlight' },\n { code: '1F4BB', desc: 'Laptop computer' },\n { code: '1F5A5', desc: 'Desktop computer' },\n { code: '1F5A8', desc: 'Printer' },\n { code: '1F4F7', desc: 'Camera' },\n { code: '1F4F8', desc: 'Camera with flash' },\n { code: '1F4FD', desc: 'Film projector' },\n { code: '1F3A5', desc: 'Movie camera' },\n { code: '1F4FA', desc: 'Television' },\n { code: '1F4FB', desc: 'Radio' },\n { code: '1F50B', desc: 'Battery' },\n { code: '231A', desc: 'Watch' },\n { code: '1F4F1', desc: 'Mobile phone' },\n { code: '260E', desc: 'Telephone' },\n { code: '1F4BE', desc: 'Floppy disk' },\n { code: '1F4BF', desc: 'Optical disk' },\n { code: '1F4C0', desc: 'Digital versatile disc' },\n { code: '1F4BD', desc: 'Computer disk' },\n { code: '1F3A7', desc: 'Headphone' },\n { code: '1F3A4', desc: 'Microphone' },\n { code: '1F3B6', desc: 'Multiple musical notes' },\n { code: '1F4DA', desc: 'Books' }]\n }, {\n name: 'Symbols', code: '1F3E7', iconCss: 'e-symbols', icons: [{ code: '274C', desc: 'Cross mark' },\n { code: '2714', desc: 'Check mark' },\n { code: '26A0', desc: 'Warning sign' },\n { code: '1F6AB', desc: 'Prohibited' },\n { code: '2139', desc: 'Information' },\n { code: '267B', desc: 'Recycling symbol' },\n { code: '1F6AD', desc: 'No smoking' },\n { code: '1F4F5', desc: 'No mobile phones' },\n { code: '1F6AF', desc: 'No littering' },\n { code: '1F6B3', desc: 'No bicycles' },\n { code: '1F6B7', desc: 'No pedestrians' },\n { code: '2795', desc: 'Plus' },\n { code: '2796', desc: 'Minus' },\n { code: '2797', desc: 'Divide' },\n { code: '2716', desc: 'Multiplication' },\n { code: '1F4B2', desc: 'Dollar banknote' },\n { code: '1F4AC', desc: 'Speech balloon' },\n { code: '2755', desc: 'White exclamation mark' },\n { code: '2754', desc: 'White question mark' },\n { code: '2764', desc: 'Red heart' }]\n }];\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Event } 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, defaultEmojiIcons } 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 audio settings of the RichTextEditor.\n */\nvar AudioSettings = /** @class */ (function (_super) {\n __extends(AudioSettings, _super);\n function AudioSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.wav', '.mp3', '.m4a', '.wma'])\n ], AudioSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('Inline')\n ], AudioSettings.prototype, \"layoutOption\", void 0);\n __decorate([\n Property('Blob')\n ], AudioSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"path\", void 0);\n return AudioSettings;\n}(ChildProperty));\nexport { AudioSettings };\n/**\n * Configures the video settings of the RichTextEditor.\n */\nvar VideoSettings = /** @class */ (function (_super) {\n __extends(VideoSettings, _super);\n function VideoSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.mp4', '.mov', '.wmv', '.avi'])\n ], VideoSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('Inline')\n ], VideoSettings.prototype, \"layoutOption\", void 0);\n __decorate([\n Property('Blob')\n ], VideoSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property('auto')\n ], VideoSettings.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], VideoSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"path\", void 0);\n __decorate([\n Property(true)\n ], VideoSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], VideoSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], VideoSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(false)\n ], VideoSettings.prototype, \"resizeByPercent\", void 0);\n return VideoSettings;\n}(ChildProperty));\nexport { VideoSettings };\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 Event()\n ], FileManagerSettings.prototype, \"beforeSend\", void 0);\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(['AudioReplace', 'AudioRemove', 'AudioLayoutOption'])\n ], QuickToolbarSettings.prototype, \"audio\", void 0);\n __decorate([\n Property(['VideoReplace', 'VideoAlign', 'VideoRemove', 'VideoLayoutOption', 'VideoDimension'])\n ], QuickToolbarSettings.prototype, \"video\", void 0);\n __decorate([\n Property(null)\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 * Configure the format painter settings of the Rich Text Editor.\n */\nvar FormatPainterSettings = /** @class */ (function (_super) {\n __extends(FormatPainterSettings, _super);\n function FormatPainterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('b; em; font; sub; sup; kbd; i; s; u; code; strong; span; p; div; h1; h2; h3; h4; h5; h6; blockquote; ol; ul; li; pre;')\n ], FormatPainterSettings.prototype, \"allowedFormats\", void 0);\n __decorate([\n Property(null)\n ], FormatPainterSettings.prototype, \"deniedFormats\", void 0);\n return FormatPainterSettings;\n}(ChildProperty));\nexport { FormatPainterSettings };\n/**\n * Specifies the emoji picker options in Rich Text Editor with the following properties.\n */\nvar EmojiSettings = /** @class */ (function (_super) {\n __extends(EmojiSettings, _super);\n function EmojiSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultEmojiIcons)\n ], EmojiSettings.prototype, \"iconsSet\", void 0);\n __decorate([\n Property(true)\n ], EmojiSettings.prototype, \"showSearchBox\", void 0);\n return EmojiSettings;\n}(ChildProperty));\nexport { EmojiSettings };\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-transform', '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","/* 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 'audio': 'Insert Audio',\n 'video': 'Insert Video',\n 'replace': 'Replace',\n 'numberFormatList': 'Number Format List',\n 'bulletFormatList': 'Bullet Format List',\n 'audioReplace': 'Replace',\n 'videoReplace': 'Replace',\n 'videoAlign': 'Align',\n 'videoDimension': 'Dimension',\n 'audioRemove': 'Remove',\n 'videoRemove': 'Remove',\n 'audioLayoutOption': 'Layout option',\n 'videoLayoutOption': 'Layout option',\n 'align': 'Align',\n 'caption': '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': 'https://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 'audioHeader': 'Insert Audio',\n 'videoHeader': 'Insert Video',\n 'imageLinkHeader': 'You can also provide a link from the web',\n 'audioLinkHeader': 'You can also provide a link from the web',\n 'videoLinkHeader': 'Web URL',\n 'embedVideoLinkHeader': 'Media Embed URL',\n 'mdimageLink': 'Please provide a URL for your image',\n 'imageUploadMessage': 'Drop image here or browse to upload',\n 'audioUploadMessage': 'Drop an audio file or browse to upload',\n 'videoUploadMessage': 'Drop a video file or browse to upload',\n 'imageDeviceUploadMessage': 'Click here to upload',\n 'audioDeviceUploadMessage': 'Click here to upload',\n 'videoDeviceUploadMessage': 'Click here to upload',\n 'imageAlternateText': 'Alternate Text',\n 'alternateHeader': 'Alternative Text',\n 'browse': 'Browse',\n 'imageUrl': 'https://example.com/image.png',\n 'audioUrl': 'https://example.com/audio.mp3',\n 'videoUrl': 'https://example.com/video.mp4',\n 'webUrl': 'Web URL',\n 'embedUrl': 'Embed Code',\n 'imageCaption': 'Caption',\n 'imageSizeHeader': 'Image Size',\n 'videoSizeHeader': 'Video Size',\n 'imageHeight': 'Height',\n 'imageWidth': 'Width',\n 'videoHeight': 'Height',\n 'videoWidth': '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': 'Row',\n 'tableColumns': 'Column',\n 'tableCellHorizontalAlign': 'Table Cell Horizontal Align',\n 'tableCellVerticalAlign': 'Vertical Align',\n 'createTable': 'Create Table',\n 'removeTable': 'Remove Table',\n 'tableHeader': 'Header Row',\n 'tableRemove': 'Delete Table',\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 'editAudioHeader': 'Edit Audio',\n 'editVideoHeader': 'Edit Video',\n \"alignmentsDropDownLeft\": 'Align Left',\n \"alignmentsDropDownCenter\": 'Align Center',\n \"alignmentsDropDownRight\": 'Align Right',\n \"alignmentsDropDownJustify\": 'Align Justify',\n \"imageDisplayDropDownInline\": 'Inline',\n \"imageDisplayDropDownBreak\": 'Break',\n \"audioLayoutOptionDropDownInline\": 'Inline',\n \"audioLayoutOptionDropDownBreak\": 'Break',\n \"videoLayoutOptionDropDownInline\": 'Inline',\n \"videoLayoutOptionDropDownBreak\": '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': 'Lower Alpha',\n 'numberFormatListUpperAlpha': 'Upper Alpha',\n 'numberFormatListLowerRoman': 'Lower Roman',\n 'numberFormatListUpperRoman': 'Upper Roman',\n 'numberFormatListLowerGreek': 'Lower Greek',\n 'bulletFormatListDisc': 'Disc',\n 'bulletFormatListCircle': 'Circle',\n 'bulletFormatListSquare': 'Square',\n 'numberFormatListNone': 'None',\n 'bulletFormatListNone': 'None',\n 'formatPainter': 'Format Painter',\n 'emojiPicker': 'Emoji Picker',\n 'embeddedCode': 'Embedded code',\n 'pasteEmbeddedCodeHere': 'Paste embedded code here',\n 'emojiPickerTypeToFind': 'Type to find',\n 'emojiPickerNoResultFound': 'No results found',\n 'emojiPickerTrySomethingElse': 'Try something else',\n 'linkAriaLabel': 'Open in new window',\n 'unsupportedImage': 'Unsupported file format',\n 'mergecells': 'Merge cells',\n 'verticalsplit': 'Vertical split',\n 'horizontalsplit': 'Horizontal split'\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 'numberformatlist': 'numberFormatList',\n 'bulletformatlist': 'bulletFormatList',\n 'undo': 'undo',\n 'redo': 'redo',\n 'filemanager': 'fileManager',\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 'audio': 'audio',\n 'video': 'video',\n 'replace': 'replace',\n 'audioreplace': 'audioReplace',\n 'videoreplace': 'videoReplace',\n 'videoalign': 'videoAlign',\n 'videodimension': 'videoDimension',\n 'audioremove': 'audioRemove',\n 'videoremove': 'videoRemove',\n 'audiolayoutoption': 'audioLayoutOption',\n 'videolayoutoption': 'videoLayoutOption',\n 'align': 'align',\n 'caption': 'caption',\n 'remove': 'remove',\n 'insertlink': 'insertLink',\n 'display': 'display',\n 'alttext': 'alternateHeader',\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 'formatpainter': 'formatPainter',\n 'emojipicker': 'emojiPicker',\n 'embeddedCode': 'Embedded code',\n 'pasteEmbeddedCodeHere': 'Paste embedded code here',\n 'emojiPickerTypeToFind': 'Type to find',\n 'emojiPickerNoResultFound': 'No results found',\n 'emojiPickerTrySomethingElse': 'Try something else',\n 'imageLinkAriaLabel': 'Open in new window',\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 * @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 if (this.parent.showTooltip && !isNOU(document.querySelector('.e-tooltip-wrap'))) {\n this.parent.notify(events.destroyTooltip, { args: event });\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 var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight('Maximize', isExpand);\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.refreshUI();\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.showTooltip && !isNOU(document.querySelector('.e-tooltip-wrap'))) {\n this.parent.notify(events.destroyTooltip, { args: event });\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 var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight('Minimize', isExpand);\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.refreshUI();\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 this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n FullScreen.prototype.removeEventListener = function () {\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n /**\n * destroy method\n *\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.destroy = function () {\n if (isNOU(this.parent)) {\n return;\n }\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 FullScreen.prototype.moduleDestroy = function () {\n this.parent = null;\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 this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n EnterKeyAction.prototype.destroy = function () {\n if (isNOU(this.parent)) {\n return;\n }\n this.removeEventListener();\n };\n EnterKeyAction.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n EnterKeyAction.prototype.removeEventListener = function () {\n this.parent.off(events.enterHandler, this.enterHandler);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\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 this.formatTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];\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 curElement = curElement.parentElement;\n blockElement = curElement;\n }\n isTableEnter = blockElement.tagName === 'TD' || blockElement.tagName === 'TBODY' ? false : true;\n }\n if (e.args.which === 13 && !e.args.ctrlKey && (!Browser.isDevice ? e.args.code === 'Enter' : e.args.key === 'Enter')) {\n if (isNOU(this.startNode.closest('LI, UL, OL')) && isNOU(this.endNode.closest('LI, UL, OL')) &&\n isNOU(this.startNode.closest('.e-img-inner')) && 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 if (!(_this.range.startContainer.nodeName === 'SPAN' && (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap')))) {\n _this.range.deleteContents();\n }\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.textContent.length === 0 ? 0 : 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 if (!shiftKey_1) {\n var currentFocusElem = !isNOU(focusElem.lastChild) ? focusElem.lastChild : focusElem;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text' && currentFocusElem.nodeName !== 'BR') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n if (currentFocusElem.nodeName !== 'BR' && currentFocusElem.parentElement.textContent.length === 0 && currentFocusElem.parentElement.innerHTML.length === 0 &&\n currentFocusElem.parentElement.nodeName !== 'BR') {\n currentFocusElem.parentElement.appendChild(_this.parent.createElement('BR'));\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem.nodeName === 'BR' ? currentFocusElem : currentFocusElem.parentElement, currentFocusElem.parentElement.textContent.length >= 0 || currentFocusElem.nodeName === 'BR' ? 0 : 1);\n }\n }\n else if (focusElem.textContent.length === 0) {\n var currentFocusElem = focusElem.previousSibling.nodeName === '#text' ? focusElem.previousSibling : focusElem.previousSibling.lastChild;\n while (!isNOU(currentFocusElem) && 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 if (!(_this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE')) {\n if (isNOU(_this.range.startContainer.childNodes[_this.range.startOffset])) {\n var currentLastElem = _this.range.startContainer.childNodes[_this.range.startOffset - 1];\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentLastElem, (currentLastElem.nodeName === 'BR' ? 0 : currentLastElem.textContent.length));\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.range.startContainer.childNodes[_this.range.startOffset], 0);\n }\n }\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 if (_this.range.startOffset === 1 && _this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE') {\n var newElem = _this.createInsertElement(shiftKey_1);\n newElem.appendChild(_this.parent.createElement('BR'));\n _this.parent.inputElement.appendChild(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\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 isMediaNode = false; // To check the image audio and video node cases\n var isFocusedFirst = false;\n if (_this.range.startOffset !== 0 && _this.range.endOffset !== 0 &&\n _this.range.startContainer === _this.range.endContainer && !(!isNOU(nearBlockNode.childNodes[0])\n && (nearBlockNode.childNodes[0].nodeName === 'IMG' || nearBlockNode.querySelectorAll('img, audio, video').length > 0))) {\n var startNodeText = _this.range.startContainer.textContent;\n var splitFirstText = startNodeText.substring(0, _this.range.startOffset);\n // eslint-disable-next-line max-len\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 var fireFoxEnterAtMiddle = Browser.userAgent.indexOf('Firefox') !== -1 && _this.range.startOffset === 0 && _this.range.startContainer === _this.range.endContainer &&\n _this.range.startContainer.nodeName === '#text' && !_this.parent.formatter.editorManager.domNode.isBlockNode(_this.range.startContainer.previousSibling) &&\n _this.range.startContainer.parentElement === _this.range.startContainer.previousSibling.parentElement;\n // eslint-disable-next-line max-len\n if (!fireFoxEnterAtMiddle && ((_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 (!isNOU(_this.range.startContainer.childNodes) &&\n (_this.range.startContainer.textContent.length === 0 ||\n (_this.range.startContainer.nodeName !== '#text' && !isNOU(_this.range.startContainer.querySelector('.e-video-clickelem')) &&\n _this.range.startContainer.querySelector('.e-video-clickelem').textContent.length === 0)) &&\n (_this.range.startContainer.querySelectorAll('img, audio, video').length > 0 ||\n !isNOU(_this.range.startContainer.querySelector('.e-video-clickelem')) ||\n _this.range.startContainer.nodeName === 'IMG' || _this.range.startContainer.nodeName === 'TABLE')) {\n newElem = _this.createInsertElement(shiftKey_1);\n isMediaNode = true;\n isNearBlockLengthZero = false;\n }\n else {\n if ((nearBlockNode.textContent.trim().length !== 0 ||\n nearBlockNode.childNodes[0].nodeName === 'IMG' ||\n (nearBlockNode.textContent.trim() === '' && nearBlockNode.querySelectorAll('img, audio, video').length > 0))) {\n if ((_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0)) {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isMediaNode = true;\n }\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 = void 0;\n if (_this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase()) < 0) {\n insertElem = _this.createInsertElement(shiftKey_1);\n }\n else {\n insertElem = _this.parent.createElement(newElem.nodeName);\n }\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 if (_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0) {\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text' &&\n currentFocusElem.nodeName !== 'BR') {\n finalFocusElem = currentFocusElem;\n currentFocusElem = currentFocusElem.lastChild;\n }\n }\n else {\n finalFocusElem = currentFocusElem;\n }\n finalFocusElem.innerHTML = '
';\n if (!isMediaNode) {\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 (nearBlockNode.querySelectorAll('video').length > 0) || (nearBlockNode.querySelectorAll('audio').length > 0) || (nearBlockNode.querySelectorAll('img').length > 0))) {\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 if (_this.range.startContainer === _this.range.endContainer && _this.range.startContainer.nodeName === 'SPAN' &&\n (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap'))) {\n if (nearBlockNode.textContent.trim().length > 0) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var audioVideoElem = !isNOU(newElem.previousSibling.querySelector('.e-video-wrap')) ?\n newElem.previousSibling.querySelector('.e-video-wrap') : newElem.previousSibling.querySelector('.e-audio-wrap');\n var isBRInserted = false;\n var lastNode = audioVideoElem.previousSibling;\n while (!isNOU(lastNode) && lastNode.nodeName !== '#text') {\n lastNode = lastNode.lastChild;\n }\n if (isNOU(lastNode)) {\n var brElm = _this.parent.createElement('br');\n audioVideoElem.parentElement.appendChild(brElm);\n isBRInserted = true;\n }\n if (isBRInserted) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), audioVideoElem.parentElement, 0);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), lastNode, lastNode.textContent.length);\n }\n detach(audioVideoElem);\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var focusElem = newElem.previousSibling;\n while (!isNOU(focusElem.firstChild)) {\n detach(focusElem.firstChild);\n }\n var brElm = _this.parent.createElement('br');\n focusElem.appendChild(brElm);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n if (!isNOU(_this.parent.audioModule)) {\n _this.parent.audioModule.hideAudioQuickToolbar();\n }\n if (!isNOU(_this.parent.videoModule)) {\n _this.parent.videoModule.hideVideoQuickToolbar();\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 if (_this.startNode.nodeName !== 'BR') {\n _this.startNode.appendChild(brElm);\n }\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 isHeadingTag = _this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase());\n if ((isHeadingTag < 0) || (isHeadingTag >= 0 && newElem.textContent.trim().length === 0)) {\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 }\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.nodeName === 'IMG')) {\n currentParentLastChild = currentParentLastChild.lastChild;\n }\n var isLastNodeLength = _this.range.startContainer === currentParentLastChild ?\n _this.range.startContainer.textContent.length : currentParent.textContent.length;\n var isImageElement = (_this.range.startContainer.nodeName === 'IMG' || (_this.range.startContainer.childNodes.length > 0\n && _this.range.startContainer.childNodes[_this.range.startOffset].nodeName === 'IMG'));\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 (currentParent.textContent.trim().length === 0 && isImageElement))) {\n var focusBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.startContainer.nodeName === 'TABLE') {\n _this.range.startContainer.parentElement.insertBefore(focusBRElem, _this.range.startContainer);\n }\n else {\n if (currentParentLastChild.nodeName === 'BR' && currentParent.textContent.length === 0) {\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, currentParentLastChild);\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0 && isImageElement) {\n var imageElement = _this.range.startContainer.nodeName === 'IMG' ? _this.range.startContainer :\n _this.range.startContainer.childNodes[_this.range.startOffset];\n currentParent.insertBefore(focusBRElem, imageElement);\n focusBRElem = imageElement;\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 }\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' && currentParent.nodeName !== 'P' && currentParent.nodeName !== 'DIV') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 && (currentElement.textContent.length !== 0 ||\n currentElement.querySelectorAll('BR').length > 1) &&\n !isNOU(currentElement.lastChild) && currentElement.lastChild.nodeName === 'BR') {\n detach(currentElement.lastChild);\n }\n };\n EnterKeyAction.prototype.insertBRElement = function () {\n var isEmptyBrInserted = false;\n var isFocusTextNode = true;\n if (this.range.endContainer.textContent.length === 0 && this.range.startContainer.nodeName === 'BR') {\n isFocusTextNode = false;\n }\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) && isFocusTextNode ? 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 var previousBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].previousSibling;\n var nextBlockNode = this.parent.formatter.editorManager.domNode.blockNodes()[0].nextSibling;\n if (!isNOU(previousBlockNode) && previousBlockNode.nodeName !== '#text' && previousBlockNode.hasAttribute('style') && previousBlockNode.nodeName !== 'TABLE') {\n insertElem.setAttribute('style', previousBlockNode.getAttribute('style'));\n }\n if (isNOU(previousBlockNode) && !isNOU(nextBlockNode) && nextBlockNode.nodeName !== '#text' && nextBlockNode.hasAttribute('style') && nextBlockNode.nodeName !== 'TABLE') {\n insertElem.setAttribute('style', nextBlockNode.getAttribute('style'));\n }\n return insertElem;\n };\n return EnterKeyAction;\n}());\nexport { EnterKeyAction };\n","/**\n * Defines util methods used by Rich Text Editor.\n */\nimport { isNullOrUndefined as isNOU, addClass, removeClass, selectAll, createElement } from '@syncfusion/ej2-base';\nimport { Browser, detach, SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nimport * as classes from '../base/classes';\nimport * as CONSTANT from '../base/constant';\nimport * as model from '../models/items';\nimport { toolsLocale, fontNameLocale, formatsLocale, numberFormatListLocale, bulletFormatListLocale, defaultLocale } 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}\nexport function getTooltipTextDropdownItems(item, serviceLocator, localeItems, rteObj) {\n if (localeItems) {\n var i10n = serviceLocator.getService('rteLocale');\n for (var i = 0; i < localeItems.length; i++) {\n var itemLocale = localeItems[i].value.toLocaleLowerCase();\n var numberValue = localeItems[i].locale;\n var numberLocale = defaultLocale[\"\" + numberValue].toLocaleLowerCase();\n if (item === itemLocale || item === numberLocale) {\n var tooltipText = localeItems[i].locale;\n return i10n.getConstant(tooltipText);\n }\n }\n }\n else {\n var fontsize = rteObj.fontSize.items;\n for (var i = 0; i < fontsize.length; i++) {\n if (item === rteObj.fontSize.items[i].value) {\n var fontSize = rteObj.fontSize.items[i].text;\n return fontSize;\n }\n }\n }\n return '';\n}\nexport function getQuickToolbarTooltipText(item) {\n var keys = Object.keys(defaultLocale);\n for (var i = 0; i < keys.length; i++) {\n var tooltipText = defaultLocale[\"\" + keys[i]];\n if (item === tooltipText) {\n return tooltipText;\n }\n }\n return '';\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') || (item === 'NumberFormatList' && key === 'numberFormatList' ||\n item === 'BulletFormatList' && key === 'bulletFormatList')) {\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 = value === 'empty' ? '' : 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 = value === 'empty' ? '' : 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 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 = value === 'empty' ? '' : 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 case 'bulletFormatList':\n case 'numberFormatList': {\n if (value !== '') {\n addClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\n else {\n removeClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\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' || items[i] === 'NumberFormatList') && toolbarItems[j].subCommand === 'OL') {\n itemsIndex.push(j);\n break;\n }\n else if ((items[i] === 'UnorderedList' || items[i] === 'BulletFormatList') && 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 var emptyBlockElem = tempNode.querySelectorAll(CONSTANT.blockEmptyNodes);\n for (var i = 0; i < emptyBlockElem.length; i++) {\n emptyBlockElem[i].innerHTML = '
';\n }\n // To handle the Empty block node with \\n\n var allPNodes = tempNode.querySelectorAll('p');\n for (var i = 0; i < allPNodes.length; i++) {\n if (allPNodes[i].textContent.trim().length === 0 && allPNodes[i].childNodes.length === 1\n && allPNodes[i].childNodes[0].nodeName === '#text' &&\n isNOU(allPNodes[i].childNodes[0].textContent.match(/\\u00a0/g))) {\n allPNodes[i].innerHTML = '
';\n }\n }\n var emptyInlineElem = tempNode.querySelectorAll(CONSTANT.inlineEmptyNodes);\n for (var i = 0; i < emptyInlineElem.length; i++) {\n emptyInlineElem[i].innerHTML = '​';\n }\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('e-rte-image-unsupported')) {\n continue; // Should not add the class if the image is Broken.\n }\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.contains('e-imgleft') || imageElm[i].classList.contains('e-imgright') || imageElm[i].classList.contains('e-imgcenter'))) {\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 if (item.selectors.tags[2] && item.selectors.tags[2].indexOf('iframe') > -1) {\n item.selectors.tags[2] = 'iframe:not(.e-rte-embed-url)';\n }\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","import { Dialog } from '@syncfusion/ej2-popups';\nimport { closest, 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 this.addEventListener();\n }\n DialogRenderer.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n this.parent.on(events.documentClickClosedBy, this.documentClickClosedBy, this);\n };\n DialogRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n this.parent.off(events.documentClickClosedBy, this.documentClickClosedBy);\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 e.position = {\n X: 'center',\n Y: (e.target !== 'string' && e.target.nodeName === 'BODY' &&\n !isNOU(e.position)) ? e.position.Y : this.getDialogPosition()\n };\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 if (args.element.classList.contains('e-dialog')) {\n var formEle = closest(args.target, 'form');\n if (!isNOU(formEle)) {\n this.dialogEle = args.element;\n this.dialogEle.addEventListener('keydown', this.handleEnterKeyDown);\n }\n }\n this.parent.trigger(events.beforeDialogOpen, args, this.beforeOpenCallback.bind(this, args));\n };\n DialogRenderer.prototype.handleEnterKeyDown = function (args) {\n if (args.code === 'Enter') {\n args.preventDefault();\n }\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.documentClickClosedBy = function (args) {\n this.outsideClickClosedBy = args.closedBy;\n };\n DialogRenderer.prototype.beforeClose = function (args) {\n if (this.dialogEle) {\n this.dialogEle.removeEventListener('keydown', this.handleEnterKeyDown);\n }\n args.closedBy = this.outsideClickClosedBy === 'outside click' ? this.outsideClickClosedBy : args.closedBy;\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 this.outsideClickClosedBy = \"\";\n };\n DialogRenderer.prototype.getDialogPosition = function () {\n var distanceFromVisibleTop = this.parent.element.getBoundingClientRect().top;\n if (distanceFromVisibleTop < 0) {\n var topHeight = 0;\n var parentElement = this.parent.element;\n while (parentElement.nodeName !== 'BODY') {\n var top_1 = parentElement.getBoundingClientRect().top;\n if (top_1 > 0) {\n topHeight = top_1;\n }\n parentElement = parentElement.parentElement;\n }\n distanceFromVisibleTop = Math.abs(distanceFromVisibleTop) + topHeight;\n return distanceFromVisibleTop.toString();\n }\n else {\n return 'top';\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 DialogRenderer.prototype.moduleDestroy = function () {\n this.parent = null;\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, 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, AudioSettings, VideoSettings, QuickToolbarSettings, FontFamily, FontSize, Format, NumberFormatList, BulletFormatList, FormatPainterSettings, EmojiSettings } 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.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 modules.push({\n member: 'audio',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'video',\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 modules.push({\n member: 'formatPainter',\n args: [this]\n });\n modules.push({\n member: 'emojiPicker',\n args: [this, this.serviceLocator]\n });\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().parentElement], [classes.CLS_TB_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 RichTextEditor.prototype.initializeValue = function () {\n this.isFocusOut = false;\n this.isRTE = false;\n this.isBlur = true;\n this.defaultResetValue = null;\n this.isResizeInitialized = false;\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.initializeValue();\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', 'aria-label': 'Rich Text Editor' });\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 attrs: { 'aria-labelledby': this.getID() }\n });\n }\n this.valueContainer.name = this.getID();\n addClass([this.valueContainer], classes.CLS_RTE_HIDDEN);\n if (!isNOU(this.cssClass)) {\n var currentClassList = this.cssClass.split(' ');\n for (var i = 0; i < currentClassList.length; i++) {\n addClass([this.valueContainer], currentClassList[i]);\n }\n }\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 * Shows the emoji picker\n *\n * @param {number} x - specifies the number value.\n * @param {number} y - specifies the number value.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showEmojiPicker = function (x, y) {\n if (this.readonly) {\n return;\n }\n this.notify(events.emojiPicker, { x: x, y: y });\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 var internalValue;\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 if (this.maxLength !== -1 && !isNOU(tool.command)) {\n var currentInsertContentLength = 0;\n if (tool.command === 'Links') {\n currentInsertContentLength = value.text.length === 0 ?\n value.url.length : value.text.length;\n }\n if (tool.command === 'Images' || tool.command === 'Table' || tool.command === 'Files') {\n currentInsertContentLength = 1;\n }\n if (tool.command === 'InsertHTML') {\n if (!isNOU(value)) {\n var tempElem = this.createElement('div');\n tempElem.innerHTML = value;\n currentInsertContentLength = tempElem.textContent.length;\n }\n else if (!isNOU(tool.value) && (tool.value === '
' || tool.value === '
')) {\n currentInsertContentLength = 1;\n }\n }\n if (tool.command === 'InsertText') {\n currentInsertContentLength = value.length;\n }\n var currentLength = this.getText().trim().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').length;\n var selectionLength = this.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(this.maxLength === -1 || totalLength <= this.maxLength)) {\n return;\n }\n }\n internalValue = value;\n if (tool.command === 'FormatPainter') {\n if (!isNOU(value)) {\n this.formatPainterSettings = value;\n }\n internalValue = {\n formatPainterAction: tool.value\n };\n }\n this.formatter.editorManager.execCommand(tool.command, tool.subCommand ? tool.subCommand : (internalValue ? internalValue : tool.value), null, null, (internalValue ? internalValue : tool.value), (internalValue ? internalValue : 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 'insertAudio': {\n var wrapTemp = this.createElement('audio', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'audio/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(wrapTemp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild.firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n break;\n }\n case 'insertVideo': {\n var wrapTemp = this.createElement('video', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'video/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n if (isNOU(value.width)) {\n value.width = { minWidth: this.insertVideoSettings.minWidth,\n maxWidth: this.insertVideoSettings.maxWidth, width: this.insertVideoSettings.width };\n }\n if (isNOU(value.height)) {\n value.height = { minHeight: this.insertVideoSettings.minHeight,\n maxHeight: this.insertVideoSettings.maxHeight, height: this.insertVideoSettings.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 this.value = (!(this.editorMode === 'Markdown') && !isNOU(this.value)) ? this.addAnchorAriaLabel(this.value) : this.value;\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' || this.toolbarSettings.type === 'MultiRow' || this.toolbarSettings.type === 'Scrollable') && !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('Init');\n if (this.value !== null) {\n this.valueContainer.defaultValue = this.value;\n }\n // eslint-disable-next-line\n (this.enabled && !this.readonly) ? this.eventInitializer() : this.unWireEvents();\n this.notify(events.bindCssClass, { cssClass: this.getCssClass() });\n this.addAudioVideoWrapper();\n this.notify(events.tableclass, {});\n this.renderComplete();\n };\n /**\n * addAudioVideoWrapper method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.addAudioVideoWrapper = function () {\n var _this = this;\n var insertElem;\n var audioElm = this.element.querySelectorAll('audio');\n for (var i = 0; i < audioElm.length; i++) {\n if (!audioElm[i].classList.contains('e-rte-audio')) {\n audioElm[i].classList.add('e-rte-audio');\n audioElm[i].classList.add(classes.CLS_AUDIOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!audioElm[i].parentElement.classList.contains(classes.CLS_CLICKELEM) && !audioElm[i].parentElement.classList.contains(classes.CLS_AUDIOWRAP)) {\n var audioWrapElem = this.createElement('span', { className: classes.CLS_AUDIOWRAP });\n audioWrapElem.setAttribute('style', 'width:300px; margin:0 auto;');\n audioWrapElem.contentEditable = 'false';\n var audioInnerWrapElem = this.createElement('span', { className: classes.CLS_CLICKELEM });\n audioWrapElem.appendChild(audioInnerWrapElem);\n audioElm[i].parentNode.insertBefore(audioWrapElem, audioElm[i].nextSibling);\n audioInnerWrapElem.appendChild(audioElm[i]);\n if (audioWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n audioWrapElem.parentNode.insertBefore(insertElem, audioWrapElem.nextSibling);\n }\n }\n }\n var videoElm = this.element.querySelectorAll('video');\n for (var i = 0; i < videoElm.length; i++) {\n if (!videoElm[i].classList.contains('e-rte-video')) {\n videoElm[i].classList.add('e-rte-video');\n videoElm[i].classList.add(classes.CLS_VIDEOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!videoElm[i].parentElement.classList.contains(classes.CLS_CLICKELEM) && !videoElm[i].parentElement.classList.contains(classes.CLS_VIDEOWRAP)) {\n var videoWrapElem = this.createElement('span', { className: classes.CLS_VIDEOWRAP });\n videoWrapElem.contentEditable = 'false';\n videoElm[i].parentNode.insertBefore(videoWrapElem, videoElm[i].nextSibling);\n videoWrapElem.appendChild(videoElm[i]);\n if (videoWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n videoWrapElem.parentNode.insertBefore(insertElem, videoWrapElem.nextSibling);\n }\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n // eslint-disable-next-line\n videoElm[i].addEventListener('play', function (args) {\n _this.notify(events.mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n // eslint-disable-next-line\n videoElm[i].addEventListener('pause', function (args) {\n _this.notify(events.mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n }\n }\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line\n var currentEndOffset = currentEndContainer.textContent.length;\n var endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :\n range.endContainer;\n var closestLI = closest(endNode, 'LI');\n var isDetached = false;\n var currentRangeEndOffset = range.endOffset;\n if (currentEndContainer.nodeType === Node.TEXT_NODE) {\n if (currentEndContainer.textContent.charAt(currentRangeEndOffset - 1) === '\\uFEFF') {\n currentRangeEndOffset--;\n }\n }\n if (!isNOU(closestLI) && endNode.textContent.trim().length === currentRangeEndOffset &&\n !range.collapsed && isNOU(endNode.nextElementSibling)) {\n for (var i = 0; i < closestLI.childNodes.length; i++) {\n if (closestLI.childNodes[i].nodeName === '#text' && closestLI.childNodes[i].textContent.trim().length === 0) {\n detach(closestLI.childNodes[i]);\n isDetached = true;\n i--;\n }\n }\n var currentLastElem = closestLI;\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n if (isDetached) {\n var currentLast = currentLastElem.nodeName === 'BR' && !isNOU(currentLastElem.previousSibling) ?\n currentLastElem.previousSibling : currentLastElem;\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), isSameContainer ? currentLast : currentStartContainer, currentLast, currentStartOffset, (currentLast.nodeName === 'BR' ? 0 : currentLast.textContent.length));\n }\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 // eslint-disable-next-line\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 // eslint-disable-next-line max-len\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 var notFormatPainterCopy = isNOU(e.action) ? true : (e.action !== 'format-copy' ? true : false);\n if (this.formatter.getUndoRedoStack().length === 0 && notFormatPainterCopy &&\n !(e.altKey || e.shiftKey || (e.altKey && e.shiftKey && e.which == 67))) {\n this.formatter.saveData();\n }\n if (e.action !== 'insert-link' &&\n e.action !== 'format-copy' && e.action !== 'format-paste' &&\n (!e.target || !(e.target.classList.contains('e-mention') && !isNOU(document.querySelector('#' + e.target.id + '_popup.e-popup-open')) && e.code === 'Tab')) &&\n (e.action && e.action !== 'paste' && e.action !== 'space'\n || e.which === 9 || (e.code === 'Backspace' && e.which === 8))) {\n var FormatPainterEscapeAction = false;\n if (!isNOU(this.formatPainterModule)) {\n FormatPainterEscapeAction = this.formatPainterModule.previousAction === 'escape';\n }\n if (!FormatPainterEscapeAction) {\n if (this.editorMode === 'HTML' && (e.action === 'increase-fontsize' || e.action === 'decrease-fontsize')) {\n this.notify(events.onHandleFontsizeChange, { member: 'onHandleFontsizeChange', args: e });\n }\n else {\n this.formatter.process(this, null, e);\n }\n }\n switch (e.action) {\n case 'toolbar-focus':\n if (this.toolbarSettings.enable && this.getToolbarElement()) {\n var firstActiveItem = this.getToolbarElement().querySelector('.e-toolbar-item:not(.e-overlay)[title]');\n var quickToolbarElem = this.getRenderedQuickToolbarElem();\n if (quickToolbarElem) {\n firstActiveItem = quickToolbarElem.querySelector('.e-toolbar-item:not(.e-overlay)[title]');\n }\n if (firstActiveItem) {\n var firstChild = firstActiveItem.firstElementChild;\n firstChild.removeAttribute('tabindex');\n firstChild.focus();\n }\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 if (this.iframeSettings.enable && this.inputElement.classList.contains('e-rte-placeholder')) {\n removeClass([this.inputElement], 'e-rte-placeholder');\n }\n else {\n this.setPlaceHolder();\n }\n }\n this.notify(events.afterKeyDown, { member: 'afterKeyDown', args: e });\n this.autoResize();\n };\n RichTextEditor.prototype.keyUp = function (e) {\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (!isNOU(e) && !isNOU(e.code) && (e.code === 'Backspace' || e.code === 'Delete')) {\n // To prevent the reformatting the content removed browser behavior.\n var currentRange = this.getRange();\n var selection = this.iframeSettings.enable ? this.contentModule.getPanel().ownerDocument.getSelection() :\n this.contentModule.getDocument().getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n selection.addRange(currentRange);\n }\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer.nodeName === '#text' &&\n range.startContainer.parentElement === this.inputElement && this.enterKey !== 'BR') {\n var range_1 = this.getRange();\n var tempElem = this.createElement(this.enterKey);\n range_1.startContainer.parentElement.insertBefore(tempElem, range_1.startContainer);\n tempElem.appendChild(range_1.startContainer);\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), tempElem.childNodes[0], tempElem.childNodes[0], tempElem.childNodes[0].textContent.length, tempElem.childNodes[0].textContent.length);\n }\n }\n this.notify(events.keyUp, { member: 'keyup', args: e });\n if (e.keyCode === 39 || e.keyCode === 37) {\n this.notify(events.tableModulekeyUp, { member: 'tableModulekeyUp', args: e });\n }\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 var formatPainterCopy = e.key === 'C' && e.altKey && e.shiftKey;\n var formatPainterPaste = e.key === 'V' && e.altKey && e.shiftKey;\n if ((!formatPainterCopy && !formatPainterPaste) && ((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.autoSaveOnIdle && Browser.isDevice) && !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 || this.formatter.getUndoRedoStack().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 value = this.enableXhtml ? this.htmlEditorModule.xhtmlValidation.selfEncloseValidation(value) : 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 (e.target && !isNOU(closest(e.target, 'table'))) ||\n (e.target && (e.target.nodeName === 'VIDEO' ||\n e.target.querySelectorAll('.' + classes.CLS_VIDEOWRAP).length > 0) ||\n (e.target && e.target.nodeName !== 'BR' &&\n (e.target.classList.contains(classes.CLS_AUDIOWRAP) ||\n e.target.classList.contains(classes.CLS_CLICKELEM) ||\n e.target.classList.contains(classes.CLS_VID_CLICK_ELEM))))) {\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 };\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().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').length;\n var selectionLength = _this.getSelection().length;\n var pastedContentLength = (isNOU(e) || isNOU(e.clipboardData))\n ? 0 : e.clipboardData.getData('text/plain').replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, '').length;\n var totalLength = (currentLength - selectionLength) + pastedContentLength;\n if (_this.editorMode === 'Markdown') {\n var args_1 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };\n setTimeout(function () {\n _this.formatter.onSuccess(_this, args_1);\n }, 0);\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 console.warn('[WARNING] :: Module \"pasteCleanup\" is not available in RichTextEditor component! You either misspelled the module name or forgot to load it.');\n var args_2 = { 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_2);\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 (!isNOU(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n if (this.element.offsetParent === null) {\n if (!isNOU(this.toolbarModule)) {\n this.toolbarModule.destroy();\n }\n this.notify(events.moduleDestroy, {});\n _super.prototype.destroy.call(this);\n this.isRendered = false;\n return;\n }\n this.notify(events.destroy, {});\n this.destroyDependentModules();\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 if (!isNOU(this.cssClass)) {\n var currentClassList = this.cssClass.split(' ');\n for (var i = 0; i < currentClassList.length; i++) {\n addClass([this.element], currentClassList[i]);\n }\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 };\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 /* eslint-disable */\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 nVal = this.serializeValue(nVal);\n var val = this.editorMode === 'HTML' ? getEditValue(nVal, this) : nVal;\n if ((!isNOU(nVal) && nVal !== '') || prop === 'enterKey') {\n this.setProperties({ value: ((this.enableHtmlEncode) ? this.encode(decode(val)) : val) }, true);\n }\n this.updatePanelValue();\n if (this.inputElement) {\n this.notify(events.tableclass, {});\n }\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 this.addAudioVideoWrapper();\n break;\n }\n case 'valueTemplate':\n this.setValue(true);\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('Init');\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 this.notify(events.bindCssClass, { cssClass: newProp[prop], oldCssClass: oldProp[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('Init');\n break;\n case 'toolbarSettings':\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight('Init');\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 newProp.quickToolbarSettings.showOnRightClick ? this.wireContextEvent() : this.unWireContextEvent();\n this.notify(events.modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n case 'formatPainterSettings':\n this.formatter.editorManager.observer.notify(CONSTANT.MODEL_CHANGED, { module: 'formatPainter', newProp: newProp });\n break;\n default:\n this.notify(events.modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n }\n }\n };\n /* eslint-enable */\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('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA);\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 }\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' + ' ' + this.cssClass });\n if (this.inputElement) {\n this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);\n }\n attributes(this.placeHolderWrapper, {\n 'style': 'font-size: 14px; margin-left: 0px; margin-right: 0px;'\n });\n }\n this.placeHolderWrapper.innerHTML = this.placeholder;\n if (this.inputElement.textContent.length === 0 && this.inputElement.childNodes.length < 2 && !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 if (this.placeholder && this.iframeSettings.enable && this.inputElement) {\n if (this.inputElement.textContent.length === 0 && this.inputElement.childNodes.length < 2 && !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 addClass([this.inputElement], 'e-rte-placeholder');\n this.inputElement.setAttribute('placeholder', this.placeholder);\n }\n else {\n removeClass([this.inputElement], 'e-rte-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 this.inputElement.classList.add(classes.CLS_RTL);\n }\n else {\n this.element.classList.remove(classes.CLS_RTL);\n this.inputElement.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 this.unWireEvents();\n }\n else if (this.enabled) {\n this.wireEvents();\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 (!isNOU(this.iframeSettings.resources.scripts) && this.iframeSettings.resources.scripts.length > 0) {\n this.InjectSheet(true, scriptSrc);\n }\n if (!isNOU(this.iframeSettings.resources.styles) && 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 (isPropertyChange) {\n var _this = this;\n if (this.valueTemplate) {\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n if (typeof this.valueTemplate === 'string' && regEx.test(this.valueTemplate)) {\n this.setProperties({ value: this.valueTemplate });\n }\n else {\n var compiledTemplate = compile(this.valueTemplate)('', this, 'valueTemplate');\n // eslint-disable-next-line\n if (typeof this.valueTemplate !== 'string' && this.isReact) {\n this.displayTempElem = this.createElement('div');\n for (var i = 0; i < compiledTemplate.length; i++) {\n var item = compiledTemplate[i];\n append([item], this.displayTempElem);\n }\n this.renderTemplates(function () {\n _this.inputElement.innerHTML = _this.displayTempElem.childNodes[0].innerHTML;\n _this.setProperties({ value: _this.inputElement.innerHTML.trim() });\n });\n }\n else {\n var appendElem = this.element;\n if (isPropertyChange) {\n this.inputElement.innerHTML = '';\n appendElem = this.inputElement;\n }\n for (var i = 0; i < compiledTemplate.length; i++) {\n var item = compiledTemplate[i];\n append([item], appendElem);\n }\n this.setProperties({ value: appendElem.innerHTML.trim() });\n this.renderReactTemplates();\n }\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 // eslint-disable-next-line\n RichTextEditor.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\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 if (this.editorMode === \"HTML\" && !isNOU(this.formatter.editorManager.nodeSelection) && !isNOU(this.formatter.editorManager.nodeSelection.range)) {\n var currentRange = this.formatter.editorManager.nodeSelection.range;\n if (currentRange.startContainer.nodeType !== 3 && currentRange.startContainer.closest &&\n !isNOU(currentRange.startContainer.closest('TD'))) {\n editEle = currentRange.startContainer;\n }\n }\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 * Video max width calculation method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getInsertVidMaxWidth = function () {\n var maxWidth = this.insertVideoSettings.maxWidth;\n // eslint-disable-next-line\n var vidPadding = 12;\n var vidResizeBorder = 2;\n var editEle = this.contentModule.getEditPanel();\n var eleStyle = window.getComputedStyle(editEle);\n var editEleMaxWidth = editEle.offsetWidth - (vidPadding + vidResizeBorder +\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 rteHeightPercent;\n var heightPercent = typeof (this.height) === 'string' && this.height.indexOf('%') > -1;\n var cntEle = 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 (target && target !== 'Toolbar' && expandPopHeight && this.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0) {\n tbHeight = tbHeight - expandPopHeight;\n }\n if (this.toolbarSettings.type === ToolbarType.Expand) {\n if (isExpand) {\n heightValue = (this.height === 'auto' && this.element.style.height === 'auto') ? 'auto' : rteHeight - (tbHeight + expandPopHeight + rzHeight) + 'px';\n }\n else {\n heightValue = (this.height === 'auto' && this.element.style.height === 'auto') ? 'auto' : rteHeight - (tbHeight - expandPopHeight + rzHeight) + 'px';\n }\n }\n else {\n heightValue = (this.height === 'auto' && this.element.style.height === 'auto') ? 'auto' : rteHeight - tbHeight + 'px';\n }\n var finalHeight = heightPercent && rteHeightPercent ? rteHeightPercent : heightValue;\n switch (target) {\n case 'Init':\n case 'Toolbar':\n case 'WindowResize':\n case 'Refresh':\n if (this.element.querySelectorAll('.e-source-content').length > 0 && this.element.querySelector('.e-source-content').style.display === 'block') {\n setStyleAttribute(this.element.querySelector('.e-source-content'), { height: finalHeight });\n }\n else {\n setStyleAttribute(cntEle, { height: finalHeight });\n }\n break;\n case 'Resize':\n setStyleAttribute(cntEle, { height: finalHeight });\n break;\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 var htmlValue = this.removeResizeElement(this.contentModule.getEditPanel().innerHTML);\n return (this.enableXhtml && (htmlValue === '


' || htmlValue === '

' ||\n htmlValue === '
') ? null : this.serializeValue(htmlValue));\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.removeResizeElement(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.InsertAudio) {\n this.notify(events.showAudioDialog, {});\n }\n else if (type === DialogType.InsertVideo) {\n this.notify(events.showVideoDialog, {});\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.InsertAudio) {\n this.notify(events.closeAudioDialog, {});\n }\n else if (type === DialogType.InsertVideo) {\n this.notify(events.closeVideoDialog, {});\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 /**\n * @returns {void}\n * getCssClass method\n *\n * @hidden\n\n */\n RichTextEditor.prototype.getCssClass = function (isSpace) {\n return (isNOU(this.cssClass) ? '' : isSpace ? ' ' + this.cssClass : this.cssClass);\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.formatter.editorManager.observer.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', debounce(this.onResizeHandler, 10), 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 if (this.element) {\n this.notify(events.scroll, { args: e });\n }\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 (!this.readonly) {\n var currentFocus = this.getCurrentFocus(e);\n if (currentFocus === 'editArea' || currentFocus === 'textArea' || currentFocus === 'sourceCode') {\n this.resetToolbarTabIndex();\n }\n }\n };\n RichTextEditor.prototype.getUpdatedValue = function () {\n var value;\n var getTextArea = this.element.querySelector('.' + classes.CLS_RTE_SOURCE_CODE_TXTAREA);\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.removeResizeElement(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 if (value != null && !this.enableHtmlEncode) {\n value = this.removeResizeElement(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.isValueChangeBlurhandler = false;\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.cleanupResizeElements = function (args) {\n var value = this.removeResizeElement(args.value);\n args.callBack(value);\n };\n RichTextEditor.prototype.addAnchorAriaLabel = function (value) {\n var valueElementWrapper = document.createElement(\"div\");\n valueElementWrapper.innerHTML = value;\n var item = valueElementWrapper.querySelectorAll(\"a\");\n if (item.length > 0) {\n for (var i = 0; i < item.length; i++) {\n (item[i].hasAttribute(\"target\") && item[i].getAttribute(\"target\") === '_blank') ? item[i].setAttribute(\"aria-label\", this.serviceLocator.getService('rteLocale').getConstant(\"linkAriaLabel\")) : item[i];\n }\n }\n return valueElementWrapper.innerHTML;\n };\n RichTextEditor.prototype.removeResizeElement = function (value) {\n var valueElementWrapper = document.createElement(\"div\");\n valueElementWrapper.innerHTML = value;\n var item = valueElementWrapper.querySelectorAll('.e-column-resize, .e-row-resize, .e-table-box, .e-table-rhelper, .e-img-resize');\n if (item.length > 0) {\n for (var i = 0; i < item.length; i++) {\n detach(item[i]);\n }\n }\n this.removeSelectionClassStates(valueElementWrapper);\n return valueElementWrapper.innerHTML;\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 var hideQuickToolbarChecker = this.quickToolbarModule && !this.inlineMode.enable && isNOU(this.quickToolbarModule.inlineQTBar);\n if ((hideQuickToolbarChecker && !isNOU(closest(target, '.' + 'e-toolbar-wrapper'))) || (hideQuickToolbarChecker && (!isNOU(closest(target, '.e-rte-table-resize')) || !isNOU(closest(target, '.e-table-box'))))) {\n this.quickToolbarModule.hideQuickToolbars();\n }\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 && this.iframeSettings.enable) {\n var iframeElement = this.element.querySelector('#' + this.getID() + '_rte-view');\n if (iframeElement && iframeElement.contentWindow.document.body.contains(trg)) {\n rteElement = closest(iframeElement, '.' + classes.CLS_RTE);\n }\n }\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() + '\"]') || closest(trg, '.' + classes.CLS_RTE_ELEMENTS)) {\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.removeSelectionClassStates(this.inputElement);\n this.notify(events.focusChange, {});\n var value = this.getUpdatedValue();\n this.setProperties({ value: value });\n this.valueContainer.value = this.value;\n this.notify(events.toolbarRefresh, { args: e, documentNode: document });\n this.isValueChangeBlurhandler = true;\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 if (!isNOU(this.placeHolderWrapper) && this.element.querySelector('[title = Preview]')) {\n this.placeHolderWrapper.style.display = 'none';\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n }\n else {\n this.isRTE = true;\n }\n if (!this.readonly && this.getCurrentFocus(e) === 'outside') {\n this.resetToolbarTabIndex();\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 isInteracted: this.isValueChangeBlurhandler\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 // Add the scroll event handler from the inputElement\n EventHandler.add(this.inputElement, '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 // Remove the scroll event handler from the inputElement\n EventHandler.remove(this.inputElement, '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, video, audio');\n if (this.inlineMode.onSelection === false || (!isNOU(closestElem) && this.inputElement.contains(closestElem)\n && (closestElem.tagName === 'IMG' || closestElem.tagName === 'TABLE' || closestElem.tagName === 'A' ||\n closestElem.tagName.toLowerCase() === 'video' || closestElem.tagName.toLowerCase() === 'audio'))) {\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) && !this.iframeSettings.enable) {\n element.style.height = this.inputElement.scrollHeight + 'px';\n element.style.overflow = 'hidden';\n }\n else if (!isNOU(element) && !isNOU(element.parentElement) && this.iframeSettings.enable) {\n var newRange = this.getRange();\n element.style.height = 'auto';\n var newHeight = element.contentDocument.body.scrollHeight + 'px';\n element.style.height = newHeight;\n element.style.overflow = 'hidden';\n // 16 px added for padding doesn't affect the editor height\n if (newRange.startContainer.nodeName !== '#text' && newRange.startContainer.nodeName !== 'BODY' && window.innerHeight < newRange.startContainer.getBoundingClientRect().top + element.getBoundingClientRect().top + 16) {\n newRange.startContainer.scrollIntoView(false);\n }\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 this.on(events.cleanupResizeElements, this.cleanupResizeElements, this);\n this.on(events.updateValueOnIdle, this.updateValueOnIdle, 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 (this.getText().replace(/(\\r\\n|\\n|\\r|\\t)/gm, '').replace(/\\u200B/g, ''));\n if (!element) {\n return;\n }\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, 'content-changed', this.contentChanged, 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', debounce(this.onResizeHandler, 10), 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.currentTarget = e.target;\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 case 'tab':\n if (this.iframeSettings.enable) {\n this.isBlur = true;\n }\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 this.off(events.cleanupResizeElements, this.cleanupResizeElements);\n this.off(events.updateValueOnIdle, this.updateValueOnIdle);\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, 'content-changed', this.contentChanged);\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', debounce(this.onResizeHandler, 10), 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 /**\n *\n * @param e Focus event\n * @returns string Returns the current focus either `editArea` or `toolbar` or `textArea` or `sourceCode` or `outside` of the RichTextEditor.\n * @hidden\n */\n RichTextEditor.prototype.getCurrentFocus = function (e) {\n if (e.target === this.inputElement && document.activeElement === this.inputElement) {\n return 'editArea';\n }\n else if (e.target === this.getToolbarElement() || (!isNOU(e.relatedTarget) && closest(e.relatedTarget, '.e-rte-toolbar') === this.getToolbarElement())) {\n return 'toolbar';\n }\n else if (e.target === this.valueContainer && document.activeElement === this.valueContainer) {\n return 'textArea';\n }\n else if (!isNOU(e.target) && e.target.classList.contains(classes.CLS_RTE_SOURCE_CODE_TXTAREA) && document.activeElement === e.target) {\n return 'sourceCode';\n }\n return 'outside';\n };\n /**\n * @param {FocusEvent} e - specifies the event.\n * @hidden\n */\n RichTextEditor.prototype.resetToolbarTabIndex = function () {\n if (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.removeSelectionClassStates = function (element) {\n var classNames = [classes.CLS_IMG_FOCUS, classes.CLS_TABLE_SEL, classes.CLS_VID_FOCUS, classes.CLS_AUD_FOCUS];\n for (var i = 0; i < classNames.length; i++) {\n var item = element.querySelectorAll('.' + classNames[i]);\n removeClass(item, classNames[i]);\n if (item.length === 0) {\n continue;\n }\n for (var j = 0; j < item.length; j++) {\n if (item[j].classList.length === 0) {\n item[j].removeAttribute('class');\n }\n if (item[j].nodeName === 'IMG' && item[j].style.outline !== '') {\n item[j].style.outline = '';\n }\n }\n }\n };\n RichTextEditor.prototype.getRenderedQuickToolbarElem = function () {\n var quickToolbars = this.quickToolbarModule.getQuickToolbarInstance();\n for (var i = 0; i < quickToolbars.length; i++) {\n if (quickToolbars[i] && quickToolbars[i].isRendered) {\n return quickToolbars[i].element;\n }\n }\n return null;\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({}, FormatPainterSettings)\n ], RichTextEditor.prototype, \"formatPainterSettings\", void 0);\n __decorate([\n Complex({}, EmojiSettings)\n ], RichTextEditor.prototype, \"emojiPickerSettings\", 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({}, AudioSettings)\n ], RichTextEditor.prototype, \"insertAudioSettings\", void 0);\n __decorate([\n Complex({}, VideoSettings)\n ], RichTextEditor.prototype, \"insertVideoSettings\", 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(true)\n ], RichTextEditor.prototype, \"showTooltip\", 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, \"fileSelected\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeFileUpload\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploading\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploadSuccess\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploadFailed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileRemoving\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterMediaDelete\", 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","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { RichTextEditor } from '@syncfusion/ej2-richtexteditor';\nexport var properties = ['isLazyUpdate', 'plugins', 'autoSaveOnIdle', 'backgroundColor', 'bulletFormatList', 'cssClass', 'editorMode', 'emojiPickerSettings', 'enableAutoUrl', 'enableHtmlEncode', 'enableHtmlSanitizer', 'enablePersistence', 'enableResize', 'enableRtl', 'enableTabKey', 'enableXhtml', 'enabled', 'enterKey', 'fileManagerSettings', 'floatingToolbarOffset', 'fontColor', 'fontFamily', 'fontSize', 'format', 'formatPainterSettings', 'formatter', 'height', 'htmlAttributes', 'iframeSettings', 'inlineMode', 'insertAudioSettings', 'insertImageSettings', 'insertVideoSettings', 'keyConfig', 'locale', 'maxLength', 'numberFormatList', 'pasteCleanupSettings', 'placeholder', 'quickToolbarSettings', 'readonly', 'saveInterval', 'shiftEnterKey', 'showCharCount', 'showTooltip', 'tableSettings', 'toolbarSettings', 'undoRedoSteps', 'undoRedoTimer', 'value', 'valueTemplate', 'width', 'actionBegin', 'actionComplete', 'afterImageDelete', 'afterMediaDelete', 'afterPasteCleanup', 'beforeDialogClose', 'beforeDialogOpen', 'beforeFileUpload', 'beforeImageDrop', 'beforeImageUpload', 'beforePasteCleanup', 'beforeQuickToolbarOpen', 'beforeSanitizeHtml', 'blur', 'change', 'created', 'destroyed', 'dialogClose', 'dialogOpen', 'fileRemoving', 'fileSelected', 'fileUploadFailed', 'fileUploadSuccess', 'fileUploading', 'focus', 'imageRemoving', 'imageSelected', 'imageUploadFailed', 'imageUploadSuccess', 'imageUploading', 'quickToolbarClose', 'quickToolbarOpen', 'resizeStart', 'resizeStop', 'resizing', 'toolbarClick', 'toolbarStatusUpdate', 'updatedToolbarStatus'];\nexport var modelProps = ['value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-richtexteditor` represents the VueJS RichTextEditor Component.\n * ```vue\n * \n * ```\n */\nexport var RichTextEditorComponent = vueDefineComponent({\n name: 'RichTextEditorComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new RichTextEditor({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: true,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('textarea', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addAnchorAriaLabel: function (value) {\n return this.ej2Instances.addAnchorAriaLabel(value);\n },\n cleanList: function (e) {\n return this.ej2Instances.cleanList(e);\n },\n closeDialog: function (type) {\n return this.ej2Instances.closeDialog(type);\n },\n disableToolbarItem: function (items, muteToolbarUpdate) {\n return this.ej2Instances.disableToolbarItem(items, muteToolbarUpdate);\n },\n enableToolbarItem: function (items, muteToolbarUpdate) {\n return this.ej2Instances.enableToolbarItem(items, muteToolbarUpdate);\n },\n executeCommand: function (commandName, value, option) {\n return this.ej2Instances.executeCommand(commandName, value, option);\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n getCharCount: function () {\n return this.ej2Instances.getCharCount();\n },\n getContent: function () {\n return this.ej2Instances.getContent();\n },\n getHtml: function () {\n return this.ej2Instances.getHtml();\n },\n getRange: function () {\n return this.ej2Instances.getRange();\n },\n getSelectedHtml: function () {\n return this.ej2Instances.getSelectedHtml();\n },\n getSelection: function () {\n return this.ej2Instances.getSelection();\n },\n getText: function () {\n return this.ej2Instances.getText();\n },\n getXhtml: function () {\n return this.ej2Instances.getXhtml();\n },\n hideInlineToolbar: function () {\n return this.ej2Instances.hideInlineToolbar();\n },\n print: function () {\n return this.ej2Instances.print();\n },\n refreshUI: function () {\n return this.ej2Instances.refreshUI();\n },\n removeToolbarItem: function (items) {\n return this.ej2Instances.removeToolbarItem(items);\n },\n renderTemplates: function (callBack) {\n return this.ej2Instances.renderTemplates(callBack);\n },\n sanitizeHtml: function (value) {\n return this.ej2Instances.sanitizeHtml(value);\n },\n selectAll: function () {\n return this.ej2Instances.selectAll();\n },\n selectRange: function (range) {\n return this.ej2Instances.selectRange(range);\n },\n showDialog: function (type) {\n return this.ej2Instances.showDialog(type);\n },\n showEmojiPicker: function (x, y) {\n return this.ej2Instances.showEmojiPicker(x, y);\n },\n showFullScreen: function () {\n return this.ej2Instances.showFullScreen();\n },\n showInlineToolbar: function () {\n return this.ej2Instances.showInlineToolbar();\n },\n showSourceCode: function () {\n return this.ej2Instances.showSourceCode();\n },\n }\n});\nexport var RichTextEditorPlugin = {\n name: 'ejs-richtexteditor',\n install: function (Vue) {\n Vue.component(RichTextEditorPlugin.name, RichTextEditorComponent);\n }\n};\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\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","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\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 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 var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + 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}\nexport function destroy() {\n targetContainer = null;\n parentDocument = null;\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\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 eventDoubleClick = 'eventDoubleClick';\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/** @private */\nexport var cellSelect = 'cellSelect';\n/** @private */\nexport var virtualScrollStart = 'virtualScrollStart';\n/** @private */\nexport var virtualScrollStop = 'virtualScrollStop';\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","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\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 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 = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\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 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Internationalization, 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 /* eslint-disable-next-line security/detect-unsafe-regex */\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[parseInt(i.toString())]];\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 this.infoElement = null;\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 var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\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 var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\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 if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\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[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], 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 var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\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[parseInt(i.toString())];\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 var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\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 if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\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 /* eslint-disable-next-line security/detect-non-literal-regexp */\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 __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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, createElement, remove, closest, addClass, removeClass, extend, append } 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.parent.toolbarItems && this.parent.toolbarItems.length > 0) ? this.getToolbarItems() : 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 enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n locale: _this.parent.locale\n });\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\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 (date) {\n var selEle = this.toolbarObj.element.querySelector('.e-date-range');\n if (!selEle) {\n return;\n }\n var textEle = selEle.querySelector('.e-tbar-btn-text');\n if (this.parent.activeViewOptions.dateRangeTemplate) {\n textEle.textContent = '';\n var args = {\n startDate: this.parent.activeView.getStartDate(),\n endDate: this.parent.activeView.getEndDate(), currentView: this.parent.currentView\n };\n var viewName = this.parent.activeViewOptions.dateRangeTemplateName;\n var templateId = this.parent.element.id + '_' + viewName + 'dateRangeTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateRangeTemplate()(args, this.parent, 'dateRangeTemplate', templateId, false));\n append(dateTemplate, textEle);\n }\n else {\n var text = this.parent.activeView.getDateRangeText(date);\n selEle.firstElementChild.setAttribute('aria-label', text);\n textEle.textContent = text;\n }\n this.refresh();\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.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n HeaderRenderer.prototype.getToolbarItems = function () {\n var items = [];\n var propItem;\n for (var _i = 0, _a = this.parent.toolbarItems; _i < _a.length; _i++) {\n var item = _a[_i];\n propItem = this.getItemModel(item);\n var tbItem = void 0;\n if (item.name) {\n switch (item.name) {\n case 'Today':\n tbItem = {\n showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-day',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'Previous':\n tbItem = {\n prefixIcon: 'e-icon-prev', tooltipText: 'Previous', overflow: 'Show',\n cssClass: 'e-prev', htmlAttributes: { 'role': 'navigation' }\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'Next':\n tbItem = {\n prefixIcon: 'e-icon-next', tooltipText: 'Next', overflow: 'Show',\n cssClass: 'e-next', htmlAttributes: { 'role': 'navigation' }\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'DateRangeText':\n tbItem = {\n text: this.getDateRangeText(), suffixIcon: 'e-icon-down-arrow', cssClass: 'e-date-range',\n overflow: 'Show',\n htmlAttributes: { 'aria-atomic': 'true', 'aria-live': 'assertive', 'role': 'navigation' }\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'NewEvent':\n tbItem = {\n showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-add',\n text: this.l10n.getConstant('newEvent'), cssClass: 'e-add', overflow: 'Show'\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'Views':\n if (this.parent.views.length > 1) {\n for (var _b = 0, _c = this.parent.views; _b < _c.length; _b++) {\n var view = _c[_b];\n tbItem = this.getItemObject(view);\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n }\n }\n break;\n case 'Custom':\n items.push(item);\n break;\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\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'\n });\n items.push({\n align: 'Left', prefixIcon: 'e-icon-next', tooltipText: 'Next', overflow: 'Show',\n cssClass: 'e-next'\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' }\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 else 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 > util.resetTime(this.parent.minDate));\n }\n if (!isNullOrUndefined(nextNavEle)) {\n this.toolbarObj.enableItems(nextNavEle, lastDate < util.resetTime(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 || !this.parent.allowSwiping ||\n (e.originalEvent && e.originalEvent.target &&\n (e.originalEvent.target.classList.contains(cls.APPOINTMENT_CLASS) ||\n closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS)) && !this.parent.isAdaptive)) {\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 renderDates: this.parent.activeView.renderDates,\n colLevels: this.parent.activeView.colLevels\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 renderDates: this.parent.activeView.renderDates,\n colLevels: this.parent.activeView.colLevels\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 || !this.parent.allowSwiping) {\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 = (((Browser.isDevice ? e.distanceX : 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 renderDates: this.parent.activeView.renderDates,\n colLevels: this.parent.activeView.colLevels\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 _this.parent.activeView.renderDates = _this.currentPanel.renderDates;\n _this.parent.activeView.colLevels = _this.currentPanel.colLevels;\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();\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.renderDates = this.currentPanel.renderDates;\n this.parent.activeView.colLevels = this.currentPanel.colLevels;\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 this.element.style.transitionDuration = '';\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';\nimport { cellSelect } from '../base/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 backspace: 'backspace',\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 case 'backspace':\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 var selectedCells = this.parent.getSelectedCells();\n if (selectedCells.length > 0 && selectedCells.indexOf(target) === -1) {\n target = selectedCells[selectedCells.length - 1];\n }\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 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 var args = {\n element: target, requestType: cellSelect\n };\n // activeCellsData is not reset on schedule property changed(group properties)\n // const cellData: Record = {};\n // const cellDetails: CellClickEventArgs = this.parent.getCellDetails(target);\n // if (this.parent.eventWindow && cellDetails) {\n // if (this.parent.activeCellsData.element !== cellDetails.element) {\n // this.parent.activeCellsData = cellDetails;\n // }\n // this.parent.eventWindow.convertToEventData(this.parent.activeCellsData as unknown as Record, cellData);\n // args.data = cellData;\n // }\n this.parent.trigger(event.select, args, function () {\n _this.initialTarget = target;\n _this.selectedCells = [target];\n _this.parent.addSelectedClass([target], target);\n });\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], true);\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, true);\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[parseInt(index.toString(), 10)]);\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[parseInt(index.toString(), 10)].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.isCalendarTarget = function (e) {\n var keyTarget = e.currentTarget || e.target;\n if (keyTarget && !isNullOrUndefined(keyTarget.querySelector('.e-header-popup.e-popup-open'))) {\n return true;\n }\n return false;\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) || (this.isCalendarTarget(e))) {\n return;\n }\n var target = (e.target);\n var selectedElements = this.parent.getSelectedCells();\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 e.preventDefault();\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) || (this.isCalendarTarget(e))) {\n return;\n }\n var target = (e.target);\n var selectedCells = this.parent.getSelectedCells();\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 e.preventDefault();\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[parseInt(rowIndex.toString(), 10)] &&\n tableRows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)].classList.contains(cls.OTHERMONTH_CLASS)) {\n rowIndex = rowIndex + (isUp ? -1 : 1);\n }\n return tableRows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\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[parseInt(curRowIndex.toString(), 10)].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[parseInt(curRowIndex.toString(), 10)].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) || (this.isCalendarTarget(e))) {\n return;\n }\n var selectedCells = this.parent.getSelectedCells();\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[parseInt(rowIndex.toString(), 10)].querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')')\n : tableEle.rows[parseInt(rowIndex.toString(), 10)].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) || (this.isCalendarTarget(e))) {\n return;\n }\n var target = (e.target);\n var selectedCells = this.parent.getSelectedCells();\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[parseInt(rowIndex.toString(), 10)].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], true);\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.getSelectedCells();\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], true);\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], true);\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.selectedCells = [];\n this.keyboardModule.destroy();\n };\n return KeyboardInteraction;\n}());\nexport { KeyboardInteraction };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\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 {Schedule} parent Accepts the schedule element instance\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(parent, dataSource, query) {\n this.parent = parent;\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 (this.parent && startDate && endDate) {\n if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading &&\n !isNullOrUndefined(this.parent.activeViewOptions.group.resources) &&\n this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase &&\n this.parent.resourceBase.resourceCollection.length > 0 && this.parent.resourceBase.renderedResources.length > 0) {\n var resIdCollection_1 = [];\n this.parent.resourceBase.resourceCollection.forEach(function () { return resIdCollection_1.push([]); });\n this.parent.resourceBase.renderedResources.forEach(function (resource) {\n resIdCollection_1.forEach(function (resId, index) {\n var groupId = resource.groupOrder[parseInt(index.toString(), 10)];\n if (groupId && resId.indexOf(groupId) < 0) {\n resId.push(groupId);\n }\n });\n });\n this.parent.resourceBase.resourceCollection.forEach(function (resource, index) {\n query.addParams(resource.field, resIdCollection_1[parseInt(index.toString(), 10)].toString());\n });\n }\n if (this.parent.timezone) {\n startDate = this.parent.tzModule.remove(new Date(+startDate.getTime()), this.parent.timezone);\n endDate = this.parent.tzModule.remove(new Date(+endDate.getTime()), this.parent.timezone);\n }\n if (this.parent.eventSettings.includeFiltersInQuery) {\n var dateQuery = this.getStartEndQuery(startDate, endDate);\n var recurrenceQuery = new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', null).and(new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', ''));\n return query.where(dateQuery.or(recurrenceQuery));\n }\n query.addParams('StartDate', startDate.toISOString());\n query.addParams('EndDate', endDate.toISOString());\n }\n return 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.getStartEndQuery = function (startDate, endDate) {\n var fieldMapping = this.parent.eventFields;\n var dateQuery = 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 return dateQuery;\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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.SCHEDULE_TABLE_CLASS + '.' + 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 var workCell = this.content.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.cellWidth = util.getElementWidth(workCell) / +(workCell.getAttribute('colspan') || 1);\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 selector = '.' + cls.RESOURCE_COLUMN_TABLE_CLASS + ' tbody tr';\n this.addCellHeight(selector, this.eventHeight, EVENT_GAP, this.moreIndicatorHeight, 0, false);\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[parseInt(i.toString(), 10)];\n this.rowIndex = source.groupIndex;\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, source);\n if (this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)] && this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==\n this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {\n var target = this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)]);\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 eventsPerRow = this.parent.rowAutoHeight ? 1 : this.parent.activeViewOptions.maxEventsPerRow;\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 = true;\n if (this.isDayProcess() || eventObj[this.fields.isAllDay]) {\n isValidEvent = true;\n }\n else {\n isValidEvent = this.isValidEvent(eventObj, startTime, endTime, schedule);\n }\n if (startTime <= endTime && isValidEvent) {\n var appWidth = this.getEventWidth(startTime, endTime, event[this.fields.isAllDay], diffInDays);\n appWidth = this.renderType === 'day' ? appWidth - 2 : appWidth;\n var appLeft = 0;\n var appRight = 0;\n var position = this.getPosition(startTime, endTime, event[this.fields.isAllDay], this.day);\n appWidth = (appWidth <= 0) ? this.cellWidth : appWidth; // appWidth 0 when start and end time as same\n this.renderedEvents.push(extend({}, event, null, true));\n if (isNullOrUndefined(this.cellTops[parseInt(resIndex.toString(), 10)])) {\n this.cellTops[parseInt(resIndex.toString(), 10)] = this.getRowTop(resIndex);\n }\n var top_1 = this.cellTops[parseInt(resIndex.toString(), 10)];\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.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight && !this.parent.eventSettings.enableIndicator\n ? overlapCount < eventsPerRow : 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 + 'px', 'left': appLeft + 'px', 'right': appRight + 'px', 'top': appTop + 'px'\n });\n this.wireAppointmentEvents(appointmentElement, event);\n if (this.parent.rowAutoHeight) {\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var conWidth = util.getElementWidth(conWrap);\n var isWithoutScroll = conWrap.offsetHeight === conWrap.clientHeight &&\n conWrap.offsetWidth === conWrap.clientWidth;\n this.renderEventElement(event, appointmentElement, cellTd);\n var firstChild = this.getFirstChild(resIndex);\n this.updateCellHeight(firstChild, height);\n if (isWithoutScroll &&\n (conWrap.offsetWidth > conWrap.clientWidth || conWidth !== util.getElementWidth(conWrap))) {\n this.adjustAppointments(conWidth);\n }\n }\n else {\n this.renderEventElement(event, appointmentElement, cellTd);\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 if (slotCount < 1) {\n startDate = this.adjustToNearestTimeSlot(startDate, interval);\n }\n endDate = new Date(startDate.getTime() + (60000 * interval));\n if (slotCount >= 1 && 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.adjustToNearestTimeSlot = function (inputTime, interval) {\n // Parse the input time\n var parsedTime = new Date(inputTime);\n // Get the minutes of the input time in milliseconds\n var minutesInMilliseconds = parsedTime.getHours() * 60 * 60 * 1000 + parsedTime.getMinutes() * 60 * 1000;\n // Calculate the adjusted time in milliseconds (nearest time slot)\n var adjustedMinutesInMilliseconds = Math.floor(minutesInMilliseconds / (interval * 60 * 1000)) * (interval * 60 * 1000);\n // Create a new Date object with the adjusted time\n var adjustedTime = new Date(parsedTime.getTime());\n adjustedTime.setHours(adjustedMinutesInMilliseconds / (60 * 60 * 1000) % 24);\n adjustedTime.setMinutes((adjustedMinutesInMilliseconds % (60 * 60 * 1000)) / (60 * 1000));\n // Return the adjusted time in string format\n return adjustedTime;\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 = this.parent.activeViewOptions.maxEventsPerRow && !this.parent.eventSettings.enableIndicator\n ? filterEvents.length - this.parent.activeViewOptions.maxEventsPerRow : (filterEvents.length - renderedAppCount) <= 0 ? 1\n : 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 var cellHeight = cell.style.height === '' ? this.cellHeight : parseInt(cell.style.height, 10);\n if (height > 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.adjustAppointments = function (conWidth) {\n var _this = this;\n var tr = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr');\n var actualCellWidth = util.getElementWidth(this.workCells[0]);\n this.cellWidth = actualCellWidth / +(this.workCells[0].getAttribute('colspan') || 1);\n var currentPercentage = (actualCellWidth * tr.children.length) / (conWidth / 100);\n var apps = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n apps.forEach(function (app) {\n if (_this.parent.enableRtl && app.style.right !== '0px') {\n app.style.right = ((parseFloat(app.style.right) / 100) * currentPercentage) + 'px';\n }\n else if (app.style.left !== '0px') {\n app.style.left = ((parseFloat(app.style.left) / 100) * currentPercentage) + 'px';\n }\n app.style.width = ((parseFloat(app.style.width) / 100) * currentPercentage) + 'px';\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 (this.isDayProcess()) {\n startTime = event[this.fields.startTime];\n }\n else {\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 }\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.isDayProcess()) {\n endTime = eventData[this.fields.endTime];\n }\n else {\n endTime = eventData[this.fields.endTime];\n if (schedule.endHour.getTime() <= eventData[this.fields.endTime] || event[this.fields.isAllDay]) {\n endTime = schedule.endHour;\n }\n if (schedule.startHour.getTime() >= eventData[this.fields.endTime].getTime() && !event[this.fields.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[parseInt(day.toString(), 10)].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[parseInt(i.toString(), 10)].style.right : moreIndicator[parseInt(i.toString(), 10)].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[parseInt(wrapIndex.toString(), 10)];\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.isDayProcess = function () {\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 return true;\n }\n return false;\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","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, createElement, closest, remove, removeClass, isNullOrUndefined } 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 var isVertical = this.parent.currentView === 'Day' || this.parent.currentView === 'Week' || this.parent.currentView === 'WorkWeek';\n if (this.parent.activeViewOptions.timeScale.enable && isVertical) {\n var dayIndex = saveObj[this.parent.eventFields.startTime].getDay();\n this.createVerticalViewInline(saveObj, dayIndex, resIndex, cellIndex);\n }\n else if (this.parent.currentView === 'Month' || (!this.parent.activeViewOptions.timeScale.enable && isVertical)) {\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 if (!isNullOrUndefined(subEle)) {\n addClass([subEle], cls.DISABLE_CLASS);\n subject = subEle.innerText;\n }\n else {\n subject = args.data[this.parent.eventFields.subject];\n }\n inlineSubject = createElement('input', { className: cls.INLINE_SUBJECT_CLASS, attrs: { value: subject } });\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 if (isNullOrUndefined(subjectWrap)) {\n subjectWrap = createElement('div', { className: cls.SUBJECT_WRAP });\n args.element.prepend(subjectWrap);\n }\n subjectWrap.insertBefore(inlineSubject, subjectWrap.firstChild);\n }\n else {\n args.element.querySelector('.e-appointment-details').prepend(inlineSubject);\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[parseInt(resIndex.toString(), 10)].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(util.getElementHeight(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS)) /\n allDayElements[0].offsetHeight) - 1;\n }\n verticalEvent.allDayLevel = allDayLevel;\n var appHeight = util.getElementHeightFromClass(this.parent.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS), cls.APPOINTMENT_CLASS);\n var cellTop = verticalEvent.allDayElement.length > 0 ? verticalEvent.allDayElement[0].offsetTop : 0;\n verticalEvent.renderAllDayEvents(saveObj, index, resIndex, daysCount, this.parent.allowInline, cellTop, appHeight);\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[parseInt(index.toString(), 10)];\n renderDates = resourceData.renderDates;\n workDays = resourceData.workDays;\n }\n monthEvent.dateRender = renderDates;\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 =\n util.getElementHeightFromClass(this.parent.monthModule.element || monthEvent.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 var subject = appointmentSubject.querySelector('.' + cls.SUBJECT_CLASS);\n if (!isNullOrUndefined(subject)) {\n removeClass([subject], cls.DISABLE_CLASS);\n }\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', attrs: { role: 'dialog' } });\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 enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\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 enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\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 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-disabled': this_1.parent.eventBase.getReadonlyAttribute(eventData),\n 'aria-label': this_1.parent.getAnnouncementString(eventData)\n }\n });\n if (eventData[fields.isReadonly]) {\n addClass([appointmentElement], 'e-read-only');\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 }));\n this_1.parent.sanitize(eventText, appointmentElement.firstElementChild);\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, this.parent.eventBase.getPageCoordinates(e));\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 = !isNullOrUndefined(args.event) ? args.event.target : args.element;\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 else if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\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 this.quickPopup.element.setAttribute('aria-label', this.l10n.getConstant('newEvent'));\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, this.parent.eventBase.getPageCoordinates(args.event));\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 this.parent.selectedElements = [];\n if (isSameTarget) {\n return;\n }\n else if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\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 this.quickPopup.element.setAttribute('aria-label', this.l10n.getConstant('editEvent'));\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, this.parent.eventBase.getPageCoordinates(events.originalEvent));\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 (\"
\");\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: header });\n if (headerType === 'Event') {\n var subjectText = templateWrapper.querySelector('.' + cls.SUBJECT_CLASS);\n this.parent.sanitize(args.eventSubject, subjectText);\n }\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 (\"
\") : '') + \"
\");\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 }\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 }\n if (this.parent.resourceCollection.length > 0) {\n content += '
';\n }\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: content });\n if (data[this.parent.eventFields.location]) {\n var locationDetails = templateWrapper.querySelector('.' + cls.LOCATION_DETAILS_CLASS);\n if (!isNullOrUndefined(locationDetails)) {\n this.parent.sanitize(data[this.parent.eventFields.location], locationDetails);\n }\n }\n if (data[this.parent.eventFields.description]) {\n var descriptionDetails = templateWrapper.querySelector('.' + cls.DESCRIPTION_DETAILS_CLASS);\n if (!isNullOrUndefined(descriptionDetails)) {\n this.parent.sanitize(data[this.parent.eventFields.description], descriptionDetails);\n }\n }\n if (resourceText) {\n var resourceDetails = templateWrapper.querySelector('.' + cls.RESOURCE_DETAILS_CLASS);\n if (!isNullOrUndefined(resourceDetails)) {\n this.parent.sanitize(resourceText, resourceDetails);\n }\n }\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[parseInt(i.toString(), 10)].field];\n if (!isNullOrUndefined(resourceData)) {\n lastResource_1 = this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)][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[parseInt(groupIndex.toString(), 10)];\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 (((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) / util.MS_PER_DAY) > 1) {\n details += ' - ' + endDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';\n }\n }\n else if ((((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) / 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[parseInt(i.toString(), 10)].getAttribute('data-date');\n if (date < tdDate) {\n this.morePopup.relateTo = workCells[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n else {\n this.morePopup.relateTo = closest(target, '.' + cls.WORK_CELLS_CLASS);\n }\n }\n this.parent.renderTemplates(function () {\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 };\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, originalEvent) {\n var _this = this;\n this.parent.renderTemplates(function () {\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 var isVirtualScroll = _this.parent.virtualScrollModule && _this.parent.virtualScrollModule.isHorizontalScroll\n && !isNullOrUndefined(closest(target, '.' + cls.CONTENT_TABLE_CLASS));\n var conTable = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' table');\n _this.quickPopup.offsetX = isVirtualScroll && !_this.parent.enableRtl ? (util.getTranslateX(conTable) + 10) : 10;\n _this.quickPopup.offsetY = _this.parent.virtualScrollModule && !_this.parent.virtualScrollModule.isHorizontalScroll ?\n _this.quickPopup.offsetY : 0;\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 if (isVirtualScroll && !_this.parent.enableRtl) {\n _this.quickPopup.offsetX = util.getTranslateX(conTable) + _this.quickPopup.offsetX;\n }\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\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 && !_this.parent.virtualScrollModule.isHorizontalScroll && (collide.indexOf('top') > -1 || collide.indexOf('bottom') > -1)) {\n var translateY = util.getTranslateY(conTable);\n _this.quickPopup.offsetY = translateY;\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n }\n if (_this.quickPopup.position.X === 'center' && _this.quickPopup.position.Y === 'center' && !isNullOrUndefined(originalEvent) &&\n originalEvent.clientX && originalEvent.clientY) {\n var clientX = originalEvent.clientX;\n var clientY = originalEvent.clientY;\n var targetRect = target.getBoundingClientRect();\n var offsetY = originalEvent.offsetY || Math.ceil(clientY - targetRect.y);\n var previousOffset = _this.quickPopup.offsetY;\n var collision = isCollide(_this.quickPopup.element, target);\n var popupRect = _this.quickPopup.element.getBoundingClientRect();\n var targetEle = document.elementFromPoint(clientX, clientY);\n if (collision.indexOf('top') > -1 || collision.indexOf('bottom') > -1 || closest(targetEle, '.' + cls.POPUP_WRAPPER_CLASS)) {\n if (popupRect.top <= clientY &&\n clientY <= popupRect.top + popupRect.height) {\n _this.quickPopup.offsetY = previousOffset - popupRect.height - 10;\n _this.quickPopup.dataBind();\n collision = isCollide(_this.quickPopup.element, _this.parent.element);\n if (collision.indexOf('top') > -1) {\n _this.quickPopup.offsetY = previousOffset + offsetY + 10;\n _this.quickPopup.dataBind();\n }\n }\n else if (isCollide(_this.quickPopup.element, _this.parent.element).indexOf('bottom') > -1) {\n _this.quickPopup.offsetY =\n previousOffset - offsetY - Math.ceil(popupRect.height) - 10;\n _this.quickPopup.dataBind();\n }\n }\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 };\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 if (isNullOrUndefined(event) || (!isNullOrUndefined(event) && event.action !== 'escape') ||\n (this.parent.inlineModule && this.parent.element.querySelector('.' + cls.INLINE_APPOINTMENT_CLASS))) {\n this.parent.eventBase.focusElement();\n }\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 if (popupName === 'quickPopup') {\n var input = popup.element.querySelector('input.' + cls.SUBJECT_CLASS);\n if (input) {\n input.remove();\n }\n var form = this.quickPopup.element.querySelector('form.' + cls.FORM_CLASS);\n if (form) {\n util.removeChildren(form);\n form.remove();\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.dialogEvent = null;\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, initializeCSPTemplate, removeClass } 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.onTooltipClose.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\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[parseInt(index.toString(), 10)];\n }\n else {\n var rowIndex = args.target.parentNode.sectionRowIndex;\n var cellIndex = args.target.cellIndex;\n resCollection =\n this.parent.activeView.getColumnLevels()[parseInt(rowIndex.toString(), 10)][parseInt(cellIndex.toString(), 10)];\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 startTime = this.parent.getTimeString(eventStart);\n var endTime = this.parent.getTimeString(eventEnd);\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_1 = '
' + tooltipSubject + '
' +\n '
' + tooltipLocation + '
' +\n '
' + tooltipDetails + '
' +\n '
' + tooltipTime + '
';\n var contentTemp = function () {\n return content_1;\n };\n this.setContent(initializeCSPTemplate(contentTemp));\n }\n this.parent.renderTemplates();\n };\n EventTooltip.prototype.onTooltipClose = function (args) {\n if (args.element) {\n removeClass([args.element], cls.POPUP_OPEN);\n addClass([args.element], cls.POPUP_CLOSE);\n }\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element.parentElement) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element.nextElementSibling) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, Event, Browser, detach } 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(), this.endTypes[0], 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 floatLabelType: 'Always',\n placeholder: this.localeObj.getConstant(END),\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 // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var dataSource = [];\n this.endTypes.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 var labelId = this.element.id + '_' + 'end_label';\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 '
' +\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[parseInt(index.toString(), 10)].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[parseInt(index.toString(), 10)]) !== -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 this.recurrenceCount = null;\n }\n if (!this.monthDate.isDestroyed) {\n this.monthDate.destroy();\n this.monthDate = null;\n }\n if (!this.repeatInterval.isDestroyed) {\n this.repeatInterval.destroy();\n this.repeatInterval = null;\n }\n if (!this.untilDateObj.isDestroyed) {\n this.untilDateObj.destroy();\n this.untilDateObj = null;\n }\n if (!this.repeatType.isDestroyed) {\n this.repeatType.destroy();\n this.repeatType = null;\n }\n if (!this.endType.isDestroyed) {\n this.endType.destroy();\n this.endType = null;\n }\n if (!this.monthWeekPos.isDestroyed) {\n this.monthWeekPos.destroy();\n this.monthWeekPos = null;\n }\n if (!this.monthWeekDays.isDestroyed) {\n this.monthWeekDays.destroy();\n this.monthWeekDays = null;\n }\n if (!this.monthValue.isDestroyed) {\n this.monthValue.destroy();\n this.monthValue = null;\n }\n if (!this.onMonthDay.isDestroyed) {\n this.onMonthDay.destroy();\n this.onMonthDay = null;\n }\n if (!this.onWeekDay.isDestroyed) {\n this.onWeekDay.destroy();\n this.onWeekDay = null;\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, this.endTypes[0], 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 RecurrenceEditor.prototype.detachInputs = function () {\n var inputElements = [].slice.call(this.element.querySelectorAll('input'));\n for (var _i = 0, inputElements_1 = inputElements; _i < inputElements_1.length; _i++) {\n var element = inputElements_1[_i];\n detach(element);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RecurrenceEditor.prototype.destroy = function () {\n if (!this.isDestroyed) {\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 this.detachInputs();\n while (this.element.firstElementChild) {\n this.element.removeChild(this.element.firstElementChild);\n }\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 case 'endTypes':\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(['never', 'until', 'count'])\n ], RecurrenceEditor.prototype, \"endTypes\", 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, detach } from '@syncfusion/ej2-base';\nimport { cldrData, removeClass, getValue, getDefaultDateObject, closest, SanitizeHtmlHelper, initializeCSPTemplate } 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 enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\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 if (!this.parent.editorHeaderTemplate) {\n dialogModel.header = '
' +\n this.l10n.getConstant('newEvent') + '
';\n }\n }\n else {\n if (!this.parent.editorFooterTemplate) {\n this.renderDialogButtons(dialogModel);\n }\n if (!this.parent.editorHeaderTemplate) {\n dialogModel.header = '
' + this.l10n.getConstant('newEvent') + '
';\n }\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 this.addEventHandlers();\n addClass([this.element.parentElement], cls.EVENT_WINDOW_DIALOG_CLASS + '-container');\n EventHandler.add(this.dialogObject.element, 'keydown', this.preventEventSave, this);\n this.applyFormValidation();\n };\n EventWindow.prototype.renderDialogButtons = function (dialogButton) {\n dialogButton.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 };\n EventWindow.prototype.addEventHandlers = function () {\n var backIcon = this.element.querySelector('.' + cls.EVENT_WINDOW_BACK_ICON_CLASS);\n var saveIcon = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_ICON_CLASS);\n if (this.parent.isAdaptive && !isNullOrUndefined(backIcon) && !isNullOrUndefined(saveIcon)) {\n EventHandler.add(backIcon, 'click', this.dialogClose, this);\n EventHandler.add(saveIcon, 'click', this.eventSave, this);\n }\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.editorHeaderTemplate)) {\n this.parent.resetTemplates(['editorHeaderTemplate']);\n if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {\n this.dialogObject.header = this.createAdaptiveHeaderElement(data);\n }\n else {\n this.dialogObject.header = this.getDialogHeader(data);\n }\n }\n if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.parent.resetTemplates(['editorFooterTemplate']);\n this.dialogObject.footerTemplate = this.getDialogFooter(data);\n }\n if (!isNullOrUndefined(this.parent.editorHeaderTemplate) || !isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.dialogObject.dataBind();\n this.addEventHandlers();\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 this.applyFormValidation();\n };\n EventWindow.prototype.setDialogHeader = function () {\n if (!isNullOrUndefined(this.parent.editorHeaderTemplate)) {\n this.parent.resetTemplates(['editorHeaderTemplate']);\n if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {\n this.dialogObject.header = this.createAdaptiveHeaderElement();\n }\n else {\n this.dialogObject.header = this.getDialogHeader();\n }\n }\n else if (this.parent.isAdaptive) {\n this.dialogObject.header = '
' +\n this.l10n.getConstant('newEvent') + '
';\n }\n else {\n this.dialogObject.header = '
' + this.l10n.getConstant('newEvent') + '
';\n }\n this.dialogObject.dataBind();\n this.addEventHandlers();\n };\n EventWindow.prototype.setDialogFooter = function () {\n if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.parent.resetTemplates(['editorFooterTemplate']);\n this.dialogObject.footerTemplate = this.getDialogFooter();\n }\n else if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.renderDialogButtons(this.dialogObject);\n }\n else if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.dialogObject.footerTemplate = null;\n }\n this.dialogObject.dataBind();\n };\n EventWindow.prototype.createAdaptiveHeaderElement = function (data) {\n var header = createElement('div', { className: 'e-title-header' });\n var headerBackIcon = createElement('div', { className: 'e-back-icon e-icons' });\n header.appendChild(headerBackIcon);\n var headerTemplate = this.getDialogHeader(data);\n header.appendChild(headerTemplate);\n var headerSaveIcon = createElement('div', { className: 'e-save-icon e-icons' });\n header.appendChild(headerSaveIcon);\n return header;\n };\n EventWindow.prototype.getDialogHeader = function (args) {\n var headerTemplate = [];\n var headerTemplateId = this.parent.element.id + '_editorHeaderTemplate';\n var temHeaderDiv = document.createElement('div');\n headerTemplate = [].slice.call(this.parent.getEditorHeaderTemplate()(args || {}, this.parent, 'editorHeaderTemplate', headerTemplateId, false));\n append(headerTemplate, temHeaderDiv);\n return temHeaderDiv;\n };\n EventWindow.prototype.getDialogFooter = function (args) {\n var footerTemplate = [];\n var footerTemplateId = this.parent.element.id + '_editorFooterTemplate';\n var temFooterDiv = document.createElement('div');\n footerTemplate = [].slice.call(this.parent.getEditorFooterTemplate()(args || {}, this.parent, 'editorFooterTemplate', footerTemplateId, false));\n append(footerTemplate, temFooterDiv);\n return temFooterDiv;\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 endTime = this.eventData[this.fields.endTime].getTime();\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 if (_this.eventData[_this.fields.endTime].getTime() === endTime && !_this.cellClickAction &&\n _this.eventData[_this.fields.endTime].getHours() === 0 &&\n _this.eventData[_this.fields.endTime].getMinutes() === 0) {\n _this.eventData = extend({}, _this.eventData, null, true);\n _this.trimAllDay(_this.eventData);\n }\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 var _this = this;\n if (!isNullOrUndefined(this.parent.editorTemplate)) {\n if (args) {\n if (this.fieldValidator) {\n this.fieldValidator.destroy();\n this.fieldValidator = null;\n }\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 this.parent.resetTemplates(['editorTemplate']);\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(function () {\n if (_this.element) {\n _this.applyFormValidation();\n if (_this.eventCrudData) {\n _this.showDetails(_this.eventCrudData);\n _this.eventCrudData = null;\n }\n }\n });\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.appendChild(this.renderTextBox(cls.LOCATION_CLASS));\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.appendChild(this.renderDateTimePicker(cls.EVENT_WINDOW_END_CLASS));\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 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 = createElement('div', { id: this.parent.element.id + '_recurrence_editor' });\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 }\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 strictMode: true,\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 = function (data) {\n return \"
\" + data[resourceData.textField] + \"
\";\n };\n initializeCSPTemplate(resourceTemplate, resourceData);\n if (resourceData.allowMultiple) {\n var listObj = new MultiSelect({\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\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: { '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: { '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[parseInt(i.toString(), 10)].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[parseInt(j.toString(), 10)];\n })[0];\n var groupId = (!isNullOrUndefined(filter)) ?\n filter[resourceCollection[i + 1].groupIDField] : null;\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 resObject.clear();\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[parseInt(i.toString(), 10)].field === fieldName) {\n var resObj = this.createInstance(i);\n var groupId = args.itemData[resourceCollection[parseInt(i.toString(), 10)].idField];\n resObj.dataSource = this.filterDatasource(i, groupId);\n resObj.dataBind();\n var resValue = (resObj.dataSource.length > 0) ?\n resObj.dataSource[0][resourceCollection[i + 1].idField] : null;\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 enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\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 if (args.event && args.event.target) {\n var targetSelector = \".\" + cls.EVENT_WINDOW_ALL_DAY_CLASS + \",.\" + cls.TIME_ZONE_CLASS + \",.\" + cls.EVENT_WINDOW_REPEAT_CLASS;\n var target = closest(args.event.target, targetSelector);\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 };\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 enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\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 if (this.parent.isAdaptive && repeatType && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n this.element.querySelector('.' + cls.FORM_CLASS).removeAttribute('data-id');\n if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');\n }\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 this.repeatRule = this.recurrenceEditor.value;\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] || repeatType) {\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 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 form = this.element.querySelector('.' + cls.FORM_CLASS);\n if (!form) {\n return;\n }\n var getValidationRule = function (rules) {\n return (rules && Object.keys(rules).length > 0) ? rules : undefined;\n };\n var rules = {};\n var subjectRule = getValidationRule(this.parent.eventSettings.fields.subject.validation);\n if (!isNullOrUndefined(subjectRule)) {\n rules[this.parent.eventSettings.fields.subject.name] = subjectRule;\n }\n var locationRule = getValidationRule(this.parent.eventSettings.fields.location.validation);\n if (!isNullOrUndefined(locationRule)) {\n rules[this.parent.eventSettings.fields.location.name] = locationRule;\n }\n var startTimeRule = getValidationRule(this.parent.eventSettings.fields.startTime.validation);\n if (!isNullOrUndefined(startTimeRule)) {\n rules[this.parent.eventSettings.fields.startTime.name] = startTimeRule;\n }\n var endTimeRule = getValidationRule(this.parent.eventSettings.fields.endTime.validation);\n if (!isNullOrUndefined(endTimeRule)) {\n rules[this.parent.eventSettings.fields.endTime.name] = endTimeRule;\n }\n var descriptionRule = getValidationRule(this.parent.eventSettings.fields.description.validation);\n if (!isNullOrUndefined(descriptionRule)) {\n rules[this.parent.eventSettings.fields.description.name] = descriptionRule;\n }\n this.fieldValidator = new FieldValidator();\n this.fieldValidator.renderFormValidator(form, rules, this.element, this.parent.locale);\n };\n EventWindow.prototype.showDetails = function (eventData) {\n this.eventData = this.eventCrudData ? this.eventData : eventData;\n var eventObj = extend({}, eventData, null, true);\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n if (this.parent.isReact && formElements.length < 1 && !this.cellClickAction) {\n this.eventCrudData = eventObj;\n return;\n }\n if ((!this.cellClickAction || this.cellClickAction && !isNullOrUndefined(this.parent.editorTemplate)) &&\n eventObj[this.fields.endTime].getHours() === 0 && eventObj[this.fields.endTime].getMinutes() === 0) {\n this.trimAllDay(eventObj);\n }\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 && isNullOrUndefined(this.parent.editorFooterTemplate)) {\n removeClass([this.element.querySelector('.' + cls.DELETE_EVENT_CLASS)], cls.DISABLE_CLASS);\n }\n if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');\n }\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 if (this.parent.currentAction !== 'EditOccurrence') {\n alertType = this.recurrenceValidation(eventObj[this.fields.startTime], eventObj[this.fields.endTime], alert);\n }\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[parseInt(index.toString(), 10)] =\n (types.length > index) ? obj[types[parseInt(index.toString(), 10)]] :\n 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[parseInt(index.toString(), 10)] - 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[parseInt(index.toString(), 10)][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 var currentStartTime = new Date(+currentData[this.fields.startTime]);\n var currentEndTime = new Date(+currentData[this.fields.endTime]);\n var nextStartTime;\n var nextEndTime;\n if (index !== recurColl.length - 1) {\n nextStartTime = new Date(+recurColl[index + 1][this.fields.startTime]);\n nextEndTime = new Date(+recurColl[index + 1][this.fields.endTime]);\n }\n var lastEndTime = new Date(+recurColl[recurColl.length - 1][this.fields.endTime]);\n if (index === 0) {\n if (!isNullOrUndefined(recurColl[index + 1])) {\n if (!(nextStartTime.getTime() >= currentEndTime.getTime()) &&\n (util.resetTime(lastEndTime).getTime() >=\n util.resetTime(currentStartTime).getTime()) ||\n util.resetTime(lastEndTime).getTime() < util.resetTime(currentStartTime).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n else if (!(util.resetTime(currentStartTime).getTime() <\n util.resetTime(nextStartTime).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n }\n return false;\n }\n else {\n var previousStartTime = new Date(+recurColl[index - 1][this.fields.startTime]);\n var previousEndTime = new Date(+recurColl[index - 1][this.fields.endTime]);\n if (index === recurColl.length - 1) {\n if (util.resetTime(new Date(+recurColl[(recurColl.length - 1) - index][this.fields.startTime])).getTime() >\n util.resetTime(currentStartTime).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n else if (!((previousEndTime.getTime() <= currentStartTime.getTime()) &&\n (util.resetTime(currentStartTime).getTime() > util.resetTime(previousStartTime).getTime()))) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n }\n else if (!(((util.resetTime(previousStartTime).getTime() < util.resetTime(currentStartTime).getTime()) ||\n util.resetTime(new Date(+recurColl[0][this.fields.startTime])).getTime() >\n util.resetTime(currentStartTime).getTime()) &&\n ((util.resetTime(nextStartTime).getTime() > util.resetTime(currentStartTime).getTime()) ||\n (lastEndTime.getTime() < currentStartTime.getTime())))) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n else if (!(previousEndTime.getTime() <= currentStartTime.getTime() && nextStartTime.getTime() >=\n currentEndTime.getTime()) || (util.resetTime(nextEndTime).getTime() <\n util.resetTime(currentStartTime).getTime()) ||\n (util.resetTime(previousStartTime).getTime() > util.resetTime(currentEndTime).getTime()) ||\n !(util.resetTime(currentStartTime).getTime() < util.resetTime(nextStartTime).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.reverse() : [resourceData].reverse();\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[parseInt(k.toString(), 10)][_this.fields.id] = _this.parent.eventBase.getEventMaxID(i);\n eventList.push(temp[parseInt(k.toString(), 10)]);\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[parseInt(j.toString(), 10)][_this.fields.id] = _this.parent.eventBase.getEventMaxID(j);\n eventList.push(temp[parseInt(j.toString(), 10)]);\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 =\n util.findIndexInData(lastResource, lastResourceData.idField, resourceData[parseInt(i.toString(), 10)], events, resCol);\n }\n else {\n index =\n util.findIndexInData(lastResource, lastResourceData.idField, resourceData[parseInt(i.toString(), 10)]);\n }\n if (index < 0) {\n return { value: void 0 };\n }\n var groupId_1 = lastResource[parseInt(index.toString(), 10)][lastResourceData.groupIDField];\n var filter = lastLevel.filter(function (obj) { return obj.resourceData[lastResourceData.idField] ===\n resourceData[parseInt(i.toString(), 10)]; }).\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[parseInt(index_1.toString(), 10)].field;\n events[\"\" + field] = (groupOrder[parseInt(index_1.toString(), 10)] instanceof Array) ? groupOrder[parseInt(index_1.toString(), 10)][0] :\n groupOrder[parseInt(index_1.toString(), 10)];\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[parseInt(index.toString(), 10)].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][parseInt(k.toString(), 10)];\n event_3[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)];\n }\n else {\n for (var l = 0; l < temp.length; l++) {\n temp[parseInt(l.toString(), 10)][\"\" + field] = (eventObj[\"\" + field] instanceof Array) ?\n eventObj[\"\" + field][0] : eventObj[\"\" + field];\n }\n }\n }\n }\n events[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\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 = this.parent.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(element.value) : 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 else if (element.classList.contains('e-numerictextbox')) {\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.detachComponents = function () {\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElements_4 = formElements; _i < formElements_4.length; _i++) {\n var element = formElements_4[_i];\n detach(element);\n }\n };\n EventWindow.prototype.destroy = function (isIgnore) {\n if (this.parent && !this.parent.isDestroyed) {\n this.parent.resetTemplates(['editorTemplate', 'editorHeaderTemplate', 'editorFooterTemplate']);\n }\n this.destroyComponents();\n if (this.recurrenceEditor) {\n this.recurrenceEditor.destroy();\n detach(this.recurrenceEditor.element);\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 this.detachComponents();\n if (this.dialogObject) {\n if (this.dialogObject.element) {\n var form = this.dialogObject.element.querySelector('form');\n util.removeChildren(form);\n detach(form);\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 this.dialogEvent = null;\n }\n };\n return EventWindow;\n}());\nexport { EventWindow };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement, prepend } 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.startIndex = 0;\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 var containerSize = this.isHorizontalScroll ? this.parent.element.clientWidth : this.parent.element.clientHeight;\n this.renderedLength = Math.ceil(containerSize / this.itemSize) + this.bufferCount;\n return this.renderedLength;\n };\n VirtualScroll.prototype.renderVirtualTrack = function (contentWrap) {\n var wrap = createElement('div', { className: cls.VIRTUAL_TRACK_CLASS });\n if (this.isHorizontalScroll) {\n var colCount = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1].length;\n wrap.style.width = (colCount * this.itemSize) + 'px';\n }\n else {\n wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';\n }\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 var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if ((conWrap.scrollHeight - conWrap.scrollTop) < conWrap.offsetHeight * this.bufferCount) {\n virtual.style.height = parseInt(virtual.style.height) + (conWrap.offsetHeight * this.bufferCount) + 'px';\n }\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 if (this.isHorizontalScroll) {\n this.itemSize = util.getElementWidthFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;\n }\n else {\n this.itemSize = util.getElementHeightFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;\n }\n };\n VirtualScroll.prototype.renderEvents = function () {\n this.setTabIndex();\n var dynamicData = this.triggerScrollEvent(events.virtualScrollStop);\n if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading && this.parent.crudModule) {\n if (dynamicData.length > 0) {\n this.parent.crudModule.refreshProcessedData(true, dynamicData);\n this.parent.hideSpinner();\n return;\n }\n this.parent.crudModule.refreshDataManager();\n return;\n }\n if (this.parent.crudModule) {\n this.parent.crudModule.refreshProcessedData(true);\n }\n if (this.parent.currentView !== 'Month') {\n this.parent.notify(events.contentReady, {});\n }\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 conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.isHorizontalScroll) {\n this.horizontalScrolling(conWrap);\n }\n else {\n var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_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 addClass([conWrap], 'e-transition');\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 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.triggerScrollEvent(events.virtualScrollStart);\n var selectedEle = this.parent.getSelectedCells();\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 };\n VirtualScroll.prototype.horizontalScrolling = function (conWrap) {\n var _this = this;\n var resCollection = [];\n var scrollWidth = this.bufferCount * this.itemSize;\n if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) < 0) {\n resCollection = this.leftScroll(conWrap);\n }\n else if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) > scrollWidth) {\n resCollection = this.rightScroll(conWrap);\n }\n if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {\n if (this.parent.resourceBase.expandedResources.length !== resCollection.length ||\n this.parent.resourceBase.expandedResources[0] !== resCollection[0] ||\n this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1] !==\n resCollection[resCollection.length - 1]) {\n this.triggerScrollEvent(events.virtualScrollStart);\n var colLevels = this.parent.activeView.colLevels.slice(0);\n this.updateHorizontalContent(conWrap, resCollection);\n setStyleAttribute(conWrap.querySelector('table'), { transform: \"translateX(\" + this.translateY + \"px)\" });\n this.parent.activeView.colLevels = colLevels;\n if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {\n this.parent.dragAndDropModule.navigationWrapper();\n }\n }\n window.clearTimeout(this.timeValue);\n this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);\n }\n };\n VirtualScroll.prototype.triggerScrollEvent = function (action) {\n var _this = this;\n var dynamicData = [];\n if (!this.parent.activeView) {\n return dynamicData;\n }\n var eventArgs = {\n startDate: this.parent.activeView.startDate(),\n endDate: this.parent.activeView.endDate(),\n startIndex: this.parent.resourceBase.renderedResources[0].groupIndex,\n endIndex: this.parent.resourceBase.renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex,\n resourceData: this.parent.resourceBase.renderedResources.map(function (x) { return x.resourceData; }),\n name: action\n };\n this.parent.trigger(action, eventArgs, function (args) {\n if (action === events.virtualScrollStart) {\n _this.parent.showSpinner();\n }\n else if (action === events.virtualScrollStop && !isNullOrUndefined(args.eventData) && args.eventData.length > 0) {\n dynamicData = args.eventData;\n }\n });\n return dynamicData;\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.leftScroll = function (conWrap) {\n var index = 0;\n index = (~~(Math.abs(conWrap.scrollLeft) / this.itemSize) + Math.ceil(conWrap.clientWidth / this.itemSize)) - this.renderedLength;\n index = (index > 0) ? index : 0;\n return this.getCollection(index, index + this.renderedLength);\n };\n VirtualScroll.prototype.rightScroll = function (conWrap) {\n var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];\n var nextSetIndex = 0;\n nextSetIndex = ~~(Math.abs(conWrap.scrollLeft) / this.itemSize);\n var lastIndex = nextSetIndex + this.renderedLength;\n lastIndex = (lastIndex > lastLevel.length - 1) ? lastLevel.length - 1 : lastIndex;\n return this.getCollection(lastIndex - this.renderedLength, lastIndex);\n };\n VirtualScroll.prototype.getCollection = function (startIndex, endIndex) {\n this.translateY = startIndex * this.itemSize;\n var lastLevel = this.getResCollection(startIndex, endIndex);\n if (this.parent.enableRtl) {\n this.translateY = -this.translateY;\n }\n return lastLevel;\n };\n VirtualScroll.prototype.getResCollection = function (startIndex, endIndex) {\n var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];\n var resCollection = [];\n var index = { startIndex: 0, endIndex: 0 };\n if (this.parent.activeViewOptions.group.byDate) {\n if (lastLevel[parseInt(startIndex.toString(), 10)].date.getTime() ===\n this.parent.resourceBase.expandedResources[0].date.getTime() &&\n lastLevel[parseInt(endIndex.toString(), 10)].date.getTime() ===\n this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].date.getTime()) {\n return this.parent.resourceBase.expandedResources;\n }\n resCollection =\n this.getByDateCollection(lastLevel[parseInt(startIndex.toString(), 10)], lastLevel[parseInt(endIndex.toString(), 10)], index);\n this.setRenderedDates(resCollection);\n }\n else {\n if (lastLevel[parseInt(startIndex.toString(), 10)].groupIndex === this.parent.resourceBase.expandedResources[0].groupIndex &&\n lastLevel[parseInt(endIndex.toString(), 10)].groupIndex ===\n this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex) {\n return this.parent.resourceBase.expandedResources;\n }\n resCollection =\n this.getByIdCollection(lastLevel[parseInt(startIndex.toString(), 10)], lastLevel[parseInt(endIndex.toString(), 10)], index);\n }\n if (this.parent.currentView !== 'Month') {\n this.startIndex = index.startIndex;\n resCollection = lastLevel.slice(index.startIndex, index.endIndex);\n }\n this.translateY = index.startIndex * this.itemSize;\n return resCollection;\n };\n VirtualScroll.prototype.getByDateCollection = function (firstItem, lastItem, index) {\n var resCollection = this.parent.activeView.colLevels[0].filter(function (data) {\n return firstItem.date.getTime() <= data.date.getTime() &&\n data.date.getTime() <= lastItem.date.getTime();\n });\n this.setStartEndIndex(this.parent.activeView.colLevels[0], resCollection[0], resCollection[resCollection.length - 1], index);\n return resCollection;\n };\n VirtualScroll.prototype.getByIdCollection = function (firstItem, lastItem, index) {\n var resCollection = this.parent.resourceBase.lastResourceLevel.filter(function (data) {\n return firstItem.groupIndex <= data.groupIndex && data.groupIndex <= lastItem.groupIndex;\n });\n this.parent.resourceBase.renderedResources = resCollection;\n this.setStartEndIndex(this.parent.resourceBase.lastResourceLevel, resCollection[0], resCollection[resCollection.length - 1], index);\n return resCollection;\n };\n VirtualScroll.prototype.setStartEndIndex = function (data, firstItem, lastItem, colIndex) {\n var index = 0;\n data.filter(function (data) {\n if (firstItem === data) {\n colIndex.startIndex = index;\n }\n else if (lastItem === data) {\n colIndex.endIndex = index + data.colSpan;\n }\n index += data.colSpan;\n });\n if (firstItem === lastItem) {\n colIndex.endIndex = colIndex.startIndex + lastItem.colSpan;\n }\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.updateHorizontalContent = function (conWrap, resCollection) {\n this.parent.resourceBase.expandedResources = resCollection;\n var selectedEle = this.parent.getSelectedCells();\n this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;\n var renderedLength = conWrap.querySelectorAll('tbody tr').length;\n for (var i = 0; i < renderedLength; i++) {\n remove(conWrap.querySelector('tbody tr'));\n }\n if (this.parent.currentView === 'Month') {\n if (this.parent.activeViewOptions.group.byDate) {\n this.parent.activeView.colLevels[0] = resCollection;\n }\n else {\n this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 2] = resCollection;\n }\n var contentRows = this.parent.activeView.getContentRows();\n append(contentRows, conWrap.querySelector('tbody'));\n }\n else {\n var col = [].slice.call(conWrap.querySelector('colgroup').children);\n for (var i = 0; i < col.length; i++) {\n remove(col[parseInt(i.toString(), 10)]);\n }\n this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1] = resCollection;\n var contentRows = this.parent.activeView.getContentRows();\n var table = conWrap.querySelector('table');\n var thead = conWrap.querySelector('thead');\n var colGroupEle_1 = conWrap.querySelector('colgroup');\n resCollection.forEach(function () {\n colGroupEle_1.appendChild(createElement('col'));\n });\n thead.appendChild(this.parent.eventBase.createEventWrapper('', this.startIndex > 0 ? this.startIndex : 0));\n if (this.parent.activeViewOptions.timeScale.enable) {\n thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));\n }\n prepend([thead], table);\n append(contentRows, conWrap.querySelector('tbody'));\n }\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.setRenderedDates = function (resCollection) {\n if (this.parent.currentView !== 'Month') {\n var dateCol_1 = resCollection.map(function (x) { return x.date; });\n this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = dateCol_1; });\n }\n else {\n var dateCol_2 = resCollection.map(function (x) { return x.date.getDay(); });\n var renderDates_1 = this.parent.activeView.renderDates.filter(function (x) { return dateCol_2.indexOf(x.getDay()) >= 0; });\n this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = renderDates_1; });\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 this.focusedEle = null;\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', 'monthHeaderTemplate',\n 'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate', 'dateRangeTemplate'\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 if (!isNullOrUndefined(this.parent.activeView)) {\n this.parent.activeView.viewClass = 'e-timeline-day-view';\n }\n break;\n case 'TimelineWorkWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n if (!isNullOrUndefined(this.parent.activeView)) {\n this.parent.activeView.viewClass = 'e-timeline-work-week-view';\n }\n break;\n case 'TimelineWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n if (!isNullOrUndefined(this.parent.activeView)) {\n this.parent.activeView.viewClass = 'e-timeline-week-view';\n }\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 console.warn('[WARNING] :: Module \"' + viewName + '\" is not available in Schedule component!' +\n ' You either misspelled the module name or forgot to load it.');\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 ((['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(this.parent.currentView) === -1 ||\n (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical'))\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 if (this.parent.activeView.isTimelineView()) {\n this.parent.uiStateValues.top = 0;\n }\n else {\n this.parent.virtualScrollModule.isHorizontalScroll = true;\n this.parent.uiStateValues.left = 0;\n }\n }\n this.updateHeader();\n this.parent.currentTimezoneDate = this.parent.getCurrentTime();\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();\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', 'application');\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, removeClass } 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 if (this.parent.uiStateValues && this.parent.uiStateValues.isPreventEventRefresh) {\n this.parent.uiStateValues.isPreventEventRefresh = false;\n this.parent.refreshEvents(false);\n this.parent.hideSpinner();\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.refreshProcessedData();\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.refreshProcessedData = function (isVirtualScrollAction, dynamicEvents) {\n if (isVirtualScrollAction === void 0) { isVirtualScrollAction = false; }\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.actionObj.action = '';\n removeClass([this.parent.element], 'e-event-action');\n }\n if (this.parent.activeViewOptions && this.parent.activeViewOptions.eventTemplate) {\n var templateNames = ['eventTemplate'];\n if (this.crudObj.isCrudAction &&\n ['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(this.parent.currentView) === -1) {\n templateNames = [];\n for (var i = 0, len = this.crudObj.sourceEvent.length; i < len; i++) {\n templateNames.push('eventTemplate_' + this.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex);\n if (this.crudObj.targetEvent[parseInt(i.toString(), 10)] && this.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==\n this.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {\n templateNames.push('eventTemplate_' + this.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex);\n }\n }\n }\n if (templateNames.length > 0) {\n this.parent.resetTemplates(templateNames);\n }\n }\n if (isVirtualScrollAction) {\n this.parent.notify(events.dataReady, { processedData: dynamicEvents ? this.parent.eventBase.processData(dynamicEvents) : this.parent.eventsProcessed });\n return;\n }\n var eventsData = this.parent.eventsData || [];\n var blockData = this.parent.blockData || [];\n var data = eventsData.concat(blockData);\n this.parent.notify(events.dataReady, { processedData: this.parent.eventBase ? this.parent.eventBase.processData(data) : [] });\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.isSpecificResourceEvents()) {\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[parseInt(groupIndex.toString(), 10)]);\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 if (addEvents.length === 0) {\n return;\n }\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 this.parent.crudModule.crudObj.isCrudAction = false;\n return;\n }\n var updateEvents = (eventData instanceof Array) ? eventData : [eventData];\n if (updateEvents.length === 0) {\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 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 cloneEvent = extend({}, saveArgs.changedRecords[saveArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);\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 (deleteEvents.length === 0) {\n return;\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',\n 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[parseInt(a.toString(), 10)];\n var parentEvent = occurrenceEvents[parseInt(a.toString(), 10)].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 var cloneEvent = extend({}, occurrenceArgs.changedRecords[occurrenceArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime(action === 'EditOccurrence' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);\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[parseInt(a.toString(), 10)];\n var parentEvent = followEvents[parseInt(a.toString(), 10)].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] === parentEvent[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 var cloneEvent = extend({}, followArgs.changedRecords[followArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime(action === 'EditFollowingEvents' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);\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[parseInt(a.toString(), 10)];\n var parentEvent = seriesEvents[parseInt(a.toString(), 10)];\n var eventCollections = _this.parent.eventBase.getEventCollections(parentEvent);\n var deletedEvents = eventCollections.follow.concat(eventCollections.occurrence);\n switch (action) {\n case 'EditSeries':\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 var cloneEvent = extend({}, seriesArgs.changedRecords[seriesArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime(action === 'EditSeries' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);\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[parseInt(a.toString(), 10)][_this.parent.eventFields.recurrenceRule]);\n if (!isDelete) {\n var parentEvent_1 = deleteData[parseInt(a.toString(), 10)].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[parseInt(a.toString(), 10)][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[parseInt(a.toString(), 10)][fields_3.id] !== parentEvent_1[fields_3.id];\n }\n if (isDelete) {\n editParams.deletedRecords.push(deleteArgs.deletedRecords[parseInt(a.toString(), 10)]);\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 _this.parent.eventBase.selectWorkCellByTime(deleteArgs.deletedRecords);\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 cloneEvent = extend({}, editArgs.changedRecords[editArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);\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 timezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();\n if (timezone) {\n eventStartTime = this.parent.tzModule.remove(new Date(+eventStartTime.getTime()), timezone);\n }\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 if (newRecurrenceRule) {\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 }\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.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 __decorate([\n Property()\n ], EventSettings.prototype, \"includeFiltersInQuery\", 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 __decorate([\n Property(false)\n ], Group.prototype, \"hideNonWorkingDays\", 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n }\n else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1)\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n checkboxEle.setAttribute('aria-label', \"checked\");\n }\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n checkboxEle.setAttribute('aria-label', \"checked\");\n }\n }\n else {\n e.item.setAttribute('aria-checked', 'false');\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n checkboxEle.setAttribute('aria-label', \"unchecked\");\n }\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute(\"tabindex\", \"-1\");\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var _this = this;\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[len]);\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - (nodes.length - 1)] ? nodes[len - (nodes.length - 1)].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n if (Browser.userAgent.indexOf(\"Edg\") > -1) {\n if (ariaState === 'true') {\n wrapper.setAttribute('aria-label', \"checked\");\n }\n else if (ariaState === 'false') {\n wrapper.setAttribute('aria-label', \"unchecked\");\n }\n else if (ariaState === 'mixed') {\n wrapper.setAttribute('aria-label', \"indeterminate\");\n }\n }\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[i]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && event.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: (this.animation.expand.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: (this.animation.collapse.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; });\n if (index !== -1) {\n return getValue(this.fields.child, obj[index]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[i]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n else if (this.isChildObject()) {\n var tempField = !isNOU(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNOU(tempField.child)) {\n tempField = tempField.child;\n }\n else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; });\n if (index !== -1) {\n return getValue('child', obj[index]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[i_1]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return getValue(_this.fields.child.id, data) && getValue(_this.fields.child.id, data).toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !(e.ctrlKey || e.metaKey))))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute(\"tabindex\", \"-1\");\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = Browser.isDevice && e.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(e.originalEvent.changedTouches[0].clientX, e.originalEvent.changedTouches[0].clientY) : e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[length_1]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable') || nextNode.classList.contains('e-prevent')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute(\"tabindex\", \"-1\");\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n if (focusedElement.classList.contains('e-disable') || focusedElement.classList.contains('e-prevent')) {\n focusedElement.setAttribute(\"tabindex\", \"-1\");\n this.navigateNode(true);\n }\n else {\n focusedElement.setAttribute(\"tabindex\", \"0\");\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n }\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target == focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n if (Browser.isDevice) {\n return;\n }\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl,\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n this.enableHtmlSanitizer ? txtEle.innerText = SanitizeHtmlHelper.sanitize(newText) : txtEle.innerHTML = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) && (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n var nodeData = [];\n var liArray = [];\n dragInstance = e.dragData.draggable;\n for (var i_2 = 0; i_2 < dragInstance.ej2_instances.length; i_2++) {\n if (dragInstance.ej2_instances[i_2] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i_2];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i_3 = sNodes.length - 1; i_3 >= 0; i_3--) {\n if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i_4 = 0; i_4 < sNodes.length; i_4++) {\n if (dropLi.isSameNode(sNodes[i_4]) || this.isDescendant(sNodes[i_4], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_4], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[i]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || args.name != 'nodeExpanding') {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var refNode;\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n refNode = dropUl.childNodes[index];\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[i], cNodes[j]);\n break;\n }\n dropUl.insertBefore(li[i], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[i]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[i][this.fields.id].toString());\n this.getHierarchicalParentId(data[i][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType == 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length != 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType == 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse());\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: \"smooth\" }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","/* 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.resourceDateTree = [];\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[parseInt(i.toString(), 10)].resourceData;\n var res = this.lastResourceLevel[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].resourceData;\n var count = resource.Count;\n resources.push(this.lastResourceLevel[parseInt(i.toString(), 10)]);\n var isExpanded = resource[this.lastResourceLevel[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].resource.name);\n if (rIndex === resColl.length - 1) {\n extend(resData[parseInt(i.toString(), 10)].resourceData, { ClassName: cls.RESOURCE_CHILD_CLASS });\n this.renderedResources[parseInt(i.toString(), 10)].className = [cls.RESOURCE_CHILD_CLASS];\n }\n else {\n extend(resData[parseInt(i.toString(), 10)].resourceData, { ClassName: cls.RESOURCE_PARENT_CLASS });\n this.renderedResources[parseInt(i.toString(), 10)].className = [cls.RESOURCE_PARENT_CLASS];\n }\n left = (rIndex * this.leftPixel) + 'px';\n if (resData[parseInt(i.toString(), 10)].resourceData.ClassName === cls.RESOURCE_PARENT_CLASS\n && !isNullOrUndefined(resData[parseInt(i.toString(), 10)].resourceData.Count) && (resData[parseInt(i.toString(), 10)].resourceData.Count > 0)) {\n var iconClass = void 0;\n if (resData[parseInt(i.toString(), 10)].resourceData[resColl[parseInt(rIndex.toString(), 10)].expandedField] ||\n isNullOrUndefined(resData[parseInt(i.toString(), 10)].resourceData[resColl[parseInt(rIndex.toString(), 10)].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[parseInt(i.toString(), 10)], cls.RESOURCE_TEXT_CLASS);\n ntd.setAttribute('data-group-index', resData[parseInt(i.toString(), 10)].groupIndex.toString());\n ntd.setAttribute('aria-label', resData[parseInt(i.toString(), 10)].resourceData[resData[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].resourceData.ClassName];\n addClass([ntd], classCollection);\n var args = { elementType: 'resourceHeader', element: ntd, groupIndex: resData[parseInt(i.toString(), 10)].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[parseInt(x.toString(), 10)][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[parseInt(z.toString(), 10)].Count, 10);\n }\n totalCount = totalCount + parseInt(data[parseInt(x.toString(), 10)].Count, 10);\n extend(data[parseInt(x.toString(), 10)], { 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 + ',.' + cls.MORE_INDICATOR_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[parseInt(index.toString(), 10)].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[parseInt(i.toString(), 10)].children[0].classList.contains(cls.RESOURCE_PARENT_CLASS);\n clonedCollection[parseInt(index.toString(), 10)].resourceData[clonedCollection[parseInt(index.toString(), 10)].resource.expandedField] = !hide;\n if (hide) {\n if (pNode) {\n var trElem = rowCollection[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].classList.contains(cls.HIDDEN_CLASS)) {\n addClass([rowCollection[parseInt(i.toString(), 10)], workCellCollection[parseInt(i.toString(), 10)], headerRowCollection[parseInt(i.toString(), 10)]], cls.HIDDEN_CLASS);\n }\n }\n else {\n if (pNode) {\n var rowIndex = rowCollection[parseInt(i.toString(), 10)].rowIndex;\n if (!clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData[clonedCollection[parseInt(rowIndex.toString(), 10)].resource.expandedField]\n && !isNullOrUndefined(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData[clonedCollection[parseInt(rowIndex.toString(), 10)].resource.expandedField])) {\n rowCollection.splice(i + 1, (parseInt(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData.Count, 10)));\n workCellCollection.splice(i + 1, (parseInt(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData.Count, 10)));\n headerRowCollection.splice(i + 1, (parseInt(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData.Count, 10)));\n expanded = false;\n }\n if (expanded) {\n var trElem = rowCollection[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].classList.contains(cls.HIDDEN_CLASS)) {\n removeClass([rowCollection[parseInt(i.toString(), 10)], workCellCollection[parseInt(i.toString(), 10)], headerRowCollection[parseInt(i.toString(), 10)]], 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[parseInt(index.toString(), 10)].resourceData[this.lastResourceLevel[parseInt(index.toString(), 10)].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 enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\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 created: this.resourceTreeCreated.bind(this)\n });\n this.treeViewObj.root = this.parent.root ? this.parent.root : this.parent;\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.resourceTreeCreated = function () {\n if (this.parent.activeViewOptions.resourceHeaderTemplate && this.parent.portals && this.treeViewObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.treeViewObj.portals);\n this.parent.renderTemplates();\n }\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[parseInt(index.toString(), 10)];\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[parseInt(i.toString(), 10)], 0, (i + 1).toString()));\n }\n else {\n treeHandler(this_1.resourceTreeLevel[parseInt(i.toString(), 10)], 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[parseInt(i.toString(), 10)];\n var resourceText = resourceLevel.dataSource.filter(function (resData) {\n return resData[resourceLevel.idField] === resource.groupOrder[parseInt(i.toString(), 10)];\n });\n var resourceName = createElement('div', { className: cls.RESOURCE_NAME });\n this_2.parent.sanitize(resourceText[0][resourceLevel.textField], resourceName);\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(this.parent, 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[parseInt(i.toString(), 10)];\n var resourceObj = this.getResourceModel(resource, e[parseInt(i.toString(), 10)].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[parseInt(index_1.toString(), 10)]);\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[parseInt(i.toString(), 10)][resource.idField]);\n var items = group(resources.slice(1), index + 1, resource, data[parseInt(i.toString(), 10)], 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[parseInt(i.toString(), 10)][resource.workDaysField];\n var resStartHour = data[parseInt(i.toString(), 10)][resource.startHourField];\n var resEndHour = data[parseInt(i.toString(), 10)][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[parseInt(i.toString(), 10)][resource.cssClassField];\n var slotData = {\n type: 'resourceHeader', className: ['e-resource-cells'],\n resourceLevelIndex: index, groupOrder: groupOrder,\n resource: resource, resourceData: data[parseInt(i.toString(), 10)],\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[parseInt(index.toString(), 10)]) {\n resTreeGroup[parseInt(index.toString(), 10)] = [];\n }\n if (resTree.length > 0) {\n resTreeGroup[parseInt(index.toString(), 10)].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[parseInt(i.toString(), 10)]; _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[parseInt((i + 1).toString(), 10)][parseInt(temp.toString(), 10)];\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[parseInt(index.toString(), 10)].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 datesColumn = [];\n if (this.parent.activeViewOptions.group.hideNonWorkingDays) {\n var renderDates_1 = [];\n var dateIndex = 0;\n var _loop_3 = function (headerDate) {\n this_3.resourceDateTree[parseInt(dateIndex.toString(), 10)] = [];\n var currentDateLevels = [];\n var _loop_4 = function (j) {\n var workDays = this_3.lastResourceLevel[parseInt(j.toString(), 10)].resourceData[this_3.lastResourceLevel[parseInt(j.toString(), 10)].resource.workDaysField];\n if (!workDays) {\n workDays = this_3.parent.activeViewOptions.workDays;\n }\n if (workDays.indexOf(headerDate.date.getDay()) !== -1) {\n var resTd_1 = extend({}, this_3.lastResourceLevel[parseInt(j.toString(), 10)], null, true);\n resTd_1.date = headerDate.date;\n this_3.lastResourceLevel[parseInt(j.toString(), 10)].workDays = workDays;\n resTd_1.startHour = this_3.parent.getStartEndTime(resTd_1.resourceData[resTd_1.resource.startHourField]) ||\n headerDate.startHour;\n resTd_1.endHour = this_3.parent.getStartEndTime(resTd_1.resourceData[resTd_1.resource.endHourField]) ||\n headerDate.endHour;\n this_3.resourceDateTree[parseInt(dateIndex.toString(), 10)].push(resTd_1);\n var _loop_5 = function (k) {\n if (!currentDateLevels[parseInt(k.toString(), 10)]) {\n currentDateLevels[parseInt(k.toString(), 10)] = [];\n }\n if (k === resTd_1.groupOrder.length - 1) {\n if (!renderDates_1[parseInt(j.toString(), 10)]) {\n renderDates_1[parseInt(j.toString(), 10)] = [];\n }\n var filterDates = resTd_1.renderDates.filter(function (x) { return x.getDay() === headerDate.date.getDay(); });\n renderDates_1[parseInt(j.toString(), 10)] = renderDates_1[parseInt(j.toString(), 10)].concat(filterDates);\n currentDateLevels[parseInt(k.toString(), 10)].push(resTd_1);\n return \"continue\";\n }\n var currentLevel = levels[parseInt(k.toString(), 10)];\n var filteredResource = currentLevel.filter(function (data) {\n return data.resourceData[data.resource.idField] === resTd_1.groupOrder[parseInt(k.toString(), 10)];\n });\n if (filteredResource && filteredResource.length > 0) {\n var existedResource = currentDateLevels[parseInt(k.toString(), 10)].filter(function (data) {\n return data.resourceData[data.resource.idField] === resTd_1.groupOrder[parseInt(k.toString(), 10)];\n });\n if (existedResource && existedResource.length > 0) {\n existedResource[0].colSpan += 1;\n }\n else {\n var filteredTd = extend({}, filteredResource[0], null, true);\n filteredTd.colSpan = 1;\n currentDateLevels[parseInt(k.toString(), 10)].push(filteredTd);\n }\n }\n };\n for (var k = 0; k < resTd_1.groupOrder.length; k++) {\n _loop_5(k);\n }\n }\n };\n for (var j = 0; j < this_3.lastResourceLevel.length; j++) {\n _loop_4(j);\n }\n if (currentDateLevels.length > 0) {\n for (var l = 0; l < levels.length; l++) {\n if (!dateHeaderLevels[parseInt(l.toString(), 10)]) {\n dateHeaderLevels[parseInt(l.toString(), 10)] = [];\n }\n dateHeaderLevels[parseInt(l.toString(), 10)] = dateHeaderLevels[parseInt(l.toString(), 10)].concat(currentDateLevels[parseInt(l.toString(), 10)]);\n }\n headerDate.colSpan = currentDateLevels[currentDateLevels.length - 1].length;\n datesColumn.push(headerDate);\n }\n dateIndex++;\n };\n var this_3 = this;\n for (var _f = 0, headerDates_1 = headerDates; _f < headerDates_1.length; _f++) {\n var headerDate = headerDates_1[_f];\n _loop_3(headerDate);\n }\n this.resourceDateTree = this.resourceDateTree.filter(function (data) { return data.length > 0; });\n this.lastResourceLevel.forEach(function (x, index) {\n if (renderDates_1[parseInt(index.toString(), 10)]) {\n x.renderDates = renderDates_1[parseInt(index.toString(), 10)].sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n });\n dateHeaderLevels.unshift(datesColumn);\n return dateHeaderLevels;\n }\n var dateColSpan = 0;\n for (var _g = 0, _h = levels[0]; _g < _h.length; _g++) {\n var firstRowTd = _h[_g];\n dateColSpan += firstRowTd.colSpan;\n }\n for (var _j = 0, headerDates_2 = headerDates; _j < headerDates_2.length; _j++) {\n var headerDate = headerDates_2[_j];\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 _k = 0, _l = resGroup[parseInt(k.toString(), 10)]; _k < _l.length; _k++) {\n var resTd = _l[_k];\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[parseInt(k.toString(), 10)]) {\n dateHeaderLevels[parseInt(k.toString(), 10)] = [];\n }\n dateHeaderLevels[parseInt(k.toString(), 10)] = dateHeaderLevels[parseInt(k.toString(), 10)].concat(resGroup[parseInt(k.toString(), 10)]);\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[parseInt(index.toString(), 10)].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[parseInt(groupIndex.toString(), 10)].groupOrder;\n for (var index = 0; index < this.resourceCollection.length; index++) {\n setValues(index, this.resourceCollection[parseInt(index.toString(), 10)].field, groupOrder[parseInt(index.toString(), 10)]);\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[parseInt(index.toString(), 10)].dataSource[0];\n if (data) {\n setValues(index, this.resourceCollection[parseInt(index.toString(), 10)].field, data[this.resourceCollection[parseInt(index.toString(), 10)].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[parseInt(colorFieldIndex.toString(), 10)];\n if (isNullOrUndefined(groupOrder) && this.parent.activeViewOptions.group.allowGroupEdit && resource.allowMultiple) {\n return undefined;\n }\n var id = isNullOrUndefined(groupOrder) ? eventObj[resource.field] : groupOrder[parseInt(colorFieldIndex.toString(), 10)];\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[parseInt(groupIndex.toString(), 10)].groupOrder;\n for (var level = 0, length_3 = resourceLevel.length; level < length_3; level++) {\n var fieldName = this.resourceCollection[parseInt(level.toString(), 10)].field;\n if (isNullOrUndefined(resourceObj[\"\" + fieldName])) {\n resourceObj[\"\" + fieldName] = [];\n }\n resourceObj[\"\" + fieldName].push(resourceLevel[parseInt(level.toString(), 10)]);\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[parseInt(index.toString(), 10)]) {\n eventObj[this.resourceCollection[parseInt(level.toString(), 10)].field] = this.lastResourceLevel[parseInt(index.toString(), 10)].groupOrder[parseInt(level.toString(), 10)];\n }\n }\n }\n };\n ResourceBase.prototype.addResource = function (resources, name, index) {\n var resourceCollection = (resources instanceof Array) ? resources : [resources];\n var _loop_6 = 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_6(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_7 = 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_7(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[parseInt(index.toString(), 10)];\n }\n };\n ResourceBase.prototype.destroy = function () {\n this.parent.off(events.documentClick, this.documentClick);\n if (this.treeViewObj) {\n if (this.treeViewObj.portals && this.treeViewObj.portals.length > 0) {\n var treeViewTemplates = this.treeViewObj.portals.map(function (x) { return x.propName; });\n if (treeViewTemplates.length > 0) {\n this.parent.resetTemplates(treeViewTemplates);\n }\n }\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};\nimport { Property, ChildProperty, Event } from '@syncfusion/ej2-base';\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property('Custom')\n ], ToolbarItem.prototype, \"name\", void 0);\n __decorate([\n Event()\n ], ToolbarItem.prototype, \"click\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, SanitizeHtmlHelper } 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';\nimport { ToolbarItem } from '../models/toolbar';\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 * @param {Function} callback - Specifies the callBack method\n * @returns {void}\n * @private\n */\n Schedule.prototype.renderTemplates = function (callback) {\n if (this.isReact) {\n this.renderReactTemplates(callback);\n }\n else if (callback) {\n callback();\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 /**\n * This method renders untrusted strings and scripts securely by sanitizing them first.\n *\n * @param {string} value - A string value representing the HTML string value to be sanitized.\n * @param {HTMLElement} element - An HTML element to which the sanitized or unsanitized HTML string will be assigned.\n * @returns {void}\n * @private\n */\n Schedule.prototype.sanitize = function (value, element) {\n if (this.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(value);\n }\n else {\n element.innerHTML = value;\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 Schedule.prototype.destroyEditorWindow = function () {\n if (this.eventWindow) {\n this.eventWindow.destroy();\n this.eventWindow = null;\n }\n this.eventWindow = new EventWindow(this);\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[parseInt(item.toString(), 10)].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.dateRangeTemplateName = obj.dateRangeTemplate ? 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 hideNonWorkingDays: ['Day', 'Week', 'WorkWeek', 'Month'].indexOf(this.currentView) > -1 ? this.group.hideNonWorkingDays : false\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 dateRangeTemplate: this.dateRangeTemplate,\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 enableLazyLoading: false\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 if (viewsData.enableLazyLoading && !isNullOrUndefined(viewsData.group.resources) && viewsData.group.resources.length > 0 &&\n (['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(viewsData.option) === -1 ||\n (viewsData.option === 'TimelineYear' && viewsData.orientation === 'Vertical'))) {\n viewsData.allowVirtualScrolling = true;\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, 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.dateRangeTemplateFn = this.templateParser(this.activeViewOptions.dateRangeTemplate);\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.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);\n this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);\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 var previousView = this.activeViewOptions ? this.activeViewOptions.option : this.currentView;\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: previousView, currentView: view, viewIndex: index\n };\n _this.trigger(events.navigating, navArgs, function (navigationArgs) {\n if (!navigationArgs.cancel) {\n var isVertical = ['Day', 'Week', 'WorkWeek'].indexOf(view) > -1 && ['Day', 'Week', 'WorkWeek'].indexOf(previousView) < 0;\n _this.uiStateValues.isInitial = isVertical || view.indexOf('Timeline') > -1 || view.indexOf('Year') > -1;\n _this.uiStateValues.top = view.indexOf('Timeline') > -1 && previousView.indexOf('Timeline') < 0 ? 0 : _this.uiStateValues.top;\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 else {\n _this.currentView = previousView;\n }\n });\n }\n else {\n _this.currentView = previousView;\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() && _this.currentView !== 'TimelineYear';\n _this.validateDate(navigationArgs.currentDate);\n if (_this.headerModule) {\n _this.headerModule.setCalendarDate(navigationArgs.currentDate);\n }\n if (_this.currentView === 'MonthAgenda' && _this.monthAgendaModule) {\n _this.monthAgendaModule.monthAgendaDate = new Date('' + _this.selectedDate);\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, isPreventTimezone: false\n };\n }\n this.currentTimezoneDate = this.getCurrentTime();\n this.activeCellsData = {\n startTime: new Date(this.currentTimezoneDate),\n endTime: new Date(this.currentTimezoneDate),\n isAllDay: false\n };\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 recurringEvent: 'Recurring Event',\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.getSelectedCells();\n for (var _i = 0, selectedCells_1 = selectedCells; _i < selectedCells_1.length; _i++) {\n var cell = selectedCells_1[_i];\n if (this.currentView !== 'Year') {\n cell.setAttribute('aria-selected', 'false');\n }\n cell.removeAttribute('tabindex');\n }\n removeClass(selectedCells, cls.SELECTED_CELL_CLASS);\n if (this.keyboardInteractionModule && this.keyboardInteractionModule.selectedCells.length > 0) {\n this.keyboardInteractionModule.selectedCells = [];\n }\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 if (this.currentView !== 'Year') {\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 }\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 date range template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getDateRangeTemplate = function () {\n return this.dateRangeTemplateFn;\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 editor header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEditorHeaderTemplate = function () {\n return this.editorHeaderTemplateFn;\n };\n /**\n * Method to process editor footer template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEditorFooterTemplate = function () {\n return this.editorFooterTemplateFn;\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(new Date(this.currentTimezoneDate) || 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 util.resetScrollbarWidth();\n if (this.currentView === 'Month' || ((this.currentView !== 'Agenda' && this.currentView !== 'MonthAgenda')\n && !this.activeViewOptions.timeScale.enable) || this.activeView.isTimelineView()) {\n this.activeView.resetColWidth();\n this.notify(events.scrollUiUpdate, { cssProperties: this.getCssProperties(), isPreventScrollUpdate: true });\n this.refreshEvents(false);\n }\n else {\n this.notify(events.contentReady, {});\n }\n };\n /**\n * Method to process the templates\n *\n * @param {string | Function} 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 (typeof template === 'function') {\n return compile(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n /**\n * Retrieves the selected cells.\n *\n * @returns {Element[]} The elements of currently selected cells will be returned.\n * @private\n */\n Schedule.prototype.getSelectedCells = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.SELECTED_CELL_CLASS));\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 recordLocation = (event[this.eventFields.location] || this.eventSettings.fields.location.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 if (recordLocation && recordLocation !== '') {\n announcementString = announcementString + ' ' + this.localeObj.getConstant('location') + ' ' + recordLocation;\n }\n if (event[this.eventFields.recurrenceRule] && event[this.eventFields.recurrenceRule] !== ''\n && event[this.eventFields.id] === event[this.eventFields.recurrenceID]) {\n announcementString = announcementString + ' ' + this.localeObj.getConstant('recurringEvent');\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 /**\n * Method to check for refreshing the targeted resource row events.\n *\n * @returns {boolean} Returns the boolean value\n * @private\n */\n Schedule.prototype.isSpecificResourceEvents = function () {\n return this.activeViewOptions.group.resources.length > 0 && !this.activeViewOptions.group.allowGroupEdit &&\n !this.rowAutoHeight && !this.virtualScrollModule && this.activeViewOptions.group.byGroupID;\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();\n }\n break;\n case 'showHeaderBar':\n case 'toolbarItems':\n this.destroyHeaderModule();\n if (newProp.showHeaderBar) {\n this.headerModule = new HeaderRenderer(this);\n this.headerModule.updateDateRange();\n }\n this.notify(events.scrollUiUpdate, { cssProperties: this.getCssProperties() });\n if (this.activeView.isTimelineView()) {\n this.refreshEvents(false);\n }\n break;\n case 'workDays':\n if (JSON.stringify(oldProp.workDays) !== JSON.stringify(newProp.workDays)) {\n state.isLayout = true;\n }\n break;\n case 'showWeekend':\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 'dateRangeTemplate':\n this.activeViewOptions.dateRangeTemplate = newProp.dateRangeTemplate;\n this.dateRangeTemplateFn = this.templateParser(this.activeViewOptions.dateRangeTemplate);\n if (this.headerModule) {\n this.headerModule.updateDateRange();\n }\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.activeCellsData = null;\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 'editorHeaderTemplate':\n if (!isNullOrUndefined(this.editorHeaderTemplate)) {\n this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);\n }\n if (this.eventWindow) {\n this.eventWindow.setDialogHeader();\n }\n break;\n case 'editorFooterTemplate':\n if (!isNullOrUndefined(this.editorFooterTemplate)) {\n this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);\n }\n if (this.eventWindow) {\n this.eventWindow.setDialogFooter();\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();\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.headerTooltipTemplate);\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 case 'includeFiltersInQuery':\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[parseInt(groupIndex.toString(), 10)].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[parseInt(rowIndex.toString(), 10)].cells[parseInt(i.toString(), 10)]);\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[parseInt(i.toString(), 10)].querySelectorAll(selector));\n cells.push(tds[parseInt(colIndex.toString(), 10)]);\n }\n else {\n cells.push(tableEle.rows[parseInt(i.toString(), 10)].cells[parseInt(colIndex.toString(), 10)]);\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 if (this.keyboardInteractionModule && this.keyboardInteractionModule.selectedCells.length > 0) {\n return this.keyboardInteractionModule.selectedCells;\n }\n return this.getSelectedCells();\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 * @param {boolean} isEventDataRefresh Accepts the boolean to refresh the appointment data source from remote or local\n * @returns {void}\n */\n Schedule.prototype.setResourceCollections = function (resourceCol, isEventDataRefresh) {\n if (isEventDataRefresh === void 0) { isEventDataRefresh = true; }\n if (!isEventDataRefresh && this.uiStateValues) {\n this.uiStateValues.isPreventEventRefresh = true;\n }\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[parseInt(index.toString(), 10)];\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 console.warn('[WARNING] :: Module \"ICalendarExport\" is not available in Schedule component!' +\n ' You either misspelled the module name or forgot to load it.');\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 console.warn('[WARNING] :: Module \"ICalendarImport\" is not available in Schedule component!' +\n ' You either misspelled the module name or forgot to load it.');\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 * Generates the occurrences of a single recurrence event based on the provided event.\n *\n * @function generateEventOccurrences\n * @param {Object} event Accepts the parent recurrence event from which the occurrences are generated.\n * @param {Date} startDate Accepts the start date for the event occurrences. If not provided, the event's start date will be used.\n * @returns {Object[]} Returns the collection of occurrence event objects.\n */\n Schedule.prototype.generateEventOccurrences = function (event, startDate) {\n return (this.eventBase) ? this.eventBase.generateOccurrence(event, startDate) : [];\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 console.warn('[WARNING] :: Module \"ExcelExport\" is not available in Schedule component!' +\n ' You either misspelled the module name or forgot to load it.');\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 console.warn('[WARNING] :: Module \"Print\" is not available in Schedule component!' +\n ' You either misspelled the module name or forgot to load it.');\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 (isRemoteRefresh) {\n if (this.dragAndDropModule) {\n this.dragAndDropModule.actionObj.action = '';\n removeClass([this.element], cls.EVENT_ACTION_CLASS);\n }\n this.crudModule.refreshDataManager();\n }\n else {\n if (this.uiStateValues) {\n this.uiStateValues.isPreventTimezone = true;\n }\n if (this.crudModule) {\n this.crudModule.refreshProcessedData();\n }\n if (this.uiStateValues) {\n this.uiStateValues.isPreventTimezone = false;\n }\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 'dateRangeTemplate':\n this.dateRangeTemplateFn = this.templateParser(this.activeViewOptions.dateRangeTemplate);\n if (this.headerModule) {\n this.headerModule.refresh();\n }\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 this.destroyEditorWindow();\n this.editorTemplateFn = this.templateParser(this.editorTemplate);\n break;\n case 'editorHeaderTemplate':\n this.destroyEditorWindow();\n this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);\n break;\n case 'editorFooterTemplate':\n this.destroyEditorWindow();\n this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);\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 * This method currently focuses on validating appointments within the current view date range.\n * However, it does not extend this availability check to recurrence occurrences outside of the current date range.\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 =\n this.eventBase.filterEventsByResource(this.resourceBase.lastResourceLevel[parseInt(groupIndex.toString(), 10)], 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 open the quick info popup based on cell or event details.\n *\n * @param {object} data Defines the cell or event data. If the data contains valid ID, it will open event quick info popup,\n * otherwise cell quick info popup displayed.\n * @returns {void}\n */\n Schedule.prototype.openQuickInfoPopup = function (data) {\n var _this = this;\n if (this.currentView === 'Year' || isNullOrUndefined(data)) {\n return;\n }\n if (isNullOrUndefined(data[this.eventFields.id])) {\n if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda' || isNullOrUndefined(this.activeView)) {\n return;\n }\n var cellData = {\n startTime: this.activeCellsData.startTime = this.getDateTime(data[this.eventFields.startTime]),\n endTime: this.activeCellsData.endTime = this.getDateTime(data[this.eventFields.endTime]),\n isAllDay: this.activeCellsData.isAllDay =\n !isNullOrUndefined(data[this.eventFields.isAllDay]) ? data[this.eventFields.isAllDay] : false\n };\n var startTime = this.activeView.getAdjustedDate(new Date(cellData.startTime));\n if (startTime) {\n var query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + startTime.getTime() + '\"]';\n if (this.activeViewOptions.group.resources.length > 0 && !this.uiStateValues.isGroupAdaptive\n && this.resourceBase && this.eventBase) {\n cellData.groupIndex = this.eventBase.getGroupIndexFromEvent(data);\n query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + startTime.getTime() + '\"][data-group-index=\"' + cellData.groupIndex + '\"]';\n }\n var workCell = this.element.querySelector(query);\n if (workCell) {\n workCell.focus();\n cellData.element = workCell;\n this.notify(events.cellClick, cellData);\n }\n }\n }\n else {\n var app = this.getCurrentViewEvents().filter(function (item) {\n return data[_this.eventFields.id] === item[_this.eventFields.id];\n });\n if (app.length <= 0) {\n return;\n }\n var selectEvent = app[0];\n if (data[this.eventFields.recurrenceRule]) {\n var occurence = app.filter(function (x) {\n return x[_this.eventFields.startTime].getTime() === data[_this.eventFields.startTime].getTime();\n });\n if (occurence.length > 0) {\n selectEvent = occurence[0];\n }\n }\n var element = this.element.querySelector('div[data-guid=\"' + selectEvent.Guid + '\"]');\n if (element) {\n this.eventBase.removeSelectedAppointmentClass();\n this.eventBase.addSelectedAppointments([element], false);\n this.activeEventData = { event: selectEvent, element: element };\n if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda') {\n addClass([this.activeEventData.element], cls.AGENDA_SELECTED_CELL);\n }\n this.notify(events.eventClick, this.activeEventData);\n }\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 * Closes the tooltip.\n * For example, when the context menu is opened for an event,\n * the tooltip can be closed by calling this method.\n *\n * @function closeTooltip\n * @returns {void}\n */\n Schedule.prototype.closeTooltip = function () {\n if (this.eventTooltip) {\n this.eventTooltip.close();\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.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(true)\n ], Schedule.prototype, \"allowSwiping\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], Schedule.prototype, \"toolbarItems\", 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(true)\n ], Schedule.prototype, \"enableHtmlSanitizer\", 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, \"dateRangeTemplate\", 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 Property()\n ], Schedule.prototype, \"editorHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"editorFooterTemplate\", 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, \"eventDoubleClick\", 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, \"virtualScrollStart\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"virtualScrollStop\", 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","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ViewsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-views';\n }\n }\n});\nexport var ViewsPlugin = {\n name: 'e-views',\n install: function (Vue) {\n Vue.component(ViewsPlugin.name, ViewsDirective);\n }\n};\n/**\n * `e-views` directive represent a view of the VueJS Schedule.\n * It must be contained in a Schedule component(`ejs-schedule`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ViewDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-view';\n }\n }\n});\nexport var ViewPlugin = {\n name: 'e-view',\n install: function (Vue) {\n Vue.component(ViewPlugin.name, ViewDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ResourcesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-resources';\n }\n }\n});\nexport var ResourcesPlugin = {\n name: 'e-resources',\n install: function (Vue) {\n Vue.component(ResourcesPlugin.name, ResourcesDirective);\n }\n};\n/**\n * `e-resources` directive represent a resources of the VueJS Schedule.\n * It must be contained in a Schedule component(`ejs-schedule`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ResourceDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-resource';\n }\n }\n});\nexport var ResourcePlugin = {\n name: 'e-resource',\n install: function (Vue) {\n Vue.component(ResourcePlugin.name, ResourceDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var HeaderRowsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-header-rows';\n }\n }\n});\nexport var HeaderRowsPlugin = {\n name: 'e-header-rows',\n install: function (Vue) {\n Vue.component(HeaderRowsPlugin.name, HeaderRowsDirective);\n }\n};\n/**\n * `e-header-rows` directive represent a header rows of the VueJS Schedule.\n * It must be contained in a Schedule component(`ejs-schedule`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var HeaderRowDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-header-row';\n }\n }\n});\nexport var HeaderRowPlugin = {\n name: 'e-header-row',\n install: function (Vue) {\n Vue.component(HeaderRowPlugin.name, HeaderRowDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ToolbarItemsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-toolbaritems';\n }\n }\n});\nexport var ToolbarItemsPlugin = {\n name: 'e-toolbaritems',\n install: function (Vue) {\n Vue.component(ToolbarItemsPlugin.name, ToolbarItemsDirective);\n }\n};\n/**\n * `e-toolbaritems` directive represent a custom toolbar items of the VueJS Schedule.\n * It must be contained in a Schedule component(`ejs-schedule`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ToolbarItemDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-toolbaritem';\n }\n }\n});\nexport var ToolbarItemPlugin = {\n name: 'e-toolbaritem',\n install: function (Vue) {\n Vue.component(ToolbarItemPlugin.name, ToolbarItemDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { Schedule } from '@syncfusion/ej2-schedule';\nimport { ViewsDirective, ViewDirective, ViewsPlugin, ViewPlugin } from './views.directive';\nimport { ResourcesDirective, ResourceDirective, ResourcesPlugin, ResourcePlugin } from './resources.directive';\nimport { HeaderRowsDirective, HeaderRowDirective, HeaderRowsPlugin, HeaderRowPlugin } from './headerrows.directive';\nimport { ToolbarItemsDirective, ToolbarItemDirective, ToolbarItemsPlugin, ToolbarItemPlugin } from './toolbaritems.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'agendaDaysCount', 'allowDragAndDrop', 'allowInline', 'allowKeyboardInteraction', 'allowMultiCellSelection', 'allowMultiDrag', 'allowMultiRowSelection', 'allowResizing', 'allowSwiping', 'calendarMode', 'cellHeaderTemplate', 'cellTemplate', 'cssClass', 'currentView', 'dateFormat', 'dateHeaderTemplate', 'dateRangeTemplate', 'dayHeaderTemplate', 'editorFooterTemplate', 'editorHeaderTemplate', 'editorTemplate', 'enableAdaptiveUI', 'enableAllDayScroll', 'enableHtmlSanitizer', 'enablePersistence', 'enableRecurrenceValidation', 'enableRtl', 'endHour', 'eventDragArea', 'eventSettings', 'firstDayOfWeek', 'firstMonthOfYear', 'group', 'headerIndentTemplate', 'headerRows', 'height', 'hideEmptyAgendaDays', 'locale', 'maxDate', 'minDate', 'monthHeaderTemplate', 'monthsCount', 'quickInfoOnSelectionEnd', 'quickInfoTemplates', 'readonly', 'resourceHeaderTemplate', 'resources', 'rowAutoHeight', 'selectedDate', 'showHeaderBar', 'showQuickInfo', 'showTimeIndicator', 'showWeekNumber', 'showWeekend', 'startHour', 'timeFormat', 'timeScale', 'timezone', 'timezoneDataSource', 'toolbarItems', 'views', 'weekRule', 'width', 'workDays', 'workHours', 'actionBegin', 'actionComplete', 'actionFailure', 'cellClick', 'cellDoubleClick', 'created', 'dataBinding', 'dataBound', 'destroyed', 'drag', 'dragStart', 'dragStop', 'eventClick', 'eventDoubleClick', 'eventRendered', 'hover', 'moreEventsClick', 'navigating', 'popupClose', 'popupOpen', 'renderCell', 'resizeStart', 'resizeStop', 'resizing', 'select', 'virtualScrollStart', 'virtualScrollStop'];\nexport var modelProps = ['currentView', 'selectedDate'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ej-schedule` represents the VueJS Schedule Component.\n * ```vue\n * \n * ```\n */\nexport var ScheduleComponent = vueDefineComponent({\n name: 'ScheduleComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Schedule({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-views\": \"e-view\", \"e-resources\": \"e-resource\", \"e-header-rows\": \"e-header-row\", \"e-toolbaritems\": \"e-toolbaritem\" },\n tagNameMapper: { \"e-header-rows\": \"e-headerRows\", \"e-toolbaritems\": \"e-toolbarItems\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addEvent: function (data) {\n return this.ej2Instances.addEvent(data);\n },\n addResource: function (resources, name, index) {\n return this.ej2Instances.addResource(resources, name, index);\n },\n changeCurrentView: function (viewName, viewIndex) {\n return this.ej2Instances.changeCurrentView(viewName, viewIndex);\n },\n closeEditor: function () {\n return this.ej2Instances.closeEditor();\n },\n closeQuickInfoPopup: function () {\n return this.ej2Instances.closeQuickInfoPopup();\n },\n closeTooltip: function () {\n return this.ej2Instances.closeTooltip();\n },\n collapseResource: function (resourceId, name) {\n return this.ej2Instances.collapseResource(resourceId, name);\n },\n deleteEvent: function (id, currentAction) {\n return this.ej2Instances.deleteEvent(id, currentAction);\n },\n expandResource: function (resourceId, name) {\n return this.ej2Instances.expandResource(resourceId, name);\n },\n exportToExcel: function (excelExportOptions) {\n return this.ej2Instances.exportToExcel(excelExportOptions);\n },\n exportToICalendar: function (fileName, customData) {\n return this.ej2Instances.exportToICalendar(fileName, customData);\n },\n generateEventOccurrences: function (event, startDate) {\n return this.ej2Instances.generateEventOccurrences(event, startDate);\n },\n getBlockEvents: function (startDate, endDate, includeOccurrences) {\n return this.ej2Instances.getBlockEvents(startDate, endDate, includeOccurrences);\n },\n getCellDetails: function (tdCol) {\n return this.ej2Instances.getCellDetails(tdCol);\n },\n getCurrentViewDates: function () {\n return this.ej2Instances.getCurrentViewDates();\n },\n getCurrentViewEvents: function () {\n return this.ej2Instances.getCurrentViewEvents();\n },\n getCurrentViewIndex: function () {\n return this.ej2Instances.getCurrentViewIndex();\n },\n getDeletedOccurrences: function (recurrenceData) {\n return this.ej2Instances.getDeletedOccurrences(recurrenceData);\n },\n getEventDetails: function (element) {\n return this.ej2Instances.getEventDetails(element);\n },\n getEventMaxID: function () {\n return this.ej2Instances.getEventMaxID();\n },\n getEvents: function (startDate, endDate, includeOccurrences) {\n return this.ej2Instances.getEvents(startDate, endDate, includeOccurrences);\n },\n getIndexFromResourceId: function (id, name) {\n return this.ej2Instances.getIndexFromResourceId(id, name);\n },\n getOccurrencesByID: function (eventID) {\n return this.ej2Instances.getOccurrencesByID(eventID);\n },\n getOccurrencesByRange: function (startTime, endTime) {\n return this.ej2Instances.getOccurrencesByRange(startTime, endTime);\n },\n getResourceCollections: function () {\n return this.ej2Instances.getResourceCollections();\n },\n getResourcesByIndex: function (index) {\n return this.ej2Instances.getResourcesByIndex(index);\n },\n getSelectedElements: function () {\n return this.ej2Instances.getSelectedElements();\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n importICalendar: function (fileContent) {\n return this.ej2Instances.importICalendar(fileContent);\n },\n isSlotAvailable: function (startTime, endTime, groupIndex) {\n return this.ej2Instances.isSlotAvailable(startTime, endTime, groupIndex);\n },\n openEditor: function (data, action, isEventData, repeatType) {\n return this.ej2Instances.openEditor(data, action, isEventData, repeatType);\n },\n openQuickInfoPopup: function (data) {\n return this.ej2Instances.openQuickInfoPopup(data);\n },\n print: function (printOptions) {\n return this.ej2Instances.print(printOptions);\n },\n refreshEvents: function (isRemoteRefresh) {\n return this.ej2Instances.refreshEvents(isRemoteRefresh);\n },\n refreshLayout: function () {\n return this.ej2Instances.refreshLayout();\n },\n refreshTemplates: function (templateName) {\n return this.ej2Instances.refreshTemplates(templateName);\n },\n removeResource: function (resourceId, name) {\n return this.ej2Instances.removeResource(resourceId, name);\n },\n resetWorkHours: function (dates, start, end, groupIndex) {\n return this.ej2Instances.resetWorkHours(dates, start, end, groupIndex);\n },\n saveEvent: function (data, currentAction) {\n return this.ej2Instances.saveEvent(data, currentAction);\n },\n scrollTo: function (hour, scrollDate) {\n return this.ej2Instances.scrollTo(hour, scrollDate);\n },\n scrollToResource: function (resourceId, groupName) {\n return this.ej2Instances.scrollToResource(resourceId, groupName);\n },\n selectResourceByIndex: function (groupIndex) {\n return this.ej2Instances.selectResourceByIndex(groupIndex);\n },\n setRecurrenceEditor: function (recurrenceEditor) {\n return this.ej2Instances.setRecurrenceEditor(recurrenceEditor);\n },\n setResourceCollections: function (resourceCol, isEventDataRefresh) {\n return this.ej2Instances.setResourceCollections(resourceCol, isEventDataRefresh);\n },\n setWorkHours: function (dates, start, end, groupIndex) {\n return this.ej2Instances.setWorkHours(dates, start, end, groupIndex);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n }\n});\nexport var SchedulePlugin = {\n name: 'ejs-schedule',\n install: function (Vue) {\n Vue.component(SchedulePlugin.name, ScheduleComponent);\n Vue.component(ViewPlugin.name, ViewDirective);\n Vue.component(ViewsPlugin.name, ViewsDirective);\n Vue.component(ResourcePlugin.name, ResourceDirective);\n Vue.component(ResourcesPlugin.name, ResourcesDirective);\n Vue.component(HeaderRowPlugin.name, HeaderRowDirective);\n Vue.component(HeaderRowsPlugin.name, HeaderRowsDirective);\n Vue.component(ToolbarItemPlugin.name, ToolbarItemDirective);\n Vue.component(ToolbarItemsPlugin.name, ToolbarItemsDirective);\n }\n};\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || element.classList.contains('e-date-range-wrapper') || element.classList.contains('e-multiselect'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Property } from '@syncfusion/ej2-base';\n/**\n * Represents TreeGrid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options) {\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n *\n * @default null\n */\n this.filter = {};\n merge(this, options);\n }\n /**\n * Update the State changes reflected for TreeGrid columndirective in react platform.\n *\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent['isReact'] && keys[parseInt(i.toString(), 10)] === 'template') {\n var refreshReactColumnTemplateByUid = 'refreshReactColumnTemplateByUid';\n this.parent.clipboardModule['treeGridParent'].renderModule[\"\" + refreshReactColumnTemplateByUid](this.uid);\n }\n }\n };\n return Column;\n}());\nexport { Column };\n/**\n * Defines TreeGrid column\n */\nvar TreeGridColumn = /** @class */ (function (_super) {\n __extends(TreeGridColumn, _super);\n function TreeGridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TreeGridColumn.prototype, \"columns\", void 0);\n return TreeGridColumn;\n}(Column));\nexport { TreeGridColumn };\n/**\n * Defines stacked tree grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(TreeGridColumn));\nexport { StackedColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 Loading Indicator of the Tree Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Collection, Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Represents the Tree Grid 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()\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 filtering behavior of the TreeGrid.\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('Parent')\n ], FilterSettings.prototype, \"hierarchyMode\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 textwrap behavior of the TreeGrid.\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 { Logger as GridLogger, Grid, detailLists } from '@syncfusion/ej2-grids';\n/**\n * Logger module for TreeGrid\n *\n * @hidden\n */\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/treegrid';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar WARNING = '[EJ2TreeGrid.Warning]';\nvar ERROR = '[EJ2TreeGrid.Error]';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar INFO = '[EJ2TreeGrid.Info]';\nvar IsRowDDEnabled = false;\nvar Logger = /** @class */ (function (_super) {\n __extends(Logger, _super);\n function Logger(parent) {\n var _this = this;\n Grid.Inject(GridLogger);\n _this = _super.call(this, parent) || this;\n return _this;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} - Returns Logger module name\n */\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n var message = item.generateMessage(args, this.parent, cOp.options);\n message = message.replace('EJ2Grid', 'EJ2TreeGrid').replace('* Hierarchy Grid', '').replace('* Grouping', '');\n if (IsRowDDEnabled && type[parseInt(i.toString(), 10)] === 'primary_column_missing') {\n message = message.replace('Editing', 'Row DragAndDrop');\n IsRowDDEnabled = false;\n }\n var index = message.indexOf('https');\n var gridurl = message.substring(index);\n if (type[parseInt(i.toString(), 10)] === 'module_missing') {\n message = message.replace(gridurl, DOC_URL + '/modules');\n }\n else if (type[parseInt(i.toString(), 10)] === 'primary_column_missing' || type[parseInt(i.toString(), 10)] === 'selection_key_missing') {\n message = message.replace(gridurl, BASE_DOC_URL + '/api/treegrid/column/#isprimarykey');\n }\n else if (type[parseInt(i.toString(), 10)] === 'grid_remote_edit') {\n message = message.replace(gridurl, DOC_URL + '/edit');\n }\n else if (type[parseInt(i.toString(), 10)] === 'virtual_height') {\n message = message.replace(gridurl, DOC_URL + '/virtual');\n }\n else if (type[parseInt(i.toString(), 10)] === 'check_datasource_columns') {\n message = message.replace(gridurl, DOC_URL + '/columns');\n }\n else if (type[parseInt(i.toString(), 10)] === 'locale_missing') {\n message = message.replace(gridurl, DOC_URL + '/global-local/#localization');\n }\n if (type[parseInt(i.toString(), 10)] === 'datasource_syntax_mismatch') {\n if (!isNullOrUndefined(this.treeGridObj) && !isNullOrUndefined(this.treeGridObj.dataStateChange)) {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n else {\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n }\n };\n Logger.prototype.treeLog = function (types, args, treeGrid) {\n this.treeGridObj = treeGrid;\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n if (treeGrid.allowRowDragAndDrop && !treeGrid.columns.filter(function (column) { return column.isPrimaryKey; }).length) {\n IsRowDDEnabled = true;\n this.log('primary_column_missing', args);\n }\n for (var i = 0; i < type.length; i++) {\n var item = treeGridDetails[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, treeGrid);\n if (cOp.success) {\n var message = item.generateMessage(args, treeGrid, cOp.options);\n // eslint-disable-next-line no-console\n console[item.logType](message);\n }\n }\n };\n return Logger;\n}(GridLogger));\nexport { Logger };\nexport var treeGridDetails = {\n // eslint-disable-next-line camelcase\n mapping_fields_missing: {\n type: 'mapping_fields_missing',\n logType: 'error',\n check: function (args, parent) {\n var opt = { success: false };\n if ((isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.childMapping)\n && isNullOrUndefined(parent.parentIdMapping)) ||\n (!isNullOrUndefined(parent.idMapping) && isNullOrUndefined(parent.parentIdMapping)) ||\n (isNullOrUndefined(parent.idMapping) && !isNullOrUndefined(parent.parentIdMapping))) {\n opt = { success: true };\n }\n return opt;\n },\n generateMessage: function () {\n return ERROR + ':' + ' MAPPING FIELDS MISSING \\n' + 'One of the following fields is missing. It is ' +\n 'required for the hierarchical relationship of records in TreeGrid:\\n' +\n '* childMapping\\n' + '* idMapping\\n' + '* parentIdMapping\\n' +\n 'Refer to the following documentation links for more details.\\n' +\n (BASE_DOC_URL + \"/api/treegrid#childmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#idmapping\") + '\\n' +\n (BASE_DOC_URL + \"/api/treegrid#$parentidmapping\");\n }\n }\n};\n","/**\n * @hidden\n */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var checkboxChange = 'checkboxChange';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var expanded = 'expanded';\n/** @hidden */\nexport var expanding = 'expanding';\n/** @hidden */\nexport var collapsed = 'collapsed';\n/** @hidden */\nexport var collapsing = 'collapsing';\n/** @hidden */\nexport var remoteExpand = 'remoteExpand';\n/** @hidden */\nexport var localPagedExpandCollapse = 'localPagedExpandCollapse';\n/** @hidden */\nexport var pagingActions = 'pagingActions';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var savePreviousRowPosition = 'savePreviousRowPosition';\n/** @hidden */\nexport var crudAction = 'crudAction';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var beginAdd = 'beginAdd';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var batchSave = 'batchSave';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var virtualColumnIndex = 'virtualColumnIndex';\n/** @hidden */\nexport var virtualActionArgs = 'virtual-action-args';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var dataListener = 'data-listener';\n/** @hidden */\nexport var indexModifier = 'index-modifier';\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 detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowsAdd = 'rows-add';\n/** @hidden */\nexport var rowsRemove = 'rows-remove';\n/** @hidden */\nexport var rowdraging = 'row-draging';\n/** @hidden */\nexport var rowDropped = 'row-dropped';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\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 leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 events from '../base/constant';\nimport { isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Clipboard as GridClipboard } from '@syncfusion/ej2-grids';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n *\n * @hidden\n */\nvar TreeClipboard = /** @class */ (function (_super) {\n __extends(TreeClipboard, _super);\n function TreeClipboard(parent, serviceLocator) {\n var _this = _super.call(this, parent.grid, serviceLocator) || this;\n _this.treeCopyContent = '';\n _this.copiedUniqueIdCollection = [];\n _this.treeGridParent = parent;\n _this.serviceLocator = serviceLocator;\n return _this;\n }\n TreeClipboard.prototype.setCopyData = function (withHeader) {\n var copyContent = 'copyContent';\n var getCopyData = 'getCopyData';\n var isSelect = 'isSelect';\n var uniqueID = 'uniqueID';\n var currentRecords = this.treeGridParent.getCurrentViewRecords();\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this[\"\" + copyContent] = '';\n var rows = this.treeGridParent.grid.getRows();\n if (this.treeGridParent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.treeGridParent.getSelectedRowIndexes().sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.treeCopyContent += '\\n';\n }\n if (!rows[selectedIndexes[parseInt(i.toString(), 10)]].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].querySelectorAll('.e-rowcell'));\n var uniqueid = this.treeGridParent.getSelectedRecords()[parseInt(i.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n if (this.treeGridParent.copyHierarchyMode === 'Parent' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.parentContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader, i);\n }\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += this[\"\" + copyContent];\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n if (this.treeGridParent.copyHierarchyMode === 'Child' || this.treeGridParent.copyHierarchyMode === 'Both') {\n this.childContentData(currentRecords, selectedIndexes[parseInt(i.toString(), 10)], rows, withHeader);\n }\n }\n }\n }\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.treeGridParent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] =\n this.treeGridParent.getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this[\"\" + getCopyData](headerTextArray, false, '\\t', withHeader);\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n var args = {\n data: this.treeCopyContent,\n cancel: false\n };\n this.treeGridParent.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 this.copiedUniqueIdCollection = [];\n this.treeCopyContent = '';\n }\n else {\n _super.prototype.setCopyData.call(this, withHeader);\n }\n }\n };\n TreeClipboard.prototype.parentContentData = function (currentRecords, selectedIndex, rows, withHeader, index) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var parentItem = 'parentItem';\n var uniqueID = 'uniqueID';\n var level = 'level';\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem])) {\n var treeLevel = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + level];\n for (var i = 0; i < treeLevel + 1; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem]) &&\n currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + parentItem][\"\" + uniqueID]) {\n selectedIndex = j;\n var cells = [].slice.call(rows[parseInt(selectedIndex.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n if (index > 0) {\n this.treeCopyContent = this.treeCopyContent + this[\"\" + copyContent] + '\\n';\n }\n else {\n this.treeCopyContent = this[\"\" + copyContent] + '\\n' + this.treeCopyContent;\n }\n this.copiedUniqueIdCollection.push(uniqueid);\n this[\"\" + copyContent] = '';\n break;\n }\n }\n }\n }\n }\n };\n TreeClipboard.prototype.copy = function (withHeader) {\n _super.prototype.copy.call(this, withHeader);\n };\n TreeClipboard.prototype.paste = function (data, rowIndex, colIndex) {\n _super.prototype.paste.call(this, data, rowIndex, colIndex);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns clipboard module name\n */\n TreeClipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n TreeClipboard.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n TreeClipboard.prototype.childContentData = function (currentRecords, selectedIndex, rows, withHeader) {\n var getCopyData = 'getCopyData';\n var copyContent = 'copyContent';\n var childRecords = 'childRecords';\n var hasChildRecords = 'hasChildRecords';\n var uniqueID = 'uniqueID';\n if (currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + hasChildRecords]) {\n var childData = currentRecords[parseInt(selectedIndex.toString(), 10)][\"\" + childRecords];\n for (var i = 0; i < childData.length; i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) && currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID] === childData[parseInt(i.toString(), 10)][\"\" + uniqueID]) {\n if ((!isNullOrUndefined(rows[parseInt(j.toString(), 10)])) && !rows[parseInt(j.toString(), 10)].classList.contains('e-summaryrow')) {\n var cells = [].slice.call(rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell'));\n var uniqueid = currentRecords[parseInt(j.toString(), 10)][\"\" + uniqueID];\n if (this.copiedUniqueIdCollection.indexOf(uniqueid) === -1) {\n this[\"\" + getCopyData](cells, false, '\\t', withHeader);\n this.treeCopyContent += ('\\n' + this[\"\" + copyContent]);\n this[\"\" + copyContent] = '';\n this.copiedUniqueIdCollection.push(uniqueid);\n this.childContentData(currentRecords, j, rows, withHeader);\n }\n }\n break;\n }\n }\n }\n }\n };\n return TreeClipboard;\n}(GridClipboard));\nexport { TreeClipboard };\n","import { getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, ODataAdaptor, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { WebApiAdaptor, WebMethodAdaptor, CacheAdaptor } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Specifies whether remote data binding\n */\nexport function isRemoteData(parent) {\n if (parent.dataSource instanceof DataManager) {\n var adaptor = parent.dataSource.adaptor;\n return (adaptor instanceof ODataAdaptor ||\n (adaptor instanceof WebApiAdaptor) || (adaptor instanceof WebMethodAdaptor) ||\n (adaptor instanceof CacheAdaptor) || adaptor instanceof UrlAdaptor);\n }\n return false;\n}\n/**\n * @param {TreeGrid | IGrid} parent - Tree Grid or Grid instance\n * @returns {boolean} - Returns whether custom binding\n */\nexport function isCountRequired(parent) {\n if (parent.dataSource && 'result' in parent.dataSource) {\n return true;\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether checkbox column is enabled\n */\nexport function isCheckboxcolumn(parent) {\n for (var i = 0; i < parent.columns.length; i++) {\n if (parent.columns[parseInt(i.toString(), 10)].showCheckbox) {\n return true;\n }\n }\n return false;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether filtering and searching done\n */\nexport function isFilterChildHierarchy(parent) {\n if ((!isNullOrUndefined(parent.grid.searchSettings.key) && parent.grid.searchSettings.key !== '' &&\n (parent.searchSettings.hierarchyMode === 'Child' || parent.searchSettings.hierarchyMode === 'None')) ||\n (parent.allowFiltering && parent.grid.filterSettings.columns.length &&\n (parent.filterSettings.hierarchyMode === 'Child' || parent.filterSettings.hierarchyMode === 'None'))) {\n return true;\n }\n return false;\n}\n/**\n * @param {Object} records - Define records for which parent records has to be found\n * @hidden\n * @returns {Object} - Returns parent records collection\n */\nexport function findParentRecords(records) {\n var datas = [];\n var recordsLength = Object.keys(records).length;\n for (var i = 0, len = recordsLength; i < len; i++) {\n var hasChild = getObject('hasChildRecords', records[parseInt(i.toString(), 10)]);\n if (hasChild) {\n datas.push(records[parseInt(i.toString(), 10)]);\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns the expand status of record\n * @param {ITreeData} record - Define the record for which expand status has be found\n * @param {ITreeData[]} parents - Parent Data collection\n * @hidden\n */\nexport function getExpandStatus(parent, record, parents) {\n var parentRecord = isNullOrUndefined(record.parentItem) ? null :\n getParentData(parent, record.parentItem.uniqueID);\n var childParent;\n if (parentRecord != null) {\n if (parent.initialRender && !isNullOrUndefined(parentRecord[parent.expandStateMapping])\n && !parentRecord[parent.expandStateMapping]) {\n parentRecord.expanded = false;\n return false;\n }\n else if (parentRecord.expanded === false) {\n return false;\n }\n else if (parentRecord.parentItem) {\n childParent = getParentData(parent, parentRecord.parentItem.uniqueID);\n if (childParent && parent.initialRender && !isNullOrUndefined(childParent[parent.expandStateMapping])\n && !childParent[parent.expandStateMapping]) {\n childParent.expanded = false;\n return false;\n }\n if (childParent && childParent.expanded === false) {\n return false;\n }\n else if (childParent) {\n return getExpandStatus(parent, childParent, parents);\n }\n return true;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\n/**\n * @param {ITreeData} records - Define the record for which child records has to be found\n * @returns {Object[]} - Returns child records collection\n * @hidden\n */\nexport function findChildrenRecords(records) {\n var datas = [];\n if (isNullOrUndefined(records) || (!records.hasChildRecords && !isNullOrUndefined(records.childRecords)\n && !records.childRecords.length)) {\n return [];\n }\n if (!isNullOrUndefined(records.childRecords)) {\n var childRecords = records.childRecords.filter(function (item) { return !item.isSummaryRow; });\n var keys = Object.keys(childRecords);\n for (var i = 0, len = keys.length; i < len; i++) {\n datas.push(childRecords[parseInt(i.toString(), 10)]);\n if (childRecords[parseInt(i.toString(), 10)].hasChildRecords ||\n (!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) &&\n childRecords[parseInt(i.toString(), 10)].childRecords.length)) {\n datas = datas.concat(findChildrenRecords(childRecords[parseInt(i.toString(), 10)]));\n }\n }\n }\n return datas;\n}\n/**\n * @param {TreeGrid} parent - Tree Grid instance\n * @returns {boolean} - Returns whether local data binding\n */\nexport function isOffline(parent) {\n if (isRemoteData(parent)) {\n var dm = parent.dataSource;\n return !isNullOrUndefined(dm.ready);\n }\n return true;\n}\n/**\n * @param {Object[]} array - Defines the array to be cloned\n * @returns {Object[]} - Returns cloned array collection\n */\nexport function extendArray(array) {\n var objArr = [];\n var obj;\n var keys;\n for (var i = 0; array && i < array.length; i++) {\n keys = Object.keys(array[parseInt(i.toString(), 10)]);\n obj = {};\n for (var j = 0; j < keys.length; j++) {\n obj[keys[parseInt(j.toString(), 10)]] = array[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n objArr.push(obj);\n }\n return objArr;\n}\n/**\n * @param {ITreeData} value - Defined the dirty data to be cleaned\n * @returns {ITreeData} - Returns cleaned original data\n */\nexport function getPlainData(value) {\n delete value.hasChildRecords;\n delete value.childRecords;\n delete value.index;\n delete value.parentItem;\n delete value.level;\n delete value.taskData;\n delete value.uniqueID;\n return value;\n}\n/**\n * @param {TreeGrid} parent - TreeGrid instance\n * @param {string} value - IdMapping field name\n * @param {boolean} requireFilter - Specified whether treegrid data is filtered\n * @returns {ITreeData} - Returns IdMapping matched record\n */\nexport function getParentData(parent, value, requireFilter) {\n if (requireFilter) {\n var idFilter = 'uniqueIDFilterCollection';\n return parent[\"\" + idFilter][\"\" + value];\n }\n else {\n var id = 'uniqueIDCollection';\n return parent[\"\" + id][\"\" + value];\n }\n}\n/**\n * @param {HTMLTableRowElement} el - Row element\n * @returns {boolean} - Returns whether hidden\n */\nexport function isHidden(el) {\n var style = window.getComputedStyle(el);\n return ((style.display === 'none') || (style.visibility === 'hidden'));\n}\n","import { isNullOrUndefined, removeClass } from '@syncfusion/ej2-base';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, getObject } from '@syncfusion/ej2-grids';\nimport * as events from '../base/constant';\nimport { getParentData, isRemoteData, isCheckboxcolumn, findChildrenRecords } from '../utils';\n/**\n * TreeGrid Selection module\n *\n * @hidden\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for Selection module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Selection(parent) {\n this.parent = parent;\n this.selectedItems = [];\n this.selectedIndexes = [];\n this.filteredList = [];\n this.searchingRecords = [];\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Selection module name\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n Selection.prototype.addEventListener = function () {\n this.parent.on('dataBoundArg', this.headerCheckbox, this);\n this.parent.on('columnCheckbox', this.columnCheckbox, this);\n this.parent.on('updateGridActions', this.updateGridActions, this);\n this.parent.grid.on('colgroup-refresh', this.headerCheckbox, this);\n this.parent.on('checkboxSelection', this.checkboxSelection, this);\n };\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('dataBoundArg', this.headerCheckbox);\n this.parent.off('columnCheckbox', this.columnCheckbox);\n this.parent.grid.off('colgroup-refresh', this.headerCheckbox);\n this.parent.off('checkboxSelection', this.checkboxSelection);\n this.parent.off('updateGridActions', this.updateGridActions);\n };\n /**\n * To destroy the Selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n this.removeEventListener();\n };\n Selection.prototype.checkboxSelection = function (args) {\n var target = getObject('target', args);\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n var checkBox;\n if (checkWrap && checkWrap.querySelectorAll('.e-treecheckselect').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n var rowIndex = [];\n rowIndex.push(target.closest('tr').rowIndex);\n this.selectCheckboxes(rowIndex);\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'), target.closest('tr'));\n }\n else if (checkWrap && checkWrap.querySelectorAll('.e-treeselectall').length > 0 && this.parent.autoCheckHierarchy) {\n var checkBoxvalue = !checkWrap.querySelector('.e-frame').classList.contains('e-check')\n && !checkWrap.querySelector('.e-frame').classList.contains('e-stop');\n this.headerSelection(checkBoxvalue);\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n this.triggerChkChangeEvent(checkBox, checkBoxvalue, target.closest('tr'));\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState, rowElement) {\n var data = this.parent.getCurrentViewRecords()[rowElement.rowIndex];\n var args = { checked: checkState, target: checkBox, rowElement: rowElement,\n rowData: checkBox.classList.contains('e-treeselectall')\n ? this.parent.getCheckedRecords() : data };\n this.parent.trigger(events.checkboxChange, args);\n };\n Selection.prototype.getCheckboxcolumnIndex = function () {\n var mappingUid;\n var columnIndex;\n var stackedHeader = 'stackedHeader';\n var columnModel = 'columnModel';\n var columns = this.parent[\"\" + stackedHeader] ? this.parent[\"\" + columnModel] : (this.parent.columns);\n for (var col = 0; col < columns.length; col++) {\n if (columns[parseInt(col.toString(), 10)].showCheckbox) {\n mappingUid = columns[parseInt(col.toString(), 10)].uid;\n }\n }\n var headerCelllength = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv').length;\n for (var j = 0; j < headerCelllength; j++) {\n var headercell = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[parseInt(j.toString(), 10)];\n if (headercell.getAttribute('e-mappinguid') === mappingUid) {\n columnIndex = j;\n }\n }\n return columnIndex;\n };\n Selection.prototype.headerCheckbox = function () {\n this.columnIndex = this.getCheckboxcolumnIndex();\n if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length === 0) {\n var headerElement = this.parent.getHeaderContent().querySelectorAll('.e-headercelldiv')[this.columnIndex];\n var value = false;\n var rowChkBox = this.parent.createElement('input', { className: 'e-treeselectall', attrs: { 'type': 'checkbox' } });\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n if (!isNullOrUndefined(headerElement)) {\n headerElement.insertBefore(checkWrap, headerElement.firstChild);\n }\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n else if (this.columnIndex > -1 && this.parent.getHeaderContent().querySelectorAll('.e-treeselectall').length > 0) {\n var checkWrap = this.parent.getHeaderContent().querySelectorAll('.e-checkbox-wrapper')[0];\n var checkBoxvalue = checkWrap.querySelector('.e-frame').classList.contains('e-check');\n if (this.parent.autoCheckHierarchy && checkBoxvalue) {\n this.headerSelection(checkBoxvalue);\n }\n }\n };\n Selection.prototype.renderColumnCheckbox = function (args) {\n var rowChkBox = this.parent.createElement('input', { className: 'e-treecheckselect', attrs: { 'type': 'checkbox', 'aria-label': 'checkbox' } });\n var data = args.data;\n args.cell.classList.add('e-treegridcheckbox');\n args.cell.setAttribute('aria-label', 'checkbox');\n var value = (isNullOrUndefined(data.checkboxState) || data.checkboxState === 'uncheck') ? false : true;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.classList.add('e-hierarchycheckbox');\n if (this.parent.allowTextWrap) {\n checkWrap.querySelector('.e-frame').style.width = '18px';\n }\n if (data.checkboxState === 'indeterminate') {\n var checkbox = checkWrap.querySelectorAll('.e-frame')[0];\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n checkWrap.querySelector('.e-frame').classList.add('e-stop');\n }\n checkWrap.insertBefore(rowChkBox.cloneNode(), checkWrap.firstChild);\n return checkWrap;\n };\n Selection.prototype.columnCheckbox = function (container) {\n var checkWrap = this.renderColumnCheckbox(container);\n var containerELe = container.cell.querySelector('.e-treecolumn-container');\n if (!isNullOrUndefined(containerELe)) {\n if (!container.cell.querySelector('.e-hierarchycheckbox')) {\n containerELe.insertBefore(checkWrap, containerELe.querySelectorAll('.e-treecell')[0]);\n }\n }\n else {\n var spanEle = this.parent.createElement('span', { className: 'e-treecheckbox' });\n var data = container.cell.innerHTML;\n container.cell.innerHTML = '';\n spanEle.innerHTML = data;\n var divEle = this.parent.createElement('div', { className: 'e-treecheckbox-container' });\n divEle.appendChild(checkWrap);\n divEle.appendChild(spanEle);\n container.cell.appendChild(divEle);\n }\n };\n Selection.prototype.selectCheckboxes = function (rowIndexes) {\n for (var i = 0; i < rowIndexes.length; i++) {\n var record = this.parent.getCurrentViewRecords()[rowIndexes[parseInt(i.toString(), 10)]];\n var flatRecord = getParentData(this.parent, record.uniqueID);\n record = flatRecord;\n var checkboxState = (record.checkboxState === 'uncheck') ? 'check' : 'uncheck';\n record.checkboxState = checkboxState;\n var keys = Object.keys(record);\n for (var j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(flatRecord, keys[parseInt(j.toString(), 10)])) {\n flatRecord[keys[parseInt(j.toString(), 10)]] = record[keys[parseInt(j.toString(), 10)]];\n }\n }\n this.traverSelection(record, checkboxState, false);\n if (this.parent.autoCheckHierarchy) {\n this.headerSelection();\n }\n }\n };\n Selection.prototype.traverSelection = function (record, checkboxState, ischildItem) {\n var length = 0;\n this.updateSelectedItems(record, checkboxState);\n if (!ischildItem && record.parentItem && this.parent.autoCheckHierarchy) {\n this.updateParentSelection(record.parentItem);\n }\n if (record.childRecords && this.parent.autoCheckHierarchy) {\n var childRecords = record.childRecords;\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords.length;\n for (var count = 0; count < length; count++) {\n if (!childRecords[parseInt(count.toString(), 10)].isSummaryRow) {\n if (childRecords[parseInt(count.toString(), 10)].hasChildRecords) {\n this.traverSelection(childRecords[parseInt(count.toString(), 10)], checkboxState, true);\n }\n else {\n this.updateSelectedItems(childRecords[parseInt(count.toString(), 10)], checkboxState);\n }\n }\n }\n }\n };\n Selection.prototype.getFilteredChildRecords = function (childRecords) {\n var _this = this;\n var filteredChildRecords = childRecords.filter(function (e) {\n return _this.parent.filterModule.filteredResult.indexOf(e) > -1;\n });\n return filteredChildRecords;\n };\n Selection.prototype.updateParentSelection = function (parentRecord) {\n var length = 0;\n var childRecords = [];\n var record = getParentData(this.parent, parentRecord.uniqueID);\n if (record && record.childRecords) {\n childRecords = record.childRecords;\n }\n if (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length > 0 && this.parent.autoCheckHierarchy) {\n childRecords = this.getFilteredChildRecords(childRecords);\n }\n length = childRecords && childRecords.length;\n var indeter = 0;\n var checkChildRecords = 0;\n if (!isNullOrUndefined(record)) {\n for (var i = 0; i < childRecords.length; i++) {\n var currentRecord = getParentData(this.parent, childRecords[parseInt(i.toString(), 10)].uniqueID);\n var checkBoxRecord = currentRecord;\n if (!isNullOrUndefined(checkBoxRecord)) {\n if (checkBoxRecord.checkboxState === 'indeterminate') {\n indeter++;\n }\n else if (checkBoxRecord.checkboxState === 'check') {\n checkChildRecords++;\n }\n }\n }\n if (indeter > 0 || (checkChildRecords > 0 && checkChildRecords !== length)) {\n record.checkboxState = 'indeterminate';\n }\n else if (checkChildRecords === 0 && (!record.hasFilteredChildRecords || isNullOrUndefined(record.hasFilteredChildRecords)) && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check') {\n record.checkboxState = 'check';\n }\n else if ((checkChildRecords === 0 && indeter === 0) || (checkChildRecords === 0 && record.hasFilteredChildRecords && !isNullOrUndefined(this.parent['dataResults']['actionArgs']) &&\n (this.parent['dataResults']['actionArgs'].requestType === 'searching' || this.parent['dataResults']['actionArgs'].requestType === 'filtering') && record.checkboxState === 'check')) {\n record.checkboxState = 'uncheck';\n }\n else {\n record.checkboxState = 'check';\n }\n this.updateSelectedItems(record, record.checkboxState);\n if (record.parentItem) {\n this.updateParentSelection(record.parentItem);\n }\n }\n };\n Selection.prototype.headerSelection = function (checkAll) {\n var _this = this;\n var index = -1;\n var length = 0;\n //This property used to maintain the check state of the currentview data after clear filtering\n var multiFilterCheckState = false;\n if (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) {\n var filterResult = this.parent.filterModule.filteredResult;\n if (this.filteredList.length === 0) {\n this.filteredList = filterResult;\n }\n if (this.parent.grid.searchSettings.key.length) {\n this.searchingRecords = filterResult;\n }\n else {\n if (this.filteredList !== filterResult) {\n this.filteredList = filterResult;\n multiFilterCheckState = true;\n }\n else {\n multiFilterCheckState = false;\n }\n }\n }\n if (this.filteredList.length > 0) {\n if (!this.parent.filterSettings.columns.length && this.filteredList.length && !this.parent.grid.searchSettings.key.length) {\n this.filteredList = [];\n }\n if (this.searchingRecords.length && !isNullOrUndefined(checkAll)) {\n this.filteredList = this.searchingRecords;\n }\n }\n var data;\n if (!(isNullOrUndefined(this.parent.filterModule)) &&\n this.parent.filterModule.filteredResult.length === 0 && this.parent.getCurrentViewRecords().length === 0 &&\n this.parent.filterSettings.columns.length > 0) {\n data = this.filteredList;\n }\n else {\n data = (!isNullOrUndefined(this.parent.filterModule) &&\n (this.filteredList.length > 0)) ? this.filteredList : this.parent.flatData;\n }\n data = isRemoteData(this.parent) ? this.parent.getCurrentViewRecords() : data;\n if (!isNullOrUndefined(checkAll)) {\n for (var i = 0; i < data.length; i++) {\n if (checkAll) {\n if (data[parseInt(i.toString(), 10)].checkboxState === 'check') {\n continue;\n }\n if (multiFilterCheckState) {\n continue;\n }\n data[parseInt(i.toString(), 10)].checkboxState = 'check';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n }\n else {\n index = this.selectedItems.indexOf(data[parseInt(i.toString(), 10)]);\n if (index > -1) {\n data[parseInt(i.toString(), 10)].checkboxState = 'uncheck';\n this.updateSelectedItems(data[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)].checkboxState);\n if (this.parent.autoCheckHierarchy) {\n this.updateParentSelection(data[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n }\n if (checkAll === false && this.parent.enableVirtualization) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n data.filter(function (rec) {\n rec.checkboxState = 'uncheck';\n _this.updateSelectedItems(rec, rec.checkboxState);\n });\n }\n length = this.selectedItems.length;\n var checkbox = this.parent.getHeaderContent().querySelectorAll('.e-frame')[0];\n if (length > 0 && data.length > 0) {\n if (length !== data.length && !checkAll) {\n removeClass([checkbox], ['e-check']);\n checkbox.classList.add('e-stop');\n }\n else {\n removeClass([checkbox], ['e-stop']);\n checkbox.classList.add('e-check');\n }\n }\n else {\n removeClass([checkbox], ['e-check', 'e-stop']);\n }\n };\n Selection.prototype.updateSelectedItems = function (currentRecord, checkState) {\n var record = this.parent.grid.currentViewData.filter(function (e) {\n return e.uniqueID === currentRecord.uniqueID;\n });\n var checkedRecord;\n var recordIndex = this.parent.grid.currentViewData.indexOf(record[0]);\n var checkboxRecord = getParentData(this.parent, currentRecord.uniqueID);\n var tr = this.parent.getRows()[parseInt(recordIndex.toString(), 10)];\n var checkbox;\n if (recordIndex > -1) {\n var movableTr = void 0;\n if (this.parent.frozenRows || this.parent.getFrozenColumns()) {\n movableTr = this.parent.getDataRows()[parseInt(recordIndex.toString(), 10)];\n }\n checkbox = tr.querySelectorAll('.e-hierarchycheckbox .e-frame')[0] ? tr.querySelectorAll('.e-hierarchycheckbox .e-frame')[0]\n : movableTr.querySelectorAll('.e-hierarchycheckbox .e-frame')[0];\n if (!isNullOrUndefined(checkbox)) {\n removeClass([checkbox], ['e-check', 'e-stop', 'e-uncheck']);\n }\n }\n checkedRecord = checkboxRecord;\n if (isNullOrUndefined(checkedRecord)) {\n checkedRecord = currentRecord;\n }\n checkedRecord.checkboxState = checkState;\n if (checkState === 'check' && isNullOrUndefined(currentRecord.isSummaryRow)) {\n if (recordIndex !== -1 && this.selectedIndexes.indexOf(recordIndex) === -1) {\n this.selectedIndexes.push(recordIndex);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (recordIndex !== -1 &&\n (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (this.parent.enableVirtualization || this.parent.allowPaging) && ((!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0))) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && (!isNullOrUndefined(this.parent.filterModule) &&\n this.parent.filterModule.filteredResult.length === 0)) {\n this.selectedItems.push(checkedRecord);\n }\n if (this.selectedItems.indexOf(checkedRecord) === -1 && isNullOrUndefined(this.parent.filterModule)) {\n this.selectedItems.push(checkedRecord);\n }\n }\n else if ((checkState === 'uncheck' || checkState === 'indeterminate') && isNullOrUndefined(currentRecord.isSummaryRow)) {\n var index = this.selectedItems.indexOf(checkedRecord);\n if (index !== -1) {\n this.selectedItems.splice(index, 1);\n }\n if (this.selectedIndexes.indexOf(recordIndex) !== -1) {\n var checkedIndex = this.selectedIndexes.indexOf(recordIndex);\n this.selectedIndexes.splice(checkedIndex, 1);\n }\n }\n var checkBoxclass = checkState === 'indeterminate' ? 'e-stop' : 'e-' + checkState;\n if (recordIndex > -1) {\n if (!isNullOrUndefined(checkbox)) {\n checkbox.classList.add(checkBoxclass);\n var chkstate = checkState === 'check' ? 'checked' : checkState === 'uncheck' ? 'unchecked' : 'mixed';\n tr.querySelector('.e-treecheckselect').setAttribute('aria-checked', checkState === 'check' ? 'true' : checkState === 'uncheck' ? 'false' : 'mixed');\n }\n }\n };\n Selection.prototype.updateGridActions = function (args) {\n var _this = this;\n var requestType = args.requestType;\n var childData;\n var childLength;\n if (isCheckboxcolumn(this.parent)) {\n if (this.parent.autoCheckHierarchy) {\n if ((requestType === 'sorting' || requestType === 'paging')) {\n var rows = this.parent.grid.getRows();\n childData = this.parent.getCurrentViewRecords();\n childLength = childData.length;\n this.selectedIndexes = [];\n for (var i = 0; i < childLength; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n this.updateSelectedItems(childData[parseInt(i.toString(), 10)], childData[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else if (requestType === 'delete' || args.action === 'add') {\n var updatedData = [];\n if (requestType === 'delete') {\n updatedData = args.data;\n }\n else {\n updatedData.push(args.data);\n }\n for (var i = 0; i < updatedData.length; i++) {\n if (requestType === 'delete') {\n var index = this.parent.flatData.indexOf(updatedData[parseInt(i.toString(), 10)]);\n var checkedIndex = this.selectedIndexes.indexOf(index);\n this.selectedIndexes.splice(checkedIndex, 1);\n this.updateSelectedItems(updatedData[parseInt(i.toString(), 10)], 'uncheck');\n }\n if (!isNullOrUndefined(updatedData[parseInt(i.toString(), 10)].parentItem)) {\n this.updateParentSelection(updatedData[parseInt(i.toString(), 10)].parentItem);\n }\n }\n }\n else if (args.requestType === 'add' && this.parent.autoCheckHierarchy) {\n args.data.checkboxState = 'uncheck';\n }\n else if (requestType === 'filtering' || requestType === 'searching' || requestType === 'refresh'\n && !isRemoteData(this.parent)) {\n this.selectedItems = [];\n this.selectedIndexes = [];\n childData = (!isNullOrUndefined(this.parent.filterModule) && this.parent.filterModule.filteredResult.length > 0) ?\n this.parent.filterModule.filteredResult : this.parent.flatData;\n childData.forEach(function (record) {\n if (_this.parent.enableVirtualization) {\n if (record.hasChildRecords && record.childRecords.length > 0) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n var child = findChildrenRecords(record);\n child = _this.getFilteredChildRecords(child);\n for (var i = 0; i < child.length; i++) {\n if (child[parseInt(i.toString(), 10)].hasChildRecords) {\n _this.updateParentSelection(child[parseInt(i.toString(), 10)]);\n }\n else if (!(child[parseInt(i.toString(), 10)].hasChildRecords) &&\n !isNullOrUndefined(child[parseInt(i.toString(), 10)])) {\n _this.updateSelectedItems(child[parseInt(i.toString(), 10)], child[parseInt(i.toString(), 10)].checkboxState);\n }\n }\n }\n else {\n if (record.hasChildRecords) {\n _this.updateParentSelection(record);\n }\n else {\n _this.updateSelectedItems(record, record.checkboxState);\n }\n }\n });\n this.headerSelection();\n }\n }\n }\n };\n Selection.prototype.getCheckedrecords = function () {\n return this.selectedItems;\n };\n Selection.prototype.getCheckedRowIndexes = function () {\n return this.selectedIndexes;\n };\n return Selection;\n}());\nexport { Selection };\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[\"Search\"] = 5] = \"Search\";\n ToolbarItem[ToolbarItem[\"ExpandAll\"] = 6] = \"ExpandAll\";\n ToolbarItem[ToolbarItem[\"CollapseAll\"] = 7] = \"CollapseAll\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 8] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 9] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"Print\"] = 11] = \"Print\";\n ToolbarItem[ToolbarItem[\"RowIndent\"] = 12] = \"RowIndent\";\n ToolbarItem[ToolbarItem[\"RowOutdent\"] = 13] = \"RowOutdent\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines predefined contextmenu items.\n *\n * @hidden\n */\nexport var ContextMenuItems;\n(function (ContextMenuItems) {\n ContextMenuItems[ContextMenuItems[\"AutoFit\"] = 0] = \"AutoFit\";\n ContextMenuItems[ContextMenuItems[\"AutoFitAll\"] = 1] = \"AutoFitAll\";\n ContextMenuItems[ContextMenuItems[\"SortAscending\"] = 2] = \"SortAscending\";\n ContextMenuItems[ContextMenuItems[\"SortDescending\"] = 3] = \"SortDescending\";\n ContextMenuItems[ContextMenuItems[\"Edit\"] = 4] = \"Edit\";\n ContextMenuItems[ContextMenuItems[\"Delete\"] = 5] = \"Delete\";\n ContextMenuItems[ContextMenuItems[\"Save\"] = 6] = \"Save\";\n ContextMenuItems[ContextMenuItems[\"Cancel\"] = 7] = \"Cancel\";\n ContextMenuItems[ContextMenuItems[\"PdfExport\"] = 8] = \"PdfExport\";\n ContextMenuItems[ContextMenuItems[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ContextMenuItems[ContextMenuItems[\"CsvExport\"] = 10] = \"CsvExport\";\n ContextMenuItems[ContextMenuItems[\"FirstPage\"] = 11] = \"FirstPage\";\n ContextMenuItems[ContextMenuItems[\"PrevPage\"] = 12] = \"PrevPage\";\n ContextMenuItems[ContextMenuItems[\"LastPage\"] = 13] = \"LastPage\";\n ContextMenuItems[ContextMenuItems[\"NextPage\"] = 14] = \"NextPage\";\n ContextMenuItems[ContextMenuItems[\"AddRow\"] = 15] = \"AddRow\";\n ContextMenuItems[ContextMenuItems[\"RowIndent\"] = 16] = \"RowIndent\";\n ContextMenuItems[ContextMenuItems[\"RowOutdent\"] = 17] = \"RowOutdent\";\n})(ContextMenuItems || (ContextMenuItems = {}));\n","import * as events from '../base/constant';\nimport { Grid, getObject, Print as GridPrint } from '@syncfusion/ej2-grids';\nimport { addClass } from '@syncfusion/ej2-base';\n/**\n * TreeGrid Print module\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for Print module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Print(parent) {\n this.parent = parent;\n Grid.Inject(GridPrint);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns Print module name\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n /**\n * @hidden\n * @returns {void}\n */\n Print.prototype.addEventListener = function () {\n this.parent.grid.on(events.printGridInit, this.printTreeGrid, this);\n };\n Print.prototype.removeEventListener = function () {\n this.parent.grid.off(events.printGridInit, this.printTreeGrid);\n };\n Print.prototype.printTreeGrid = function (printGrid) {\n var grid = getObject('printgrid', printGrid);\n var gridElement = getObject('element', printGrid);\n grid.addEventListener(events.queryCellInfo, this.parent.grid.queryCellInfo);\n grid.addEventListener(events.rowDataBound, this.parent.grid.rowDataBound);\n grid.addEventListener(events.beforeDataBound, this.parent.grid.beforeDataBound);\n addClass([gridElement], 'e-treegrid');\n };\n Print.prototype.print = function () {\n this.parent.grid.print();\n };\n /**\n * To destroy the Print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 filtering behavior of the TreeGrid.\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(false)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property()\n ], SearchSettings.prototype, \"hierarchyMode\", 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';\n/**\n * Configures the selection behavior of the TreeGrid.\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, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n","import { getObject, appendChildren } from '@syncfusion/ej2-grids';\nimport { templateCompiler, extend, CellRenderer } from '@syncfusion/ej2-grids';\nimport { addClass, createElement, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isRemoteData, isOffline, getExpandStatus, isFilterChildHierarchy } from '../utils';\n/**\n * TreeGrid render module\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {TreeGrid} parent - Tree Grid instance\n */\n function Render(parent) {\n this.parent = parent;\n this.templateResult = null;\n this.parent.grid.on('template-result', this.columnTemplateResult, this);\n this.parent.grid.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n /**\n * Updated row elements for TreeGrid\n *\n * @param {RowDataBoundEventArgs} args - Row details before its bound to DOM\n * @returns {void}\n */\n Render.prototype.RowModifier = function (args) {\n if (!args.data) {\n return;\n }\n var data = args.data;\n var parentData = data.parentItem;\n if (!isNullOrUndefined(data.parentItem) && !isFilterChildHierarchy(this.parent) &&\n (!(this.parent.allowPaging && !(this.parent.pageSettings.pageSizeMode === 'Root')) ||\n (isRemoteData(this.parent) && !isOffline(this.parent)))) {\n var collapsed = (this.parent.initialRender && (!(isNullOrUndefined(parentData[this.parent.expandStateMapping]) ||\n parentData[this.parent.expandStateMapping]) || this.parent.enableCollapseAll)) ||\n !getExpandStatus(this.parent, args.data, this.parent.grid.getCurrentViewRecords());\n if (collapsed && !isNullOrUndefined(args.row)) {\n args.row.style.display = 'none';\n var rowsObj = this.parent.grid.getRowsObject();\n if (!this.parent.grid.isFrozenGrid() && !isNullOrUndefined(args.row.getAttribute('data-uid'))) {\n rowsObj.filter(function (e) { return e.uid === args.row.getAttribute('data-uid'); })[0].visible = false;\n }\n }\n }\n if (isRemoteData(this.parent) && !isOffline(this.parent)) {\n var proxy_1 = this.parent;\n var parentrec = this.parent.getCurrentViewRecords().filter(function (rec) {\n return getValue(proxy_1.idMapping, rec) === getValue(proxy_1.parentIdMapping, data);\n });\n if (parentrec.length > 0 && !parentrec[0].isSummaryRow && !isNullOrUndefined(args.row)) {\n var display = parentrec[0].expanded ? 'table-row' : 'none';\n args.row.setAttribute('style', 'display: ' + display + ';');\n }\n }\n //addClass([args.row], 'e-gridrowindex' + index + 'level' + (args.data).level);\n var summaryRow = getObject('isSummaryRow', args.data);\n if (summaryRow) {\n addClass([args.row], 'e-summaryrow');\n }\n if (!isNullOrUndefined(args.row)) {\n if (args.row.querySelector('.e-treegridexpand')) {\n args.row.setAttribute('aria-expanded', 'true');\n }\n else if (args.row.querySelector('.e-treegridcollapse')) {\n args.row.setAttribute('aria-expanded', 'false');\n }\n if (this.parent.enableCollapseAll && this.parent.initialRender) {\n if (!isNullOrUndefined(data.parentItem)) {\n args.row.style.display = 'none';\n }\n }\n }\n var dragStartData = 'dragStartData';\n var draggedRecord = 'draggedRecord';\n if (this.parent.rowDragAndDropModule && this.parent.grid.rowDragAndDropModule && (this.parent.grid.rowDragAndDropModule[\"\" + dragStartData] ||\n this.parent.rowDragAndDropModule[\"\" + draggedRecord]) && this.parent.getContentTable().scrollHeight <= this.parent.getContent().clientHeight) {\n var lastRowBorder = 'lastRowBorder';\n var lastVisualData = this.parent.getVisibleRecords()[this.parent.getVisibleRecords().length - 1];\n if (lastVisualData.uniqueID === args.data.uniqueID && !isNullOrUndefined(args.row) && !args.row.cells[0].classList.contains('e-lastrowcell')) {\n this.parent[\"\" + lastRowBorder](args.row, true);\n }\n }\n if (this.parent.isReact) {\n var renderReactTemplates = 'renderReactTemplates';\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n // tslint:disable-next-line:typedef\n thisRef_1.parent[\"\" + renderReactTemplates](function () {\n thisRef_1.parent.trigger(events.rowDataBound, args);\n });\n }\n else {\n this.parent.trigger(events.rowDataBound, args);\n }\n };\n /**\n * cell renderer for tree column index cell\n *\n * @param {QueryCellInfoEventArgs} args - Cell detail before its bound to DOM\n * @returns {void}\n */\n Render.prototype.cellRender = function (args) {\n if (!args.data) {\n return;\n }\n var grid = this.parent.grid;\n var data = args.data;\n var index;\n var ispadfilter = isNullOrUndefined(data.filterLevel);\n var pad = ispadfilter ? data.level : data.filterLevel;\n var totalIconsWidth = 0;\n var cellElement;\n var column = this.parent.getColumnByUid(args.column.uid);\n var summaryRow = data.isSummaryRow;\n var frozenColumns = this.parent.getFrozenColumns();\n if (!isNullOrUndefined(data.parentItem)) {\n index = data.parentItem.index;\n }\n else {\n index = data.index;\n }\n var columnIndex;\n var getVirtualColIndexByUid = 'getVirtualColIndexByUid';\n if (this.parent.enableColumnVirtualization && !this.parent.initialRender) {\n columnIndex = this.parent[\"\" + getVirtualColIndexByUid](args.column.uid);\n }\n else {\n columnIndex = grid.getColumnIndexByUid(args.column.uid);\n }\n if (columnIndex === this.parent.treeColumnIndex && (args.requestType === 'add' || args.requestType\n === 'rowDragAndDrop' || args.requestType === 'delete' || isNullOrUndefined(args.cell.querySelector('.e-treecell')))) {\n var container = createElement('div', { className: 'e-treecolumn-container' });\n var emptyExpandIcon = createElement('span', {\n className: 'e-icons e-none',\n styles: 'width: 10px; display: inline-block'\n });\n for (var n = 0; n < pad; n++) {\n totalIconsWidth += 10;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n var iconRequired = !isNullOrUndefined(data.hasFilteredChildRecords)\n ? data.hasFilteredChildRecords : data.hasChildRecords;\n if (iconRequired && !isNullOrUndefined(data.childRecords)) {\n if (this.parent['isFromGantt'] && !this.parent.loadChildOnDemand) {\n iconRequired = data.hasChildRecords;\n }\n else {\n iconRequired = !(data.childRecords.length === 0);\n }\n }\n if (iconRequired) {\n addClass([args.cell], 'e-treerowcell');\n args.cell.setAttribute('aria-expanded', data.expanded ? 'true' : 'false');\n var expandIcon = createElement('span', { className: 'e-icons' });\n var expand = void 0;\n if (this.parent.initialRender) {\n expand = data.expanded &&\n (isNullOrUndefined(data[this.parent.expandStateMapping]) || data[this.parent.expandStateMapping]) &&\n !this.parent.enableCollapseAll;\n }\n else {\n expand = !(!data.expanded || !getExpandStatus(this.parent, data, this.parent.grid.getCurrentViewRecords()));\n }\n addClass([expandIcon], (expand) ? 'e-treegridexpand' : 'e-treegridcollapse');\n totalIconsWidth += 18;\n container.appendChild(expandIcon);\n emptyExpandIcon.style.width = '4px';\n totalIconsWidth += 7;\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n else if (pad || !pad && !data.level) {\n // icons width\n totalIconsWidth += 20;\n container.appendChild(emptyExpandIcon.cloneNode());\n container.appendChild(emptyExpandIcon.cloneNode());\n }\n //should add below code when paging funcitonality implemented\n // if (data.hasChildRecords) {\n // addClass([expandIcon], data.expanded ? 'e-treegridexpand' : 'e-treegridcollapse');\n // }\n cellElement = createElement('span', { className: 'e-treecell' });\n if (this.parent.allowTextWrap) {\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n this.updateTreeCell(args, cellElement);\n container.appendChild(cellElement);\n args.cell.appendChild(container);\n }\n else if (this.templateResult) {\n this.templateResult = null;\n }\n var freeze = (grid.getFrozenLeftColumnsCount() > 0 || grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (!freeze) {\n if (frozenColumns > this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === frozenColumns) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns < this.parent.treeColumnIndex && frozenColumns > 0 &&\n (grid.getColumnIndexByUid(args.column.uid) === frozenColumns\n || grid.getColumnIndexByUid(args.column.uid) === frozenColumns - 1)) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if (frozenColumns === this.parent.treeColumnIndex && frozenColumns > 0 &&\n grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex - 1) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n else {\n var freezerightColumns = grid.getFrozenRightColumns();\n var freezeLeftColumns = grid.getFrozenLeftColumns();\n var movableColumns = grid.getMovableColumns();\n if ((freezerightColumns.length > 0) && freezerightColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((freezeLeftColumns.length > 0) && freezeLeftColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n else if ((movableColumns.length > 0) && movableColumns[0].field === args.column.field) {\n addClass([args.cell], 'e-gridrowindex' + index + 'level' + data.level);\n }\n }\n if (!isNullOrUndefined(column) && column.showCheckbox) {\n this.parent.notify('columnCheckbox', args);\n if (this.parent.allowTextWrap) {\n var checkboxElement = args.cell.querySelectorAll('.e-frame')[0];\n var width = parseInt(checkboxElement.style.width, 16);\n totalIconsWidth += width;\n totalIconsWidth += 10;\n if (grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {\n cellElement = args.cell.querySelector('.e-treecell');\n }\n else {\n cellElement = args.cell.querySelector('.e-treecheckbox');\n }\n cellElement.style.width = 'Calc(100% - ' + totalIconsWidth + 'px)';\n }\n }\n if (summaryRow) {\n addClass([args.cell], 'e-summarycell');\n var summaryData = getObject(args.column.field, args.data);\n summaryData = isNullOrUndefined(summaryData) ? null : summaryData;\n if (args.cell.querySelector('.e-treecell') != null) {\n args.cell.querySelector('.e-treecell').innerHTML = summaryData;\n }\n else {\n if (args.column.template) {\n args.cell.innerHTML = null;\n }\n else {\n args.cell.innerHTML = summaryData;\n }\n }\n }\n this.parent['args'] = args;\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n if ((isNullOrUndefined(this.parent.rowTemplate) && !(this.parent.isReact))) {\n this.parent.trigger(events.queryCellInfo, args);\n }\n else if (((this.parent.isReact) &&\n treeColumn.field !== args.column.field)) {\n var renderReactTemplates = 'renderReactTemplates';\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n // tslint:disable-next-line:typedef\n thisRef_2.parent[\"\" + renderReactTemplates](function () {\n thisRef_2.parent.trigger(events.queryCellInfo, args);\n });\n }\n };\n Render.prototype.updateTreeCell = function (args, cellElement) {\n var columnModel = getValue('columnModel', this.parent);\n var treeColumn = columnModel[this.parent.treeColumnIndex];\n var templateFn = 'templateFn';\n var colindex = args.column.index;\n if (isNullOrUndefined(treeColumn.field)) {\n args.cell.setAttribute('data-colindex', colindex + '');\n }\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n args.column.template = treeColumn.template;\n args.column[\"\" + templateFn] = templateCompiler(args.column.template);\n args.cell.classList.add('e-templatecell');\n }\n var textContent = args.cell.querySelector('.e-treecell') != null ?\n args.cell.querySelector('.e-treecell').innerHTML : args.cell.innerHTML;\n if (typeof (args.column.template) === 'object' && this.templateResult) {\n appendChildren(cellElement, this.templateResult);\n this.templateResult = null;\n args.cell.innerHTML = '';\n }\n else if (args.cell.classList.contains('e-templatecell')) {\n var len = args.cell.children.length;\n var tempID = this.parent.element.id + args.column.uid;\n if (treeColumn.field === args.column.field && !isNullOrUndefined(treeColumn.template)) {\n var portals = 'portals';\n var renderReactTemplates = 'renderReactTemplates';\n if (this.parent.isReact && typeof (args.column.template) !== 'string') {\n args.column[\"\" + templateFn](args.data, this.parent, 'columnTemplate', tempID, null, null, cellElement);\n if (isNullOrUndefined(this.parent.grid[\"\" + portals])) {\n this.parent.grid[\"\" + portals] = this.parent[\"\" + portals];\n }\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_3 = this;\n // tslint:disable-next-line:typedef\n thisRef_3.parent[\"\" + renderReactTemplates](function () {\n thisRef_3.parent.trigger(events.queryCellInfo, args);\n });\n }\n else {\n var str = 'isStringTemplate';\n var result = args.column[\"\" + templateFn](extend({ 'index': '' }, args.data), this.parent, 'template', tempID, this.parent[\"\" + str]);\n appendChildren(cellElement, result);\n }\n delete args.column.template;\n delete args.column[\"\" + templateFn];\n args.cell.innerHTML = '';\n }\n else {\n for (var i = 0; i < len; len = args.cell.children.length) {\n cellElement.appendChild(args.cell.children[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n cellElement.innerHTML = textContent;\n args.cell.innerHTML = '';\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Render.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.parent.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.parent.grid.getRowsObject();\n var indent = _this.parent.grid.getIndentCount();\n var cellIndex = _this.parent.grid.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[parseInt(j.toString(), 10)].isDataRow && !isNullOrUndefined(rowsObj[parseInt(j.toString(), 10)].index)) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n var cellRenderer = new CellRenderer(_this.parent.grid, _this.parent.grid.serviceLocator);\n var td = _this.parent.getCellFromIndex(rowsObj[parseInt(j.toString(), 10)].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[parseInt(j.toString(), 10)].data, { index: rowsObj[parseInt(j.toString(), 10)][\"\" + rowIdx] });\n var treecell = _this.parent.getRows()[parseInt(j.toString(), 10)]\n .cells[parseInt(cellIndex.toString(), 10)];\n _this.cellRender({ data: rowsObj[parseInt(j.toString(), 10)].data, cell: treecell, column: cell.column });\n }\n }\n });\n }\n };\n Render.prototype.columnTemplateResult = function (args) {\n this.templateResult = args.template;\n };\n // eslint-disable-next-line\n Render.prototype.reactTemplateRender = function (args, callBack) {\n var renderReactTemplates = 'renderReactTemplates';\n var portals = 'portals';\n this.parent[\"\" + portals] = args;\n this.parent.notify('renderReactTemplate', this.parent[\"\" + portals]);\n this.parent[\"\" + renderReactTemplates](callBack);\n };\n Render.prototype.destroy = function () {\n this.parent.grid.off('template-result', this.columnTemplateResult);\n this.parent.grid.off('reactTemplateRender', this.reactTemplateRender);\n };\n return Render;\n}());\nexport { Render };\n","import { extend, isNullOrUndefined, setValue, getValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { getObject, getUid } from '@syncfusion/ej2-grids';\nimport { isRemoteData, isOffline, isCountRequired, getExpandStatus } from '../utils';\nimport * as events from './constant';\n/**\n * Internal dataoperations for tree grid\n *\n * @hidden\n */\nvar DataManipulation = /** @class */ (function () {\n function DataManipulation(grid) {\n this.addedRecords = 'addedRecords';\n this.parent = grid;\n this.parentItems = [];\n this.taskIds = [];\n this.hierarchyData = [];\n this.storedIndex = -1;\n this.sortedData = [];\n this.isSortAction = false;\n this.addEventListener();\n this.dataResults = {};\n this.isSelfReference = !isNullOrUndefined(this.parent.parentIdMapping);\n }\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.addEventListener = function () {\n this.parent.on('updateRemoteLevel', this.updateParentRemoteData, this);\n this.parent.grid.on('sorting-begin', this.beginSorting, this);\n this.parent.on('updateAction', this.updateData, this);\n this.parent.on(events.remoteExpand, this.collectExpandingRecs, this);\n this.parent.on('dataProcessor', this.dataProcessor, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.remoteExpand, this.collectExpandingRecs);\n this.parent.off('updateRemoteLevel', this.updateParentRemoteData);\n this.parent.off('updateAction', this.updateData);\n this.parent.off('dataProcessor', this.dataProcessor);\n this.parent.grid.off('sorting-begin', this.beginSorting);\n };\n /**\n * To destroy the dataModule\n *\n * @returns {void}\n * @hidden\n */\n DataManipulation.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n * @returns {boolean} -Returns whether remote data binding\n */\n DataManipulation.prototype.isRemote = function () {\n if (!(this.parent.dataSource instanceof DataManager)) {\n return false;\n }\n return true;\n // let gridData: DataManager = this.parent.dataSource;\n // return gridData.dataSource.offline !== true && gridData.dataSource.url !== undefined;\n };\n /**\n * Function to manipulate datasource\n *\n * @param {Object} data - Provide tree grid datasource to convert to flat data\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.convertToFlatData = function (data) {\n var _this = this;\n this.parent.flatData = (Object.keys(data).length === 0 && !(this.parent.dataSource instanceof DataManager) ?\n this.parent.dataSource : []);\n this.parent.parentData = [];\n if ((isRemoteData(this.parent) && !isOffline(this.parent)) && data instanceof DataManager && !(data instanceof Array)) {\n var dm = this.parent.dataSource;\n if (this.parent.parentIdMapping) {\n this.parent.query = isNullOrUndefined(this.parent.query) ?\n new Query() : this.parent.query;\n if (this.parent.parentIdMapping) {\n var filterKey = this.parent.query.params.filter(function (param) { return param.key === 'IdMapping'; });\n if (this.parent.initialRender && !filterKey.length) {\n this.parent.query.where(this.parent.parentIdMapping, 'equal', null);\n this.parent.query.addParams('IdMapping', this.parent.idMapping);\n }\n }\n if (!this.parent.hasChildMapping) {\n var qry = this.parent.query.clone();\n qry.queries = [];\n qry = qry.select([this.parent.parentIdMapping]);\n qry.isCountRequired = true;\n dm.executeQuery(qry).then(function (e) {\n _this.parentItems = DataUtil.distinct(e.result, _this.parent.parentIdMapping, false);\n var req;\n if (e.result) {\n req = 0;\n }\n else {\n req = 1;\n }\n if (req === 0) {\n setValue('grid.contentModule.isLoaded', true, _this.parent);\n if (!isNullOrUndefined(_this.zerothLevelData)) {\n setValue('cancel', false, _this.zerothLevelData);\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(_this.zerothLevelData);\n _this.zerothLevelData = null;\n }\n _this.parent.grid.hideSpinner();\n }\n });\n }\n }\n }\n else if (data instanceof Array) {\n this.convertJSONData(data);\n }\n };\n DataManipulation.prototype.convertJSONData = function (data) {\n this.hierarchyData = [];\n this.taskIds = [];\n if (!this.parent.idMapping) {\n this.hierarchyData = data;\n }\n else {\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n var tempData = data[parseInt(i.toString(), 10)];\n this.hierarchyData.push(extend({}, tempData));\n if (!isNullOrUndefined(tempData[this.parent.idMapping])) {\n this.taskIds.push(tempData[this.parent.idMapping]);\n }\n }\n }\n if (this.isSelfReference) {\n var selfData = [];\n var mappingData = new DataManager(this.hierarchyData).executeLocal(new Query()\n .group(this.parent.parentIdMapping));\n for (var i = 0; i < mappingData.length; i++) {\n var groupData = mappingData[parseInt(i.toString(), 10)];\n var index = this.taskIds.indexOf(groupData.key);\n if (!isNullOrUndefined(groupData.key)) {\n if (index > -1) {\n var childData = (groupData.items);\n this.hierarchyData[parseInt(index.toString(), 10)][this.parent.childMapping] = childData;\n continue;\n }\n }\n selfData.push.apply(selfData, groupData.items);\n }\n this.hierarchyData = this.selfReferenceUpdate(selfData);\n }\n if (!Object.keys(this.hierarchyData).length) {\n var isGantt = 'isGantt';\n var referenceData = !(this.parent.dataSource instanceof DataManager) && this.parent[\"\" + isGantt];\n this.parent.flatData = referenceData ? (this.parent.dataSource) : [];\n }\n else {\n this.createRecords(this.hierarchyData);\n }\n this.storedIndex = -1;\n };\n // private crudActions(): void {\n // if (this.parent.dataSource instanceof DataManager && (this.parent.dataSource.adaptor instanceof RemoteSaveAdaptor)) {\n // let oldUpdate: Function = this.parent.dataSource.adaptor.update;\n // this.parent.dataSource.adaptor.update =\n // function (dm: DataManager, keyField: string, value: Object, tableName?: string, query?: Query, original?: Object): Object {\n // value = getPlainData(value);\n // return oldUpdate.apply(this, [dm, keyField, value, tableName, query, original]);\n // }\n // }\n // }\n DataManipulation.prototype.selfReferenceUpdate = function (selfData) {\n var result = [];\n while (this.hierarchyData.length > 0 && selfData.length > 0) {\n var index = selfData.indexOf(this.hierarchyData[0]);\n if (index === -1) {\n this.hierarchyData.shift();\n }\n else {\n result.push(this.hierarchyData.shift());\n selfData.splice(index, 1);\n }\n }\n return result;\n };\n /**\n * Function to update the zeroth level parent records in remote binding\n *\n * @param {BeforeDataBoundArgs} args - contains data before its bounds to tree grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.updateParentRemoteData = function (args) {\n var actionArgs = 'actionArgs';\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && args[\"\" + actionArgs].requestType === 'virtualscroll') {\n this.parent.hideSpinner();\n }\n var records = args.result;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && (args[\"\" + actionArgs].requestType === 'virtualscroll' || args[\"\" + actionArgs].action === 'clearFilter' || args[\"\" + actionArgs].searchString === '')) {\n this.parent.query.expands = [];\n }\n if (!this.parent.hasChildMapping && !this.parentItems.length &&\n (!this.parent.loadChildOnDemand)) {\n this.zerothLevelData = args;\n setValue('cancel', true, args);\n }\n else {\n if (!this.parent.loadChildOnDemand) {\n var _loop_1 = function (rec) {\n if (isCountRequired(this_1.parent) && records[parseInt(rec.toString(), 10)].hasChildRecords &&\n this_1.parent.initialRender) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization) {\n var childRecords_1 = [];\n var parent_1 = this_1.parent;\n records.filter(function (e) {\n if (e[\"\" + parent_1.parentIdMapping] === records[parseInt(rec.toString(), 10)][\"\" + parent_1.idMapping]) {\n childRecords_1.push(e);\n }\n });\n if (childRecords_1.length) {\n records[parseInt(rec.toString(), 10)].expanded = true;\n }\n else if (records[parseInt(rec.toString(), 10)].hasChildRecords) {\n records[parseInt(rec.toString(), 10)].expanded = false;\n }\n }\n if (isNullOrUndefined(records[parseInt(rec.toString(), 10)].index)) {\n records[parseInt(rec.toString(), 10)].taskData = extend({}, records[parseInt(rec.toString(), 10)]);\n records[parseInt(rec.toString(), 10)].uniqueID = getUid(this_1.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + records[parseInt(rec.toString(), 10)].uniqueID, records[parseInt(rec.toString(), 10)], this_1.parent);\n records[parseInt(rec.toString(), 10)].level = 0;\n if (isRemoteData(this_1.parent) && this_1.parent.enableVirtualization && records[parseInt(rec.toString(), 10)][\"\" + this_1.parent.parentIdMapping] && records[parseInt(rec.toString(), 10)].level === 0) {\n records[parseInt(rec.toString(), 10)].level = records[parseInt(rec.toString(), 10)].level + 1;\n }\n records[parseInt(rec.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n if ((records[parseInt(rec.toString(), 10)][this_1.parent.hasChildMapping] ||\n this_1.parentItems.indexOf(records[parseInt(rec.toString(), 10)][this_1.parent.idMapping]) !== -1)) {\n records[parseInt(rec.toString(), 10)].hasChildRecords = true;\n }\n records[parseInt(rec.toString(), 10)].checkboxState = 'uncheck';\n }\n };\n var this_1 = this;\n for (var rec = 0; rec < records.length; rec++) {\n _loop_1(rec);\n }\n }\n else {\n var dataResults = 'dataResults';\n var expandRecord = 'expandRecord';\n if (!isNullOrUndefined(records) && !((this.parent.loadChildOnDemand) && isCountRequired(this.parent) && !isNullOrUndefined(this.parent[\"\" + dataResults][\"\" + expandRecord])) &&\n !(isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization)) {\n this.convertToFlatData(records);\n }\n }\n }\n if (isRemoteData(this.parent) && this.parent.loadChildOnDemand && args[\"\" + actionArgs].isExpandCollapse && this.parent.enableVirtualization) {\n args.result = records;\n }\n else if (isRemoteData(this.parent) && this.parent.enableVirtualization && !this.parent.loadChildOnDemand) {\n args.result = records;\n }\n else {\n args.result = this.parent.loadChildOnDemand ? this.parent.flatData : records;\n }\n if (isRemoteData(this.parent) && this.parent.enableVirtualization && this.parent.loadChildOnDemand\n && this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var query = 'query';\n var summaryQuery = args[\"\" + query].queries.filter(function (q) { return q.fn === 'onAggregates'; });\n args.result = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n this.parent.notify('updateResults', args);\n };\n /**\n * Function to manipulate datasource\n *\n * @param {{record: ITreeData, rows: HTMLTableRowElement[], parentRow: HTMLTableRowElement}} rowDetails - Row details for which child rows has to be fetched\n * @param {ITreeData} rowDetails.record - current expanding record\n * @param {HTMLTableRowElement[]} rowDetails.rows - Expanding Row element\n * @param {HTMLTableRowElement} rowDetails.parentRow - Curent expanding row element\n * @param {boolean} isChild - Specified whether current record is already a child record\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.collectExpandingRecs = function (rowDetails, isChild) {\n var gridRows = this.parent.getRows();\n var name = 'name';\n if (this.parent.rowTemplate) {\n var rows = this.parent.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var childRecord;\n if (rowDetails.rows.length > 0) {\n if (!isChild) {\n rowDetails.record.expanded = true;\n }\n for (var i = 0; i < rowDetails.rows.length; i++) {\n rowDetails.rows[parseInt(i.toString(), 10)].style.display = 'table-row';\n if (this.parent.loadChildOnDemand) {\n var targetEle = rowDetails.rows[parseInt(i.toString(), 10)].getElementsByClassName('e-treegridcollapse')[0];\n childRecord = this.parent.rowTemplate ?\n this.parent.grid.getCurrentViewRecords()[rowDetails.rows[parseInt(i.toString(), 10)].rowIndex] :\n this.parent.grid.getRowObjectFromUID(rowDetails.rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(targetEle) && childRecord.expanded) {\n addClass([targetEle], 'e-treegridexpand');\n removeClass([targetEle], 'e-treegridcollapse');\n }\n var childRows = [];\n childRows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1));\n });\n if (childRows.length && childRecord.expanded) {\n this.collectExpandingRecs({ record: childRecord, rows: childRows, parentRow: rowDetails.parentRow }, true);\n }\n }\n var expandingTd = rowDetails.rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse');\n if (!isNullOrUndefined(expandingTd)) {\n this.parent.grid.detailRowModule.expand(expandingTd);\n }\n }\n }\n else {\n this.fetchRemoteChildData({ action: rowDetails[\"\" + name], record: rowDetails.record, rows: rowDetails.rows, parentRow: rowDetails.parentRow });\n }\n };\n DataManipulation.prototype.fetchRemoteChildData = function (rowDetails) {\n var _this = this;\n var args = { row: rowDetails.parentRow, data: rowDetails.record };\n var dm = this.parent.dataSource;\n var qry = this.parent.grid.getDataModule().generateQuery();\n var clonequries = qry.queries.filter(function (e) { return e.fn !== 'onPage' && e.fn !== 'onWhere'; });\n qry.queries = clonequries;\n qry.isCountRequired = true;\n if (this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {\n qry.take(this.parent.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('ExpandingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());\n qry.expand(expandDetail);\n }\n else if (this.parent.enableVirtualization && rowDetails.action === 'collapse') {\n qry.take(this.parent.grid.pageSettings.pageSize);\n var expandDetail = [];\n expandDetail.push('CollapsingAction', parseInt(rowDetails.record[this.parent.idMapping], 10).toString());\n qry.expand(expandDetail);\n }\n qry.where(this.parent.parentIdMapping, 'equal', rowDetails.record[this.parent.idMapping]);\n if (rowDetails.action === 'remoteExpand' && this.parent.grid.filterModule && this.parent.grid.filterModule['value']) {\n var filterqry = this.parent.grid.getDataModule().generateQuery().queries.filter(function (e) { return e.fn !== 'onPage' && typeof e.e.predicates !== 'undefined'; });\n qry.queries.push(filterqry[0]);\n }\n showSpinner(this.parent.element);\n dm.executeQuery(qry).then(function (e) {\n var remoteExpandedData = 'remoteExpandedData';\n var remoteCollapsedData = 'remoteCollapsedData';\n var level = 'level';\n var datas = _this.parent.grid.currentViewData.slice();\n var inx;\n var idMapping = _this.parent.idMapping;\n if (_this.parent['isGantt'] && !_this.parent.loadChildOnDemand && _this.parent.hasChildMapping) {\n for (var i = 0; i < _this.parent.grid.currentViewData.length; i++) {\n if (rowDetails.record[idMapping] === _this.parent.grid.currentViewData[i][idMapping]) {\n inx = i;\n break;\n }\n }\n }\n else {\n inx = datas.indexOf(rowDetails.record);\n }\n if (_this.parent.enableVirtualization && (rowDetails.action === 'collapse' || rowDetails.action === 'remoteExpand')) {\n datas = [];\n for (var i = 0; i < inx; i++) {\n datas.push(_this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (inx === -1) {\n _this.parent.grid.getRowsObject().forEach(function (rows) {\n if (rows.data.uniqueID === rowDetails.record.uniqueID) {\n inx = rows.index;\n }\n });\n }\n var haveChild = getObject('actual.nextLevel', e);\n var result = e.result;\n var resultChildData = [];\n if (rowDetails.action === 'remoteExpand' && _this.parent.grid.filterModule && _this.parent.grid.filterModule['value']) {\n for (var i = 0; i < datas.length; i++) {\n if (Object.prototype.hasOwnProperty.call(datas[parseInt(i.toString(), 10)], _this.parent.parentIdMapping) && datas[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping] !== null && datas[parseInt(i.toString(), 10)].level === 0) {\n datas.splice(i, 1);\n i--;\n }\n }\n for (var i = 0; i < result.length; i++) {\n if (rowDetails.record['' + _this.parent.idMapping] !== result[parseInt(i.toString(), 10)]['' + _this.parent.idMapping] &&\n rowDetails.record['' + _this.parent.idMapping] === result[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping]) {\n if (Object.prototype.hasOwnProperty.call(result, i)) {\n resultChildData.push(result[parseInt(i.toString(), 10)]);\n }\n }\n }\n result = resultChildData;\n }\n if (_this.parent.enableVirtualization && rowDetails.action === 'remoteExpand') {\n rowDetails.record.childRecords = [];\n for (var i = 0; i < result.length; i++) {\n if (rowDetails.record['' + _this.parent.idMapping] !== result[parseInt(i.toString(), 10)]['' + _this.parent.idMapping] &&\n rowDetails.record['' + _this.parent.idMapping] === result[parseInt(i.toString(), 10)]['' + _this.parent.parentIdMapping] && Object.prototype.hasOwnProperty.call(result, i)) {\n rowDetails.record.childRecords.push(result[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n rowDetails.record.childRecords = result;\n }\n for (var r = 0; r < result.length; r++) {\n if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'remoteExpand') {\n _this.parent[\"\" + remoteExpandedData].push(rowDetails.record);\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action === 'collapse') {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteExpandedData].splice(i, 1);\n }\n }\n }\n result[parseInt(r.toString(), 10)].taskData = extend({}, result[parseInt(r.toString(), 10)]);\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] && _this.parent.enableVirtualization && _this.parent[\"\" + remoteExpandedData].length) {\n for (var i = 0; i < _this.parent[\"\" + remoteExpandedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping] === _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)][\"\" + level] + 1;\n var parentData = _this.parent[\"\" + remoteExpandedData][parseInt(i.toString(), 10)];\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n }\n else if (_this.parent.enableVirtualization) {\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n if (isNullOrUndefined(result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping])) {\n result[parseInt(r.toString(), 10)].level = 0;\n if (rowDetails.action === 'remoteExpand') {\n result[parseInt(r.toString(), 10)].childRecords = [];\n result[parseInt(r.toString(), 10)].childRecords = rowDetails.record.childRecords;\n }\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level;\n }\n }\n else {\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n }\n else {\n result[parseInt(r.toString(), 10)].level = rowDetails.record.level + 1;\n var parentData = extend({}, rowDetails.record);\n delete parentData.childRecords;\n result[parseInt(r.toString(), 10)].parentItem = parentData;\n result[parseInt(r.toString(), 10)].parentUniqueID = rowDetails.record.uniqueID;\n }\n result[parseInt(r.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n result[parseInt(r.toString(), 10)].uniqueID = getUid(_this.parent.element.id + '_data_');\n result[parseInt(r.toString(), 10)].checkboxState = 'uncheck';\n if (_this.parent.enableVirtualization && isNullOrUndefined(result[parseInt(r.toString(), 10)].level)) {\n for (var p = 0; p < _this.parent.grid.currentViewData.length; p++) {\n if (_this.parent.grid.currentViewData[parseInt(p.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.parentIdMapping]) {\n result[parseInt(r.toString(), 10)].level = _this.parent.grid.currentViewData[parseInt(p.toString(), 10)]['level'] + 1;\n }\n }\n }\n setValue('uniqueIDCollection.' + result[parseInt(r.toString(), 10)].uniqueID, result[parseInt(r.toString(), 10)], _this.parent);\n // delete result[r].parentItem.childRecords;\n if ((result[parseInt(r.toString(), 10)][\"\" + _this.parent.hasChildMapping] ||\n _this.parentItems.indexOf(result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) !== -1)\n && !(haveChild && !haveChild[parseInt(r.toString(), 10)])) {\n result[parseInt(r.toString(), 10)].hasChildRecords = true;\n if (_this.parent.enableVirtualization && _this.parent.loadChildOnDemand) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)]['expanded'];\n }\n }\n if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] !== rowDetails.record[\"\" + _this.parent.idMapping] && result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (rowDetails.action === 'collapse' && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n result[parseInt(r.toString(), 10)].expanded = false;\n _this.parent[\"\" + remoteCollapsedData].push(rowDetails.record);\n }\n else if (rowDetails.action === 'remoteExpand') {\n for (var i = 0; i < _this.parent.grid.currentViewData.length; i++) {\n if (_this.parent.grid.currentViewData[parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping] === result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping]) {\n result.splice(r, 1, _this.parent.grid.currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (result[parseInt(r.toString(), 10)][_this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping]) {\n for (var i = 0; i < _this.parent[\"\" + remoteCollapsedData].length; i++) {\n if (rowDetails.record[\"\" + _this.parent.idMapping] === _this.parent[\"\" + remoteCollapsedData][parseInt(i.toString(), 10)][\"\" + _this.parent.idMapping]) {\n _this.parent[\"\" + remoteCollapsedData].splice(i, 1);\n }\n }\n }\n if (result[parseInt(r.toString(), 10)].expanded !== false) {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n }\n }\n else if (_this.parent.enableVirtualization && result[parseInt(r.toString(), 10)][\"\" + _this.parent.idMapping] === rowDetails.record[\"\" + _this.parent.idMapping] && rowDetails.action !== 'collapse') {\n result[parseInt(r.toString(), 10)].expanded = true;\n }\n else if (!(_this.parent.enableVirtualization && _this.parent.loadChildOnDemand)) {\n result[parseInt(r.toString(), 10)].expanded = false;\n }\n }\n datas.splice(inx + r + 1, 0, result[parseInt(r.toString(), 10)]);\n }\n setValue('result', datas, e);\n setValue('action', 'beforecontentrender', e);\n _this.parent.trigger(events.actionComplete, e);\n hideSpinner(_this.parent.element);\n if (_this.parent.grid.aggregates.length > 0 && !_this.parent.enableVirtualization) {\n var gridQuery = getObject('query', e);\n var result_1 = 'result';\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', _this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(gridQuery)) {\n var summaryQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n e[\"\" + result_1] = _this.parent.summaryModule.calculateSummaryValue(summaryQuery, e[\"\" + result_1], true);\n }\n }\n if (_this.parent.enableVirtualization) {\n _this.parent.grid.pageSettings.totalRecordsCount = e.count;\n }\n e.count = _this.parent.grid.pageSettings.totalRecordsCount;\n var virtualArgs = {};\n if (_this.parent.enableVirtualization) {\n _this.remoteVirtualAction(virtualArgs);\n }\n var notifyArgs = { index: inx, childData: result };\n if (_this.parent.enableInfiniteScrolling) {\n _this.parent.notify('infinite-remote-expand', notifyArgs);\n }\n else {\n getValue('grid.renderModule', _this.parent).dataManagerSuccess(e, virtualArgs);\n }\n _this.parent.trigger(events.expanded, args);\n });\n };\n DataManipulation.prototype.remoteVirtualAction = function (virtualArgs) {\n virtualArgs.requestType = 'refresh';\n setValue('isExpandCollapse', true, virtualArgs);\n var contentModule = getValue('grid.contentModule', this.parent);\n var currentInfo = getValue('currentInfo', contentModule);\n var prevInfo = getValue('prevInfo', contentModule);\n if (currentInfo.loadNext && this.parent.grid.pageSettings.currentPage === currentInfo.nextInfo.page) {\n this.parent.grid.pageSettings.currentPage = prevInfo.page;\n }\n };\n DataManipulation.prototype.beginSorting = function () {\n this.isSortAction = true;\n if (isRemoteData(this.parent) && this.parent.enableVirtualization) {\n var index = this.parent.query.queries.indexOf(this.parent.query.queries.filter(function (q) { return q.fn === 'onSortBy'; })[0]);\n if (index !== -1) {\n this.parent.query.queries.splice(index, 1);\n }\n if (this.parent.grid.sortSettings.columns.length === 0) {\n this.parent.query.sortBy(null, null);\n }\n }\n };\n DataManipulation.prototype.createRecords = function (data, parentRecords) {\n var treeGridData = [];\n var keys = Object.keys(data);\n for (var i = 0, len = keys.length; i < len; i++) {\n var currentData = extend({}, data[parseInt(i.toString(), 10)]);\n currentData.taskData = data[parseInt(i.toString(), 10)];\n var level = 0;\n this.storedIndex++;\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = this.storedIndex;\n }\n if ((!isNullOrUndefined(currentData[this.parent.childMapping]) && !isCountRequired(this.parent)) ||\n ((currentData[this.parent.hasChildMapping]) && isCountRequired(this.parent))) {\n currentData.hasChildRecords = true;\n if (this.parent.enableCollapseAll || !isNullOrUndefined(this.parent.dataStateChange)\n && isNullOrUndefined(currentData[this.parent.childMapping])) {\n currentData.expanded = false;\n }\n else {\n currentData.expanded = !isNullOrUndefined(currentData[this.parent.expandStateMapping])\n ? currentData[this.parent.expandStateMapping] : true;\n }\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'index')) {\n currentData.index = currentData.hasChildRecords ? this.storedIndex : this.storedIndex;\n }\n if (this.isSelfReference && isNullOrUndefined(currentData[this.parent.parentIdMapping])) {\n this.parent.parentData.push(currentData);\n }\n currentData.uniqueID = getUid(this.parent.element.id + '_data_');\n setValue('uniqueIDCollection.' + currentData.uniqueID, currentData, this.parent);\n if (!isNullOrUndefined(parentRecords)) {\n var parentData = extend({}, parentRecords);\n delete parentData.childRecords;\n delete parentData[this.parent.childMapping];\n if (this.isSelfReference) {\n delete parentData.taskData[this.parent.childMapping];\n }\n currentData.parentItem = parentData;\n currentData.parentUniqueID = parentData.uniqueID;\n level = parentRecords.level + 1;\n }\n if (!Object.prototype.hasOwnProperty.call(currentData, 'level')) {\n currentData.level = level;\n }\n currentData.checkboxState = 'uncheck';\n var remoteCollapsedData = 'remoteCollapsedData';\n if (this.parent.enableVirtualization && this.parent.loadChildOnDemand && isRemoteData(this.parent)\n && !this.parent.initialRender) {\n if (!currentData.hasChildRecords && isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping])) {\n currentData.hasChildRecords = true;\n for (var c = 0; c < this.parent[\"\" + remoteCollapsedData].length; c++) {\n if (this.parent[\"\" + remoteCollapsedData][parseInt(c.toString(), 10)][\"\" + this.parent.idMapping] === currentData[\"\" + this.parent.idMapping]) {\n currentData.expanded = false;\n }\n }\n }\n else if (currentData.level === 0 && isNullOrUndefined(parentRecords) && !currentData.hasChildRecords) {\n currentData.level = currentData.level + 1;\n }\n if (currentData[\"\" + this.parent.hasChildMapping] && !isNullOrUndefined(currentData[\"\" + this.parent.expandStateMapping])) {\n currentData.expanded = currentData[\"\" + this.parent.expandStateMapping];\n currentData.hasChildRecords = true;\n }\n this.parent.flatData.push(currentData);\n }\n else if (isNullOrUndefined(currentData[\"\" + this.parent.parentIdMapping]) || currentData.parentItem) {\n this.parent.flatData.push(currentData);\n this.parent['infiniteScrollData'].push(currentData);\n }\n if (!this.isSelfReference && currentData.level === 0) {\n this.parent.parentData.push(currentData);\n }\n if (!isNullOrUndefined(currentData[this.parent.childMapping] && currentData[this.parent.childMapping].length)) {\n var record = this.createRecords(currentData[this.parent.childMapping], currentData);\n currentData.childRecords = record;\n }\n treeGridData.push(currentData);\n }\n return treeGridData;\n };\n /**\n * Function to perform filtering/sorting action for local data\n *\n * @param {BeforeDataBoundArgs} args - data details to be processed before binding to grid\n * @hidden\n * @returns {void}\n */\n DataManipulation.prototype.dataProcessor = function (args) {\n var isExport = getObject('isExport', args);\n var expresults = getObject('expresults', args);\n var exportType = getObject('exportType', args);\n var isPrinting = getObject('isPrinting', args);\n var dataObj;\n var actionArgs = getObject('actionArgs', args);\n var requestType = getObject('requestType', args);\n var actionData = getObject('data', args);\n var action = getObject('action', args);\n var actionAddArgs = actionArgs;\n var primaryKeyColumnName = this.parent.getPrimaryKeyFieldNames()[0];\n var dataValue = getObject('data', actionAddArgs);\n if ((!isNullOrUndefined(actionAddArgs)) && (!isNullOrUndefined(actionAddArgs.action)) && (actionAddArgs.action === 'add')\n && (!isNullOrUndefined(actionAddArgs.data)) && isNullOrUndefined(actionAddArgs.data[\"\" + primaryKeyColumnName])) {\n actionAddArgs.data[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n dataValue.taskData[\"\" + primaryKeyColumnName] = args.result[actionAddArgs.index][\"\" + primaryKeyColumnName];\n }\n if ((!isNullOrUndefined(actionArgs) && Object.keys(actionArgs).length) || requestType === 'save') {\n requestType = requestType ? requestType : actionArgs.requestType;\n actionData = actionData ? actionData : getObject('data', actionArgs);\n action = action ? action : getObject('action', actionArgs);\n if (this.parent.editSettings.mode === 'Batch') {\n this.batchChanges = this.parent.grid.editModule.getBatchChanges();\n }\n if (this.parent.isLocalData) {\n this.updateAction(actionData, action, requestType);\n }\n }\n if (isExport && !isNullOrUndefined(expresults)) {\n dataObj = expresults;\n }\n else {\n dataObj = isCountRequired(this.parent) ? getValue('result', this.parent.grid.dataSource)\n : this.parent.grid.dataSource;\n }\n var results = dataObj instanceof DataManager ? dataObj.dataSource.json : dataObj;\n var count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var qry = new Query();\n var gridQuery = getObject('query', args);\n var filterQuery;\n var searchQuery;\n if (!isNullOrUndefined(gridQuery)) {\n filterQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n searchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n }\n if ((this.parent.grid.allowFiltering && this.parent.grid.filterSettings.columns.length) ||\n (this.parent.grid.searchSettings.key.length > 0) || (!isNullOrUndefined(gridQuery) &&\n (filterQuery.length || searchQuery.length) && this.parent.isLocalData)) {\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = new Query();\n gridQuery = getValue('grid.renderModule.data', this.parent).filterQuery(gridQuery);\n gridQuery = getValue('grid.renderModule.data', this.parent).searchQuery(gridQuery);\n }\n var fltrQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onWhere'; });\n var srchQuery = gridQuery.queries.filter(function (q) { return q.fn === 'onSearch'; });\n qry.queries = fltrQuery.concat(srchQuery);\n var filteredData = new DataManager(results).executeLocal(qry);\n this.parent.notify('updateFilterRecs', { data: filteredData });\n results = this.dataResults.result;\n this.dataResults.result = null;\n if (this.parent.grid.aggregates.length > 0) {\n var query = getObject('query', args);\n if (isNullOrUndefined(gridQuery)) {\n gridQuery = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n if (!isNullOrUndefined(query)) {\n var summaryQuery = query.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, results, true);\n }\n }\n }\n if (this.parent.grid.aggregates.length && this.parent.grid.sortSettings.columns.length === 0\n && this.parent.grid.filterSettings.columns.length === 0 && !this.parent.grid.searchSettings.key.length) {\n var gridQuery_1 = getObject('query', args);\n if (isNullOrUndefined(gridQuery_1)) {\n gridQuery_1 = getValue('grid.renderModule.data', this.parent).aggregateQuery(new Query());\n }\n var summaryQuery = gridQuery_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.parent.flatData, true);\n }\n if (this.parent.grid.sortSettings.columns.length > 0 || this.isSortAction) {\n this.isSortAction = false;\n var parentData = this.parent.parentData;\n var query = getObject('query', args);\n var srtQry = new Query();\n for (var srt = this.parent.grid.sortSettings.columns.length - 1; srt >= 0; srt--) {\n var getColumnByField = 'getColumnByField';\n var col = this.parent.grid.renderModule.data[\"\" + getColumnByField](this.parent.grid.\n sortSettings.columns[parseInt(srt.toString(), 10)].field);\n var compFun = col.sortComparer && isOffline(this.parent) ?\n col.sortComparer.bind(col) :\n this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].direction;\n srtQry.sortBy(this.parent.grid.sortSettings.columns[parseInt(srt.toString(), 10)].field, compFun);\n }\n var modifiedData = new DataManager(parentData).executeLocal(srtQry);\n if (this.parent.allowRowDragAndDrop && !isNullOrUndefined(this.parent.rowDragAndDropModule['draggedRecord']) &&\n this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] !== 'middleSegment') {\n var dragdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['draggedRecord']);\n modifiedData.splice(dragdIndex, 1);\n var dropdIndex = modifiedData.indexOf(this.parent.rowDragAndDropModule['droppedRecord']);\n if (this.parent.rowDragAndDropModule['droppedRecord'].hasChildRecords && this.parent.rowDragAndDropModule['dropPosition'] === 'topSegment') {\n modifiedData.splice(dropdIndex, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n else if (this.parent.rowDragAndDropModule['dropPosition'] === 'bottomSegment') {\n modifiedData.splice(dropdIndex + 1, 0, this.parent.rowDragAndDropModule['draggedRecord']);\n }\n }\n var sortArgs = { modifiedData: modifiedData, filteredData: results, srtQry: srtQry };\n this.parent.notify('createSort', sortArgs);\n results = sortArgs.modifiedData;\n this.dataResults.result = null;\n this.sortedData = results;\n this.parent.notify('updateModel', {});\n if (this.parent.grid.aggregates.length > 0 && !isNullOrUndefined(query)) {\n var isSort = false;\n var query_1 = getObject('query', args);\n var summaryQuery = query_1.queries.filter(function (q) { return q.fn === 'onAggregates'; });\n results = this.parent.summaryModule.calculateSummaryValue(summaryQuery, this.sortedData, isSort);\n }\n }\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : results.length;\n var temp = this.paging(results, count, isExport, isPrinting, exportType, args);\n results = temp.result;\n count = temp.count;\n args.result = results;\n args.count = count;\n this.parent.notify('updateResults', args);\n };\n DataManipulation.prototype.paging = function (results, count, isExport, isPrinting, exportType, args) {\n if (this.parent.allowPaging && (!isExport || exportType === 'CurrentPage')\n && (!isPrinting || this.parent.printMode === 'CurrentPage')) {\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: args });\n results = this.dataResults.result;\n count = isCountRequired(this.parent) ? getValue('count', this.parent.dataSource)\n : this.dataResults.count;\n }\n else if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && (!isExport || exportType === 'CurrentPage')\n && getValue('requestType', args) !== 'save') {\n var actArgs = this.parent.enableInfiniteScrolling ? args : getValue('actionArgs', args);\n this.parent.notify(events.pagingActions, { result: results, count: count, actionArgs: actArgs });\n results = this.dataResults.result;\n count = this.dataResults.count;\n }\n var isPdfExport = 'isPdfExport';\n var isCollapsedStatePersist = 'isCollapsedStatePersist';\n if ((isPrinting === true || (args[\"\" + isPdfExport] && (isNullOrUndefined(args[\"\" + isCollapsedStatePersist])\n || args[\"\" + isCollapsedStatePersist]))) && this.parent.printMode === 'AllPages') {\n var actualResults = [];\n for (var i = 0; i < results.length; i++) {\n var expandStatus = getExpandStatus(this.parent, results[parseInt(i.toString(), 10)], this.parent.parentData);\n if (expandStatus) {\n actualResults.push(results[parseInt(i.toString(), 10)]);\n }\n }\n results = actualResults;\n count = results.length;\n }\n var value = { result: results, count: count };\n return value;\n };\n DataManipulation.prototype.updateData = function (dataResult) {\n this.dataResults = dataResult;\n };\n DataManipulation.prototype.updateAction = function (actionData, action, requestType) {\n if ((requestType === 'delete' || requestType === 'save')) {\n this.parent.notify(events.crudAction, { value: actionData, action: action || requestType });\n }\n if (requestType === 'batchsave' && this.parent.editSettings.mode === 'Batch') {\n this.parent.notify(events.batchSave, {});\n }\n };\n return DataManipulation;\n}());\nexport { DataManipulation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 TreeGrid.\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 __decorate([\n Property('All')\n ], PageSettings.prototype, \"pageSizeMode\", 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, Collection, getEnumValue, compile } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\nimport { CellType } from '@syncfusion/ej2-grids';\n/**\n * Configures the TreeGrid'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.intl = new Internationalization();\n _this.templateFn = {};\n return _this;\n }\n /**\n * Custom format function\n *\n * @hidden\n * @param {string} cultureName - culture name to format\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AggregateColumn.prototype.setFormatter = function (cultureName) {\n if (this.format && (this.format.skeleton || this.format.format)) {\n this.formatFn = this.getFormatFunction(this.format);\n }\n };\n /**\n * @param {NumberFormatOptions | DateFormatOptions} format - formatting options for number and date values\n * @hidden\n * @returns {Function} - return formatter function\n */\n AggregateColumn.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n /**\n * @hidden\n * @returns {Function} - Returns formatter function\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - Specified the helper\n * @hidden\n * @returns {void}\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 };\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 - updates aggregate properties without change detection\n * @hidden\n * @returns {void}\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, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\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 __decorate([\n Property(true)\n ], AggregateRow.prototype, \"showChildSummary\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 edit behavior of the TreeGrid.\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('Cell')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", 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, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, Collection } from '@syncfusion/ej2-base';\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 return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of TreeGrid.\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","import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { extendArray, getPlainData, getParentData } from '../utils';\n/**\n * Performs CRUD update to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {string} columnName - Column field name\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function editAction(details, control, isSelfReference, addRowIndex, selectedIndex, columnName, addRowRecord) {\n var value = details.value;\n var action = details.action;\n var changedRecords = 'changedRecords';\n var i;\n var j;\n var addedRecords = 'addedRecords';\n var batchChanges;\n var key = control.grid.getPrimaryKeyFieldNames()[0];\n var treeData = control.dataSource instanceof DataManager ?\n control.dataSource.dataSource.json : control.dataSource;\n var modifiedData = [];\n var originalData = value;\n var isSkip = false;\n if (control.editSettings.mode === 'Batch') {\n batchChanges = control.grid.editModule.getBatchChanges();\n }\n if (action === 'add' || (action === 'batchsave' && (control.editSettings.mode === 'Batch'\n && batchChanges[\"\" + addedRecords].length))) {\n var addAct = addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord);\n value = addAct.value;\n isSkip = addAct.isSkip;\n }\n if (value instanceof Array) {\n modifiedData = extendArray(value);\n }\n else {\n modifiedData.push(extend({}, value));\n }\n if (!isSkip && (action !== 'add' ||\n (control.editSettings.newRowPosition !== 'Top' && control.editSettings.newRowPosition !== 'Bottom'))) {\n for (var k = 0; k < modifiedData.length; k++) {\n if (typeof (modifiedData[parseInt(k.toString(), 10)][\"\" + key]) === 'object') {\n modifiedData[parseInt(k.toString(), 10)] = modifiedData[parseInt(k.toString(), 10)][\"\" + key];\n }\n var keys = modifiedData[parseInt(k.toString(), 10)].taskData ?\n Object.keys(modifiedData[parseInt(k.toString(), 10)].taskData) :\n Object.keys(modifiedData[parseInt(k.toString(), 10)]);\n i = treeData.length;\n var _loop_1 = function () {\n if (treeData[parseInt(i.toString(), 10)][\"\" + key] === modifiedData[parseInt(k.toString(), 10)][\"\" + key]) {\n if (action === 'delete') {\n var currentData_1 = treeData[parseInt(i.toString(), 10)];\n treeData.splice(i, 1);\n if (isSelfReference) {\n if (!isNullOrUndefined(currentData_1[\"\" + control.parentIdMapping])) {\n var parentData = control.flatData.filter(function (e) {\n return e[\"\" + control.idMapping] === currentData_1[\"\" + control.parentIdMapping];\n })[0];\n var childRecords = parentData ? parentData[\"\" + control.childMapping] : [];\n for (var p = childRecords.length - 1; p >= 0; p--) {\n if (childRecords[parseInt(p.toString(), 10)][\"\" + control.idMapping] === currentData_1[\"\" + control.idMapping]) {\n if (!control.enableImmutableMode && parentData.childRecords.length === parentData['Children'].length) {\n parentData['childRecords'].splice(p, 1);\n }\n childRecords.splice(p, 1);\n if (!childRecords.length) {\n parentData.hasChildRecords = false;\n updateParentRow(key, parentData, action, control, isSelfReference);\n }\n break;\n }\n }\n }\n return \"break\";\n }\n }\n else {\n if (action === 'edit') {\n for (j = 0; j < keys.length; j++) {\n if (Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], keys[parseInt(j.toString(), 10)]) && ((control.editSettings.mode !== 'Cell'\n || (!isNullOrUndefined(batchChanges) && batchChanges[\"\" + changedRecords].length === 0))\n || keys[parseInt(j.toString(), 10)] === columnName)) {\n var editedData = getParentData(control, modifiedData[parseInt(k.toString(), 10)].uniqueID);\n treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]] =\n modifiedData[parseInt(k.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n if (editedData && editedData.taskData) {\n editedData.taskData[keys[parseInt(j.toString(), 10)]] = editedData[keys[parseInt(j.toString(), 10)]]\n = treeData[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n }\n else if (action === 'add' || action === 'batchsave') {\n var index = void 0;\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData.taskData[\"\" + control.parentIdMapping] = treeData[parseInt(i.toString(), 10)][\"\" + control.idMapping];\n treeData.splice(i + 1, 0, originalData.taskData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(treeData[parseInt(i.toString(), 10)], control.childMapping)) {\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping] = [];\n }\n treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping].push(originalData.taskData);\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n treeData.splice(i + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[i + 1], action, control, isSelfReference, originalData);\n }\n }\n else if (!addRowIndex) {\n index = 0;\n treeData.splice(index, 0, originalData.taskData);\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n treeData.splice(i, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n return \"break\";\n }\n }\n else if (!isNullOrUndefined(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping])) {\n if (removeChildRecords(treeData[parseInt(i.toString(), 10)][\"\" + control.childMapping], modifiedData[parseInt(k.toString(), 10)], action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, treeData[parseInt(i.toString(), 10)], action, control, isSelfReference);\n }\n }\n };\n while (i-- && i >= 0) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n }\n }\n}\n/**\n * Performs Add action to Tree Grid data source\n *\n * @param {{value: ITreeData, action: string }} details - Gets modified record value and CRUD action type\n * @param {TreeGrid} details.value - Gets modified record value\n * @param {string} details.action - CRUD action type\n * @param {Object[]} treeData - Tree Grid data source\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Denotes whether Self Referential data binding\n * @param {number} addRowIndex - New add row index\n * @param {number} selectedIndex - Selected Row index\n * @param {ITreeData} addRowRecord - Newly added record\n * @returns {void}\n */\nexport function addAction(details, treeData, control, isSelfReference, addRowIndex, selectedIndex, addRowRecord) {\n var value;\n var isSkip = false;\n var currentViewRecords = control.grid.getCurrentViewRecords();\n value = extend({}, details.value);\n value = getPlainData(value);\n switch (control.editSettings.newRowPosition) {\n case 'Top':\n treeData.unshift(value);\n isSkip = true;\n break;\n case 'Bottom':\n treeData.push(value);\n isSkip = true;\n break;\n case 'Above':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n value = extend({}, currentViewRecords[addRowIndex + 1]);\n value = getPlainData(value);\n }\n break;\n case 'Below':\n case 'Child':\n if (!isNullOrUndefined(addRowRecord)) {\n value = extend({}, addRowRecord);\n value = getPlainData(value);\n }\n else {\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var currentdata = currentViewRecords[parseInt(addRowIndex.toString(), 10)];\n if (!isNullOrUndefined(currentdata) && currentdata[\"\" + primaryKeys] === details.value[\"\" + primaryKeys] || selectedIndex !== -1) {\n value = extend({}, currentdata);\n }\n else {\n value = extend({}, details.value);\n }\n value = getPlainData(value);\n var internalProperty = 'internalProperties';\n control.editModule[\"\" + internalProperty].taskData = value;\n }\n if (selectedIndex === -1) {\n treeData.unshift(value);\n isSkip = true;\n }\n }\n return { value: value, isSkip: isSkip };\n}\n/**\n * @param {ITreeData[]} childRecords - Child Records collection\n * @param {Object} modifiedData - Modified data in crud action\n * @param {string} action - crud action type\n * @param {string} key - Primary key field name\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether Self Referential data binding\n * @param {ITreeData} originalData - Non updated data from data source, of edited data\n * @param {string} columnName - column field name\n * @returns {boolean} Returns whether child records exists\n */\nexport function removeChildRecords(childRecords, modifiedData, action, key, control, isSelfReference, originalData, columnName) {\n var isChildAll = false;\n var j = childRecords.length;\n while (j-- && j >= 0) {\n if (childRecords[parseInt(j.toString(), 10)][\"\" + key] === modifiedData[\"\" + key] ||\n (isSelfReference && childRecords[parseInt(j.toString(), 10)][control.parentIdMapping] === modifiedData[control.idMapping])) {\n if (action === 'edit') {\n var keys = Object.keys(modifiedData);\n var editedData = getParentData(control, modifiedData.uniqueID);\n for (var i = 0; i < keys.length; i++) {\n if (Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], keys[parseInt(i.toString(), 10)]) &&\n (control.editSettings.mode !== 'Cell' || keys[parseInt(i.toString(), 10)] === columnName)) {\n editedData[keys[parseInt(i.toString(), 10)]] =\n editedData.taskData[keys[parseInt(i.toString(), 10)]] =\n childRecords[parseInt(j.toString(), 10)][keys[parseInt(i.toString(), 10)]] =\n modifiedData[keys[parseInt(i.toString(), 10)]];\n if (control.grid.editSettings.mode === 'Normal' && control.editSettings.mode === 'Cell') {\n var editModule = 'editModule';\n control.grid.editModule[\"\" + editModule].editRowIndex = modifiedData.index;\n control.grid.editModule[\"\" + editModule].updateCurrentViewData(modifiedData);\n }\n }\n }\n break;\n }\n else if (action === 'add' || action === 'batchsave') {\n if (control.editSettings.newRowPosition === 'Child') {\n if (isSelfReference) {\n originalData[\"\" + control.parentIdMapping] = childRecords[parseInt(j.toString(), 10)][control.idMapping];\n childRecords.splice(j + 1, 0, originalData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n else {\n if (!Object.prototype.hasOwnProperty.call(childRecords[parseInt(j.toString(), 10)], control.childMapping)) {\n childRecords[parseInt(j.toString(), 10)][control.childMapping] = [];\n }\n childRecords[parseInt(j.toString(), 10)][control.childMapping].push(originalData.taskData);\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Above') {\n childRecords.splice(j, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n else if (control.editSettings.newRowPosition === 'Below') {\n childRecords.splice(j + 1, 0, originalData.taskData);\n if (!isNullOrUndefined(originalData.parentItem)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference, originalData);\n }\n }\n }\n else {\n childRecords.splice(j, 1);\n if (!childRecords.length) {\n isChildAll = true;\n }\n }\n }\n else if (!isNullOrUndefined(childRecords[parseInt(j.toString(), 10)][control.childMapping])) {\n if (removeChildRecords(childRecords[parseInt(j.toString(), 10)][control.childMapping], modifiedData, action, key, control, isSelfReference, originalData, columnName)) {\n updateParentRow(key, childRecords[parseInt(j.toString(), 10)], action, control, isSelfReference);\n }\n }\n }\n return isChildAll;\n}\n/**\n * @param {string} key - Primary key field name\n * @param {ITreeData} record - Parent Record which has to be updated\n * @param {string} action - CRUD action type\n * @param {TreeGrid} control - Tree Grid instance\n * @param {boolean} isSelfReference - Specified whether self referential data binding\n * @param {ITreeData} child - Specifies child record\n * @returns {void}\n */\nexport function updateParentRow(key, record, action, control, isSelfReference, child) {\n if ((control.editSettings.newRowPosition === 'Above' || control.editSettings.newRowPosition === 'Below')\n && ((action === 'add' || action === 'batchsave')) && !isNullOrUndefined(child.parentItem)) {\n var parentData = getParentData(control, child.parentItem.uniqueID);\n parentData.childRecords.push(child);\n }\n else {\n var currentRecords = control.grid.getCurrentViewRecords();\n var index_1;\n currentRecords.map(function (e, i) { if (e[\"\" + key] === record[\"\" + key]) {\n index_1 = i;\n return;\n } });\n if (control.enableVirtualization && isNullOrUndefined(index_1)) {\n var updatedParent = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n record = updatedParent;\n }\n if (!isNullOrUndefined(index_1)) {\n record = currentRecords[parseInt(index_1.toString(), 10)];\n }\n if (control.enableVirtualization && isNullOrUndefined(record) && !isNullOrUndefined(child)) {\n record = getValue('uniqueIDCollection.' + child.parentUniqueID, control);\n }\n if (!isSelfReference && !isNullOrUndefined(record.childRecords) && record.childRecords.length) {\n record.hasChildRecords = true;\n }\n else {\n record.hasChildRecords = false;\n }\n if (action === 'add' || action === 'batchsave') {\n record.expanded = true;\n record.hasChildRecords = true;\n if (control.sortSettings.columns.length && isNullOrUndefined(child)) {\n child = currentRecords.filter(function (e) {\n if (e.parentUniqueID === record.uniqueID) {\n return e;\n }\n else {\n return null;\n }\n });\n }\n var childRecords = child ? child instanceof Array ? child[0] : child : currentRecords[index_1 + 1];\n if (control.editSettings.newRowPosition !== 'Below') {\n if (!Object.prototype.hasOwnProperty.call(record, 'childRecords')) {\n record.childRecords = [];\n }\n else {\n if (!isNullOrUndefined(child) && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.push(child);\n }\n }\n if (record.childRecords.indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record.childRecords.unshift(childRecords);\n }\n if (isSelfReference) {\n if (!Object.prototype.hasOwnProperty.call(record, control.childMapping)) {\n record[control.childMapping] = [];\n }\n if (record[\"\" + control.childMapping].indexOf(childRecords) === -1 && record[\"\" + key] !== child[\"\" + key]) {\n record[control.childMapping].unshift(childRecords);\n }\n }\n }\n }\n var primaryKeys = control.grid.getPrimaryKeyFieldNames()[0];\n var data = control.grid.dataSource instanceof DataManager ?\n control.grid.dataSource.dataSource.json : control.grid.dataSource;\n for (var i = 0; i < data.length; i++) {\n if (data[parseInt(i.toString(), 10)][\"\" + primaryKeys] === record[\"\" + primaryKeys]) {\n data[parseInt(i.toString(), 10)] = record;\n break;\n }\n }\n control.grid.setRowData(key, record);\n var row = control.getRowByIndex(index_1);\n if (control.editSettings.mode === 'Batch') {\n if (action === 'add') {\n row = control.getRows()[control.grid.getCurrentViewRecords().indexOf(record)];\n }\n else {\n row = control.getRows()[control.grid.getRowIndexByPrimaryKey(record[\"\" + key])];\n }\n }\n var movableRow = void 0;\n if (control.frozenRows || control.getFrozenColumns()) {\n movableRow = control.getRowByIndex(index_1);\n }\n if (!control.enableVirtualization && !isNullOrUndefined(row) || !isNullOrUndefined(movableRow)) {\n var index_2 = control.treeColumnIndex;\n if (control.allowRowDragAndDrop && control.enableImmutableMode) {\n index_2 = index_2 + 1;\n }\n control.renderModule.cellRender({\n data: record, cell: row.cells[parseInt(index_2.toString(), 10)] ? row.cells[parseInt(index_2.toString(), 10)]\n : movableRow.cells[index_2 - control.getFrozenColumns()],\n column: control.grid.getColumns()[control.treeColumnIndex],\n requestType: action\n });\n if (control.enableImmutableMode && control['action'] === 'indenting' || control['action'] === 'outdenting') {\n control.renderModule.RowModifier({\n data: record, row: row\n });\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})();\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 infinite scroll behavior of Tree 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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, addClass, createElement, EventHandler, isNullOrUndefined, extend, merge, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { removeClass, Complex, Collection, getValue } from '@syncfusion/ej2-base';\nimport { Event, Property, NotifyPropertyChanges, setValue, KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { Column } from '../models/column';\nimport { getNumberFormat } from '@syncfusion/ej2-grids';\nimport { RowDropSettings, getUid } from '@syncfusion/ej2-grids';\nimport { LoadingIndicator } from '../models/loading-indicator';\nimport { FilterSettings } from '../models/filter-settings';\nimport { TextWrapSettings } from '../models/textwrap-settings';\nimport { Logger as TreeLogger } from '../actions/logger';\nimport { TreeClipboard } from '../actions/clipboard';\nimport { Selection as TreeGridSelection } from '../actions/selection';\nimport { Print } from '../actions/print';\nimport * as events from '../base/constant';\nimport { SearchSettings } from '../models/search-settings';\nimport { SelectionSettings } from '../models/selection-settings';\nimport { getActualProperties, getObject } from '@syncfusion/ej2-grids';\nimport { DataManager, RemoteSaveAdaptor, Query, JsonAdaptor, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { isRemoteData, isOffline, extendArray, isCountRequired, findChildrenRecords } from '../utils';\nimport { Grid, Logger } from '@syncfusion/ej2-grids';\nimport { Render } from '../renderer/render';\nimport { DataManipulation } from './data';\nimport { iterateArrayOrObject } from '@syncfusion/ej2-grids';\nimport { ToolbarItem, ContextMenuItems } from '../enum';\nimport { PageSettings } from '../models/page-settings';\nimport { AggregateRow } from '../models/summary';\nimport { EditSettings } from '../models/edit-settings';\nimport { SortSettings } from '../models/sort-settings';\nimport { isHidden, getExpandStatus } from '../utils';\nimport { editAction } from '../actions/crud-actions';\nimport { InfiniteScrollSettings } from '../models/infinite-scroll-settings';\nimport * as literals from '../base/constant';\n/**\n * Represents the TreeGrid component.\n * ```html\n *
\n * \n * ```\n */\nvar TreeGrid = /** @class */ (function (_super) {\n __extends(TreeGrid, _super);\n function TreeGrid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.dataResults = {};\n _this.uniqueIDCollection = {};\n _this.uniqueIDFilterCollection = {};\n _this.changedRecords = 'changedRecords';\n _this.deletedRecords = 'deletedRecords';\n _this.addedRecords = 'addedRecords';\n _this.indentOutdentAction = 'indentOutdentAction';\n _this.modifiedRecords = [];\n _this.stackedHeader = false;\n _this.objectEqualityChecker = function (old, current) {\n if (old) {\n var keys = Object.keys(old);\n var isEqual = true;\n var excludeKeys = ['Children', 'childRecords', 'taskData', 'uniqueID', 'parentItem', 'parentUniqueID', 'index'];\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== current[keys[parseInt(i.toString(), 10)]] &&\n excludeKeys.indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date &&\n current[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]].getTime() !==\n current[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n }\n else {\n return false;\n }\n };\n TreeGrid_1.Inject(TreeGridSelection, TreeLogger);\n setValue('mergePersistData', _this.mergePersistTreeGridData, _this);\n var logger = 'Logger';\n if (!isNullOrUndefined(_this.injectedModules[\"\" + logger])) {\n Grid.Inject(Logger);\n }\n _this.grid = new Grid();\n return _this;\n }\n TreeGrid_1 = TreeGrid;\n /**\n * Export TreeGrid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties | TreeGridExcelExportProperties} excelExportProperties - Defines the export properties of the Tree 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 promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, false);\n };\n /**\n * Export TreeGrid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the TreeGrid.\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 promise object of export action\n */\n /* eslint-disable */\n TreeGrid.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n /* eslint-enable */\n return this.excelExportModule.Map(excelExportProperties, isMultipleExport, workbook, isBlob, true);\n };\n /**\n * Export TreeGrid data to PDF document.\n *\n * @param {PdfExportProperties | TreeGridPdfExportProperties} pdfExportProperties - Defines the export properties of the Tree Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Object} 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 promise object of export action\n */\n TreeGrid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule.Map(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n /**\n * Sends a post request to export tree 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 TreeGrid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportTreeGrid(url);\n };\n /**\n * Sends a post request to export tree 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 TreeGrid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportTreeGrid(url);\n };\n /**\n * Sends a Post request to export Tree Grid to CSV file in server side.\n *\n * @param {string} url - Pass URL for server-side csv export action.\n * @returns {void}\n */\n TreeGrid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportTreeGrid(url);\n };\n /**\n * Exports the TreeGrid data to the specified URL using a POST request.\n * @param {string} url - Defines exporting url\n * @returns {void}\n */\n TreeGrid.prototype.exportTreeGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treegrid = this;\n var query = treegrid.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 treeGridModel = JSON.parse(this.addOnPersist(['allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'columns', 'locale', 'searchSettings', 'idMapping', 'parentIdMapping', 'childMapping', 'treeColumnIndex']));\n var include = ['field', 'headerText', 'type', 'format', 'visible',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n treeGridModel.filterSettings.columns = queries.where;\n treeGridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n treeGridModel.sortSettings.columns = queries.sorted;\n treeGridModel.columns = this.setHeaderText(treeGridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var treeGridInput = this.createElement('input', { id: 'treeGridInput', attrs: { name: 'treeGridModel' } });\n treeGridInput.value = JSON.stringify(treeGridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(treeGridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * Sets the header text and other properties for an array of columns based on specified criteria.\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n */\n TreeGrid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n if (this.stackedHeader && isNullOrUndefined(column)) {\n column = !isNullOrUndefined(columns[parseInt(i.toString(), 10)].field) ?\n this.getColumnByField(columns[parseInt(i.toString(), 10)].field) : columns[parseInt(i.toString(), 10)];\n }\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(column.format), column.type, false, this.currencyCode);\n if (!this.isExcel && (column.type === 'datetime' || column.type === 'date')) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)].format.toString().replace('AM/PM', 'tt');\n }\n columns[parseInt(i.toString(), 10)].type = column.type;\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n /**\n * Retrieves the appropriate format string from the given format options.\n *\n * @param {string | NumberFormatOptions | DateFormatOptions} format - The format options to retrieve the format string from.\n * @returns {string} The format string extracted from the provided format options.\n */\n TreeGrid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @private\n * @returns {string} Returns TreeGrid module name\n */\n TreeGrid.prototype.getModuleName = function () {\n return 'treegrid';\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.preRender = function () {\n this.TreeGridLocale();\n this.initProperties();\n this.defaultLocale = {\n Above: 'Above',\n Below: 'Below',\n Child: 'Child',\n AddRow: 'Add Row',\n ExpandAll: 'Expand All',\n CollapseAll: 'Collapse All',\n RowIndent: 'Indent',\n RowOutdent: 'Outdent'\n };\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n if (this.isSelfReference && isNullOrUndefined(this.childMapping)) {\n this.childMapping = 'Children';\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 TreeGrid.prototype.sortByColumn = 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 TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.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 TreeGrid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Searches TreeGrid 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 TreeGrid.prototype.search = function (searchString) {\n this.grid.search(searchString);\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 *\n */\n TreeGrid.prototype.autoFitColumns = function (fieldNames) {\n this.resizeModule.autoFitColumns(fieldNames);\n this.updateColumnModel();\n };\n /**\n * Changes the TreeGrid 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 TreeGrid.prototype.reorderColumns = function (fromFName, toFName) {\n this.grid.reorderColumns(fromFName, toFName);\n };\n TreeGrid.prototype.TreeGridLocale = function () {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n var locale = L10n.locale;\n var localeObject = {};\n setValue(this.locale, {}, localeObject);\n var gridLocale;\n gridLocale = {};\n gridLocale = getObject(this.locale, locale);\n var treeGridLocale;\n treeGridLocale = {};\n treeGridLocale = getObject(this.getModuleName(), gridLocale);\n setValue('grid', treeGridLocale, getObject(this.locale, localeObject));\n L10n.load(localeObject);\n };\n /**\n * By default, prints all the pages of the TreeGrid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n TreeGrid.prototype.print = function () {\n this.printModule.print();\n };\n TreeGrid.prototype.treeGridkeyActionHandler = function (e) {\n if (this.allowKeyboard) {\n var target = void 0;\n var parentTarget = void 0;\n var column = void 0;\n var row = void 0;\n var summaryElement = void 0;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'ctrlShiftUpArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridexpand')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridexpand'));\n }\n }\n break;\n case 'ctrlShiftDownArrow':\n target = e.target;\n column = target.closest('.e-rowcell');\n if (!isNullOrUndefined(column)) {\n row = column.closest('tr');\n if (!isNullOrUndefined(row) && !(isNullOrUndefined(row.getElementsByClassName('e-treegridcollapse')[0]))) {\n this.expandCollapseRequest(row.querySelector('.e-treegridcollapse'));\n }\n }\n break;\n case 'downArrow':\n if (!this.enableVirtualization) {\n target = e.target;\n parentTarget = target.parentElement;\n var cellIndex = parentTarget.cellIndex;\n if (this.grid.getColumnByIndex(cellIndex).editType === 'dropdownedit' && isNullOrUndefined(this.grid.getColumnByIndex(cellIndex).edit['obj'])) {\n parentTarget = target;\n }\n summaryElement = this.findnextRowElement(parentTarget);\n if (summaryElement !== null) {\n var cellIndex_1 = e.target.cellIndex;\n var row_1 = summaryElement.children[parseInt(cellIndex_1.toString(), 10)];\n addClass([row_1], 'e-focused');\n addClass([row_1], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n break;\n case 'upArrow':\n if (!this.enableVirtualization) {\n target = e.target;\n parentTarget = target.parentElement;\n var cellIndex = parentTarget.cellIndex;\n if (this.grid.getColumnByIndex(cellIndex).editType === 'dropdownedit' && isNullOrUndefined(this.grid.getColumnByIndex(cellIndex).edit['obj'])) {\n parentTarget = target;\n }\n summaryElement = this.findPreviousRowElement(parentTarget);\n if (summaryElement !== null) {\n var cIndex = e.target.cellIndex;\n var rows = summaryElement.children[parseInt(cIndex.toString(), 10)];\n addClass([rows], 'e-focused');\n addClass([rows], 'e-focus');\n }\n else {\n this.clearSelection();\n }\n }\n }\n }\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findnextRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.nextElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findnextRowElement(rowElement);\n }\n return rowElement;\n };\n // Get Proper Row Element from the summary\n TreeGrid.prototype.findPreviousRowElement = function (summaryRowElement) {\n var rowElement = summaryRowElement.previousElementSibling;\n if (rowElement !== null && (rowElement.className.indexOf('e-summaryrow') !== -1 ||\n rowElement.style.display === 'none')) {\n rowElement = this.findPreviousRowElement(rowElement);\n }\n return rowElement;\n };\n TreeGrid.prototype.initProperties = function () {\n this.defaultLocale = {};\n this.flatData = [];\n this.infiniteScrollData = [];\n this.remoteCollapsedData = [];\n this.remoteExpandedData = [];\n this.parentData = [];\n this.columnModel = [];\n this.isExpandAll = false;\n this.isCollapseAll = false;\n this.keyConfigs = {\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n downArrow: 'downArrow',\n upArrow: 'upArrow'\n };\n this.isLocalData = (!(this.dataSource instanceof DataManager) || this.dataSource.dataSource.offline\n || (!isNullOrUndefined(this.dataSource.ready)) || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.isSelfReference = !isNullOrUndefined(this.parentIdMapping);\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.wireEvents = function () {\n EventHandler.add(this.grid.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.treeGridkeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - Returns TreeGrid modules collection\n * @hidden\n */\n TreeGrid.prototype.requiredModules = function () {\n var modules = [];\n var splitFrozenCount = 'splitFrozenCount';\n this.grid[\"\" + splitFrozenCount](this.getColumns());\n if (this.isDestroyed) {\n return modules;\n }\n modules.push({\n member: 'filter', args: [this, this.filterSettings],\n name: 'Filter'\n });\n if (!isNullOrUndefined(this.toolbar)) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings],\n name: 'Page'\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this],\n name: 'Reorder'\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this],\n name: 'Sort'\n });\n }\n if (this.aggregates.length > 0) {\n modules.push({\n member: 'summary', args: [this],\n name: 'Aggregate'\n });\n }\n if (this.allowResizing) {\n modules.push({\n member: 'resize', args: [this],\n name: 'Resize'\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport', args: [this],\n name: 'ExcelExport'\n });\n }\n var freezePresent = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'freeze';\n });\n if ((this.frozenColumns || this.frozenRows || this.getFrozenColumns() ||\n this.grid.getFrozenLeftColumnsCount() || this.grid.getFrozenRightColumnsCount()) && freezePresent.length > 0) {\n modules.push({\n member: 'freeze', args: [this],\n name: 'Freeze'\n });\n }\n if (this.detailTemplate) {\n modules.push({\n member: 'detailRow', args: [this],\n name: 'DetailRow'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport', args: [this],\n name: 'PdfExport'\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu', args: [this],\n name: 'ColumnMenu'\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'ColumnChooser', args: [this],\n name: 'ColumnChooser'\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n TreeGrid.prototype.extendRequiredModules = function (modules) {\n var IsRowDDInjected = this.injectedModules.filter(function (e) {\n return e.prototype.getModuleName() === 'rowDragAndDrop';\n });\n if (this.allowRowDragAndDrop || IsRowDDInjected.length) {\n if ((!isNullOrUndefined(this.toolbar) && (this.toolbar['includes']('Indent') ||\n this.toolbar['includes']('Outdent')))) {\n this.isIndentEnabled = true;\n }\n modules.push({\n member: 'rowDragAndDrop',\n args: [this],\n name: 'RowDD'\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this],\n name: 'Edit'\n });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this],\n name: 'CommandColumn'\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this],\n name: 'Selection'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualScroll',\n args: [this],\n name: 'VirtualScroll'\n });\n }\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this],\n name: 'InfiniteScroll'\n });\n }\n modules.push({\n member: 'logger',\n args: [this.grid]\n });\n };\n TreeGrid.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 /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.unwireEvents = function () {\n if (this.grid && this.grid.element) {\n EventHandler.remove(this.grid.element, 'click', this.mouseClickHandler);\n }\n if (this.element) {\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n this.keyboardModule = null;\n }\n if (this.allowKeyboard) {\n this.element.removeAttribute('tabIndex');\n }\n }\n };\n /**\n * Logs tree grid error message on console\n *\n * @param {string | string[]} types - Tree Grid error type\n * @param {object} args - Error details\n * @hidden\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.log = function (types, args) {\n if (this.loggerModule) {\n this.loggerModule.treeLog(types, args, this);\n }\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.render = function () {\n var _this = this;\n if (this.isReact) {\n this.grid.isReact = true;\n this.grid.portals = [];\n }\n if (this.isVue) {\n this.grid.isVue = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid.vueInstance = this.vueInstance;\n }\n createSpinner({ target: this.element }, this.createElement);\n this.log(['mapping_fields_missing']);\n this.renderModule = new Render(this);\n this.dataModule = new DataManipulation(this);\n this.printModule = new Print(this);\n this.trigger(events.load);\n this.autoGenerateColumns();\n this.initialRender = true;\n if (!isNullOrUndefined(this.dataSource)) {\n this.convertTreeData(this.dataSource);\n }\n this.loadGrid();\n if (this.element.classList.contains('e-treegrid') && this.rowDropSettings.targetID) {\n this.grid.rowDropSettings.targetID += '_gridcontrol';\n }\n this.addListener();\n var gridContainer = createElement('div', { id: this.element.id + '_gridcontrol' });\n addClass([this.element], 'e-treegrid');\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.element.appendChild(gridContainer);\n var gridRequiredModules = this.grid.requiredModules;\n this.grid.requiredModules = function () {\n var modules = [];\n modules = gridRequiredModules.apply(this);\n for (var i = 0; i < modules.length; i++) {\n if (modules[parseInt(i.toString(), 10)].member === 'virtualscroll') {\n modules[parseInt(i.toString(), 10)].member = 'treeVirtualScroll';\n }\n }\n return modules;\n };\n var root = 'root';\n this.grid[\"\" + root] = this[\"\" + root] ? this[\"\" + root] : this;\n this.grid.appendTo(gridContainer);\n var gridContent = this.element.getElementsByClassName('e-gridcontent')[0].childNodes[0];\n gridContent.setAttribute('tabindex', '0');\n var contentTable = this.element.getElementsByClassName('e-content')[0].querySelector('.e-table');\n contentTable.setAttribute('role', 'treegrid');\n if (this.isIndentEnabled) {\n this.refreshToolbarItems();\n }\n this.wireEvents();\n this.renderComplete();\n var destroyTemplate = 'destroyTemplate';\n var destroyTemplateFn = this.grid[\"\" + destroyTemplate];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.grid[\"\" + destroyTemplate] = function (args, index) {\n destroyTemplateFn.apply(_this.grid);\n var portals = 'portals';\n if (!(_this.isReact && isNullOrUndefined(_this[\"\" + portals]))) {\n _this.clearTemplate(args, index);\n }\n };\n };\n TreeGrid.prototype.refreshToolbarItems = function () {\n var toolbarElement = this.toolbarModule.getToolbar();\n var indentID = this.element.id + '_gridcontrol_indent';\n var outdentID = this.element.id + '_gridcontrol_outdent';\n var indentElement = toolbarElement.querySelector('#' + indentID).parentElement;\n var outdentElement = toolbarElement.querySelector('#' + outdentID).parentElement;\n indentElement.classList.add('e-hidden');\n outdentElement.classList.add('e-hidden');\n };\n TreeGrid.prototype.afterGridRender = function () {\n if (!isNullOrUndefined(this.grid.clipboardModule)) {\n this.grid.clipboardModule.destroy();\n }\n this.clipboardModule = this.grid.clipboardModule = new TreeClipboard(this, this.grid.serviceLocator);\n };\n TreeGrid.prototype.convertTreeData = function (data) {\n var _this = this;\n if (isCountRequired(this)) {\n data = getValue('result', data);\n }\n if (data instanceof Array && data.length > 0 && Object.prototype.hasOwnProperty.call(data[0], 'level')) {\n this.flatData = data;\n this.flatData.filter(function (e) {\n setValue('uniqueIDCollection.' + e.uniqueID, e, _this);\n if (e.level === 0) {\n _this.parentData.push(e);\n }\n });\n }\n else {\n if (isCountRequired(this)) {\n var griddata = getValue('result', this.dataSource);\n this.dataModule.convertToFlatData(griddata);\n }\n else {\n this.dataModule.convertToFlatData(data);\n }\n }\n };\n // private getGridData(): Object {\n // if (isRemoteData(this)) {\n // return this.dataSource;\n // } else if (this.isLocalData && this.dataSource instanceof DataManager) {\n // this.dataSource.dataSource.json = this.flatData;\n // return this.dataSource;\n // }\n // return this.flatData;\n // }\n TreeGrid.prototype.bindGridProperties = function () {\n this.bindedDataSource();\n this.grid.enableRtl = this.enableRtl;\n this.grid.allowKeyboard = this.allowKeyboard;\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.allowExcelExport = this.allowExcelExport;\n this.grid.allowPdfExport = this.allowPdfExport;\n this.grid.query = this.query;\n this.grid.columnQueryMode = this.columnQueryMode;\n this.grid.allowPaging = this.allowPaging;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pagerTemplate = this.pagerTemplate;\n this.grid.showColumnMenu = this.showColumnMenu;\n this.grid.allowSorting = this.allowSorting;\n this.grid.allowFiltering = this.allowFiltering;\n this.grid.enableVirtualization = this.enableVirtualization;\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n this.grid.infiniteScrollSettings = this.infiniteScrollSettings;\n this.grid.enableVirtualMaskRow = this.enableVirtualMaskRow;\n this.grid.loadingIndicator = this.loadingIndicator;\n this.grid.width = this.width;\n this.grid.height = this.height;\n this.grid.enableAltRow = this.enableAltRow;\n this.grid.allowReordering = this.allowReordering;\n this.grid.allowTextWrap = this.allowTextWrap;\n this.grid.allowResizing = this.allowResizing;\n this.grid.enableHover = this.enableHover;\n this.grid.enableAutoFill = this.enableAutoFill;\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n this.grid.enableImmutableMode = this.enableImmutableMode;\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n this.grid.rowDropSettings = getActualProperties(this.rowDropSettings);\n this.grid.rowHeight = this.rowHeight;\n this.grid.gridLines = this.gridLines;\n this.grid.allowSelection = this.allowSelection;\n this.grid.toolbar = getActualProperties(this.getGridToolbar());\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.toolbarTemplate = this.toolbarTemplate;\n this.grid.showColumnChooser = this.showColumnChooser;\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.aggregates = getActualProperties(this.aggregates);\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n this.grid.printMode = getActualProperties(this.printMode);\n this.grid.locale = getActualProperties(this.locale);\n this.grid.selectedRowIndex = this.selectedRowIndex;\n this.grid.contextMenuItems = getActualProperties(this.getContextMenu());\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n this.grid.editSettings = this.getGridEditSettings();\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n this.grid.frozenRows = this.frozenRows;\n this.grid.frozenColumns = this.frozenColumns;\n this.grid.clipMode = getActualProperties(this.clipMode);\n var templateInstance = 'templateDotnetInstance';\n this.grid[\"\" + templateInstance] = this[\"\" + templateInstance];\n var isJsComponent = 'isJsComponent';\n this.grid[\"\" + isJsComponent] = true;\n var enableHtmlSanitizer = 'enableHtmlSanitizer';\n this.grid[\"\" + enableHtmlSanitizer] = this.enableHtmlSanitizer;\n };\n TreeGrid.prototype.triggerEvents = function (args) {\n this.trigger(getObject('name', args), args);\n };\n TreeGrid.prototype.IsExpandCollapseClicked = function (args) {\n if (!isNullOrUndefined(args.target) && (args.target.classList.contains('e-treegridexpand')\n || args.target.classList.contains('e-treegridcollapse') || args.target.classList.contains('e-summarycell'))\n && !this.selectionSettings.checkboxOnly) {\n if ((!isNullOrUndefined(args.data) && args.data['hasChildRecords']) || (args.rowIndex !== -1 && isNullOrUndefined(args.data))) {\n args.cancel = true;\n return;\n }\n }\n };\n TreeGrid.prototype.bindGridEvents = function () {\n var _this = this;\n this.grid.rowSelecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowSelecting, args);\n };\n this.grid.rowDeselecting = function (args) {\n _this.IsExpandCollapseClicked(args);\n _this.trigger(events.rowDeselecting, args);\n };\n this.grid.rowSelected = function (args) {\n if (_this.enableVirtualization && args.isHeaderCheckboxClicked &&\n _this.grid.currentViewData.length !== _this.grid.selectionModule.selectedRowIndexes.length) {\n var updateRowSelection = 'updateRowSelection';\n for (var i = 0; i < _this.getRows().length; i++) {\n if (_this.getRows()[parseInt(i.toString(), 10)].getElementsByClassName('e-frame e-icons e-uncheck').length) {\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(i.toString(), 10)], _this.getCurrentViewRecords()[parseInt(i.toString(), 10)].index);\n }\n }\n }\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n _this.notify(events.rowSelected, args);\n _this.trigger(events.rowSelected, args);\n };\n this.grid.rowDeselected = function (args) {\n _this.selectedRowIndex = _this.grid.selectedRowIndex;\n if (!isNullOrUndefined(args.data)) {\n _this.notify(events.rowDeselected, args);\n }\n _this.trigger(events.rowDeselected, args);\n };\n this.grid.resizeStop = function (args) {\n _this.updateColumnModel();\n _this.trigger(events.resizeStop, args);\n };\n this.grid.excelQueryCellInfo = function (args) {\n _this.notify('excelCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.pdfQueryCellInfo = function (args) {\n _this.notify('pdfCellInfo', args);\n args = _this.dataResults;\n };\n this.grid.checkBoxChange = function (args) {\n _this.trigger(events.checkboxChange, args);\n };\n this.grid.pdfExportComplete = this.triggerEvents.bind(this);\n this.grid.excelExportComplete = this.triggerEvents.bind(this);\n this.grid.excelHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.pdfHeaderQueryCellInfo = this.triggerEvents.bind(this);\n this.grid.dataSourceChanged = this.triggerEvents.bind(this);\n this.grid.recordDoubleClick = this.triggerEvents.bind(this);\n this.grid.cellDeselected = this.triggerEvents.bind(this);\n this.grid.cellDeselecting = this.triggerEvents.bind(this);\n this.grid.columnMenuOpen = this.triggerEvents.bind(this);\n this.grid.columnMenuClick = this.triggerEvents.bind(this);\n this.grid.cellSelected = this.triggerEvents.bind(this);\n this.grid.headerCellInfo = this.triggerEvents.bind(this);\n this.grid.resizeStart = this.triggerEvents.bind(this);\n this.grid.resizing = this.triggerEvents.bind(this);\n this.grid.columnDrag = this.triggerEvents.bind(this);\n this.grid.columnDragStart = this.triggerEvents.bind(this);\n this.grid.columnDrop = this.triggerEvents.bind(this);\n this.grid.beforePrint = this.triggerEvents.bind(this);\n this.grid.beforeCopy = this.triggerEvents.bind(this);\n this.grid.beforePaste = function (args) {\n var rows = _this.getRows();\n var rowIndex = 'rowIndex';\n while (rows[args[\"\" + rowIndex]].classList.contains('e-summaryrow')) {\n args[\"\" + rowIndex]++;\n }\n _this.trigger(events.beforePaste, args);\n };\n this.grid.load = function () {\n _this.grid.on('initial-end', _this.afterGridRender, _this);\n if (!isNullOrUndefined(_this.loggerModule)) {\n var loggerModule = 'loggerModule';\n _this.loggerModule = _this.grid[\"\" + loggerModule] = new TreeLogger(_this.grid);\n }\n };\n this.grid.printComplete = this.triggerEvents.bind(this);\n this.grid.actionFailure = this.triggerEvents.bind(this);\n this.extendedGridDataBoundEvent();\n this.extendedGridEvents();\n this.extendedGridActionEvents();\n this.extendedGridEditEvents();\n this.bindGridDragEvents();\n this.bindCallBackEvents();\n };\n TreeGrid.prototype.lastRowBorder = function (visiblerow, isAddBorder) {\n for (var j = 0; j < visiblerow.cells.length; j++) {\n if (isAddBorder) {\n addClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n else {\n removeClass([visiblerow.cells[parseInt(j.toString(), 10)]], 'e-lastrowcell');\n }\n }\n };\n TreeGrid.prototype.isPixelHeight = function () {\n if (this.height !== 'auto' && this.height.toString().indexOf('%') === -1) {\n return true;\n }\n else {\n return false;\n }\n };\n TreeGrid.prototype.extendedGridDataBoundEvent = function () {\n var _this = this;\n this.grid.dataBound = function (args) {\n _this.updateRowTemplate();\n _this.updateColumnModel();\n _this.updateAltRow(_this.getRows());\n _this.notify('dataBoundArg', args);\n if (isRemoteData(_this) && !isOffline(_this) && !_this.hasChildMapping) {\n var req = void 0;\n if (_this.dataResults.result) {\n req = 0;\n }\n else {\n req = 1;\n }\n setValue('grid.contentModule.isLoaded', !(req > 0), _this);\n }\n if (_this.isPixelHeight() && _this.initialRender) {\n var rows = _this.getContentTable().rows;\n var totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i > 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n if (totalRows[parseInt(i.toString(), 10)].nextElementSibling) {\n _this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], true);\n }\n break;\n }\n }\n }\n var action = 'action';\n if (_this.enableVirtualization && _this.selectionSettings.persistSelection && (_this.dataResults[\"\" + action] === 'expand' || _this.dataResults[\"\" + action] === 'collapse')) {\n var refreshPersistSelection = 'refreshPersistSelection';\n _this.grid.selectionModule[\"\" + refreshPersistSelection]();\n if (_this.grid.selectionSettings.type === 'Single') {\n var updateRowSelection = 'updateRowSelection';\n var index = _this.getCurrentViewRecords().indexOf(_this.grid.selectionModule['data']);\n _this.grid.selectionModule[\"\" + updateRowSelection](_this.getRows()[parseInt(index.toString(), 10)], index);\n }\n }\n _this.trigger(events.dataBound, args);\n _this.initialRender = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.beforeDataBound = function (args) {\n var dataSource = 'dataSource';\n var requestType = getObject('action', args);\n if (((isRemoteData(treeGrid) && !isOffline(treeGrid)) || isCountRequired(this)) && requestType !== 'edit') {\n treeGrid.notify('updateRemoteLevel', args);\n args = (treeGrid.dataResults);\n }\n else if (treeGrid.flatData.length === 0 && isOffline(treeGrid) && treeGrid.dataSource instanceof DataManager) {\n var dm = treeGrid.dataSource;\n treeGrid.dataModule.convertToFlatData(dm.dataSource.json);\n args.result = treeGrid.grid.dataSource[\"\" + dataSource].json = treeGrid.flatData;\n }\n if (!isRemoteData(treeGrid) && !isCountRequired(this) && !isNullOrUndefined(treeGrid.dataSource)) {\n if (this.isPrinting) {\n setValue('isPrinting', true, args);\n }\n treeGrid.notify('dataProcessor', args);\n //args = treeGrid.dataModule.dataProcessor(args);\n }\n extend(args, treeGrid.dataResults);\n if (treeGrid.enableImmutableMode) {\n args.result = args.result.slice();\n }\n if (treeGrid.initialRender) {\n this.contentModule.objectEqualityChecker = treeGrid.objectEqualityChecker;\n }\n // treeGrid.notify(events.beforeDataBound, args);\n if (!this.isPrinting) {\n var callBackPromise_1 = new Deferred();\n treeGrid.trigger(events.beforeDataBound, args, function (beforeDataBoundArgs) {\n callBackPromise_1.resolve(beforeDataBoundArgs);\n });\n return callBackPromise_1;\n }\n };\n this.grid.log = function (type, args) {\n if (_this.loggerModule) {\n _this.loggerModule.log(type, args);\n }\n };\n };\n TreeGrid.prototype.bindCallBackEvents = function () {\n var _this = this;\n this.grid.toolbarClick = function (args) {\n if ((args.item.id === _this.grid.element.id + '_excelexport' && _this.allowExcelExport === false) ||\n (args.item.id === _this.grid.element.id + '_pdfexport' && _this.allowPdfExport === false) ||\n (args.item.id === _this.grid.element.id + '_csvexport' && _this.allowExcelExport === false)) {\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.toolbarClick, args, function (toolbarargs) {\n if (!toolbarargs.cancel) {\n _this.notify(events.toolbarClick, args);\n }\n callBackPromise.resolve(toolbarargs);\n });\n return callBackPromise;\n };\n this.grid.cellSelecting = function (args) {\n var actualTarget = 'actualTarget';\n var target = _this.grid.selectionModule[\"\" + actualTarget];\n if (!isNullOrUndefined(target) && (target.classList.contains('e-treegridexpand') || target.classList.contains('e-treegridcollapse'))) {\n args.cancel = true;\n }\n var callBackPromise = new Deferred();\n _this.trigger(getObject('name', args), args, function (cellselectingArgs) {\n callBackPromise.resolve(cellselectingArgs);\n });\n return callBackPromise;\n };\n this.grid.beginEdit = function (args) {\n if (!isNullOrUndefined(args.row) && args.row.classList.contains('e-summaryrow')) {\n args.cancel = true;\n return;\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.beginEdit, args, function (begineditArgs) {\n callBackPromise.resolve(begineditArgs);\n });\n return callBackPromise;\n };\n };\n TreeGrid.prototype.extendedGridEditEvents = function () {\n var _this = this;\n this.grid.dataStateChange = function (args) {\n if (_this.isExpandRefresh) {\n _this.isExpandRefresh = false;\n _this.grid.dataSource = { result: _this.flatData, count: getValue('count', _this.grid.dataSource) };\n }\n else {\n if (args.action.requestType !== 'infiniteScroll') {\n _this.infiniteScrollData = [];\n }\n _this.trigger(events.dataStateChange, args);\n }\n };\n this.grid.cellSave = function (args) {\n if (_this.grid.isContextMenuOpen()) {\n var contextitems = _this.grid.contextMenuModule.contextMenu.element.getElementsByClassName('e-selected')[0];\n if ((isNullOrUndefined(contextitems) || contextitems.id !== _this.element.id + '_gridcontrol_cmenu_Save')) {\n args.cancel = true;\n }\n }\n var callBackPromise = new Deferred();\n _this.trigger(events.cellSave, args, function (cellsaveArgs) {\n if (!cellsaveArgs.cancel) {\n _this.notify(events.cellSave, cellsaveArgs);\n }\n callBackPromise.resolve(cellsaveArgs);\n });\n return callBackPromise;\n };\n this.grid.cellSaved = function (args) {\n _this.trigger(events.cellSaved, args);\n _this.notify(events.cellSaved, args);\n };\n this.grid.cellEdit = function (args) {\n var prom = 'promise';\n var promise = new Deferred();\n args[\"\" + prom] = promise;\n _this.notify(events.cellEdit, args);\n return promise;\n };\n this.grid.batchAdd = function (args) {\n _this.trigger(events.batchAdd, args);\n _this.notify(events.batchAdd, args);\n };\n this.grid.beforeBatchSave = function (args) {\n _this.trigger(events.beforeBatchSave, args);\n _this.notify(events.beforeBatchSave, args);\n };\n this.grid.beforeBatchAdd = function (args) {\n _this.trigger(events.beforeBatchAdd, args);\n _this.notify(events.beforeBatchAdd, args);\n };\n this.grid.batchDelete = function (args) {\n _this.trigger(events.batchDelete, args);\n _this.notify(events.batchDelete, args);\n };\n this.grid.beforeBatchDelete = function (args) {\n _this.trigger(events.beforeBatchDelete, args);\n _this.notify(events.beforeBatchDelete, args);\n };\n this.grid.batchCancel = function (args) {\n if (_this.editSettings.mode !== 'Cell') {\n _this.trigger(events.batchCancel, args);\n }\n _this.notify(events.batchCancel, args);\n };\n };\n TreeGrid.prototype.updateRowTemplate = function () {\n var _this = this;\n if (this.rowTemplate) {\n if (this.isReact && this.getContentTable().rows.length === 0) {\n setTimeout(function () {\n _this.treeColumnRowTemplate();\n if (_this.enableCollapseAll) {\n var currentData = _this.getCurrentViewRecords();\n var rows = _this.getContentTable().rows;\n for (var i = 0; i < rows.length; i++) {\n var args = { data: currentData[parseInt(i.toString(), 10)],\n row: rows[parseInt(i.toString(), 10)] };\n _this.renderModule.RowModifier(args);\n }\n }\n }, 0);\n }\n else {\n this.treeColumnRowTemplate();\n }\n }\n };\n TreeGrid.prototype.bindedDataSource = function () {\n var dataSource = 'dataSource';\n var isDataAvailable = 'isDataAvailable';\n var adaptor = 'adaptor';\n var ready = 'ready';\n if (this.dataSource && isCountRequired(this)) {\n var data = this.flatData;\n var datacount = getValue('count', this.dataSource);\n this.grid.dataSource = { result: data, count: datacount };\n }\n else {\n this.grid.dataSource = !(this.dataSource instanceof DataManager) ?\n this.flatData : new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor);\n }\n if (this.dataSource instanceof DataManager && (this.dataSource.dataSource.offline || this.dataSource.ready)) {\n this.grid.dataSource[\"\" + dataSource].json = extendArray(this.dataSource[\"\" + dataSource].json);\n this.grid.dataSource[\"\" + ready] = this.dataSource.ready;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n if (!isNullOrUndefined(this.grid.dataSource[\"\" + ready])) {\n this.grid.dataSource[\"\" + ready].then(function (e) {\n var dm = proxy_1.grid.dataSource;\n dm[\"\" + dataSource].offline = true;\n dm[\"\" + isDataAvailable] = true;\n dm[\"\" + dataSource].json = e.result;\n dm[\"\" + adaptor] = new JsonAdaptor();\n });\n }\n }\n };\n TreeGrid.prototype.extendedGridActionEvents = function () {\n var _this = this;\n this.grid.actionBegin = function (args) {\n if (args.requestType === 'sorting' && args.target && args.target.parentElement &&\n args.target.parentElement.classList.contains('e-hierarchycheckbox')) {\n args.cancel = true;\n }\n var requestType = getObject('requestType', args);\n if (requestType === 'reorder') {\n _this.notify('getColumnIndex', {});\n }\n if (isRemoteData(_this) && _this.enableVirtualization) {\n if (args.requestType === 'virtualscroll') {\n _this.query.expand('VirtualScrollingAction');\n _this.showSpinner();\n }\n else if (args.requestType === 'searching' && args.searchString === '') {\n _this.query.expand('ClearSearchingAction');\n }\n else if (args.action === 'clearFilter') {\n _this.query.expand('ClearFilteringAction');\n }\n }\n _this.notify('actionBegin', { editAction: args });\n if (!isRemoteData(_this) && !isNullOrUndefined(_this.filterModule) && !isCountRequired(_this)\n && (_this.grid.filterSettings.columns.length === 0 && _this.grid.searchSettings.key.length === 0)) {\n _this.notify('clearFilters', { flatData: _this.grid.dataSource });\n _this.grid.setProperties({ dataSource: _this.dataResults.result }, true);\n if (isNullOrUndefined(_this.grid['changedProperties'].dataSource)) {\n _this.grid.renderModule.data.dataManager = _this.grid.dataSource instanceof DataManager ?\n _this.grid.dataSource :\n (isNullOrUndefined(_this.grid.dataSource) ? new DataManager() : new DataManager(_this.grid.dataSource));\n _this.grid.renderModule.data.isQueryInvokedFromData = true;\n _this.grid.query = _this.grid.query instanceof Query ? _this.grid.query : new Query();\n }\n }\n if (_this.action !== 'indenting' && _this.action !== 'outdenting') {\n var callBackPromise_2 = new Deferred();\n _this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.notify(events.beginEdit, actionArgs);\n }\n callBackPromise_2.resolve(actionArgs);\n });\n return callBackPromise_2;\n }\n };\n this.grid.actionComplete = function (args) {\n _this.notify('actioncomplete', args);\n _this.updateColumnModel();\n _this.updateTreeGridModel();\n if (args.requestType === 'reorder') {\n _this.notify('setColumnIndex', {});\n }\n _this.notify('actionComplete', { editAction: args });\n if (args.requestType === 'add' && (_this.editSettings.newRowPosition !== 'Top' && _this.editSettings.newRowPosition !== 'Bottom')) {\n _this.notify(events.beginAdd, args);\n }\n if (args.requestType === 'batchsave') {\n _this.notify(events.batchSave, args);\n }\n _this.notify('updateGridActions', args);\n if (args.requestType === 'save' && _this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n _this.grid.refresh();\n }\n if (args.action === 'filter') {\n if (_this.filterModule['currentFilterObject'] !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.requestType === 'searching') {\n if (_this.searchSettings.key !== '' && _this.enableVirtualization && !_this.initialRender && !(isRemoteData(_this) && _this.enableVirtualization)) {\n _this.expandAll();\n }\n }\n if (args.action === 'clearFilter' && _this.enableCollapseAll) {\n _this.collapseAll();\n }\n if (_this.action === 'indenting' || _this.action === 'outdenting') {\n _this.action = _this.action === 'indenting' ? 'indented' : 'outdented';\n var selectedItem_1 = [_this.selectedRecords];\n var actionArgs = {\n data: selectedItem_1,\n dropIndex: _this.dropIndex,\n dropPosition: _this.dropPosition,\n modifiedRecords: _this.modifiedRecords,\n requestType: _this.action,\n row: _this.selectedRows\n };\n _this.trigger(events.actionComplete, actionArgs);\n var currentPageItem = _this.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === selectedItem_1[0].uniqueID;\n });\n if (!currentPageItem.length) {\n _this.refreshToolbarItems();\n }\n _this.action = '';\n _this.selectedRecords = _this.selectedRows = _this.modifiedRecords = [];\n }\n else {\n if (_this.grid.isFrozenGrid() && _this.enableVirtualization && args['tableName'] === 'movable') {\n var movableContent = _this.grid.element.querySelector('.' + literals.movableContent);\n var frozenContent = _this.grid.element.querySelector('.' + literals.frozenContent);\n movableContent.style.height = frozenContent.style.height = 'auto';\n }\n _this.trigger(events.actionComplete, args);\n }\n };\n };\n TreeGrid.prototype.extendedGridEvents = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var treeGrid = this;\n this.grid.recordDoubleClick = function (args) {\n _this.trigger(events.recordDoubleClick, args);\n _this.notify(events.recordDoubleClick, args);\n };\n this.grid.detailDataBound = function (args) {\n _this.notify('detaildataBound', args);\n _this.trigger(events.detailDataBound, args);\n };\n this.grid.rowDataBound = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.RowModifier(args);\n };\n this.grid.queryCellInfo = function (args) {\n if (isNullOrUndefined(this.isPrinting)) {\n setValue('isPrinting', false, args);\n }\n else {\n setValue('isPrinting', this.isPrinting, args);\n }\n treeGrid.renderModule.cellRender(args);\n };\n this.grid.contextMenuClick = function (args) {\n _this.notify(events.contextMenuClick, args);\n _this.trigger(events.contextMenuClick, args);\n };\n this.grid.contextMenuOpen = function (args) {\n _this.notify(events.contextMenuOpen, args);\n _this.trigger(events.contextMenuOpen, args);\n };\n this.grid.queryCellInfo = function (args) {\n _this.renderModule.cellRender(args);\n };\n };\n TreeGrid.prototype.bindGridDragEvents = function () {\n var _this = this;\n this.grid.rowDragStartHelper = function (args) {\n _this.trigger(events.rowDragStartHelper, args);\n };\n this.grid.rowDragStart = function (args) {\n _this.trigger(events.rowDragStart, args);\n };\n this.grid.rowDrag = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowdraging, args);\n _this.trigger(events.rowDrag, args);\n };\n this.grid.rowDrop = function (args) {\n if (_this.grid.isEdit) {\n args.cancel = true;\n return;\n }\n _this.notify(events.rowDropped, args);\n args.cancel = true;\n };\n };\n /**\n * Renders TreeGrid component\n *\n * @private\n * @returns {void}\n */\n TreeGrid.prototype.loadGrid = function () {\n this.bindGridProperties();\n this.bindGridEvents();\n setValue('registeredTemplate', this.registeredTemplate, this.grid);\n var ref = 'viewContainerRef';\n setValue('viewContainerRef', this[\"\" + ref], this.grid);\n };\n /**\n * AutoGenerate TreeGrid columns from first record\n *\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.autoGenerateColumns = function () {\n if (!this.columns.length && (!this.dataModule.isRemote() && Object.keys(this.dataSource).length)) {\n this.columns = [];\n // if (this.dataSource instanceof DataManager) {\n // record = (this.dataSource).dataSource.json[0];\n // } else {\n var record = this.dataSource[0];\n // }\n var keys = Object.keys(record);\n for (var i = 0; i < keys.length; i++) {\n if ([this.childMapping, this.parentIdMapping].indexOf(keys[parseInt(i.toString(), 10)]) === -1) {\n this.columns.push(keys[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n TreeGrid.prototype.getGridEditSettings = function () {\n var edit = {};\n var guid = 'guid';\n edit.allowAdding = this.editSettings.allowAdding;\n edit.allowEditing = this.editSettings.allowEditing;\n edit.allowDeleting = this.editSettings.allowDeleting;\n edit.newRowPosition = this.editSettings.newRowPosition === 'Bottom' ? 'Bottom' : 'Top';\n edit.allowEditOnDblClick = this.editSettings.allowEditOnDblClick;\n edit.showConfirmDialog = this.editSettings.showConfirmDialog;\n edit.template = this.editSettings.template;\n edit.showDeleteConfirmDialog = this.editSettings.showDeleteConfirmDialog;\n edit.allowNextRowEdit = this.editSettings.allowNextRowEdit;\n edit[\"\" + guid] = this.editSettings[\"\" + guid];\n edit.dialog = this.editSettings.dialog;\n switch (this.editSettings.mode) {\n case 'Dialog':\n edit.mode = this.editSettings.mode;\n break;\n case 'Batch':\n edit.mode = this.editSettings.mode;\n break;\n case 'Row':\n edit.mode = 'Normal';\n break;\n case 'Cell':\n edit.mode = 'Normal';\n edit.showConfirmDialog = false;\n break;\n }\n return edit;\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - returns context menu items\n */\n TreeGrid.prototype.getContextMenu = function () {\n if (this.contextMenuItems) {\n var items = [];\n for (var i = 0; i < this.contextMenuItems.length; i++) {\n switch (this.contextMenuItems[parseInt(i.toString(), 10)]) {\n case 'AddRow':\n case ContextMenuItems.AddRow:\n items.push({ text: this.l10n.getConstant('AddRow'),\n target: '.e-content', id: this.element.id + '_gridcontrol_cmenu_AddRow',\n items: [{ text: this.l10n.getConstant('Above'), id: 'Above' }, { text: this.l10n.getConstant('Below'), id: 'Below' }, { text: this.l10n.getConstant('Child'), id: 'Child' }] });\n break;\n case 'Indent':\n case ContextMenuItems.RowIndent:\n items.push({ text: this.l10n.getConstant('RowIndent'),\n target: '.e-content', iconCss: 'e-indent e-icons', id: this.element.id + '_gridcontrol_cmenu_Indent' });\n break;\n case 'Outdent':\n case ContextMenuItems.RowOutdent:\n items.push({ text: this.l10n.getConstant('RowOutdent'),\n target: '.e-content', iconCss: 'e-outdent e-icons', id: this.element.id + '_gridcontrol_cmenu_Outdent' });\n break;\n default:\n items.push(this.contextMenuItems[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n /**\n * Defines grid toolbar from treegrid toolbar model\n *\n * @hidden\n * @returns {Object[]} - Returns toolbar items\n */\n TreeGrid.prototype.getGridToolbar = function () {\n if (this.toolbar) {\n this.l10n = new L10n('treegrid', this.defaultLocale, this.locale);\n var items = [];\n var tooltipText = void 0;\n for (var i = 0; i < this.toolbar.length; i++) {\n switch (this.toolbar[parseInt(i.toString(), 10)]) {\n case 'Search':\n case ToolbarItem.Search:\n items.push('Search');\n break;\n case 'Print':\n case ToolbarItem.Print:\n items.push('Print');\n break;\n case 'ExpandAll':\n case ToolbarItem.ExpandAll:\n tooltipText = this.l10n.getConstant('ExpandAll');\n items.push({ text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-expand', id: this.element.id + '_gridcontrol_expandall' });\n break;\n case 'CollapseAll':\n case ToolbarItem.CollapseAll:\n tooltipText = this.l10n.getConstant('CollapseAll');\n items.push({ text: tooltipText,\n tooltipText: tooltipText, prefixIcon: 'e-collapse', id: this.element.id + '_gridcontrol_collapseall'\n });\n break;\n case 'Indent':\n case ToolbarItem.RowIndent:\n tooltipText = this.l10n.getConstant('RowIndent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-indent', id: this.element.id + '_gridcontrol_indent'\n });\n break;\n case 'Outdent':\n case ToolbarItem.RowOutdent:\n tooltipText = this.l10n.getConstant('RowOutdent');\n items.push({\n text: tooltipText, tooltipText: tooltipText,\n prefixIcon: 'e-outdent', id: this.element.id + '_gridcontrol_outdent'\n });\n break;\n default:\n items.push(this.toolbar[parseInt(i.toString(), 10)]);\n }\n }\n return items;\n }\n else {\n return null;\n }\n };\n TreeGrid.prototype.getGridColumns = function (columns, isEmptyColumnModel, index) {\n if (isEmptyColumnModel === void 0) { isEmptyColumnModel = true; }\n if (index === void 0) { index = 0; }\n var column = columns;\n var stackedColumn = 'columns';\n if (isEmptyColumnModel) {\n this.columnModel = [];\n }\n var treeGridColumn;\n var gridColumn;\n if (this.columnModel.length === 0) {\n index = index === 0 ? -1 : index;\n }\n var gridColumnCollection = [];\n for (var i = 0; i < column.length; i++) {\n index = index + 1;\n var treeColumn = this.grid.getColumnByUid(column[parseInt(i.toString(), 10)].uid);\n gridColumn = treeColumn ? treeColumn : {};\n treeGridColumn = {};\n if (typeof this.columns[parseInt(i.toString(), 10)] === 'string') {\n gridColumn.field = treeGridColumn.field = this.columns[parseInt(i.toString(), 10)];\n }\n else {\n for (var _i = 0, _a = Object.keys(column[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (index === this.treeColumnIndex && prop === 'template') {\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (prop === 'columns' && !isNullOrUndefined(column[parseInt(i.toString(), 10)][\"\" + prop])) {\n gridColumn[\"\" + prop] = this.getGridColumns(column[parseInt(i.toString(), 10)][\"\" + prop], false, this.columnModel.length - 1);\n treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n else if (this.initialRender && !isNullOrUndefined(treeColumn) && this.enablePersistence && prop === 'edit') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = treeColumn[\"\" + prop];\n }\n else if (!(treeColumn) || prop !== 'sortComparer') {\n gridColumn[\"\" + prop] = treeGridColumn[\"\" + prop] = column[parseInt(i.toString(), 10)][\"\" + prop];\n }\n }\n }\n if (!treeGridColumn[\"\" + stackedColumn]) {\n this.columnModel.push(new Column(treeGridColumn));\n }\n gridColumnCollection.push(gridColumn);\n if (!isNullOrUndefined(this.columnModel[this.treeColumnIndex]) && this.enableRtl) {\n if (gridColumn.field === this.columnModel[this.treeColumnIndex].field) {\n if (isNullOrUndefined(this.treeColumnTextAlign)) {\n this.treeColumnTextAlign = this.columnModel[this.treeColumnIndex].textAlign;\n this.treeColumnField = this.columnModel[this.treeColumnIndex].field;\n }\n gridColumn.textAlign = 'Right';\n }\n }\n }\n return gridColumnCollection;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeGridModel} newProp - properties details which has to be modified\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.onPropertyChanged = function (newProp) {\n var properties = Object.keys(newProp);\n var requireRefresh = false;\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'treeColumnIndex':\n this.grid.refreshColumns();\n break;\n case 'allowPaging':\n this.grid.allowPaging = this.allowPaging;\n break;\n case 'pageSettings':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.pageSettings = getActualProperties(this.pageSettings);\n requireRefresh = true;\n break;\n case 'enableVirtualization':\n this.grid.enableVirtualization = this.enableVirtualization;\n break;\n case 'enableColumnVirtualization':\n this.grid.enableColumnVirtualization = this.enableColumnVirtualization;\n break;\n case 'toolbar':\n this.grid.toolbar = this.getGridToolbar();\n break;\n case 'allowSelection':\n this.grid.allowSelection = this.allowSelection;\n break;\n case 'selectionSettings':\n this.grid.selectionSettings = getActualProperties(this.selectionSettings);\n break;\n case 'allowSorting':\n this.grid.allowSorting = this.allowSorting;\n break;\n case 'allowMultiSorting':\n this.grid.allowMultiSorting = this.allowMultiSorting;\n break;\n case 'sortSettings':\n this.grid.sortSettings = getActualProperties(this.sortSettings);\n break;\n case 'searchSettings':\n this.grid.searchSettings = getActualProperties(this.searchSettings);\n break;\n case 'allowFiltering':\n this.grid.allowFiltering = this.allowFiltering;\n break;\n case 'filterSettings':\n if (!this.initialRender) {\n this.grid.filterSettings = getActualProperties(this.filterSettings);\n }\n break;\n case 'showColumnMenu':\n this.grid.showColumnMenu = this.showColumnMenu;\n break;\n case 'allowRowDragAndDrop':\n this.grid.allowRowDragAndDrop = this.allowRowDragAndDrop;\n break;\n case 'aggregates':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.aggregates = getActualProperties(this.aggregates);\n break;\n case 'enableInfiniteScrolling':\n this.grid.enableInfiniteScrolling = this.enableInfiniteScrolling;\n break;\n case 'dataSource':\n this.isLocalData = (!(this.dataSource instanceof DataManager) || (!isNullOrUndefined(this.dataSource.ready))\n || this.dataSource.adaptor instanceof RemoteSaveAdaptor);\n this.convertTreeData(this.dataSource);\n if (this.isLocalData) {\n if (isCountRequired(this)) {\n var count = getValue('count', this.dataSource);\n this.grid.dataSource = { result: this.flatData, count: count };\n }\n else {\n var data = this.dataSource;\n this.grid.dataSource = !(data instanceof DataManager) ?\n this.flatData : new DataManager(data.dataSource, data.defaultQuery, data.adaptor);\n }\n if (this.enableVirtualization) {\n this.grid.contentModule.isDataSourceChanged = true;\n }\n }\n else {\n this.bindedDataSource();\n if (this.enableVirtualization) {\n this.grid.contentModule.removeEventListener();\n this.grid.contentModule.eventListener('on');\n this.grid.contentModule.renderTable();\n }\n }\n break;\n case 'query':\n this.grid.query = this.query;\n break;\n case 'enableCollapseAll':\n if (newProp[\"\" + prop]) {\n this.collapseAll();\n }\n else {\n this.expandAll();\n }\n break;\n case 'expandStateMapping':\n this.grid.refresh();\n break;\n case 'gridLines':\n this.grid.gridLines = this.gridLines;\n break;\n case 'rowTemplate':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.rowTemplate = getActualProperties(this.rowTemplate);\n break;\n case 'frozenRows':\n this.grid.frozenRows = this.frozenRows;\n break;\n case 'frozenColumns':\n this.grid.frozenColumns = this.frozenColumns;\n break;\n case 'rowHeight':\n this.grid.rowHeight = this.rowHeight;\n break;\n case 'height':\n if (!isNullOrUndefined(this.height) && typeof (this.height) === 'string' && this.height.indexOf('%') !== -1) {\n this.element.style.height = this.height;\n }\n this.grid.height = this.height;\n break;\n case 'width':\n if (!isNullOrUndefined(this.width) && typeof (this.width) === 'string' && this.width.indexOf('%') !== -1) {\n this.element.style.width = this.width;\n }\n this.grid.width = this.width;\n break;\n case 'locale':\n this.grid.locale = this.locale;\n this.TreeGridLocale();\n this.grid.toolbar = this.getGridToolbar();\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'selectedRowIndex':\n this.grid.selectedRowIndex = this.selectedRowIndex;\n break;\n case 'enableAltRow':\n this.grid.enableAltRow = this.enableAltRow;\n break;\n case 'enableHover':\n this.grid.enableHover = this.enableHover;\n break;\n case 'enableAutoFill':\n this.grid.enableAutoFill = this.enableAutoFill;\n break;\n case 'enableAdaptiveUI':\n this.grid.enableAdaptiveUI = this.enableAdaptiveUI;\n break;\n case 'enableImmutableMode':\n this.grid.enableImmutableMode = this.enableImmutableMode;\n break;\n case 'allowExcelExport':\n this.grid.allowExcelExport = this.allowExcelExport;\n break;\n case 'allowPdfExport':\n this.grid.allowPdfExport = this.allowPdfExport;\n break;\n case 'enableRtl':\n if (!isNullOrUndefined(this.treeColumnField)) {\n this.updateTreeColumnTextAlign();\n }\n this.grid.enableRtl = this.enableRtl;\n break;\n case 'allowReordering':\n this.grid.allowReordering = this.allowReordering;\n break;\n case 'allowResizing':\n this.grid.allowResizing = this.allowResizing;\n break;\n case 'textWrapSettings':\n this.grid.textWrapSettings = getActualProperties(this.textWrapSettings);\n break;\n case 'allowTextWrap':\n this.grid.allowTextWrap = getActualProperties(this.allowTextWrap);\n this.grid.refresh();\n break;\n case 'contextMenuItems':\n this.grid.contextMenuItems = this.getContextMenu();\n break;\n case 'showColumnChooser':\n this.grid.showColumnChooser = this.showColumnChooser;\n break;\n case 'detailTemplate':\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n this.grid.detailTemplate = getActualProperties(this.detailTemplate);\n break;\n case 'columnMenuItems':\n this.grid.columnMenuItems = getActualProperties(this.columnMenuItems);\n break;\n case 'editSettings':\n if (this.grid.isEdit && this.grid.editSettings.mode === 'Normal' && newProp[\"\" + prop].mode &&\n (newProp[\"\" + prop].mode === 'Cell' || newProp[\"\" + prop].mode === 'Row')) {\n this.grid.closeEdit();\n }\n this.grid.editSettings = this.getGridEditSettings();\n break;\n }\n if (requireRefresh) {\n this.grid.refresh();\n }\n }\n };\n TreeGrid.prototype.updateTreeColumnTextAlign = function () {\n var gridColumn = this.grid.getColumnByField(this.treeColumnField);\n gridColumn.textAlign = this.enableRtl ? 'Right' : this.treeColumnTextAlign;\n this.grid.refreshColumns();\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @method destroy\n * @returns {void}\n */\n TreeGrid.prototype.destroy = function () {\n var treeGridElement = this.element;\n if (!treeGridElement) {\n return;\n }\n var hasTreeGridChild = treeGridElement.querySelector('.' + 'e-gridheader') &&\n treeGridElement.querySelector('.' + 'e-gridcontent') ? true : false;\n if (hasTreeGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n if (hasTreeGridChild) {\n _super.prototype.destroy.call(this);\n }\n if (this.grid) {\n this.grid.destroy();\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n }\n var modules = ['dataModule', 'sortModule', 'renderModule', 'filterModule', 'printModule', 'clipboardModule',\n 'excelExportModule', 'pdfExportModule', 'toolbarModule', 'summaryModule', 'reorderModule', 'resizeModule',\n 'pagerModule', 'keyboardModule', 'columnMenuModule', 'contextMenuModule', 'editModule', 'virtualScrollModule',\n 'selectionModule', 'detailRow', 'rowDragAndDropModule', 'freezeModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n this.grid = null;\n };\n /**\n * Update the TreeGrid model\n *\n * @method dataBind\n * @returns {void}\n * @private\n */\n TreeGrid.prototype.dataBind = function () {\n if (isNullOrUndefined(this.grid)) {\n return;\n }\n if (!isNullOrUndefined(this.rowDropSettings.targetID) &&\n isNullOrUndefined(document.getElementById(this.grid.rowDropSettings.targetID))) {\n document.getElementById(this.rowDropSettings.targetID).id = this.grid.rowDropSettings.targetID;\n this.rowDropSettings.targetID = this.grid.rowDropSettings.targetID;\n }\n _super.prototype.dataBind.call(this);\n this.grid.dataBind();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns persist properties details\n * @hidden\n */\n TreeGrid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'treeColumnIndex'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'pageSizeMode', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent', 'hierarchyMode'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var k = 0, val = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; (!isNullOrUndefined(val) && k < val.length); k++) {\n var objVal = val[parseInt(k.toString(), 10)];\n delete currentObject[\"\" + objVal];\n }\n }\n this.ignoreInArrays(ignoreOnColumn, this.columns);\n return this.addOnPersist(keyEntity);\n };\n TreeGrid.prototype.ignoreInArrays = function (ignoreOnColumn, columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n this.ignoreInArrays(ignoreOnColumn, columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n this.ignoreInColumn(ignoreOnColumn, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n TreeGrid.prototype.ignoreInColumn = function (ignoreOnColumn, column) {\n if (isNullOrUndefined(column.template)) {\n for (var i = 0; i < ignoreOnColumn.length; i++) {\n delete column[ignoreOnColumn[parseInt(i.toString(), 10)]];\n column.filter = {};\n }\n }\n };\n TreeGrid.prototype.mouseClickHandler = function (e) {\n if (!isNullOrUndefined(e.touches)) {\n return;\n }\n var target = e.target;\n if ((target.classList.contains('e-treegridexpand') ||\n target.classList.contains('e-treegridcollapse')) && (!this.isEditCollapse && !this.grid.isEdit)) {\n this.expandCollapseRequest(target);\n }\n var isEllipsisTooltip = 'isEllipsisTooltip';\n if ((target.classList.contains('e-treegridexpand') || target.classList.contains('e-treegridcollapse')) &&\n (this.grid[\"\" + isEllipsisTooltip]())) {\n this.grid['toolTipObj'].close();\n }\n this.isEditCollapse = false;\n this.notify('checkboxSelection', { target: target });\n if (this.grid.isCheckBoxSelection && !this.grid.isPersistSelection) {\n if (this.aggregates.map(function (ag) { return ag.showChildSummary === true; }).length) {\n var checkedTarget = this.grid.getHeaderContent().querySelector('.e-checkselectall');\n var checkedLen = this.grid.getSelectedRowIndexes().length;\n var totalRecords = this.getCurrentViewRecords().length;\n if (checkedLen === totalRecords) {\n var spanEle = checkedTarget.nextElementSibling;\n removeClass([spanEle], ['e-stop', 'e-uncheck']);\n addClass([spanEle], ['e-check']);\n }\n }\n }\n };\n /**\n * Returns TreeGrid rows\n *\n * @returns {HTMLTableRowElement[]} - Returns row elements collection\n */\n TreeGrid.prototype.getRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets the pager of the TreeGrid.\n *\n * @returns {Element} - Returns pager element\n */\n TreeGrid.prototype.getPager = function () {\n return this.grid.getPager(); //get element from pager\n };\n /**\n * Adds a new record to the TreeGrid. 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 * @param {RowPosition} position - Defines the new row position to be added.\n * @returns {void}\n */\n TreeGrid.prototype.addRecord = function (data, index, position) {\n if (this.editModule) {\n var isAddedRowByMethod = 'isAddedRowByMethod';\n this.editModule[\"\" + isAddedRowByMethod] = true;\n this.editModule.addRecord(data, index, position);\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n TreeGrid.prototype.closeEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.closeEdit();\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 */\n TreeGrid.prototype.saveCell = function () {\n if (this.grid.editModule) {\n this.grid.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 TreeGrid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.grid.editModule) {\n this.grid.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n TreeGrid.prototype.updateRow = function (index, data) {\n if (this.grid.editModule) {\n if (!isNullOrUndefined(index)) {\n var griddata = this.grid.getCurrentViewRecords()[parseInt(index.toString(), 10)];\n extend(griddata, data);\n this.grid.editModule.updateRow(index, griddata);\n }\n else {\n this.grid.editModule.updateRow(index, data);\n }\n }\n };\n /**\n * Delete a record with Given options. If fieldName and data is not given then TreeGrid 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 TreeGrid.prototype.deleteRecord = function (fieldName, data) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRecord(fieldName, data);\n }\n };\n /**\n * To edit any particular row by TR element.\n *\n * @param {HTMLTableRowElement} row - Defines the table row to be edited.\n * @returns {void}\n */\n TreeGrid.prototype.startEdit = function (row) {\n if (this.grid.editModule) {\n this.grid.editModule.startEdit(row);\n }\n };\n /**\n * To edit any particular cell using row index and cell index.\n *\n * @param {number} rowIndex - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform cell edit.\n * @returns {void}\n */\n TreeGrid.prototype.editCell = function (rowIndex, field) {\n if (this.editModule) {\n this.editModule.editCell(rowIndex, field);\n }\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 TreeGrid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.grid.toolbarModule) {\n this.grid.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * If TreeGrid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n TreeGrid.prototype.endEdit = function () {\n if (this.grid.editModule) {\n this.grid.editModule.endEdit();\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 TreeGrid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\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 TreeGrid.prototype.deleteRow = function (tr) {\n if (this.grid.editModule) {\n this.grid.editModule.deleteRow(tr);\n }\n };\n /**\n * Get the names of the primary key columns of the TreeGrid.\n *\n * @returns {string[]} - Returns primary key collection\n */\n TreeGrid.prototype.getPrimaryKeyFieldNames = function () {\n return this.grid.getPrimaryKeyFieldNames();\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 TreeGrid.prototype.setCellValue = function (key, field, value) {\n this.grid.setCellValue(key, field, value);\n var rowIndex = this.grid.getRowIndexByPrimaryKey(key);\n var record = this.getCurrentViewRecords()[parseInt(rowIndex.toString(), 10)];\n if (!isNullOrUndefined(record)) {\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, field);\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 TreeGrid.prototype.setRowData = function (key, rowData) {\n var currentRecords = this.getCurrentViewRecords();\n var primaryKey = this.grid.getPrimaryKeyFieldNames()[0];\n var level = 0;\n var record = {};\n currentRecords.some(function (value) {\n if (value[\"\" + primaryKey] === key) {\n record = value;\n return true;\n }\n else {\n return false;\n }\n });\n level = record.level;\n rowData.level = level;\n rowData.index = record.index;\n rowData.childRecords = record.childRecords;\n rowData.taskData = record.taskData;\n rowData.uniqueID = record.uniqueID;\n rowData.parentItem = record.parentItem;\n rowData.checkboxState = record.checkboxState;\n rowData.hasChildRecords = record.hasChildRecords;\n rowData.parentUniqueID = record.parentUniqueID;\n rowData.expanded = record.expanded;\n this.grid.setRowData(key, rowData);\n var visibleRecords = this.getVisibleRecords();\n if (visibleRecords.length > 0 && key === (visibleRecords[visibleRecords.length - 1])[\"\" + primaryKey]) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(this.getRows()[currentRecords.indexOf(record)], sHeight <= clientHeight);\n }\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 TreeGrid.prototype.goToPage = function (pageNo) {\n if (this.grid.pagerModule) {\n this.grid.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 TreeGrid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.grid.pagerModule.updateExternalMessage(message);\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 cell element in grid content\n */\n TreeGrid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.columnModel, function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} - Returns tree grid column\n */\n TreeGrid.prototype.getColumnByUid = function (uid) {\n var Columns = this.initialRender ? this.grid.columns : this.columns;\n var columnModel = 'columnModel';\n if (this.grid.columns.length !== this.columnModel.length) {\n Columns = this.grid[\"\" + columnModel];\n }\n return iterateArrayOrObject(Columns, function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} - Returns column field name as collection\n */\n TreeGrid.prototype.getColumnFieldNames = function () {\n return this.grid.getColumnFieldNames();\n };\n /**\n * Gets the footer div of the TreeGrid.\n *\n * @returns {Element} - Returns footer content div element\n */\n TreeGrid.prototype.getFooterContent = function () {\n return this.grid.getFooterContent();\n };\n /**\n * Gets the footer table element of the TreeGrid.\n *\n * @returns {Element} - Returns footer content table element\n */\n TreeGrid.prototype.getFooterContentTable = function () {\n return this.grid.getFooterContentTable();\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 TreeGrid.prototype.showColumns = function (keys, showBy) {\n this.grid.showColumns(keys, showBy);\n this.updateColumnModel();\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 TreeGrid.prototype.hideColumns = function (keys, hideBy) {\n this.grid.hideColumns(keys, hideBy);\n this.updateColumnModel();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByField = function (field) {\n return this.grid.getColumnHeaderByField(field);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns column header element\n */\n TreeGrid.prototype.getColumnHeaderByUid = function (uid) {\n return this.grid.getColumnHeaderByUid(uid);\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByField = function (field) {\n return this.grid.getColumnIndexByField(field);\n };\n TreeGrid.prototype.getVirtualColIndexByUid = function (uid) {\n var columnModel = 'columnModel';\n var index = iterateArrayOrObject(this.grid[\"\" + columnModel], 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 a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} - Returns column index\n */\n TreeGrid.prototype.getColumnIndexByUid = function (uid) {\n return this.grid.getColumnIndexByUid(uid);\n };\n /**\n * Gets the columns from the TreeGrid.\n *\n * @param {boolean} isRefresh - Defined whether to update DOM\n * @returns {Column[]} - Returns treegrid columns collection\n */\n TreeGrid.prototype.getColumns = function (isRefresh) {\n this.updateColumnModel(this.grid.getColumns(isRefresh));\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnModel = function (column) {\n var temp;\n var field;\n var gridColumns = isNullOrUndefined(column) ? this.grid.getColumns() : column;\n if (this.treeColumnIndex !== -1 && this.columnModel[this.treeColumnIndex] &&\n !isNullOrUndefined(this.columnModel[this.treeColumnIndex].template)) {\n temp = this.columnModel[this.treeColumnIndex].template;\n field = this.columnModel[this.treeColumnIndex].field;\n }\n var gridColumn;\n if (!this.enableColumnVirtualization || (this.enableColumnVirtualization && this.columnModel.length === gridColumns.length)) {\n this.columnModel = [];\n for (var i = 0; i < gridColumns.length; i++) {\n gridColumn = {};\n for (var _i = 0, _a = Object.keys(gridColumns[parseInt(i.toString(), 10)]); _i < _a.length; _i++) {\n var prop = _a[_i];\n gridColumn[\"\" + prop] = gridColumns[parseInt(i.toString(), 10)][\"\" + prop];\n }\n this.columnModel.push(new Column(gridColumn));\n if (field === this.columnModel[parseInt(i.toString(), 10)].field && this.columnModel[parseInt(i.toString(), 10)].type !== 'checkbox' && (!isNullOrUndefined(temp) && temp !== '')) {\n this.columnModel[parseInt(i.toString(), 10)].template = temp;\n }\n }\n }\n var deepMerge = 'deepMerge';\n this[\"\" + deepMerge] = ['columns']; // Workaround for blazor updateModel\n if (this.grid.columns.length !== this.columnModel.length) {\n this.stackedHeader = true;\n }\n if (this.stackedHeader && this.allowResizing) {\n this.updateColumnsWidth(this.columns);\n }\n if (!this.stackedHeader) {\n merge(this.columns, this.columnModel);\n }\n this[\"\" + deepMerge] = undefined; // Workaround for blazor updateModel\n return this.columnModel;\n };\n TreeGrid.prototype.updateColumnsWidth = function (columns) {\n var _this = this;\n columns.forEach(function (column) {\n if (column.columns) {\n _this.updateColumnsWidth(column.columns);\n }\n else if (column.field) {\n var currentColumn = _this.grid.getColumnByField(column.field);\n if (!isNullOrUndefined(currentColumn)) {\n column.width = currentColumn.width;\n }\n }\n });\n };\n /**\n * Gets the content div of the TreeGrid.\n *\n * @returns {Element} - Return tree grid content element\n */\n TreeGrid.prototype.getContent = function () {\n return this.grid.getContent();\n };\n TreeGrid.prototype.mergePersistTreeGridData = function () {\n var persist1 = 'mergePersistGridData';\n this.grid[\"\" + persist1].apply(this);\n };\n TreeGrid.prototype.mergeColumns = function (storedColumn, columns) {\n var persist2 = 'mergeColumns';\n this.grid[\"\" + persist2].apply(this, [storedColumn, columns]);\n };\n TreeGrid.prototype.updateTreeGridModel = function () {\n this.setProperties({ filterSettings: getObject('properties', this.grid.filterSettings) }, true);\n this.setProperties({ pageSettings: getObject('properties', this.grid.pageSettings) }, true);\n this.setProperties({ searchSettings: getObject('properties', this.grid.searchSettings) }, true);\n this.setProperties({ sortSettings: getObject('properties', this.grid.sortSettings) }, true);\n };\n /**\n * Gets the content table of the TreeGrid.\n *\n * @returns {Element} - Returns content table element\n */\n TreeGrid.prototype.getContentTable = function () {\n return this.grid.getContentTable();\n };\n /**\n * Gets all the TreeGrid's data rows.\n *\n * @returns {Element[]} - Returns row elements\n */\n TreeGrid.prototype.getDataRows = function () {\n var dRows = [];\n var rows = this.grid.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains('e-summaryrow')) {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n return dRows;\n };\n /**\n * Get current visible data of TreeGrid.\n *\n * @returns {Object[]} - Returns current view records\n * @isGenericType true\n */\n TreeGrid.prototype.getCurrentViewRecords = function () {\n var isSummaryRow = 'isSummaryRow';\n return this.grid.currentViewData.filter(function (e) { return isNullOrUndefined(e[\"\" + isSummaryRow]); });\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} - Returns batch changes\n */\n TreeGrid.prototype.getBatchChanges = function () {\n return this.grid.editModule.getBatchChanges();\n };\n /**\n * Gets the header div of the TreeGrid.\n *\n * @returns {Element} - Returns Header content element\n */\n TreeGrid.prototype.getHeaderContent = function () {\n return this.grid.getHeaderContent();\n };\n /**\n * Gets the header table element of the TreeGrid.\n *\n * @returns {Element} - Return header table element\n */\n TreeGrid.prototype.getHeaderTable = function () {\n return this.grid.getHeaderTable();\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns row element\n */\n TreeGrid.prototype.getRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - Target row element\n * @returns {RowInfo} - Returns row information in a JSON object\n */\n TreeGrid.prototype.getRowInfo = function (target) {\n return this.grid.getRowInfo(target);\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} - Returns unique id based on column field name given\n */\n TreeGrid.prototype.getUidByColumnField = function (field) {\n return this.grid.getUidByColumnField(field);\n };\n /**\n * Gets the visible columns from the TreeGrid.\n *\n * @returns {Column[]} - Returns visible columns collection\n */\n TreeGrid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * By default, TreeGrid 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 TreeGrid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually shown spinner needs to hide by `hideSpinnner`.\n *\n * @returns {void}\n */\n TreeGrid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Refreshes the TreeGrid header and content.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refresh = function () {\n this.uniqueIDCollection = {};\n this.convertTreeData(this.dataSource);\n if (!isCountRequired(this)) {\n if (!(this.dataSource instanceof DataManager)) {\n this.grid.dataSource = this.flatData;\n }\n else {\n this.grid.setProperties({\n dataSource: new DataManager(this.dataSource.dataSource, this.dataSource.defaultQuery, this.dataSource.adaptor)\n }, true);\n }\n }\n this.grid.refresh();\n };\n /**\n * Get the records of checked rows.\n *\n * @returns {Object[]} - Returns records that has been checked\n * @isGenericType true\n */\n TreeGrid.prototype.getCheckedRecords = function () {\n return this.selectionModule.getCheckedrecords();\n };\n /**\n * Get the visible records corresponding to rows visually displayed.\n *\n * @returns {Object[]} - Returns visible records based on collapse state of rows\n * @isGenericType true\n */\n TreeGrid.prototype.getVisibleRecords = function () {\n var visibleRecords = [];\n var currentViewRecords = this.getCurrentViewRecords();\n if (!this.allowPaging) {\n for (var i = 0; i < currentViewRecords.length; i++) {\n visibleRecords.push(currentViewRecords[parseInt(i.toString(), 10)]);\n if (!currentViewRecords[parseInt(i.toString(), 10)].expanded) {\n i += findChildrenRecords(currentViewRecords[parseInt(i.toString(), 10)]).length;\n }\n }\n }\n else {\n visibleRecords = currentViewRecords;\n }\n return visibleRecords;\n };\n /**\n * Get the indexes of checked rows.\n *\n * @returns {number[]} - Returns checked row indexes\n */\n TreeGrid.prototype.getCheckedRowIndexes = function () {\n return this.selectionModule.getCheckedRowIndexes();\n };\n /**\n * Checked the checkboxes using rowIndexes.\n *\n * @param {number[]} indexes - row indexes\n * @returns {void}\n */\n TreeGrid.prototype.selectCheckboxes = function (indexes) {\n this.selectionModule.selectCheckboxes(indexes);\n };\n /**\n * Refreshes the TreeGrid column changes.\n *\n * @param {boolean} refreshUI - Defined whether to refresh the DOM\n * @returns {void}\n */\n TreeGrid.prototype.refreshColumns = function (refreshUI) {\n if (isNullOrUndefined(refreshUI) || refreshUI) {\n this.grid.columns = this.getGridColumns(this.columns);\n this.grid.refreshColumns();\n }\n else {\n this.grid.setProperties({ columns: this.getGridColumns(this.columns) }, true);\n }\n };\n /**\n * Refreshes the TreeGrid header.\n *\n * @returns {void}\n */\n TreeGrid.prototype.refreshHeader = function () {\n this.grid.refreshHeader();\n };\n /**\n * Expands or collapse child records\n *\n * @param {HTMLElement} target - Expand collapse icon cell as target element\n * @returns {void}\n * @hidden\n */\n TreeGrid.prototype.expandCollapseRequest = function (target) {\n if (this.editSettings.mode === 'Batch') {\n var obj = 'dialogObj';\n var showDialog = 'showDialog';\n if ((this.getBatchChanges()[this.changedRecords].length || this.getBatchChanges()[this.deletedRecords].length ||\n this.getBatchChanges()[this.addedRecords].length) && this.editSettings.showConfirmDialog) {\n var dialogObj = this.grid.editModule[\"\" + obj];\n this.grid.editModule[\"\" + showDialog]('CancelEdit', dialogObj);\n this.targetElement = target;\n return;\n }\n }\n if (this.rowTemplate) {\n var rowInfo = target.closest('.e-treerowcell').parentElement;\n var record = this.getCurrentViewRecords()[rowInfo.rowIndex];\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo, record);\n }\n else {\n this.expandRow(rowInfo, record);\n }\n }\n else {\n var rowInfo_1 = this.grid.getRowInfo(target);\n var record = rowInfo_1.rowData;\n if (this.grid.isFrozenGrid() && this.enableVirtualization && !Object.keys(record).length) {\n var freezeRows = 'freezeRows';\n record = this.grid.contentModule[\"\" + freezeRows].filter(function (e) { return e.uid === rowInfo_1.row.getAttribute('data-uid'); })[0].data;\n }\n if (this.enableImmutableMode) {\n record = this.getCurrentViewRecords()[rowInfo_1.rowIndex];\n }\n if (target.classList.contains('e-treegridexpand')) {\n this.collapseRow(rowInfo_1.row, record);\n }\n else {\n this.expandRow(rowInfo_1.row, record);\n }\n }\n };\n /**\n * Expands child rows\n *\n * @param {HTMLTableRowElement} row - Expands the given row\n * @param {Object} record - Expands the given record\n * @param {Object} key - Primary key value\n * @param {number} level - Specifies the hierarchical level of the record\n * @returns {void}\n */\n TreeGrid.prototype.expandRow = function (row, record, key, level) {\n var _this = this;\n var parentRec = this.parentData;\n if (!this.enableVirtualization) {\n parentRec = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n record = this.getCollapseExpandRecords(row, record);\n if (!isNullOrUndefined(row) && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n if (this.isExpandAll && !isRemoteData(this)) {\n var args = { data: parentRec, row: row, cancel: false };\n var pagerValuePresent = false;\n if (this.grid.pagerModule && !isNullOrUndefined(this.grid.pagerModule.pagerObj.pagerdropdownModule)) {\n pagerValuePresent = this.grid.pagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value ? true : false;\n }\n if (!this.isExpandingEventTriggered) {\n this.trigger(events.expanding, args, function (expandingArgs) {\n _this.expandAllPrevent = expandingArgs.cancel;\n if (!expandingArgs.cancel) {\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n _this.expandRows(row, record, parentRec, key, level);\n }\n });\n }\n else if ((!this.allowPaging || (pagerValuePresent && this.grid.pagerModule.pagerObj.pagerdropdownModule['dropDownListObject'].value === 'All')) &&\n !this.expandAllPrevent && this.isExpandingEventTriggered) {\n this.expandRows(row, record, parentRec, key, level);\n }\n this.isExpandingEventTriggered = true;\n }\n else if (!this.isExpandAll || (this.isExpandAll && isRemoteData(this))) {\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.expanding, args, function (expandingArgs) {\n if (!expandingArgs.cancel) {\n if (expandingArgs.expandAll) {\n _this.expandCollapseAllChildren(record, 'expand', key, level);\n }\n _this.expandRows(row, record, parentRec, key, level);\n }\n });\n }\n };\n // Internal method to handle the rows expand\n TreeGrid.prototype.expandRows = function (row, record, parentRec, key, level) {\n this.expandCollapse('expand', row, record);\n var children = 'Children';\n if (!(isRemoteData(this) && !isOffline(this)) && (!isCountRequired(this) || !isNullOrUndefined(record[\"\" + children]))) {\n var expandArgs = { data: record, row: row };\n if (!isNullOrUndefined(this.expandStateMapping)) {\n this.updateExpandStateMapping(expandArgs.data, true);\n }\n if (this.isExpandAll && !this.isExpandedEventTriggered) {\n this.isExpandedEventTriggered = true;\n expandArgs = { data: parentRec, row: row };\n this.trigger(events.expanded, expandArgs);\n }\n else if (!this.isExpandAll) {\n this.trigger(events.expanded, expandArgs);\n }\n }\n };\n TreeGrid.prototype.expandCollapseAllChildren = function (record, action, key, level) {\n if ((!isNullOrUndefined(key) && record[this.getPrimaryKeyFieldNames()[0]] !== key) ||\n (!isNullOrUndefined(level) && level !== record.level)) {\n return;\n }\n var records = findChildrenRecords(record).filter(function (e) {\n return e.hasChildRecords;\n });\n records.unshift(record);\n for (var i = 0; i < records.length; i++) {\n this.expandCollapse(action, null, records[parseInt(i.toString(), 10)]);\n }\n };\n TreeGrid.prototype.getCollapseExpandRecords = function (row, record) {\n if (this.allowPaging && this.pageSettings.pageSizeMode === 'All' && this.isExpandAll && isNullOrUndefined(record) &&\n !isRemoteData(this)) {\n record = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n else if (isNullOrUndefined(record)) {\n if (this.detailTemplate) {\n record = this.grid.getCurrentViewRecords()[row.getAttribute('data-rowindex')];\n }\n else {\n if (this.enableVirtualization && this.isCollapseAll) {\n if (this.isExpandAll && row.rowIndex === -1) {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n else {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n }\n else if (this.rowTemplate) {\n record = this.grid.getCurrentViewRecords()[row.rowIndex];\n }\n else {\n record = this.grid.getCurrentViewRecords()[parseInt(row.getAttribute('data-rowindex'), 10)];\n }\n }\n }\n return record;\n };\n /**\n * Collapses child rows\n *\n * @param {HTMLTableRowElement} row - Collapse the given row\n * @param {Object} record - Collapse the given record\n * @param {Object} key - Primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseRow = function (row, record, key) {\n var _this = this;\n var parentRec = this.parentData;\n if (!this.enableVirtualization) {\n parentRec = this.flatData.filter(function (e) {\n return e.hasChildRecords;\n });\n }\n record = this.getCollapseExpandRecords(row, record);\n if (this.isCollapseAll && !isRemoteData(this)) {\n var args = { data: parentRec, row: row, cancel: false };\n if (!this.isCollapsingEventTriggered) {\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n _this.collapseAllPrevent = collapsingArgs.cancel;\n if (!collapsingArgs.cancel) {\n if (collapsingArgs.collapseAll) {\n _this.expandCollapseAllChildren(record, 'collapse', key);\n }\n _this.collapseRows(row, record, parentRec, key);\n }\n });\n }\n else if (!this.allowPaging && !this.collapseAllPrevent && this.isCollapsingEventTriggered) {\n this.collapseRows(row, record, parentRec, key);\n }\n this.isCollapsingEventTriggered = true;\n }\n else if (!this.isCollapseAll || (this.isCollapseAll && isRemoteData(this))) {\n var args = { data: record, row: row, cancel: false };\n this.trigger(events.collapsing, args, function (collapsingArgs) {\n if (!collapsingArgs.cancel) {\n _this.collapseRows(row, record, parentRec, key);\n }\n });\n }\n };\n // Internal method for handling the rows collapse\n TreeGrid.prototype.collapseRows = function (row, record, parentRec, key) {\n this.expandCollapse('collapse', row, record);\n var collapseArgs = { data: record, row: row };\n if (!isRemoteData(this)) {\n if (!isNullOrUndefined(this.expandStateMapping)) {\n this.updateExpandStateMapping(collapseArgs.data, false);\n }\n if (this.isCollapseAll && !this.isCollapsedEventTriggered) {\n this.isCollapsedEventTriggered = true;\n collapseArgs = { data: parentRec, row: row };\n this.trigger(events.collapsed, collapseArgs);\n }\n else if (!this.isCollapseAll) {\n this.trigger(events.collapsed, collapseArgs);\n }\n if (this.enableInfiniteScrolling) {\n var scrollHeight = this.grid.getContent().firstElementChild.scrollHeight;\n var scrollTop = this.grid.getContent().firstElementChild.scrollTop;\n if ((scrollHeight - scrollTop) < this.grid.getRowHeight() + +this.height) {\n this.grid.getContent().firstElementChild.scrollBy(0, this.grid.getRowHeight());\n }\n }\n }\n };\n TreeGrid.prototype.updateExpandStateMapping = function (record, state) {\n var totalRecords = record;\n if (totalRecords.length) {\n for (var i = 0; i < totalRecords.length; i++) {\n totalRecords[parseInt(i.toString(), 10)][this.expandStateMapping] = state;\n editAction({ value: totalRecords[parseInt(i.toString(), 10)], action: 'edit' }, this, this.isSelfReference, totalRecords[parseInt(i.toString(), 10)].index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n }\n else {\n record[\"\" + this.expandStateMapping] = state;\n editAction({ value: record, action: 'edit' }, this, this.isSelfReference, record.index, this.grid.selectedRowIndex, this.expandStateMapping);\n }\n };\n /**\n * Expands the records at specific hierarchical level\n *\n * @param {number} level - Expands the parent rows at given level\n * @returns {void}\n */\n TreeGrid.prototype.expandAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var rec = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = true;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.expandAction(rec, null, level, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var record = getObject('records', rec);\n this.expandAction(record, null, level);\n }\n };\n /**\n * Expands the records by given primary key value\n *\n * @param {Object} key - Expands the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.expandByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Expand');\n };\n TreeGrid.prototype.expandAction = function (record, key, level, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n var _loop_1 = function (i) {\n if (!isNullOrUndefined(record[parseInt(i.toString(), 10)].parentItem)) {\n var puniqueID_1 = record[parseInt(i.toString(), 10)].parentItem.uniqueID;\n var parentItem = this_1.flatData.filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n if (isRemoteData(this_1)) {\n parentItem = this_1.getCurrentViewRecords().filter(function (e) {\n return e.uniqueID === puniqueID_1;\n });\n }\n if (parentItem[0].expanded === false) {\n record.push(parentItem[0]);\n parentItem[0].expanded = true;\n }\n else {\n if (!getExpandStatus(this_1, parentItem[0], this_1.parentData)) {\n if (parentItem[0].expanded && parentItem[0].parentItem !== undefined) {\n record.push(parentItem[0]);\n }\n }\n }\n }\n if (!isPaging) {\n this_1.expandRow(null, record[parseInt(i.toString(), 10)], key, level);\n }\n };\n var this_1 = this;\n for (var i = 0; i < record.length; i++) {\n _loop_1(i);\n }\n if (isPaging) {\n this.expandRow(null, record, key, level);\n }\n };\n TreeGrid.prototype.getRecordDetails = function (level) {\n var rows = this.getRows().filter(function (e) {\n return (e.className.indexOf('level' + level) !== -1\n && (e.querySelector('.e-treegridcollapse') || e.querySelector('.e-treegridexpand')));\n });\n var records = this.getCurrentViewRecords().filter(function (e) {\n return e.level === level && e.hasChildRecords;\n });\n var obj = { records: records, rows: rows };\n return obj;\n };\n /**\n * Collapses the records at specific hierarchical level\n *\n * @param {number} level - Define the parent row level which needs to be collapsed\n * @returns {void}\n */\n TreeGrid.prototype.collapseAtLevel = function (level) {\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)) {\n var record = this.grid.dataSource.filter(function (e) {\n if (e.hasChildRecords && e.level === level) {\n e.expanded = false;\n }\n return e.hasChildRecords && e.level === level;\n });\n this.collapseAction(record, null, true);\n }\n else {\n var rec = this.getRecordDetails(level);\n var records = getObject('records', rec);\n this.collapseAction(records);\n }\n };\n /**\n * Collapses the records by given primary key value\n *\n * @param {Object} key - Collapses the parent rows with given primary key value\n * @returns {void}\n */\n TreeGrid.prototype.collapseByKey = function (key) {\n this.expandCollapseActionByKey(key, 'Collapse');\n };\n TreeGrid.prototype.expandCollapseActionByKey = function (key, action) {\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n var dataSource = isRemoteData(this) ? this.getCurrentViewRecords() : this.grid.dataSource;\n if (!isNullOrUndefined(primaryKeyField)) {\n var rec = dataSource.filter(function (e) {\n return e[\"\" + primaryKeyField].toString() === key.toString();\n });\n if (action === 'Expand') {\n this.expandAction(rec, key, null);\n }\n else {\n this.collapseAction(rec, key);\n }\n }\n };\n TreeGrid.prototype.collapseAction = function (record, key, isPaging) {\n if (isPaging === void 0) { isPaging = false; }\n if (isPaging) {\n this.collapseRow(null, record);\n }\n else {\n for (var i = 0; i < record.length; i++) {\n this.collapseRow(null, record[parseInt(i.toString(), 10)], key);\n }\n }\n if (!this.grid.contentModule.isDataSourceChanged && this.enableVirtualization && this.getRows()\n && this.parentData.length === this.getRows().length) {\n var endIndex = 'endIndex';\n this.grid.contentModule.startIndex = -1;\n this.grid.contentModule[\"\" + endIndex] = -1;\n }\n };\n /**\n * Expands All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.expandAll = function () {\n this.isExpandedEventTriggered = false;\n this.isExpandingEventTriggered = false;\n this.expandCollapseAll('expand');\n };\n /**\n * Collapses All the rows\n *\n * @returns {void}\n */\n TreeGrid.prototype.collapseAll = function () {\n this.isCollapsedEventTriggered = false;\n this.isCollapsingEventTriggered = false;\n this.expandCollapseAll('collapse');\n };\n TreeGrid.prototype.expandCollapseAll = function (action) {\n var rows;\n if (this.rowTemplate) {\n rows = [].slice.call(this.grid.getContentTable().querySelectorAll('tr')).filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n }\n else {\n rows = this.getRows().filter(function (e) {\n return e.querySelector('.e-treegrid' + (action === 'expand' ? 'collapse' : 'expand'));\n });\n }\n this.isExpandAll = true;\n this.isCollapseAll = true;\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization || this.enableInfiniteScrolling) && !isRemoteData(this)) {\n this.flatData.filter(function (e) {\n if (e.hasChildRecords) {\n e.expanded = action === 'collapse' ? false : true;\n }\n });\n if (rows.length) {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n if (!isNullOrUndefined(this.getCurrentViewRecords()[rows[parseInt(i.toString(), 10)].rowIndex])) {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (!this.enableVirtualization) {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n else if (rows[0].getAttribute('aria-expanded') !== 'true') {\n this.expandRow(rows[0]);\n }\n }\n }\n }\n else if (this.allowPaging) {\n var isExpandCollapseall = this.enableCollapseAll;\n this.setProperties({ enableCollapseAll: true }, true);\n this.grid.pagerModule.goToPage(1);\n this.setProperties({ enableCollapseAll: isExpandCollapseall }, true);\n }\n }\n else {\n for (var i = 0; i < rows.length; i++) {\n if (action === 'collapse') {\n this.collapseRow(rows[parseInt(i.toString(), 10)]);\n }\n else {\n this.expandRow(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.isExpandAll = false;\n this.isCollapseAll = false;\n };\n TreeGrid.prototype.expandCollapse = function (action, row, record, isChild) {\n var _this = this;\n var expandingArgs = { row: row, data: record, childData: [], requestType: action };\n var childRecords = this.grid.currentViewData.filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n var targetEle;\n if ((!isRemoteData(this) && action === 'expand' && this.isSelfReference && isCountRequired(this) && !childRecords.length) || (action === 'collapse' || (this.isExpandAll && this.loadChildOnDemand) && !isRemoteData(this) && this.isSelfReference && isCountRequired(this))) {\n this.updateChildOnDemand(expandingArgs);\n }\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows = this.getContentTable().rows;\n gridRows = [].slice.call(rows);\n }\n var rowIndex;\n if (isNullOrUndefined(row)) {\n rowIndex = this.grid.currentViewData.indexOf(record);\n row = gridRows[parseInt(rowIndex.toString(), 10)];\n }\n else {\n rowIndex = +row.getAttribute('data-rowindex');\n }\n if (!isNullOrUndefined(row)) {\n row.setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n }\n if (((this.allowPaging && this.pageSettings.pageSizeMode === 'All') || this.enableVirtualization) && !isRemoteData(this)\n && !isCountRequired(this)) {\n this.notify(events.localPagedExpandCollapse, { action: action, row: row, record: record });\n }\n else {\n var displayAction = void 0;\n if (action === 'expand') {\n displayAction = 'table-row';\n if (!isChild) {\n record.expanded = true;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridexpand')) {\n addClass([targetEle], 'e-treegridexpand');\n }\n removeClass([targetEle], 'e-treegridcollapse');\n }\n else {\n displayAction = 'none';\n if (!isChild || isCountRequired(this)) {\n record.expanded = false;\n this.uniqueIDCollection[record.uniqueID].expanded = record.expanded;\n }\n if (!isNullOrUndefined(row)) {\n targetEle = row.getElementsByClassName('e-treegridexpand')[0];\n }\n if (isChild && !isNullOrUndefined(record[this.expandStateMapping]) &&\n !record[this.expandStateMapping] && isNullOrUndefined(targetEle)) {\n targetEle = row.getElementsByClassName('e-treegridcollapse')[0];\n }\n if (isNullOrUndefined(targetEle)) {\n return;\n }\n if (!targetEle.classList.contains('e-treegridcollapse')) {\n addClass([targetEle], 'e-treegridcollapse');\n }\n removeClass([targetEle], 'e-treegridexpand');\n }\n row.querySelectorAll('.e-treerowcell')[0].setAttribute('aria-expanded', action === 'expand' ? 'true' : 'false');\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n if (isRemoteData(this) && !isOffline(this)) {\n this.remoteExpand(action, row, record);\n }\n else {\n if ((!isCountRequired(this) || childRecords.length) || action === 'collapse') {\n this.localExpand(action, row, record);\n }\n var lastrowIdx = this.getVisibleRecords()[this.getVisibleRecords().length - 1]['index'];\n var lastRow = this.getRowByIndex(lastrowIdx);\n if (this.grid.getContentTable().clientHeight <= this.grid.getContent().clientHeight && !isNullOrUndefined(lastRow) && !lastRow.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(lastRow, true);\n }\n }\n if (isCountRequired(this) && action === 'expand') {\n var currentData = this.getCurrentViewRecords();\n var visibleRecords = currentData.filter(function (e) {\n return getExpandStatus(_this, e, _this.parentData);\n });\n this.dataResults.result = visibleRecords;\n }\n if (!isNullOrUndefined(targetEle) && targetEle.closest('.e-treerowcell').classList.contains('e-cellselectionbackground')) {\n targetEle.closest('.e-treerowcell').classList.remove('e-cellselectionbackground');\n targetEle.closest('.e-treerowcell').removeAttribute('aria-selected');\n }\n if (this.isPixelHeight() && !row.cells[0].classList.contains('e-lastrowcell')) {\n var totalRows = this.getRows();\n var rows = this.getContentTable().rows;\n totalRows = [].slice.call(rows);\n for (var i = totalRows.length - 1; i >= 0; i--) {\n if (!isHidden(totalRows[parseInt(i.toString(), 10)])) {\n var table = this.getContentTable();\n var sHeight = table.scrollHeight;\n var clientHeight = this.getContent().clientHeight;\n this.lastRowBorder(totalRows[parseInt(i.toString(), 10)], sHeight <= clientHeight);\n break;\n }\n }\n }\n this.notify('rowExpandCollapse', { detailrows: detailrows, action: displayAction, record: record, row: row });\n this.updateAltRow(gridRows);\n }\n };\n TreeGrid.prototype.updateChildOnDemand = function (expandingArgs) {\n var _this = this;\n if (expandingArgs.requestType === 'collapse' && isCountRequired(this)) {\n var flatDataRecords = this.flatData.slice();\n for (var i = 0; i < flatDataRecords.length; i++) {\n if (flatDataRecords[parseInt(i.toString(), 10)]['parentUniqueID'] === expandingArgs.data['uniqueID']) {\n flatDataRecords.splice(i, 1);\n i = i - 1;\n }\n }\n this.dataResults.result = flatDataRecords;\n return;\n }\n var deff = new Deferred();\n var childDataBind = 'childDataBind';\n expandingArgs[\"\" + childDataBind] = deff.resolve;\n var record = expandingArgs.data;\n this.trigger(events.dataStateChange, expandingArgs);\n deff.promise.then(function () {\n if (expandingArgs.childData.length) {\n if (isCountRequired(_this)) {\n _this.flatData = _this.dataResults.result;\n }\n if (_this.enableInfiniteScrolling && isCountRequired(_this)) {\n _this.flatData = _this.infiniteScrollData;\n }\n var currentData = (_this.flatData);\n var index = 0;\n for (var i = 0; i < currentData.length; i++) {\n if (currentData[parseInt(i.toString(), 10)].taskData === record.taskData) {\n index = i;\n break;\n }\n }\n var data_1 = getValue('result', _this.dataSource);\n var childData = extendArray(expandingArgs.childData);\n var length_1 = record[_this.childMapping] ? record[_this.childMapping].length > childData.length ?\n record[_this.childMapping].length : childData.length : childData.length;\n for (var i = 0; i < length_1; i++) {\n if (record[_this.childMapping]) {\n data_1.filter(function (e, i) {\n if (e[_this.parentIdMapping] === record[_this.idMapping]) {\n data_1.splice(i, 1);\n }\n });\n }\n if (childData[parseInt(i.toString(), 10)]) {\n childData[parseInt(i.toString(), 10)].level = record.level + 1;\n childData[parseInt(i.toString(), 10)].index = Math.ceil(Math.random() * 1000);\n childData[parseInt(i.toString(), 10)].parentItem = extend({}, record);\n childData[parseInt(i.toString(), 10)].taskData = extend({}, childData[parseInt(i.toString(), 10)]);\n delete childData[parseInt(i.toString(), 10)].parentItem.childRecords;\n delete childData[parseInt(i.toString(), 10)].taskData.parentItem;\n childData[parseInt(i.toString(), 10)].parentUniqueID = record.uniqueID;\n childData[parseInt(i.toString(), 10)].uniqueID = getUid(_this.element.id + '_data_');\n setValue('uniqueIDCollection.' + childData[parseInt(i.toString(), 10)].uniqueID, childData[parseInt(i.toString(), 10)], _this);\n if (!isNullOrUndefined(childData[parseInt(i.toString(), 10)][_this.childMapping]) ||\n (childData[parseInt(i.toString(), 10)][_this.hasChildMapping] && isCountRequired(_this))) {\n childData[parseInt(i.toString(), 10)].hasChildRecords = true;\n }\n if (isCountRequired(_this) && record[_this.childMapping] && record[_this.childMapping][parseInt(i.toString(), 10)]) {\n currentData.splice(index + 1 + i, 0, childData[parseInt(i.toString(), 10)]);\n }\n else {\n currentData.splice(index + 1 + i, record[_this.childMapping] &&\n record[_this.childMapping][parseInt(i.toString(), 10)] ? 1 : 0, childData[parseInt(i.toString(), 10)]);\n }\n }\n else {\n currentData.splice(index + 1 + i, 1);\n }\n }\n currentData[parseInt(index.toString(), 10)][\"\" + _this.childMapping] = childData;\n currentData[parseInt(index.toString(), 10)].childRecords = childData;\n currentData[parseInt(index.toString(), 10)].expanded = true;\n setValue('uniqueIDCollection.' + currentData[parseInt(index.toString(), 10)].uniqueID, currentData[parseInt(index.toString(), 10)], _this);\n for (var j = 0; j < expandingArgs.childData.length; j++) {\n data_1.push(expandingArgs.childData[parseInt(j.toString(), 10)]);\n }\n }\n if (isCountRequired(_this) && _this.loadChildOnDemand && expandingArgs.requestType === 'expand') {\n _this.dataResults['expandRecord'] = {};\n _this.dataResults['expandRecord'] = expandingArgs.data;\n }\n _this.isExpandRefresh = true;\n var scrollHeightBeforeRefresh = _this.getContentTable().parentElement.scrollTop;\n _this.grid.refresh();\n if (_this.enableInfiniteScrolling) {\n _this.getContentTable().parentElement.scrollTop = scrollHeightBeforeRefresh;\n }\n _this.trigger(events.expanded, expandingArgs);\n });\n };\n TreeGrid.prototype.remoteExpand = function (action, row, record) {\n var gridRows = this.getRows();\n var fetchRemoteChildData = 'fetchRemoteChildData';\n if (this.rowTemplate) {\n var rows_1 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_1);\n }\n var args = { data: record, row: row };\n var rows = [];\n rows = gridRows.filter(function (r) {\n return ((r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1))) || (r.querySelector('.e-gridrowindex' + record.index + 'level0' + '.e-summarycell')));\n });\n if (action === 'expand') {\n this.notify(events.remoteExpand, { record: record, rows: rows, parentRow: row });\n var args_1 = { row: row, data: record };\n if (rows.length > 0) {\n this.trigger(events.expanded, args_1);\n }\n }\n else if (action === 'collapse' && this.enableVirtualization) {\n this.dataModule[\"\" + fetchRemoteChildData]({ action: action, record: args.data, rows: null, parentRow: args.row });\n }\n else {\n this.collapseRemoteChild({ record: record, rows: rows });\n this.trigger(events.collapsed, args);\n }\n };\n TreeGrid.prototype.localExpand = function (action, row, record) {\n var rows;\n var childRecords = this.grid.currentViewData.filter(function (e) {\n return e.parentUniqueID === record.uniqueID;\n });\n if (this.isPixelHeight() && row.cells[0].classList.contains('e-lastrowcell')) {\n this.lastRowBorder(row, false);\n }\n var movableRows;\n var freezeRightRows;\n var gridRows = this.getRows();\n if (this.rowTemplate) {\n var rows_2 = this.getContentTable().rows;\n gridRows = [].slice.call(rows_2);\n }\n var displayAction = (action === 'expand') ? 'table-row' : 'none';\n var primaryKeyField = this.getPrimaryKeyFieldNames()[0];\n if (this.enableImmutableMode && !this.allowPaging) {\n rows = [];\n for (var i = 0; i < childRecords.length; i++) {\n var rowIndex = this.grid.getRowIndexByPrimaryKey(childRecords[parseInt(i.toString(), 10)][\"\" + primaryKeyField]);\n rows.push(this.getRows()[parseInt(rowIndex.toString(), 10)]);\n }\n }\n else {\n rows = gridRows.filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var freeze = (this.grid.getFrozenLeftColumnsCount() > 0 || this.grid.getFrozenRightColumnsCount() > 0) ? true : false;\n if (this.frozenRows || this.frozenColumns || this.getFrozenColumns() || freeze) {\n movableRows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n if (freeze) {\n freezeRightRows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + record.index + 'level' + (record.level + 1));\n });\n }\n var gridRowsObject = this.grid.getRowsObject();\n var currentViewData = this.grid.currentViewData;\n var currentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === record.uniqueID;\n });\n var currentIndex = currentViewData.indexOf(currentRecord[0]);\n if (!isNullOrUndefined(gridRowsObject[parseInt(currentIndex.toString(), 10)].visible) &&\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible !== false) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = true;\n }\n var detailrows = gridRows.filter(function (r) {\n return r.classList.contains('e-griddetailrowindex' + record.index + 'level' + (record.level + 1));\n });\n for (var i = 0; i < rows.length; i++) {\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)])) {\n rows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(rows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization\n || this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[rows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n var parentRecord = currentViewData.filter(function (e) {\n return e.uniqueID === currentRecord[0].parentUniqueID;\n });\n if (!isNullOrUndefined(parentRecord[0]) && gridRows[currentViewData.indexOf(parentRecord[0])].getElementsByClassName('e-treegridcollapse').length) {\n gridRowsObject[parseInt(currentIndex.toString(), 10)].visible = false;\n }\n }\n if (!isNullOrUndefined(movableRows)) {\n movableRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n if (!isNullOrUndefined(freezeRightRows)) {\n freezeRightRows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n this.notify('childRowExpand', { row: rows[parseInt(i.toString(), 10)] });\n if ((!isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].childRecords) && childRecords[parseInt(i.toString(), 10)].childRecords.length > 0) && (action !== 'expand' ||\n isNullOrUndefined(childRecords[parseInt(i.toString(), 10)].expanded) || childRecords[parseInt(i.toString(), 10)].expanded)) {\n this.expandCollapse(action, rows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n if (this.frozenColumns <= this.treeColumnIndex && !isNullOrUndefined(movableRows)) {\n this.expandCollapse(action, movableRows[parseInt(i.toString(), 10)], childRecords[parseInt(i.toString(), 10)], true);\n }\n }\n }\n for (var i = 0; i < detailrows.length; i++) {\n if (!isNullOrUndefined(detailrows[parseInt(i.toString(), 10)]) && !this.allowPaging && !(this.enableVirtualization ||\n this.enableInfiniteScrolling || isRemoteData(this) || isCountRequired(this))) {\n gridRowsObject[detailrows[parseInt(i.toString(), 10)].rowIndex].visible = displayAction !== 'none' ? true : false;\n detailrows[parseInt(i.toString(), 10)].style.display = displayAction;\n }\n }\n if (!this.allowPaging && !(this.enableVirtualization || this.enableInfiniteScrolling || isRemoteData(this)\n || isCountRequired(this))) {\n this.grid.notify('refresh-Expand-and-Collapse', { rows: this.grid.getRowsObject() });\n }\n };\n TreeGrid.prototype.updateAltRow = function (rows) {\n if (this.enableAltRow && !this.rowTemplate) {\n var visibleRowCount = 0;\n for (var i = 0; rows && i < rows.length; i++) {\n var gridRow = rows[parseInt(i.toString(), 10)];\n if (gridRow.style.display !== 'none') {\n if (gridRow.classList.contains('e-altrow')) {\n removeClass([gridRow], 'e-altrow');\n }\n if (visibleRowCount % 2 !== 0 && !gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n addClass([gridRow], 'e-altrow');\n }\n if (!gridRow.classList.contains('e-summaryrow') && !gridRow.classList.contains('e-detailrow')) {\n visibleRowCount++;\n }\n }\n }\n }\n };\n TreeGrid.prototype.treeColumnRowTemplate = function () {\n var rows = this.getContentTable().rows;\n rows = [].slice.call(rows);\n var rowsObject = this.grid.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var rcell = this.grid.getContentTable().rows[parseInt(i.toString(), 10)]\n .cells[this.treeColumnIndex];\n var row = rows[parseInt(i.toString(), 10)];\n var rowData = rowsObject.length !== 0 ? rowsObject[parseInt(i.toString(), 10)].data : new Object();\n var arg = { data: rowData, row: row, cell: rcell, column: this.getColumns()[this.treeColumnIndex] };\n this.renderModule.cellRender(arg);\n }\n };\n TreeGrid.prototype.collapseRemoteChild = function (rowDetails, isChild) {\n if (!isChild) {\n rowDetails.record.expanded = false;\n }\n var rows = rowDetails.rows;\n var row;\n var childRecord;\n var movablerows = [];\n var rightrows = [];\n var freeze = (this.getFrozenLeftColumnsCount() > 0 || this.getFrozenRightColumnsCount() > 0) ? true : false;\n if (freeze) {\n movablerows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n rightrows = this.getRows().filter(function (r) {\n return r.querySelector('.e-gridrowindex' + rowDetails.record.index + 'level' + (rowDetails.record.level + 1));\n });\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].style.display = 'none';\n row = rows[parseInt(i.toString(), 10)];\n var collapsingTd = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowexpand');\n if (!isNullOrUndefined(collapsingTd)) {\n this.grid.detailRowModule.collapse(collapsingTd);\n }\n if (freeze) {\n movablerows[parseInt(i.toString(), 10)].style.display = 'none';\n rightrows[parseInt(i.toString(), 10)].style.display = 'none';\n if (!rows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n if (movablerows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = movablerows[parseInt(i.toString(), 10)];\n }\n else if (rightrows[parseInt(i.toString(), 10)].querySelector('.e-treecolumn-container .e-treegridexpand')) {\n row = rightrows[parseInt(i.toString(), 10)];\n }\n }\n }\n if (row.querySelector('.e-treecolumn-container .e-treegridexpand')) {\n var expandElement = row.querySelector('.e-treecolumn-container .e-treegridexpand');\n childRecord = this.rowTemplate ? this.grid.getCurrentViewRecords()[rows[parseInt(i.toString(), 10)].rowIndex] :\n this.grid.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-Uid')).data;\n if (!isNullOrUndefined(expandElement) && childRecord.expanded) {\n removeClass([expandElement], 'e-treegridexpand');\n addClass([expandElement], 'e-treegridcollapse');\n }\n var cRow = [];\n var eRows = this.getRows();\n for (var i_1 = 0; i_1 < eRows.length; i_1++) {\n if (eRows[parseInt(i_1.toString(), 10)].querySelector('.e-gridrowindex' + childRecord.index + 'level' + (childRecord.level + 1))) {\n cRow.push(eRows[parseInt(i_1.toString(), 10)]);\n }\n }\n if (cRow.length && childRecord.expanded) {\n this.collapseRemoteChild({ record: childRecord, rows: cRow }, false);\n }\n }\n }\n };\n /**\n * Method to sanitize html element\n *\n * @param {any} value - Specifies the html value to sanitize\n * @returns {any} Returns the sanitized html value\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TreeGrid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer && typeof (value) === 'string') {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * Updates the rows and cells\n *\n * @param {Object[]} records - Updates the given records\n * @param {HTMLTableRowElement[]} rows - Updates the given rows\n * @param {number} index - Updates the given cell index\n * @returns {void}\n */\n TreeGrid.prototype.updateRowAndCellElements = function (records, rows, index) {\n for (var i = 0; i < records.length; i++) {\n this.renderModule.cellRender({\n data: records[parseInt(i.toString(), 10)], cell: rows[parseInt(i.toString(), 10)].cells[parseInt(index.toString(), 10)],\n column: this.grid.getColumns()[this.treeColumnIndex],\n requestType: 'rowDragAndDrop'\n });\n if (this['action'] === 'indenting' || this['action'] === 'outdenting') {\n this.renderModule.RowModifier({\n data: records[parseInt(i.toString(), 10)], row: rows[parseInt(i.toString(), 10)]\n });\n }\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.addListener = function () {\n this.on('updateResults', this.updateResultModel, this);\n this.grid.on('initial-end', this.afterGridRender, this);\n };\n TreeGrid.prototype.updateResultModel = function (returnResult) {\n this.dataResults = returnResult;\n };\n /**\n * @hidden\n * @returns {void}\n */\n TreeGrid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off('updateResults', this.updateResultModel);\n this.grid.off('initial-end', this.afterGridRender);\n };\n /**\n * Filters TreeGrid 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 TreeGrid filters the records with exact match. if false, it filters\n * case insensitive records (uppercase and lowercase letters are treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent is set to true,\n * then filter ignores diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for filter column.\n * @param {string} actualOperator - Defines the actual filter operator for filter column.\n * @returns {void}\n */\n TreeGrid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n this.grid.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n /**\n * Clears all the filtered rows of the TreeGrid.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearFiltering = function () {\n this.grid.clearFiltering();\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 TreeGrid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n this.grid.removeFilteredColsByField(field, isClearFilterBar);\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 TreeGrid.prototype.selectRow = function (index, isToggle) {\n this.grid.selectRow(index, isToggle);\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n TreeGrid.prototype.selectRows = function (rowIndexes) {\n this.grid.selectRows(rowIndexes);\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n TreeGrid.prototype.clearSelection = function () {\n this.grid.clearSelection();\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 TreeGrid.prototype.copy = function (withHeader) {\n this.clipboardModule.copy(withHeader);\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 TreeGrid.prototype.paste = function (data, rowIndex, colIndex) {\n this.clipboardModule.paste(data, rowIndex, colIndex);\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 TreeGrid.prototype.selectCell = function (cellIndex, isToggle) {\n this.grid.selectCell(cellIndex, isToggle);\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} - Returns selected row elements collection\n */\n TreeGrid.prototype.getSelectedRows = function () {\n return this.grid.getSelectedRows();\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 movable cell element from the indexes passed\n *\n\n */\n TreeGrid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets all the TreeGrid's movable table data rows.\n *\n * @returns {Element[]} - Returns element collection of movable rows\n *\n\n */\n TreeGrid.prototype.getMovableDataRows = function () {\n return this.grid.getDataRows();\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} - Returns movable row based on index passed\n *\n\n */\n TreeGrid.prototype.getMovableRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Gets the TreeGrid's movable content rows from frozen treegrid.\n *\n * @returns {Element[]}: Returns movable row element\n\n */\n TreeGrid.prototype.getMovableRows = function () {\n return this.grid.getRows();\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\n */\n TreeGrid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.grid.getRowByIndex(index);\n };\n /**\n * Gets the Tree Grid's frozen right content rows from frozen Tree Grid.\n *\n * @returns {Element[]} returns the element\n *\n\n */\n TreeGrid.prototype.getFrozenRightRows = function () {\n return this.grid.getRows();\n };\n /**\n * Gets all the Tree Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n *\n\n */\n TreeGrid.prototype.getFrozenRightDataRows = function () {\n return this.grid.getDataRows();\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\n */\n TreeGrid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.grid.getCellFromIndex(rowIndex, columnIndex);\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\n */\n TreeGrid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\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\n */\n TreeGrid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(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\n */\n TreeGrid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.grid.getColumnHeaderByIndex(index);\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n TreeGrid.prototype.getMovableColumnsCount = function () {\n return this.grid.getMovableColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n TreeGrid.prototype.getFrozenLeftColumnsCount = function () {\n return this.grid.getFrozenLeftColumnsCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n TreeGrid.prototype.getFrozenRightColumnsCount = function () {\n return this.grid.getFrozenRightColumnsCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenLeftColumns = function () {\n this.updateColumnModel(this.grid.getFrozenLeftColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getFrozenRightColumns = function () {\n this.updateColumnModel(this.grid.getFrozenRightColumns());\n return this.columnModel;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n TreeGrid.prototype.getVisibleMovableCount = function () {\n return this.grid.getVisibleMovableCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n TreeGrid.prototype.getVisibleFrozenRightCount = function () {\n return this.grid.getVisibleFrozenRightCount();\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n TreeGrid.prototype.getVisibleFrozenLeftCount = function () {\n return this.grid.getVisibleFrozenLeftCount();\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n TreeGrid.prototype.getMovableColumns = function () {\n this.updateColumnModel(this.grid.getMovableColumns());\n return this.columnModel;\n };\n /**\n * Gets the number of frozen column in tree grid\n *\n * @hidden\n * @returns {number} - Returns frozen column count\n */\n TreeGrid.prototype.getFrozenColumns = function () {\n return this.getFrozenCount(this.columns, 0) + this.frozenColumns;\n };\n TreeGrid.prototype.getFrozenCount = function (cols, cnt) {\n for (var j = 0, len = cols.length; j < len; j++) {\n if (cols[parseInt(j.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(j.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(j.toString(), 10)].isFrozen) {\n cnt++;\n }\n }\n }\n return cnt;\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} - Returns selected rows index collection\n */\n TreeGrid.prototype.getSelectedRowIndexes = function () {\n return this.grid.getSelectedRowIndexes();\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {ISelectedCell[]} - Returns selected cell's index details\n */\n TreeGrid.prototype.getSelectedRowCellIndexes = function () {\n return this.grid.getSelectedRowCellIndexes();\n };\n /**\n * Gets the collection of selected records.\n *\n * @isGenericType true\n * @returns {Object[]} - Returns selected records collection\n */\n TreeGrid.prototype.getSelectedRecords = function () {\n return this.grid.getSelectedRecords();\n };\n /**\n * Gets the data module.\n *\n * @returns {{baseModule: Data, treeModule: DataManipulation}}: Returns grid and treegrid data module\n */\n TreeGrid.prototype.getDataModule = function () {\n return { baseModule: this.grid.getDataModule(), treeModule: this.dataModule };\n };\n /**\n * Reorder the rows based on given indexes and position\n *\n * @param {number[]} fromIndexes - Source indexes of rows\n * @param {number} toIndex - Destination index of row\n * @param {string} position - Defines drop position as above or below or child\n * @returns {void}\n */\n TreeGrid.prototype.reorderRows = function (fromIndexes, toIndex, position) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex, position);\n };\n /**\n * Indents the record to one level of hierarchy. Moves the selected row as the last child of its previous row.\n *\n * @param {Object} record – specifies the record to do indented\n * @returns {void}\n */\n TreeGrid.prototype.indent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'indent');\n }\n };\n /**\n * Outdent the record to one level of hierarchy. Moves the selected row as sibling to its parent row.\n *\n * @param {Object} record – specifies the record to do outdented\n * @returns {void}\n */\n TreeGrid.prototype.outdent = function (record) {\n if (!isNullOrUndefined(this.rowDragAndDropModule)) {\n record = record;\n this.rowDragAndDropModule[this.indentOutdentAction](record, 'outdent');\n }\n };\n var TreeGrid_1;\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('Ellipsis')\n ], TreeGrid.prototype, \"clipMode\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"childMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"hasChildMapping\", void 0);\n __decorate([\n Property(0)\n ], TreeGrid.prototype, \"treeColumnIndex\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"idMapping\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"parentIdMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableCollapseAll\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"expandStateMapping\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Property([])\n ], TreeGrid.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"query\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"cloneQuery\", void 0);\n __decorate([\n Property('AllPages')\n ], TreeGrid.prototype, \"printMode\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPaging\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"loadChildOnDemand\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], TreeGrid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"autoCheckHierarchy\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], TreeGrid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], TreeGrid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Property('USD')\n ], TreeGrid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], TreeGrid.prototype, \"sortSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], TreeGrid.prototype, \"aggregates\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], TreeGrid.prototype, \"editSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], TreeGrid.prototype, \"filterSettings\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], TreeGrid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property('Default')\n ], TreeGrid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], TreeGrid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property('Parent')\n ], TreeGrid.prototype, \"copyHierarchyMode\", void 0);\n __decorate([\n Property(null)\n ], TreeGrid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], TreeGrid.prototype, \"width\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], TreeGrid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], TreeGrid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property('All')\n ], TreeGrid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Property(true)\n ], TreeGrid.prototype, \"allowSelection\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"checkboxChange\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"rowDrop\", void 0);\n __decorate([\n Property(-1)\n ], TreeGrid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], TreeGrid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], TreeGrid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], TreeGrid.prototype, \"pdfExportComplete\", void 0);\n TreeGrid = TreeGrid_1 = __decorate([\n NotifyPropertyChanges\n ], TreeGrid);\n return TreeGrid;\n}(Component));\nexport { TreeGrid };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var StackedColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-stacked-columns';\n }\n }\n});\nexport var StackedColumnsPlugin = {\n name: 'e-stacked-columns',\n install: function (Vue) {\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n }\n};\nexport var StackedColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-stacked-column';\n }\n }\n});\nexport var StackedColumnPlugin = {\n name: 'e-stacked-column',\n install: function (Vue) {\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var ColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\n/**\n * `e-column` directive represent a column of the VueJS TreeGrid.\n * It must be contained in a TreeGrid component(`ejs-treegrid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var ColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregateColumnsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-columns';\n }\n }\n});\nexport var AggregateColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n/**\n * `e-aggregate->e-column` directive represent a aggregate column of the VueJS TreeGrid.\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateColumnDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-column';\n }\n }\n});\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n }\n};\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var AggregatesDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-aggregates';\n }\n }\n});\nexport var AggregatesPlugin = {\n name: 'e-aggregates',\n install: function (Vue) {\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n }\n};\n/**\n * `e-aggregate` directive represent a aggregate row of the VueJS TreeGrid.\n * It must be contained in a TreeGrid component(`ejs-treegrid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var AggregateDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-aggregate';\n }\n }\n});\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { TreeGrid } from '@syncfusion/ej2-treegrid';\nimport { StackedColumnsDirective, StackedColumnDirective, StackedColumnsPlugin, StackedColumnPlugin } from './stacked-column.directive';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AggregateColumnsDirective, AggregateColumnDirective, AggregateColumnsPlugin, AggregateColumnPlugin } from './aggregate-columns.directive';\nimport { AggregatesDirective, AggregateDirective, AggregatesPlugin, AggregatePlugin } from './aggregates.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'aggregates', 'allowExcelExport', 'allowFiltering', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'autoCheckHierarchy', 'childMapping', 'clipMode', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'copyHierarchyMode', 'currencyCode', 'dataSource', 'detailTemplate', 'editSettings', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableCollapseAll', 'enableColumnVirtualization', 'enableHover', 'enableHtmlSanitizer', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableVirtualMaskRow', 'enableVirtualization', 'expandStateMapping', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'hasChildMapping', 'height', 'idMapping', 'infiniteScrollSettings', 'loadChildOnDemand', 'loadingIndicator', 'locale', 'pageSettings', 'parentIdMapping', 'printMode', 'query', 'rowDropSettings', 'rowHeight', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'sortSettings', 'textWrapSettings', 'toolbar', 'treeColumnIndex', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkboxChange', 'collapsed', 'collapsing', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'detailDataBound', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'expanded', 'expanding', 'headerCellInfo', 'load', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * `ejs-treegrid` represents the VueJS TreeGrid Component.\n * ```vue\n * \n * ```\n */\nexport var TreeGridComponent = vueDefineComponent({\n name: 'TreeGridComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new TreeGrid({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: true,\n tagMapper: { \"e-columns\": { \"e-column\": { \"e-stacked-columns\": \"e-stacked-column\" } }, \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } },\n tagNameMapper: { \"e-stacked-columns\": \"e-columns\" },\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n addRecord: function (data, index, position) {\n return this.ej2Instances.addRecord(data, index, position);\n },\n autoFitColumns: function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n },\n clearFiltering: function () {\n return this.ej2Instances.clearFiltering();\n },\n clearSelection: function () {\n return this.ej2Instances.clearSelection();\n },\n clearSorting: function () {\n return this.ej2Instances.clearSorting();\n },\n closeEdit: function () {\n return this.ej2Instances.closeEdit();\n },\n collapseAll: function () {\n return this.ej2Instances.collapseAll();\n },\n collapseAtLevel: function (level) {\n return this.ej2Instances.collapseAtLevel(level);\n },\n collapseByKey: function (key) {\n return this.ej2Instances.collapseByKey(key);\n },\n collapseRow: function (row, record, key) {\n return this.ej2Instances.collapseRow(row, record, key);\n },\n copy: function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n },\n csvExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n deleteRecord: function (fieldName, data) {\n return this.ej2Instances.deleteRecord(fieldName, data);\n },\n deleteRow: function (tr) {\n return this.ej2Instances.deleteRow(tr);\n },\n editCell: function (rowIndex, field) {\n return this.ej2Instances.editCell(rowIndex, field);\n },\n enableToolbarItems: function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n },\n endEdit: function () {\n return this.ej2Instances.endEdit();\n },\n excelExport: function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n },\n expandAll: function () {\n return this.ej2Instances.expandAll();\n },\n expandAtLevel: function (level) {\n return this.ej2Instances.expandAtLevel(level);\n },\n expandByKey: function (key) {\n return this.ej2Instances.expandByKey(key);\n },\n expandRow: function (row, record, key, level) {\n return this.ej2Instances.expandRow(row, record, key, level);\n },\n extendRequiredModules: function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n },\n filterByColumn: function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n },\n getBatchChanges: function () {\n return this.ej2Instances.getBatchChanges();\n },\n getCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n },\n getCheckedRecords: function () {\n return this.ej2Instances.getCheckedRecords();\n },\n getCheckedRowIndexes: function () {\n return this.ej2Instances.getCheckedRowIndexes();\n },\n getColumnByField: function (field) {\n return this.ej2Instances.getColumnByField(field);\n },\n getColumnByUid: function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n },\n getColumnFieldNames: function () {\n return this.ej2Instances.getColumnFieldNames();\n },\n getColumnHeaderByField: function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n },\n getColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n },\n getColumnHeaderByUid: function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n },\n getColumnIndexByField: function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n },\n getColumnIndexByUid: function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n },\n getColumns: function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n },\n getContent: function () {\n return this.ej2Instances.getContent();\n },\n getContentTable: function () {\n return this.ej2Instances.getContentTable();\n },\n getCurrentViewRecords: function () {\n return this.ej2Instances.getCurrentViewRecords();\n },\n getDataModule: function () {\n return this.ej2Instances.getDataModule();\n },\n getDataRows: function () {\n return this.ej2Instances.getDataRows();\n },\n getFooterContent: function () {\n return this.ej2Instances.getFooterContent();\n },\n getFooterContentTable: function () {\n return this.ej2Instances.getFooterContentTable();\n },\n getFrozenLeftColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n },\n getFrozenRightCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n },\n getFrozenRightColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n },\n getFrozenRightDataRows: function () {\n return this.ej2Instances.getFrozenRightDataRows();\n },\n getFrozenRightRowByIndex: function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n },\n getFrozenRightRows: function () {\n return this.ej2Instances.getFrozenRightRows();\n },\n getHeaderContent: function () {\n return this.ej2Instances.getHeaderContent();\n },\n getHeaderTable: function () {\n return this.ej2Instances.getHeaderTable();\n },\n getMovableCellFromIndex: function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n },\n getMovableColumnHeaderByIndex: function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n },\n getMovableDataRows: function () {\n return this.ej2Instances.getMovableDataRows();\n },\n getMovableRowByIndex: function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n },\n getMovableRows: function () {\n return this.ej2Instances.getMovableRows();\n },\n getPager: function () {\n return this.ej2Instances.getPager();\n },\n getPrimaryKeyFieldNames: function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n },\n getRowByIndex: function (index) {\n return this.ej2Instances.getRowByIndex(index);\n },\n getRowInfo: function (target) {\n return this.ej2Instances.getRowInfo(target);\n },\n getRows: function () {\n return this.ej2Instances.getRows();\n },\n getSelectedRecords: function () {\n return this.ej2Instances.getSelectedRecords();\n },\n getSelectedRowCellIndexes: function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n },\n getSelectedRowIndexes: function () {\n return this.ej2Instances.getSelectedRowIndexes();\n },\n getSelectedRows: function () {\n return this.ej2Instances.getSelectedRows();\n },\n getUidByColumnField: function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n },\n getVisibleColumns: function () {\n return this.ej2Instances.getVisibleColumns();\n },\n getVisibleRecords: function () {\n return this.ej2Instances.getVisibleRecords();\n },\n goToPage: function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n },\n hideColumns: function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n },\n hideSpinner: function () {\n return this.ej2Instances.hideSpinner();\n },\n indent: function (record) {\n return this.ej2Instances.indent(record);\n },\n openColumnChooser: function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n },\n outdent: function (record) {\n return this.ej2Instances.outdent(record);\n },\n paste: function (data, rowIndex, colIndex) {\n return this.ej2Instances.paste(data, rowIndex, colIndex);\n },\n pdfExport: function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n },\n print: function () {\n return this.ej2Instances.print();\n },\n refresh: function () {\n return this.ej2Instances.refresh();\n },\n refreshColumns: function (refreshUI) {\n return this.ej2Instances.refreshColumns(refreshUI);\n },\n refreshHeader: function () {\n return this.ej2Instances.refreshHeader();\n },\n reorderColumns: function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n },\n reorderRows: function (fromIndexes, toIndex, position) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex, position);\n },\n saveCell: function () {\n return this.ej2Instances.saveCell();\n },\n search: function (searchString) {\n return this.ej2Instances.search(searchString);\n },\n selectCell: function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n },\n selectCheckboxes: function (indexes) {\n return this.ej2Instances.selectCheckboxes(indexes);\n },\n selectRow: function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n },\n selectRows: function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n },\n serverCsvExport: function (url) {\n return this.ej2Instances.serverCsvExport(url);\n },\n serverExcelExport: function (url) {\n return this.ej2Instances.serverExcelExport(url);\n },\n serverPdfExport: function (url) {\n return this.ej2Instances.serverPdfExport(url);\n },\n setCellValue: function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n },\n setRowData: function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n },\n showColumns: function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n },\n showSpinner: function () {\n return this.ej2Instances.showSpinner();\n },\n sortByColumn: function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortByColumn(columnName, direction, isMultiSort);\n },\n startEdit: function (row) {\n return this.ej2Instances.startEdit(row);\n },\n updateCell: function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n },\n updateExternalMessage: function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n },\n updateRow: function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n },\n }\n});\nexport var TreeGridPlugin = {\n name: 'ejs-treegrid',\n install: function (Vue) {\n Vue.component(TreeGridPlugin.name, TreeGridComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(StackedColumnPlugin.name, StackedColumnDirective);\n Vue.component(StackedColumnsPlugin.name, StackedColumnsDirective);\n Vue.component(AggregatePlugin.name, AggregateDirective);\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\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 * 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","/* eslint-disable */\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Utils.bitReverse = function (value) {\n return (Utils.reverseBits[value & 15] << 12\n | Utils.reverseBits[(value >> 4) & 15] << 8\n | Utils.reverseBits[(value >> 8) & 15] << 4\n | Utils.reverseBits[value >> 12]);\n };\n Utils.bitConverterToInt32 = function (value, index) {\n return value[index] | value[index + 1] << 8 | value[index + 2] << 16 | value[index + 3] << 24;\n };\n Utils.bitConverterToInt16 = function (value, index) {\n return value[index] | value[index + 1] << 8;\n };\n Utils.bitConverterToUInt32 = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterToUInt16 = function (value, index) {\n var uint = new Uint16Array(1);\n uint[0] = (value[index] | value[index + 1] << 8);\n return uint[0];\n };\n Utils.bitConverterUintToInt32 = function (value) {\n var uint = new Int32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToUint = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToInt16 = function (value) {\n var uint = new Int16Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.byteToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.byteIntToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.arrayCopy = function (source, sourceIndex, destination, destinationIndex, dataToCopy) {\n var temp = new Uint8Array(source.buffer, sourceIndex);\n var data = temp.subarray(0, dataToCopy);\n destination.set(data, destinationIndex);\n };\n Utils.mergeArray = function (arrayOne, arrayTwo) {\n var mergedArray = new Uint8Array(arrayOne.length + arrayTwo.length);\n mergedArray.set(arrayOne);\n mergedArray.set(arrayTwo, arrayOne.length);\n return mergedArray;\n };\n /**\n * @private\n */\n Utils.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var encode1;\n var encode2;\n var encode3;\n var encode4;\n var count = 0;\n var resultIndex = 0;\n /*let dataUrlPrefix: string = '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 if (input.charAt(input.length - 2) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error('Invalid base64 input, bad content length.');\n }\n var output = new Uint8Array(totalLength | 0);\n while (count < input.length) {\n encode1 = keyStr.indexOf(input.charAt(count++));\n encode2 = keyStr.indexOf(input.charAt(count++));\n encode3 = keyStr.indexOf(input.charAt(count++));\n encode4 = keyStr.indexOf(input.charAt(count++));\n chr1 = (encode1 << 2) | (encode2 >> 4);\n chr2 = ((encode2 & 15) << 4) | (encode3 >> 2);\n chr3 = ((encode3 & 3) << 6) | encode4;\n output[resultIndex++] = chr1;\n if (encode3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (encode4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n };\n Utils.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n Utils.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return Utils;\n}());\nexport { Utils };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { Utils } from './index';\nvar DecompressorHuffmanTree = /** @class */ (function () {\n function DecompressorHuffmanTree(lengths) {\n this.buildTree(lengths);\n }\n DecompressorHuffmanTree.init = function () {\n var lengths;\n var index;\n // Generate huffman tree for lengths.\n lengths = new Uint8Array(288);\n index = 0;\n while (index < 144) {\n lengths[index++] = 8;\n }\n while (index < 256) {\n lengths[index++] = 9;\n }\n while (index < 280) {\n lengths[index++] = 7;\n }\n while (index < 288) {\n lengths[index++] = 8;\n }\n DecompressorHuffmanTree.m_LengthTree = new DecompressorHuffmanTree(lengths);\n // Generate huffman tree for distances.\n lengths = new Uint8Array(32);\n index = 0;\n while (index < 32) {\n lengths[index++] = 5;\n }\n DecompressorHuffmanTree.m_DistanceTree = new DecompressorHuffmanTree(lengths);\n };\n /// \n /// Prepares data for generating huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Array of code lengths.\n /// Calculated tree size.\n /// Code.\n DecompressorHuffmanTree.prototype.prepareData = function (blCount, nextCode, lengths) {\n var code = 0;\n var treeSize = 512;\n // Count number of codes for each code length.\n for (var i = 0; i < lengths.length; i++) {\n var length_1 = lengths[i];\n if (length_1 > 0) {\n blCount[length_1]++;\n }\n }\n for (var bits = 1; bits <= DecompressorHuffmanTree.MAX_BITLEN; bits++) {\n nextCode[bits] = code;\n code += blCount[bits] << (16 - bits);\n if (bits >= 10) {\n var start = nextCode[bits] & 0x1ff80;\n var end = code & 0x1ff80;\n treeSize += (end - start) >> (16 - bits);\n }\n }\n /* if( code != 65536 )\n throw new ZipException( \"Code lengths don't add up properly.\" );*/\n return { 'code': code, 'treeSize': treeSize };\n };\n /// \n /// Generates huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Precalculated code.\n /// Array of code lengths.\n /// Calculated size of the tree.\n /// Generated tree.\n DecompressorHuffmanTree.prototype.treeFromData = function (blCount, nextCode, lengths, code, treeSize) {\n var tree = new Int16Array(treeSize);\n var pointer = 512;\n var increment = 1 << 7;\n for (var bits = DecompressorHuffmanTree.MAX_BITLEN; bits >= 10; bits--) {\n var end = code & 0x1ff80;\n code -= blCount[bits] << (16 - bits);\n var start = code & 0x1ff80;\n for (var i = start; i < end; i += increment) {\n tree[Utils.bitReverse(i)] = Utils.bitConverterInt32ToInt16((-pointer << 4) | bits);\n pointer += 1 << (bits - 9);\n }\n }\n for (var i = 0; i < lengths.length; i++) {\n var bits = lengths[i];\n if (bits == 0) {\n continue;\n }\n code = nextCode[bits];\n var revcode = Utils.bitReverse(code);\n if (bits <= 9) {\n do {\n tree[revcode] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < 512);\n }\n else {\n var subTree = tree[revcode & 511];\n var treeLen = 1 << (subTree & 15);\n subTree = -(subTree >> 4);\n do {\n tree[subTree | (revcode >> 9)] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < treeLen);\n }\n nextCode[bits] = code + (1 << (16 - bits));\n }\n return tree;\n };\n /// \n /// Builds huffman tree from array of code lengths.\n /// \n /// Array of code lengths.\n DecompressorHuffmanTree.prototype.buildTree = function (lengths) {\n // Count of codes for each code length.\n var blCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // Numerical value of the smallest code for each code length.\n var nextCode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var prepareData = this.prepareData(blCount, nextCode, lengths);\n this.m_Tree = this.treeFromData(blCount, nextCode, lengths, prepareData.code, prepareData.treeSize);\n };\n /// \n /// Reads and decompresses one symbol.\n /// \n /// \n /// \n DecompressorHuffmanTree.prototype.unpackSymbol = function (input) {\n var lookahead;\n var symbol;\n if ((lookahead = input.peekBits(9)) >= 0) {\n if ((symbol = this.m_Tree[lookahead]) >= 0) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n var subtree = -(symbol >> 4);\n var bitlen = symbol & 15;\n if ((lookahead = input.peekBits(bitlen)) >= 0) {\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n if ((symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[lookahead];\n if (symbol >= 0 && (symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n };\n Object.defineProperty(DecompressorHuffmanTree, \"lengthTree\", {\n /// \n /// GET huffman tree for encoding and decoding lengths.\n /// \n get: function () {\n return this.m_LengthTree;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DecompressorHuffmanTree, \"distanceTree\", {\n /// \n /// GET huffman tree for encoding and decoding distances.\n /// \n get: function () {\n return this.m_DistanceTree;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Maximum count of bits.\n /// \n DecompressorHuffmanTree.MAX_BITLEN = 15;\n return DecompressorHuffmanTree;\n}());\nexport { DecompressorHuffmanTree };\n/* eslint-enable */ \n","/* eslint-disable */\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 /// \n /// Current checksum.\n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumUpdate = function (checksum, buffer, offset, length) {\n var checkSumUInt = checksum;\n var s1 = checkSumUInt & 65535;\n var s2 = checkSumUInt >> this.DEF_CHECKSUM_BIT_OFFSET;\n while (length > 0) {\n var steps = Math.min(length, this.DEF_CHECKSUM_ITERATIONSCOUNT);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (buffer[offset++] & 255);\n s2 = s2 + s1;\n }\n s1 %= this.DEF_CHECKSUM_BASE;\n s2 %= this.DEF_CHECKSUM_BASE;\n }\n checkSumUInt = (s2 << this.DEF_CHECKSUM_BIT_OFFSET) | s1;\n checksum = checkSumUInt;\n };\n /// \n /// Generates checksum by calculating checksum of the\n /// given buffer.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumGenerate = function (buffer, offset, length) {\n var result = 1;\n ChecksumCalculator.ChecksumUpdate(result, buffer, offset, length);\n return result;\n };\n /// \n /// Bits offset, used in adler checksum calculation.\n /// \n ChecksumCalculator.DEF_CHECKSUM_BIT_OFFSET = 16;\n /// \n /// Lagrest prime, less than 65535\n /// \n ChecksumCalculator.DEF_CHECKSUM_BASE = 65521;\n /// \n /// Count of iteration used in calculated of the adler checksumm.\n /// \n ChecksumCalculator.DEF_CHECKSUM_ITERATIONSCOUNT = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { DecompressorHuffmanTree } from './decompressor-huffman-tree';\nimport { Utils } from './utils';\nimport { ChecksumCalculator } from './checksum-calculator';\nvar CompressedStreamReader = /** @class */ (function () {\n function CompressedStreamReader(stream, bNoWrap) {\n /// \n /// Code lengths for the code length alphabet.\n /// \n this.defaultHuffmanDynamicTree = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /// \n /// Mask for compression method to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_METHOD_MASK = 15 << 8;\n /// \n /// Mask for compression info to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_INFO_MASK = 240 << 8;\n /// \n /// Mask for check bits to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FCHECK = 31;\n /// \n /// Mask for dictionary presence to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FDICT = 32;\n /// \n /// Mask for compression level to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FLEVEL = 192;\n /// \n /// Maximum size of the data window.\n /// \n this.DEF_MAX_WINDOW_SIZE = 65535;\n /// \n /// Maximum length of the repeatable block.\n /// \n this.DEF_HUFFMAN_REPEATE_MAX = 258;\n /// \n /// End of the block sign.\n /// \n this.DEF_HUFFMAN_END_BLOCK = 256;\n /// \n /// Minimal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE = 257;\n /// \n /// Maximal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE = 285;\n /// \n /// Maximal distance code.\n /// \n this.DEF_HUFFMAN_DISTANCE_MAXIMUMCODE = 29;\n /// \n /// Currently calculated checksum,\n /// based on Adler32 algorithm.\n /// \n this.mCheckSum = 1;\n /// \n /// Currently read 4 bytes.\n /// \n this.tBuffer = 0;\n /// \n /// Count of bits that are in buffer.\n /// \n this.mBufferedBits = 0;\n /// \n /// Temporary buffer.\n /// \n this.mTempBuffer = new Uint8Array(4);\n /// \n /// 32k buffer for unpacked data.\n /// \n this.mBlockBuffer = new Uint8Array(this.DEF_MAX_WINDOW_SIZE);\n /// \n /// No wrap mode.\n /// \n this.mbNoWrap = false;\n /// \n /// Window size, can not be larger than 32k.\n /// \n this.mWindowSize = 0;\n /// \n /// Current position in output stream.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mCurrentPosition = 0;\n /// \n /// Data length.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mDataLength = 0;\n /// \n /// Specifies wheather next block can to be read.\n /// Reading can be denied because the header of the last block have been read.\n /// \n this.mbCanReadNextBlock = true;\n /// \n /// Specifies wheather user can read more data from stream.\n /// \n this.mbCanReadMoreData = true;\n /// \n /// Specifies wheather checksum has been read.\n /// \n this.mbCheckSumRead = false;\n if (stream == null) {\n throw new DOMException('stream');\n }\n if (stream.length === 0) {\n throw new DOMException('stream - string can not be empty');\n }\n DecompressorHuffmanTree.init();\n this.mInputStream = new Stream(stream);\n this.mbNoWrap = bNoWrap;\n if (!this.mbNoWrap) {\n this.readZLibHeader();\n }\n this.decodeBlockHeader();\n }\n Object.defineProperty(CompressedStreamReader.prototype, \"mBuffer\", {\n get: function () {\n return this.tBuffer;\n },\n set: function (value) {\n this.tBuffer = value;\n },\n enumerable: true,\n configurable: true\n });\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 /// \n /// Reads specified count of bits without adjusting position.\n /// \n /// Count of bits to be read.\n /// Read value.\n CompressedStreamReader.prototype.peekBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count > 32) {\n throw new DOMException('count', 'Count of bits is too large.');\n }\n // If buffered data is not enough to give result,\n // fill buffer.\n if (this.mBufferedBits < count) {\n this.fillBuffer();\n }\n // If you want to read 4 bytes and there is partial data in\n // buffer, than you will fail.\n if (this.mBufferedBits < count) {\n return -1;\n }\n // Create bitmask for reading of count bits\n var bitMask = ~(4294967295 << count);\n var result = Utils.bitConverterUintToInt32(this.mBuffer & bitMask);\n //Debug.WriteLine( /*new string( ' ', 32 - mBufferedBits + (int)( ( 32 - mBufferedBits ) / 8 ) ) + BitsToString( (int)mBuffer, mBufferedBits ) + \" \" + BitsToString( result, count ) +*/ \" \" + result.ToString() );\n return result;\n };\n CompressedStreamReader.prototype.fillBuffer = function () {\n var length = 4 - (this.mBufferedBits >> 3) -\n (((this.mBufferedBits & 7) !== 0) ? 1 : 0);\n if (length === 0) {\n return;\n }\n //TODO: fix this\n var bytesRead = this.mInputStream.read(this.mTempBuffer, 0, length);\n for (var i = 0; i < bytesRead; i++) {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer |\n (Utils.bitConverterInt32ToUint(this.mTempBuffer[i] << this.mBufferedBits)));\n this.mBufferedBits += 8;\n }\n //TODO: fix this\n };\n /// \n /// Skips specified count of bits.\n /// \n /// Count of bits to be skipped.\n CompressedStreamReader.prototype.skipBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count === 0) {\n return;\n }\n if (count >= this.mBufferedBits) {\n count -= this.mBufferedBits;\n this.mBufferedBits = 0;\n this.mBuffer = 0;\n // if something left, skip it.\n if (count > 0) {\n // Skip entire bytes.\n this.mInputStream.position += (count >> 3); //TODO: fix this\n count &= 7;\n // Skip bits.\n if (count > 0) {\n this.fillBuffer();\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n }\n }\n else {\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n };\n Object.defineProperty(CompressedStreamReader.prototype, \"availableBits\", {\n get: function () {\n return this.mBufferedBits;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Reads ZLib header with compression method and flags.\n /// \n CompressedStreamReader.prototype.readZLibHeader = function () {\n // first 8 bits - compression Method and flags\n // 8 other - flags\n var header = this.readInt16();\n //Debug.WriteLine( BitsToString( header ) );\n if (header === -1) {\n throw new DOMException('Header of the stream can not be read.');\n }\n if (header % 31 !== 0) {\n throw new DOMException('Header checksum illegal');\n }\n if ((header & this.DEF_HEADER_METHOD_MASK) !== (8 << 8)) {\n throw new DOMException('Unsupported compression method.');\n }\n this.mWindowSize = Math.pow(2, ((header & this.DEF_HEADER_INFO_MASK) >> 12) + 8);\n if (this.mWindowSize > 65535) {\n throw new DOMException('Unsupported window size for deflate compression method.');\n }\n if ((header & this.DEF_HEADER_FLAGS_FDICT) >> 5 === 1) {\n // Get dictionary.\n throw new DOMException('Custom dictionary is not supported at the moment.');\n }\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16 = function () {\n var result = (this.readBits(8) << 8);\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Reads specified count of bits from stream.\n /// \n /// Count of bits to be read.\n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readBits = function (count) {\n var result = this.peekBits(count);\n if (result === -1) {\n return -1;\n }\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n return result;\n };\n /// \n /// Reads and decodes block of data.\n /// \n /// True if buffer was empty and new data was read, otherwise - False.\n CompressedStreamReader.prototype.decodeBlockHeader = function () {\n if (!this.mbCanReadNextBlock) {\n return false;\n }\n var bFinalBlock = this.readBits(1);\n if (bFinalBlock === -1) {\n return false;\n }\n var blockType = this.readBits(2);\n if (blockType === -1) {\n return false;\n }\n this.mbCanReadNextBlock = (bFinalBlock === 0);\n // ChecksumReset();\n switch (blockType) {\n case 0:\n // Uncompressed data\n this.mbReadingUncompressed = true;\n this.skipToBoundary();\n var length_1 = this.readInt16Inverted();\n var lengthComplement = this.readInt16Inverted();\n if (length_1 !== (lengthComplement ^ 0xffff)) {\n throw new DOMException('Wrong block length.');\n }\n if (length_1 > 65535) {\n throw new DOMException('Uncompressed block length can not be more than 65535.');\n }\n this.mUncompressedDataLength = length_1;\n this.mCurrentLengthTree = null;\n this.mCurrentDistanceTree = null;\n break;\n case 1:\n // Compressed data with fixed huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n this.mCurrentLengthTree = DecompressorHuffmanTree.lengthTree;\n this.mCurrentDistanceTree = DecompressorHuffmanTree.distanceTree;\n break;\n case 2:\n // Compressed data with dynamic huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n var trees = this.decodeDynamicHeader(this.mCurrentLengthTree, this.mCurrentDistanceTree);\n this.mCurrentLengthTree = trees.lengthTree;\n this.mCurrentDistanceTree = trees.distanceTree;\n break;\n default:\n throw new DOMException('Wrong block type.');\n }\n return true;\n };\n /// \n /// Discards left-most partially used byte.\n /// \n CompressedStreamReader.prototype.skipToBoundary = function () {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> (this.mBufferedBits & 7));\n this.mBufferedBits &= ~7;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16Inverted = function () {\n var result = (this.readBits(8));\n result |= this.readBits(8) << 8;\n return result;\n };\n /// \n /// Reades dynamic huffman codes from block header.\n /// \n /// Literals/Lengths tree.\n /// Distances tree.\n CompressedStreamReader.prototype.decodeDynamicHeader = function (lengthTree, distanceTree) {\n var bLastSymbol = 0;\n var iLengthsCount = this.readBits(5);\n var iDistancesCount = this.readBits(5);\n var iCodeLengthsCount = this.readBits(4);\n if (iLengthsCount < 0 || iDistancesCount < 0 || iCodeLengthsCount < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n iLengthsCount += 257;\n iDistancesCount += 1;\n var iResultingCodeLengthsCount = iLengthsCount + iDistancesCount;\n var arrResultingCodeLengths = new Uint8Array(iResultingCodeLengthsCount);\n var arrDecoderCodeLengths = new Uint8Array(19);\n iCodeLengthsCount += 4;\n var iCurrentCode = 0;\n while (iCurrentCode < iCodeLengthsCount) {\n var len = this.readBits(3);\n if (len < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n arrDecoderCodeLengths[this.defaultHuffmanDynamicTree[iCurrentCode++]] = len;\n }\n var treeInternalDecoder = new DecompressorHuffmanTree(arrDecoderCodeLengths);\n iCurrentCode = 0;\n for (;;) {\n var symbol = void 0;\n var bNeedBreak = false;\n symbol = treeInternalDecoder.unpackSymbol(this);\n while ((symbol & ~15) === 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol = symbol;\n if (iCurrentCode === iResultingCodeLengthsCount) {\n bNeedBreak = true;\n break;\n }\n symbol = treeInternalDecoder.unpackSymbol(this);\n }\n if (bNeedBreak) {\n break;\n }\n if (symbol < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n if (symbol >= 17) {\n bLastSymbol = 0;\n }\n else if (iCurrentCode === 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n var miRepSymbol = symbol - 16;\n var bits = CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS[miRepSymbol];\n var count = this.readBits(bits);\n if (count < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n count += CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS[miRepSymbol];\n if (iCurrentCode + count > iResultingCodeLengthsCount) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n while (count-- > 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol;\n }\n if (iCurrentCode === iResultingCodeLengthsCount) {\n break;\n }\n }\n var tempArray = new Uint8Array(iLengthsCount);\n tempArray.set(arrResultingCodeLengths.subarray(0, iLengthsCount), 0);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n //Array.copy( arrResultingCodeLengths, 0, tempArray, 0, iLengthsCount );\n lengthTree = new DecompressorHuffmanTree(tempArray);\n tempArray = arrResultingCodeLengths.slice(iLengthsCount, iLengthsCount + iDistancesCount);\n //Array.copy( arrResultingCodeLengths, iLengthsCount, tempArray, 0, iDistancesCount );\n distanceTree = new DecompressorHuffmanTree(tempArray);\n return { 'lengthTree': lengthTree, 'distanceTree': distanceTree };\n };\n /// \n /// Decodes huffman codes.\n /// \n /// True if some data was read.\n CompressedStreamReader.prototype.readHuffman = function () {\n var free = this.DEF_MAX_WINDOW_SIZE - (this.mDataLength - this.mCurrentPosition);\n var dataRead = false;\n //long maxdistance = DEF_MAX_WINDOW_SIZE >> 1;\n var readdata = {};\n // DEF_HUFFMAN_REPEATE_MAX - longest repeatable block, we should always reserve space for it because\n // if we should not, we will have buffer overrun.\n while (free >= this.DEF_HUFFMAN_REPEATE_MAX) {\n var symbol = void 0;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n // Only codes 0..255 are valid independent symbols.\n while (((symbol) & ~0xff) === 0) {\n readdata[(this.mDataLength + 1) % this.DEF_MAX_WINDOW_SIZE] = symbol;\n this.mBlockBuffer[this.mDataLength++ % this.DEF_MAX_WINDOW_SIZE] = symbol;\n dataRead = true;\n if (--free < this.DEF_HUFFMAN_REPEATE_MAX) {\n return true;\n }\n //if( (mDataLength - mCurrentPosition ) < maxdistance ) return true;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n }\n if (symbol < this.DEF_HUFFMAN_LENGTH_MINIMUMCODE) {\n if (symbol < this.DEF_HUFFMAN_END_BLOCK) {\n throw new DOMException('Illegal code.');\n }\n var numDataRead = dataRead ? 1 : 0;\n this.mbCanReadMoreData = this.decodeBlockHeader();\n var numReadMore = (this.mbCanReadMoreData) ? 1 : 0;\n return (numDataRead | numReadMore) ? true : false;\n }\n if (symbol > this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE) {\n throw new DOMException('Illegal repeat code length.');\n }\n var iRepeatLength = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n var iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatLength += extra;\n }\n // Unpack repeat distance.\n symbol = this.mCurrentDistanceTree.unpackSymbol(this);\n if (symbol < 0 || symbol > CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE.length) {\n throw new DOMException('Wrong distance code.');\n }\n var iRepeatDistance = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE[symbol];\n iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION[symbol];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatDistance += extra;\n }\n // Copy data in slow repeat mode\n for (var i = 0; i < iRepeatLength; i++) {\n this.mBlockBuffer[this.mDataLength % this.DEF_MAX_WINDOW_SIZE] =\n this.mBlockBuffer[(this.mDataLength - iRepeatDistance) % this.DEF_MAX_WINDOW_SIZE];\n this.mDataLength++;\n free--;\n }\n dataRead = true;\n }\n return dataRead;\n };\n /// \n /// Reads data to buffer.\n /// \n /// Output buffer for data.\n /// Offset in output data.\n /// Length of the data to be read.\n /// Count of bytes actually read.\n CompressedStreamReader.prototype.read = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset', 'Offset does not belong to specified buffer.');\n }\n if (length < 0 || length > buffer.length - offset) {\n throw new DOMException('length', 'Length is illegal.');\n }\n var initialLength = length;\n while (length > 0) {\n // Read from internal buffer.\n if (this.mCurrentPosition < this.mDataLength) {\n // Position in buffer array.\n var inBlockPosition = (this.mCurrentPosition % this.DEF_MAX_WINDOW_SIZE);\n // We can not read more than we have in buffer at once,\n // and we not read more than till the array end.\n var dataToCopy = Math.min(this.DEF_MAX_WINDOW_SIZE - inBlockPosition, (this.mDataLength - this.mCurrentPosition));\n // Reading not more, than the rest of the buffer.\n dataToCopy = Math.min(dataToCopy, length);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n // Copy data.\n //Array.Copy( mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy );\n //buffer.set(this.mBlockBuffer.slice(inBlockPosition, dataToCopy), offset);\n Utils.arrayCopy(this.mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy);\n // Correct position, length,\n this.mCurrentPosition += dataToCopy;\n offset += dataToCopy;\n length -= dataToCopy;\n }\n else {\n if (!this.mbCanReadMoreData) {\n break;\n }\n var oldDataLength = this.mDataLength;\n if (!this.mbReadingUncompressed) {\n if (!this.readHuffman()) {\n break;\n }\n }\n else {\n if (this.mUncompressedDataLength === 0) {\n // If there is no more data in stream, just exit.\n this.mbCanReadMoreData = this.decodeBlockHeader();\n if (!(this.mbCanReadMoreData)) {\n break;\n }\n }\n else {\n // Position of the data end in block buffer.\n var inBlockPosition = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n var dataToRead = Math.min(this.mUncompressedDataLength, this.DEF_MAX_WINDOW_SIZE - inBlockPosition);\n var dataRead = this.readPackedBytes(this.mBlockBuffer, inBlockPosition, dataToRead);\n if (dataToRead !== dataRead) {\n throw new DOMException('Not enough data in stream.');\n }\n this.mUncompressedDataLength -= dataRead;\n this.mDataLength += dataRead;\n }\n }\n if (oldDataLength < this.mDataLength) {\n var start = (oldDataLength % this.DEF_MAX_WINDOW_SIZE);\n var end = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n if (start < end) {\n this.checksumUpdate(this.mBlockBuffer, start, end - start);\n }\n else {\n this.checksumUpdate(this.mBlockBuffer, start, this.DEF_MAX_WINDOW_SIZE - start);\n if (end > 0) {\n this.checksumUpdate(this.mBlockBuffer, 0, end);\n }\n }\n }\n }\n }\n if (!this.mbCanReadMoreData && !this.mbCheckSumRead && !this.mbNoWrap) {\n this.skipToBoundary();\n var checkSum = this.readInt32();\n //Debug.Assert( checkSum == mCheckSum, \"\" );\n if (checkSum !== this.mCheckSum) {\n throw new DOMException('Checksum check failed.');\n }\n this.mbCheckSumRead = true;\n }\n return initialLength - length;\n };\n /// \n /// Reads array of bytes.\n /// \n /// Output buffer.\n /// Offset in output buffer.\n /// Length of the data to be read.\n /// Count of bytes actually read to the buffer.\n CompressedStreamReader.prototype.readPackedBytes = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset\", \"Offset can not be less than zero or greater than buffer length - 1.');\n }\n if (length < 0) {\n throw new DOMException('length\", \"Length can not be less than zero.');\n }\n if (length > buffer.length - offset) {\n throw new DOMException('length\", \"Length is too large.');\n }\n if ((this.mBufferedBits & 7) !== 0) {\n throw new DOMException('Reading of unalligned data is not supported.');\n }\n if (length === 0) {\n return 0;\n }\n var result = 0;\n while (this.mBufferedBits > 0 && length > 0) {\n buffer[offset++] = (this.mBuffer);\n this.mBufferedBits -= 8;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> 8);\n length--;\n result++;\n }\n if (length > 0) {\n //TODO: Fix this.\n result += this.mInputStream.read(buffer, offset, length);\n }\n return result;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt32 = function () {\n var result = this.readBits(8) << 24;\n result |= this.readBits(8) << 16;\n result |= this.readBits(8) << 8;\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n CompressedStreamReader.prototype.checksumUpdate = function (buffer, offset, length) {\n ChecksumCalculator.ChecksumUpdate(this.mCheckSum, buffer, offset, length);\n };\n CompressedStreamReader.DEF_REVERSE_BITS = new Uint8Array([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]);\n /// \n /// Minimum count of repetions.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS = [3, 3, 11];\n /// \n /// Bits, that responds for different repetion modes.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS = [2, 3, 7];\n /// \n /// Length bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258\n ];\n /// \n /// Length extended bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,\n 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0\n ];\n /// \n /// Distance bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577\n ];\n /// \n /// Distance extanded bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,\n 12, 12, 13, 13\n ];\n return CompressedStreamReader;\n}());\nexport { CompressedStreamReader };\nvar Stream = /** @class */ (function () {\n function Stream(input) {\n this.position = 0;\n this.inputStream = new Uint8Array(input.buffer);\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.inputStream.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n Stream.prototype.read = function (buffer, start, length) {\n var temp = new Uint8Array(this.inputStream.buffer, this.position + start);\n var data = temp.subarray(0, length);\n buffer.set(data, 0);\n this.position += data.byteLength;\n return data.byteLength;\n };\n Stream.prototype.readByte = function () {\n return this.inputStream[this.position++];\n };\n Stream.prototype.write = function (inputBuffer, offset, count) {\n Utils.arrayCopy(inputBuffer, 0, this.inputStream, this.position + offset, count);\n // this.inputStream = new Uint8Array(this.inputStream.buffer, this.position + offset);\n // this.inputStream.set(inputBuffer, offset);\n this.position += count;\n };\n Stream.prototype.toByteArray = function () {\n return new Uint8Array(this.inputStream.buffer);\n };\n return Stream;\n}());\nexport { Stream };\n/* eslint-enable */ \n","/* eslint-disable */\nimport { CompressedStreamWriter, Stream, CompressedStreamReader } from './index';\nimport { Save } from '@syncfusion/ej2-file-utils';\nimport { Utils } from './utils';\nvar CRC32TABLE = [];\n/// \n/// Size of the int value in bytes.\n/// \nvar INT_SIZE = 4;\n/// \n/// Size of the short value in bytes.\n/// \nvar SHORT_SIZE = 2;\n/// \n/// End of central directory signature.\n/// \nvar CentralDirectoryEndSignature = 0x06054b50;\n/// \n/// Offset to the size field in the End of central directory record.\n/// \nvar CentralDirSizeOffset = 12;\n/// \n/// Central header signature.\n/// \nvar CentralHeaderSignature = 0x02014b50;\n/// \n/// Buffer size.\n/// \nvar BufferSize = 4096;\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, \"items\", {\n get: function () {\n return this.files;\n },\n enumerable: true,\n configurable: true\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 ZipArchive.prototype.open = function (base64String) {\n //return promise = new Promise((resolve: Function, reject: Function) => {\n var zipArchive = this;\n var zipByteArray = Utils.encodedString(base64String);\n if (zipByteArray.length == 0)\n throw new DOMException(\"stream\");\n var stream = new Stream(zipByteArray);\n //let lCentralDirEndPosition = this.findValueFromEnd( arrBuffer, Constants.CentralDirectoryEndSignature, 65557 );\n var lCentralDirEndPosition = ZipArchive.findValueFromEnd(stream, CentralDirectoryEndSignature, 65557);\n if (lCentralDirEndPosition < 0)\n throw new DOMException(\"Can't locate end of central directory record. Possible wrong file format or archive is corrupt.\");\n // Step2. Locate central directory and iterate through all items\n stream.position = lCentralDirEndPosition + CentralDirSizeOffset;\n var iCentralDirSize = ZipArchive.ReadInt32(stream);\n var lCentralDirPosition = lCentralDirEndPosition - iCentralDirSize;\n // verify that this is really central directory\n stream.position = lCentralDirPosition;\n this.readCentralDirectoryDataAndExtractItems(stream);\n //});\n // let zipArchive: ZipArchive = this;\n //let promise: Promise;\n // return promise = new Promise((resolve: Function, reject: Function) => {\n // let reader: FileReader = new FileReader();\n // reader.onload = (e: Event) => {\n // let data: Uint8Array = new Uint8Array((e.target as any).result);\n // let zipReader: ZipReader = new ZipReader(data);\n // zipReader.readEntries().then((entries: ZipEntry[]) => {\n // for (let i: number = 0; i < entries.length; i++) {\n // let entry: ZipEntry = entries[i];\n // let item: ZipArchiveItem = new ZipArchiveItem(zipArchive, entry.fileName);\n // item.data = entry.data;\n // item.compressionMethod = entry.compressionMethod;\n // item.crc = entry.crc;\n // item.lastModified = entry.lastModified;\n // item.lastModifiedDate = entry.lastModifiedDate;\n // item.size = entry.size;\n // item.uncompressedSize = entry.uncompressedSize;\n // zipArchive.addItem(item);\n // }\n // resolve(zipArchive);\n // });\n // };\n // reader.readAsArrayBuffer(fileName);\n // });\n };\n /// \n /// Read central directory record from the stream.\n /// \n /// Stream to read from.\n ZipArchive.prototype.readCentralDirectoryDataAndExtractItems = function (stream) {\n if (stream == null)\n throw new DOMException(\"stream\");\n var itemHelper;\n while (ZipArchive.ReadInt32(stream) == CentralHeaderSignature) {\n itemHelper = new ZipArchiveItemHelper();\n itemHelper.readCentralDirectoryData(stream);\n itemHelper;\n // let item: ZipArchiveItem = new ZipArchiveItem(this);\n // item.ReadCentralDirectoryData(stream);\n // m_arrItems.Add(item);\n }\n itemHelper.readData(stream, itemHelper.checkCrc);\n itemHelper.decompressData();\n this.files.push(new ZipArchiveItem(itemHelper.unCompressedStream.buffer, itemHelper.name));\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 ZipArchive.findValueFromEnd = function (stream, value, maxCount) {\n if (stream == null)\n throw new DOMException(\"stream\");\n // if( !stream.CanSeek || !stream.CanRead )\n // throw new ArgumentOutOfRangeException( \"We need to have seekable and readable stream.\" );\n // read last 4 bytes and compare with required value\n var lStreamSize = stream.inputStream.buffer.byteLength;\n if (lStreamSize < 4)\n return -1;\n var arrBuffer = new Uint8Array(4);\n var lLastPos = Math.max(0, lStreamSize - maxCount);\n var lCurrentPosition = lStreamSize - 1 - INT_SIZE;\n stream.position = lCurrentPosition;\n stream.read(arrBuffer, 0, INT_SIZE);\n var uiCurValue = arrBuffer[0];\n var bFound = (uiCurValue == value);\n if (!bFound) {\n while (lCurrentPosition > lLastPos) {\n // remove unnecessary byte and replace it with new value.\n uiCurValue <<= 8;\n lCurrentPosition--;\n stream.position = lCurrentPosition;\n uiCurValue += stream.readByte();\n if (uiCurValue == value) {\n bFound = true;\n break;\n }\n }\n }\n return bFound ? lCurrentPosition : -1;\n };\n /// \n /// Extracts Int32 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt32 = function (stream) {\n var buffer = new Uint8Array(INT_SIZE);\n if (stream.read(buffer, 0, INT_SIZE) != INT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt32(buffer, 0);\n };\n /// \n /// Extracts Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt16 = function (stream) {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n };\n /// \n /// Extracts unsigned Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadUInt16 = function (stream) {\n {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\nvar ZipArchiveItemHelper = /** @class */ (function () {\n function ZipArchiveItemHelper() {\n /// \n /// Zip header signature.\n /// \n this.headerSignature = 0x04034b50;\n /// \n /// Indicates whether we should check Crc value when reading item's data. Check\n /// is performed when user gets access to decompressed data for the first time.\n /// \n this.checkCrc = true;\n /// \n /// Crc.\n /// \n this.crc32 = 0;\n }\n /// \n /// Read data from the stream based on the central directory.\n /// \n /// Stream to read data from, stream.Position must point at just after correct file header.\n ZipArchiveItemHelper.prototype.readCentralDirectoryData = function (stream) {\n // on the current moment we ignore \"version made by\" and \"version needed to extract\" fields.\n stream.position += 4;\n this.options = ZipArchive.ReadInt16(stream);\n this.compressionMethod = ZipArchive.ReadInt16(stream);\n this.checkCrc = (this.compressionMethod != 99); //COmpression.Defalte != SecurityConstants.AES\n //m_bCompressed = true;\n // on the current moment we ignore \"last mod file time\" and \"last mod file date\" fields.\n var lastModified = ZipArchive.ReadInt32(stream);\n //LastModified = ConvertToDateTime(lastModified);\n this.crc32 = Utils.bitConverterToUInt32(ZipArchive.ReadInt32(stream));\n this.compressedSize = ZipArchive.ReadInt32(stream);\n this.originalSize = ZipArchive.ReadInt32(stream);\n var iFileNameLength = ZipArchive.ReadInt16(stream);\n var iExtraFieldLenth = ZipArchive.ReadInt16(stream);\n var iCommentLength = ZipArchive.ReadInt16(stream);\n // on the current moment we ignore and \"disk number start\" (2 bytes),\n // \"internal file attributes\" (2 bytes).\n stream.position += 4;\n this.externalAttributes = ZipArchive.ReadInt32(stream);\n this.localHeaderOffset = ZipArchive.ReadInt32(stream);\n var arrBuffer = new Uint8Array(iFileNameLength);\n stream.read(arrBuffer, 0, iFileNameLength);\n var m_strItemName = Utils.byteToString(arrBuffer);\n m_strItemName = m_strItemName.replace(\"\\\\\", \"/\");\n this.name = m_strItemName;\n stream.position += iExtraFieldLenth + iCommentLength;\n if (this.options != 0)\n this.options = 0;\n };\n /// \n /// Reads zipped data from the stream.\n /// \n /// Stream to read data from.\n /// Indicates whether we should check crc value after data decompression.\n ZipArchiveItemHelper.prototype.readData = function (stream, checkCrc) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n stream.position = this.localHeaderOffset;\n this.checkCrc = checkCrc;\n this.readLocalHeader(stream);\n this.readCompressedData(stream);\n };\n ZipArchiveItemHelper.prototype.decompressData = function () {\n if (this.compressionMethod == 8) {\n if (this.originalSize > 0) {\n this.decompressDataOld();\n }\n }\n };\n ZipArchiveItemHelper.prototype.decompressDataOld = function () {\n var reader = new CompressedStreamReader(this.compressedStream, true);\n var decompressedData;\n if (this.originalSize > 0)\n decompressedData = new Stream(new Uint8Array(this.originalSize));\n var arrBuffer = new Uint8Array(BufferSize);\n var iReadBytes;\n var past = new Uint8Array(0);\n while ((iReadBytes = reader.read(arrBuffer, 0, BufferSize)) > 0) {\n // past = new Uint8Array(decompressedData.length);\n // let currentBlock: Uint8Array = arrBuffer.subarray(0, iReadBytes);\n decompressedData.write(arrBuffer.subarray(0, iReadBytes), 0, iReadBytes);\n }\n this.unCompressedStream = decompressedData.toByteArray();\n // this.originalSize = decompressedData.Length;\n // m_bControlStream = true;\n // m_streamData = decompressedData;\n // decompressedData.SetLength( m_lOriginalSize );\n // decompressedData.Capacity = ( int )m_lOriginalSize;\n if (this.checkCrc) {\n //TODO: fix this\n //CheckCrc(decompressedData.ToArray());\n }\n //m_streamData.Position = 0;\n };\n /// \n /// Extracts local header from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readLocalHeader = function (stream) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n if (ZipArchive.ReadInt32(stream) != this.headerSignature)\n throw new DOMException(\"Can't find local header signature - wrong file format or file is corrupt.\");\n // TODO: it is good to verify data read from the central directory record,\n // but on the current moment we simply skip it.\n stream.position += 22;\n var iNameLength = ZipArchive.ReadInt16(stream);\n var iExtraLength = ZipArchive.ReadUInt16(stream);\n if (this.compressionMethod == 99) //SecurityConstants.AES\n {\n // stream.Position += iNameLength + 8;\n // m_archive.EncryptionAlgorithm = (EncryptionAlgorithm)stream.ReadByte();\n // m_actualCompression = new byte[2];\n // stream.Read(m_actualCompression, 0, 2);\n }\n else if (iExtraLength > 2) {\n stream.position += iNameLength;\n var headerVal = ZipArchive.ReadInt16(stream);\n if (headerVal == 0x0017) //PKZipEncryptionHeader\n throw new DOMException(\"UnSupported\");\n else\n stream.position += iExtraLength - 2;\n }\n else\n stream.position += iNameLength + iExtraLength;\n };\n /// \n /// Extracts compressed data from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readCompressedData = function (stream) {\n var dataStream;\n if (this.compressedSize > 0) {\n var iBytesLeft = this.compressedSize;\n dataStream = new Stream(new Uint8Array(iBytesLeft));\n var arrBuffer = new Uint8Array(BufferSize);\n while (iBytesLeft > 0) {\n var iBytesToRead = Math.min(iBytesLeft, BufferSize);\n if (stream.read(arrBuffer, 0, iBytesToRead) != iBytesToRead)\n throw new DOMException(\"End of file reached - wrong file format or file is corrupt.\");\n dataStream.write(arrBuffer.subarray(0, iBytesToRead), 0, iBytesToRead);\n iBytesLeft -= iBytesToRead;\n }\n // if(m_archive.Password != null)\n // {\n // byte[] dataBuffer = new byte[dataStream.Length];\n // dataBuffer = dataStream.ToArray();\n // dataStream=new MemoryStream( Decrypt(dataBuffer));\n // }\n this.compressedStream = new Uint8Array(dataStream.inputStream);\n // m_bControlStream = true;\n }\n else if (this.compressedSize < 0) //If compression size is negative, then read until the next header signature reached.\n {\n // MemoryStream dataStream = new MemoryStream();\n // int bt = 0;\n // bool proceed=true;\n // while (proceed)\n // {\n // if ((bt = stream.ReadByte()) == Constants.HeaderSignatureStartByteValue)\n // {\n // stream.Position -= 1;\n // int headerSignature = ZipArchive.ReadInt32(stream);\n // if (headerSignature==Constants.CentralHeaderSignature || headerSignature==Constants.CentralHeaderSignature)\n // {\n // proceed = false;\n // }\n // stream.Position -= 3;\n // }\n // if (proceed)\n // dataStream.WriteByte((byte)bt);\n // }\n // m_streamData = dataStream;\n // m_lCompressedSize = m_streamData.Length;\n // m_bControlStream = true;\n }\n else if (this.compressedSize == 0) {\n // m_streamData = new MemoryStream();\n }\n };\n return ZipArchiveItemHelper;\n}());\nexport { ZipArchiveItemHelper };\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, \"dataStream\", {\n get: function () {\n return this.decompressedStream;\n },\n enumerable: true,\n configurable: true\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/* eslint-enable */ \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';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\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 += '\\r\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n this.csvStr += '\\r\\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 || value.indexOf('\\\"') !== -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 /**\n * Returns a Blob object containing CSV data with optional encoding.\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n CsvHelper.prototype.saveAsBlob = function (encodingType) {\n if (encodingType != undefined) {\n var encoding = new Encoding();\n var encodeString = 'UTF-8';\n if (encodingType.toUpperCase() == \"ANSI\") {\n encoding.type = 'Ansi';\n encodeString = 'ANSI';\n }\n else if (encodingType.toUpperCase() == \"UNICODE\") {\n encoding.type = 'Unicode';\n encodeString = 'UNICODE';\n }\n else {\n encoding.type = 'Utf8';\n encodeString = 'UTF-8';\n }\n var buffer = encoding.getBytes(this.csvStr, 0, this.csvStr.length);\n return new Blob([buffer], { type: 'text/csv;charset=' + encodeString });\n }\n else\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.changeNumberFormats = function (value) {\n if (typeof value == \"string\") {\n var regex = new RegExp(this.currency, 'g');\n value = value.replace(regex, '[$' + this.currency + ']');\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n value[i] = value[i].replace(this.currency, '[$' + this.currency + ']');\n }\n }\n return value;\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 if (this.currency.length > 1) {\n returnFormat = this.changeNumberFormats(returnFormat);\n }\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 /**\n * Returns a Promise with a Blob based on the specified BlobSaveType and optional encoding.\n * @param {BlobSaveType} blobSaveType - A string indicating the type of Blob to generate ('text/csv' or other).\n * @param {string} [encodingType] - The supported encoding types are \"ansi\", \"unicode\" and \"utf8\".\n */\n /* tslint:disable:no-any */\n Workbook.prototype.saveAsBlob = function (blobSaveType, encodingType) {\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(encodingType);\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 pic.lastRow -= 1;\n pic.lastColumn -= 1;\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 - 1].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 (typeof value == \"string\") {\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 if (value.indexOf('\\v') !== -1) {\n value = value.replace(/\\v/g, '_x000B_');\n }\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n if (value[i].indexOf('&') !== -1) {\n value[i] = value[i].replace(/&/g, '&');\n }\n if (value[i].indexOf('<') !== -1) {\n value[i] = value[i].replace(/') !== -1) {\n value[i] = value[i].replace(/>/g, '>');\n }\n if (value[i].indexOf('\\v') !== -1) {\n value[i] = value[i].replace(/\\v/g, '_x000B_');\n }\n }\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 var drawingIndex = 0;\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 drawingIndex++;\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';\nimport { defaultCurrencyCode } from '@syncfusion/ej2-base';\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.isChild = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.grpFooterTemplates = [];\n this.footerTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\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 Child = 'isChild';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if ((grid.childGrid || grid.detailTemplate) && !(!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, isChild: this.isChild,\n grpFooterTemplates: this.grpFooterTemplates\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 this.isChild = args[\"\" + Child];\n this.grpFooterTemplates = args['grpFooterTemplates'];\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 } : { gridInstance: this.parent });\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\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 (gObj.allowGrouping && gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length) {\n if (isNullOrUndefined(exportProperties)) {\n exportProperties = { hierarchyExportMode: 'All' };\n }\n else {\n exportProperties.hierarchyExportMode = exportProperties.hierarchyExportMode || 'All';\n }\n }\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n exportProperties.dataSource = exportProperties.dataSource instanceof DataManager ?\n exportProperties.dataSource : new DataManager(exportProperties.dataSource);\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 this.sheet.images = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.sheet.images = [];\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.sheet.images = workbook.worksheets[0].images;\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, defaultCurrencyCode, 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, defaultCurrencyCode);\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[parseInt(i.toString(), 10)];\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 if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if ((gObj.childGrid || gObj.detailTemplate) && !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(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 if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length &&\n isNullOrUndefined(exportProperties.dataSource)) {\n if (exportProperties.exportType === 'CurrentPage' && (!gObj.groupSettings.enableLazyLoading\n || gObj.getDataModule().isRemote())) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else if (gObj.groupSettings.enableLazyLoading && !gObj.getDataModule().isRemote()) {\n var groupData = void 0;\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length) {\n var isAllPage = exportProperties.exportType === 'CurrentPage'\n ? false : true;\n var groupQuery = gObj.getDataModule().generateQuery(isAllPage);\n var lazyloadData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n groupQuery.lazyLoad = [];\n var fName = 'fn';\n if (!isAllPage) {\n for (var i = 0; i < groupQuery.queries.length; i++) {\n if (groupQuery.queries[parseInt(i.toString(), 10)]['' + fName] === 'onPage') {\n groupQuery.queries[parseInt(i.toString(), 10)].e.pageSize = lazyloadData.reduce(function (acc, curr) { return acc + curr['count']; }, 0);\n }\n }\n }\n if (exportProperties.hierarchyExportMode === 'All') {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n }\n else if (exportProperties.hierarchyExportMode === 'Expanded' || exportProperties.hierarchyExportMode === 'None' ||\n isNullOrUndefined(exportProperties.hierarchyExportMode)) {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n var lazQuery = this.parent.contentModule.lazyLoadQuery;\n for (var i = 0; i < lazQuery.length; i++) {\n var query = lazQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n for (var j = 0; j < groupData.length; j++) {\n var data = groupData[parseInt(j.toString(), 10)];\n if (data['key'] === where['value']) {\n lazyloadData[parseInt(i.toString(), 10)] = groupData[parseInt(j.toString(), 10)];\n }\n }\n }\n groupData = lazyloadData;\n }\n }\n else {\n groupData = gObj.currentViewData;\n }\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, groupData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\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 this.capTemplate = undefined;\n this.footerTemplates = [];\n this.grpFooterTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\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) && !this.parent.groupSettings.enableLazyLoading) {\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 if (!isNullOrUndefined(cArgs.style)) {\n cell.style = this.mergeOptions(cell.style, cArgs.style);\n }\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[parseInt(c.toString(), 10)];\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 if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\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 if (excelCellArgs.image.height && excelCellArgs.value !== '') {\n templateRowHeight += 30;\n }\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[parseInt(styleIndex.toString(), 10)], 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 || this.isChild) && (!isNullOrUndefined(gObj.childGrid) || !isNullOrUndefined(gObj.detailTemplate))) {\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n else {\n var args = { parentRow: row, row: excelRow, value: {}, action: 'excelexport', gridInstance: gObj };\n this.parent.trigger(events.exportDetailTemplate, args);\n excelRow.childRows = this.processDetailTemplate(args);\n }\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.processDetailTemplate = function (templateData) {\n var _this = this;\n var rows = [];\n var templateRowHeight;\n var detailIndent = 2;\n var detailCellIndex;\n if (templateData.value.columnHeader || templateData.value.rows) {\n var processCell_1 = function (currentCell, isHeader) {\n var cell = {};\n if (isNullOrUndefined(currentCell.index)) {\n currentCell.index = detailCellIndex;\n detailCellIndex++;\n }\n cell.index = currentCell.index + detailIndent;\n if (!isNullOrUndefined(currentCell.value)) {\n cell.value = currentCell.value;\n }\n if (!isNullOrUndefined(currentCell.colSpan)) {\n cell.colSpan = currentCell.colSpan;\n }\n if (!isNullOrUndefined(currentCell.rowSpan)) {\n cell.rowSpan = currentCell.rowSpan;\n }\n if (isHeader) {\n cell.style = _this.getHeaderThemeStyle(_this.theme);\n }\n else {\n cell.style = _this.getRecordThemeStyle(_this.theme);\n }\n if (!isNullOrUndefined(currentCell.style)) {\n var cellStyle = {\n fontColor: currentCell.style.fontColor,\n fontName: currentCell.style.fontName,\n fontSize: currentCell.style.fontSize,\n hAlign: currentCell.style.excelHAlign,\n vAlign: currentCell.style.excelVAlign,\n rotation: currentCell.style.excelRotation,\n bold: currentCell.style.bold,\n indent: currentCell.style.indent,\n italic: currentCell.style.italic,\n underline: currentCell.style.underline,\n backColor: currentCell.style.backColor,\n wrapText: currentCell.style.wrapText,\n borders: currentCell.style.excelBorders,\n numberFormat: currentCell.style.excelNumberFormat,\n type: currentCell.style.excelType,\n strikeThrough: currentCell.style.strikeThrough\n };\n cell.style = _this.mergeOptions(cellStyle, cell.style);\n }\n if (!isNullOrUndefined(currentCell.image) && !isNullOrUndefined(currentCell.image.base64)) {\n if (currentCell.rowSpan > 1) {\n _this.setImage(currentCell, cell.index);\n }\n else {\n templateRowHeight = _this.setImage(currentCell, cell.index);\n if (currentCell.image.height && currentCell.value !== '') {\n templateRowHeight += 30;\n }\n }\n }\n if (!isNullOrUndefined(currentCell.hyperLink)) {\n cell.hyperlink = { target: currentCell.hyperLink.target };\n cell.value = currentCell.hyperLink.displayText;\n }\n return cell;\n };\n var processRow = function (currentRow, isHeader) {\n var excelDetailCells = [];\n detailCellIndex = 0;\n for (var j = 0; j < currentRow.cells.length; j++) {\n var currentCell = currentRow.cells[parseInt(j.toString(), 10)];\n var detailCell = processCell_1(currentCell, isHeader);\n excelDetailCells.push(detailCell);\n }\n var row = { index: _this.rowLength++, cells: excelDetailCells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n };\n if (templateData.value.columnHeader) {\n for (var i = 0; i < templateData.value.columnHeader.length; i++) {\n processRow(templateData.value.columnHeader[parseInt(i.toString(), 10)], true);\n }\n }\n if (templateData.value.rows) {\n for (var i = 0; i < templateData.value.rows.length; i++) {\n processRow(templateData.value.rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n else if (templateData.value.image) {\n templateRowHeight = this.setImage(templateData.value, detailIndent);\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n row.height = templateRowHeight;\n templateRowHeight = null;\n }\n rows.push(row);\n }\n else if (templateData.value.text) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: detailIndent,\n value: templateData.value.text,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n else if (templateData.value.hyperLink) {\n var row = {\n index: this.rowLength++,\n cells: [{\n index: 2,\n hyperlink: { target: templateData.value.hyperLink.target },\n value: templateData.value.hyperLink.displayText,\n style: this.getRecordThemeStyle(this.theme)\n }]\n };\n rows.push(row);\n }\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = {\n outlineLevel: 1, isCollapsed: !templateData.parentRow.isExpand, isHidden: !templateData.parentRow.isExpand\n };\n }\n return rows;\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 if (args.image.width && args.image.height) {\n excelImage.width = args.image.width;\n excelImage.height = args.image.height;\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[parseInt(i.toString(), 10)].grouping = { outlineLevel: intent + childGridObj\n .childGridLevel, 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 var columnsDetails = {};\n if (!isNullOrUndefined(cell.attributes.index)) {\n columnsDetails = this.parent.getColumnByIndex(cell.attributes.index);\n }\n if (cell.cellType === CellType.DetailFooterIntent || columnsDetails.type === 'checkbox') {\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(gObj, CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(gObj, 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 cell: cell\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 var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n if (this.groupedColLength < 8 && this.groupedColLength > 0 && !(gObj.groupSettings.enableLazyLoading && isNullOrUndefined(excelRows[excelRows.length - 1][\"\" + dummyGrouping]))) {\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 (gObj, 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 || this.parent.isVue3 || this.parent.isAngular) &&\n !(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {\n txt = data[(cell.column.type)];\n return !isNullOrUndefined(txt) ? (txt) : '';\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return !isNullOrUndefined(txt[0]) ? 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[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON1[attrname[parseInt(index.toString(), 10)]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON2[attrname[parseInt(index.toString(), 10)]];\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.headerRotation = function (args) {\n var degree = args.style.rotation;\n if (degree <= 90 && degree >= 0) {\n args.style.hAlign = 'Left';\n }\n else if (degree > 90 && degree <= 180) {\n args.style.hAlign = 'Right';\n }\n else {\n degree = 180;\n args.style.hAlign = 'Right';\n }\n args.style.rotation = degree;\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[parseInt(col.toString(), 10)], 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[parseInt(row.toString(), 10)].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[parseInt(row.toString(), 10)].cells[parseInt(column.toString(), 10)];\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 (excelHeaderCellArgs.style.rotation) {\n this.headerRotation(excelHeaderCellArgs);\n }\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[parseInt(row.toString(), 10)];\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[parseInt(cellId.toString(), 10)];\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[parseInt(row.toString(), 10)];\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 === 'dateonly' ? 'date' : format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type === 'dateonly' ? 'date' : 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' && !gObj.childGridLevel) {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, Internationalization, NotifyPropertyChanges, detach, getUniqueID } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Event, Browser, L10n, ChildProperty } from '@syncfusion/ej2-base';\nimport { addClass, createElement, remove, closest, select, prepend, removeClass, attributes, Collection } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, formatUnit, setValue, rippleEffect, merge, extend, Touch } from '@syncfusion/ej2-base';\nimport { CalendarBase } from '../calendar/calendar';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar DATERANGEWRAPPER = 'e-date-range-wrapper';\nvar INPUTCONTAINER = 'e-input-group';\nvar DATERANGEICON = 'e-input-group-icon e-range-icon e-icons';\nvar POPUP = 'e-popup';\nvar LEFTCALENDER = 'e-left-calendar';\nvar RIGHTCALENDER = 'e-right-calendar';\nvar LEFTCONTAINER = 'e-left-container';\nvar RIGHTCONTAINER = 'e-right-container';\nvar ROOT = 'e-daterangepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar STARTENDCONTAINER = 'e-start-end';\nvar STARTDATE = 'e-start-date';\nvar ENDDATE = 'e-end-date';\nvar STARTBUTTON = 'e-start-btn';\nvar INPUTFOCUS = 'e-input-focus';\nvar ENDBUTTON = 'e-end-btn';\nvar RANGEHOVER = 'e-range-hover';\nvar OTHERMONTH = 'e-other-month';\nvar STARTLABEL = 'e-start-label';\nvar ENDLABEL = 'e-end-label';\nvar DISABLED = 'e-disabled';\nvar SELECTED = 'e-selected';\nvar CALENDAR = 'e-calendar';\nvar NEXTICON = 'e-next';\nvar PREVICON = 'e-prev';\nvar HEADER = 'e-header';\nvar TITLE = 'e-title';\nvar ICONCONTAINER = 'e-icon-container';\nvar RANGECONTAINER = 'e-date-range-container';\nvar RANGEHEADER = 'e-range-header';\nvar PRESETS = 'e-presets';\nvar FOOTER = 'e-footer';\nvar RANGEBORDER = 'e-range-border';\nvar TODAY = 'e-today';\nvar FOCUSDATE = 'e-focused-date';\nvar CONTENT = 'e-content';\nvar DAYSPAN = 'e-day-span';\nvar WEEKNUMBER = 'e-week-number';\nvar DATEDISABLED = 'e-date-disabled';\nvar ICONDISABLED = 'e-icon-disabled';\nvar CALENDARCONTAINER = 'e-calendar-container';\nvar SEPARATOR = 'e-separator';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar DEVICE = 'e-device';\nvar OVERLAY = 'e-overlay';\nvar CHANGEICON = 'e-change-icon e-icons';\nvar LISTCLASS = 'e-list-item';\nvar RTL = 'e-rtl';\nvar HOVER = 'e-hover';\nvar OVERFLOW = 'e-range-overflow';\nvar OFFSETVALUE = 4;\nvar PRIMARY = 'e-primary';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar ZOOMIN = 'e-zoomin';\nvar NONEDITABLE = 'e-non-edit';\nvar DAYHEADERLONG = 'e-daterange-day-header-lg';\nvar HIDDENELEMENT = 'e-daterange-hidden';\nvar wrapperAttr = ['title', 'class', 'style'];\nvar Presets = /** @class */ (function (_super) {\n __extends(Presets, _super);\n function Presets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Presets.prototype, \"label\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], Presets.prototype, \"end\", void 0);\n return Presets;\n}(ChildProperty));\nexport { Presets };\n/**\n * Represents the DateRangePicker component that allows user to select the date range from the calendar\n * or entering the range through the input element.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateRangePicker = /** @class */ (function (_super) {\n __extends(DateRangePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateRangePickerModel} options - Specifies the DateRangePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateRangePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isCustomRange = false;\n _this.isCustomWindow = false;\n _this.presetsItem = [];\n _this.liCollections = [];\n _this.previousEleValue = '';\n _this.isKeyPopup = false;\n _this.dateDisabled = false;\n _this.isRangeIconClicked = false;\n _this.isMaxDaysClicked = false;\n _this.disabledDays = [];\n _this.preventBlur = false;\n _this.preventFocus = false;\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.dateRangeOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.render = function () {\n this.initialize();\n this.setProperties({ startDate: this.startValue }, true);\n this.setProperties({ endDate: this.endValue }, true);\n this.setModelValue();\n this.setDataAttribute(false);\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.preRender = function () {\n this.keyInputConfigs = {\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n tab: 'tab',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n spacebar: 'space'\n };\n this.defaultConstant = {\n placeholder: this.placeholder,\n startLabel: 'Start Date',\n endLabel: 'End Date',\n customRange: 'Custom Range',\n applyText: 'Apply',\n cancelText: 'Cancel',\n selectedDays: 'Selected Days',\n days: 'days'\n };\n /**\n * Mobile View\n */\n this.isMobile = (Browser.isDevice) ? true : window.matchMedia('(max-width:550px)').matches;\n this.inputElement = this.element;\n this.angularTag = null;\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.updateHtmlAttributeToElement();\n if (this.element.getAttribute('id')) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n this.checkInvalidRange(this.value);\n if (!this.invalidValueString && (typeof (this.value) === 'string')) {\n var rangeArray = this.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n }\n this.initProperty();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n this.navNextFunction = this.navNextMonth.bind(this);\n this.navPrevFunction = this.navPrevMonth.bind(this);\n this.deviceNavNextFunction = this.deviceNavNext.bind(this);\n this.deviceNavPrevFunction = this.deviceNavPrevious.bind(this);\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.formElement = closest(this.element, 'form');\n };\n DateRangePicker.prototype.updateValue = function () {\n if (this.value && this.value.length > 0) {\n if (this.value[0] instanceof Date && !isNaN(+this.value[0])) {\n this.setProperties({ startDate: this.value[0] }, true);\n this.startValue = this.value[0];\n }\n else if (typeof this.value[0] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.startValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ startDate: new Date(this.checkValue(this.value[0])) }, true);\n this.startValue = new Date(this.checkValue(this.value[0]));\n }\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value[1] instanceof Date && !isNaN(+this.value[1])) {\n this.setProperties({ endDate: this.value[1] }, true);\n this.endValue = this.value[1];\n }\n else if (typeof this.value[1] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ endDate: new Date(this.checkValue(this.value[1])) }, true);\n this.endValue = new Date(this.checkValue(this.value[1]));\n this.setValue();\n }\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (this.value && this.value.start) {\n if (this.value.start instanceof Date && !isNaN(+this.value.start)) {\n this.setProperties({ startDate: this.value.start }, true);\n this.startValue = this.value.start;\n }\n else if (typeof this.value.start === 'string') {\n this.setProperties({ startDate: new Date(this.checkValue(this.value.start)) }, true);\n this.startValue = new Date(this.checkValue(this.value.start));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value.end instanceof Date && !isNaN(+this.value.end)) {\n this.setProperties({ endDate: this.value.end }, true);\n this.endValue = this.value.end;\n }\n else if (typeof this.value.end === 'string') {\n this.setProperties({ endDate: new Date(this.checkValue(this.value.end)) }, true);\n this.endValue = new Date(this.checkValue(this.value.end));\n this.setValue();\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (isNullOrUndefined(this.value)) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(this.endDate)));\n this.startValue = this.checkDateValue(new Date(this.checkValue(this.startDate)));\n this.setValue();\n }\n };\n DateRangePicker.prototype.initProperty = function () {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.updateValue();\n };\n DateRangePicker.prototype.checkFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n else {\n this.formatString = null;\n }\n }\n else {\n this.formatString = null;\n }\n };\n DateRangePicker.prototype.initialize = function () {\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.checkHtmlAttributes(false);\n merge(this.defaultKeyConfigs, { shiftTab: 'shift+tab', tab: 'tab' });\n var start = this.checkDateValue(new Date(this.checkValue(this.startValue)));\n this.setProperties({ startDate: start }, true); // persist the value propeerty.\n this.setProperties({ endValue: this.checkDateValue(new Date(this.checkValue(this.endValue))) }, true);\n this.setValue();\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.l10n = new L10n('daterangepicker', this.defaultConstant, this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.processPresets();\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setRangeAllowEdit();\n this.bindEvents();\n };\n DateRangePicker.prototype.setDataAttribute = function (isDynamic) {\n var attributes = {};\n if (!isDynamic) {\n for (var i = 0; i < this.element.attributes.length; i++) {\n attributes[this.element.attributes[i].name] =\n this.element.getAttribute(this.element.attributes[i].name);\n }\n }\n else {\n attributes = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (pro.indexOf('data') === 0) {\n this.firstHiddenChild.setAttribute(pro, attributes[\"\" + pro]);\n this.secondHiddenChild.setAttribute(pro, attributes[\"\" + pro]);\n }\n }\n };\n DateRangePicker.prototype.setRangeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateClearIconState();\n };\n DateRangePicker.prototype.updateClearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n };\n DateRangePicker.prototype.validationAttribute = function (element, input) {\n var name = element.getAttribute('name') ? element.getAttribute('name') : element.getAttribute('id');\n input.setAttribute('name', name);\n element.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(element.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = element.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n element.removeAttribute(attributes[i]);\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (key === 'style') {\n var dateRangeStyle = this.inputWrapper.container.getAttribute(key);\n dateRangeStyle = !isNullOrUndefined(dateRangeStyle) ? (dateRangeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, dateRangeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DateRangePicker.prototype.updateCssClass = function (cssNewClass, cssOldClass) {\n if (!isNullOrUndefined(cssOldClass)) {\n cssOldClass = (cssOldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssNewClass)) {\n cssNewClass = (cssNewClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssNewClass, [this.inputWrapper.container], cssOldClass);\n if (this.popupWrapper) {\n Input.setCssClass(cssNewClass, [this.popupWrapper], cssOldClass);\n }\n };\n DateRangePicker.prototype.processPresets = function () {\n this.presetsItem = [];\n var i = 0;\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n for (var _i = 0, _a = this.presets; _i < _a.length; _i++) {\n var range = _a[_i];\n var id = range.label.replace(/\\s+/g, '') + '_' + (++i);\n if (typeof range.end === 'string') {\n this.presetsItem.push({\n id: id, text: range.label, end: new Date(this.checkValue(range.end)), start: new Date(this.checkValue(range.start))\n });\n }\n else {\n this.presetsItem.push({ id: id, text: range.label, start: range.start, end: range.end });\n }\n }\n var startDate = isNullOrUndefined(this.startValue) ? null : new Date(+this.startValue);\n var endDate = isNullOrUndefined(this.endValue) ? null : new Date(+this.endValue);\n this.presetsItem.push({ id: 'custom_range', text: this.l10n.getConstant('customRange'), start: startDate, end: endDate });\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.isCustomRange = true;\n this.activeIndex = this.presetsItem.length - 1;\n }\n }\n };\n DateRangePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n if (!this.isMobile) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.inputKeyboardModule = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n };\n DateRangePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.inputKeyboardModule)) {\n this.inputKeyboardModule.destroy();\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.inputElement.tabIndex = -1;\n };\n DateRangePicker.prototype.updateHiddenInput = function () {\n if (this.firstHiddenChild && this.secondHiddenChild) {\n var format = { format: this.formatString, type: 'datetime', skeleton: 'yMd' };\n if (typeof this.startDate === 'string') {\n this.startDate = this.globalize.parseDate(this.startDate, format);\n }\n if (typeof this.endDate === 'string') {\n this.endDate = this.globalize.parseDate(this.endDate, format);\n }\n this.firstHiddenChild.value = (this.startDate && this.globalize.formatDate(this.startDate, format))\n || (this.inputElement.value);\n this.secondHiddenChild.value = (this.endDate && this.globalize.formatDate(this.endDate, format)) ||\n (this.inputElement.value);\n this.dispatchEvent(this.firstHiddenChild, 'focusout');\n this.dispatchEvent(this.firstHiddenChild, 'change');\n }\n };\n DateRangePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DateRangePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.valueType = this.value;\n e.preventDefault();\n this.clear();\n var clearedArgs = {\n event: e\n };\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.trigger('cleared', clearedArgs);\n this.changeTrigger(e);\n this.clearRange();\n this.hide(e);\n if (closest(this.element, 'form')) {\n var element = this.firstHiddenChild;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DateRangePicker.prototype.restoreValue = function () {\n this.previousEleValue = this.inputElement.value;\n this.previousStartValue = this.startValue;\n this.previousEndValue = this.endValue;\n this.valueType = null;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.setValue();\n this.setModelValue();\n };\n DateRangePicker.prototype.formResetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.formElement && (e.target === this.formElement) && !this.inputElement.disabled) {\n var val = this.inputElement.getAttribute('value');\n if (!isNullOrUndefined(this.startCopy)) {\n if (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.value.start)) {\n this.setProperties({ value: { start: this.startCopy, end: this.endCopy } }, true);\n this.startValue = this.value.start;\n this.endValue = this.value.end;\n }\n else {\n this.setProperties({ value: [this.startCopy, this.endCopy] }, true);\n this.startValue = this.value[0];\n this.endValue = this.value[1];\n }\n this.setProperties({ startDate: this.startValue, endDate: this.endValue }, true);\n }\n else {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n this.startValue = this.endValue = null;\n }\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n val = '';\n this.startValue = this.endValue = null;\n this.inputElement.setAttribute('value', '');\n }\n this.restoreValue();\n if (this.inputElement) {\n Input.setValue(val, this.inputElement, this.floatLabelType, this.showClearButton);\n this.errorClass();\n }\n }\n };\n DateRangePicker.prototype.clear = function () {\n if (this.startValue !== null) {\n this.startValue = null;\n }\n if (this.endValue !== null) {\n this.endValue = null;\n }\n if (this.value && this.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n if (this.value !== null && this.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n if (!(isNullOrUndefined(this.applyButton))) {\n this.applyButton.disabled = this.applyButton.element.disabled = true;\n }\n this.removeSelection();\n };\n DateRangePicker.prototype.rangeIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isMobile) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n this.targetElement = null;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n }\n else {\n this.isRangeIconClicked = true;\n this.inputWrapper.container.children[0].focus();\n this.show(null, e);\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.isRangeIconClicked = false;\n this.calendarFocus();\n this.isRangeIconClicked = true;\n }\n }\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateRangePicker.prototype.checkHtmlAttributes = function (isDynamic) {\n this.globalize = new Internationalization(this.locale);\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['startDate', 'endDate', 'minDays', 'maxDays', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder',\n 'type', 'value'];\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['enabled'] === undefined)) || isDynamic) {\n var disabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ enabled: !disabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === 'true' || this.inputElement.getAttribute(prop) === '' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['value'] === undefined)) || isDynamic) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, value, {}), !isDynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'min':\n if ((isNullOrUndefined(this.min) || +this.min === +new Date(1900, 0, 1)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'max':\n if ((isNullOrUndefined(this.max) || +this.max === +new Date(2099, 11, 31)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'startDate':\n if (isNullOrUndefined(this.startDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.startValue = dateValue;\n this.setValue();\n }\n break;\n case 'endDate':\n if (isNullOrUndefined(this.endDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.endValue = dateValue;\n this.setValue();\n }\n break;\n case 'minDays':\n if (isNullOrUndefined(this.minDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'maxDays':\n if (isNullOrUndefined(this.maxDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n DateRangePicker.prototype.createPopup = function () {\n for (var i = 0; i < this.presetsItem.length; i++) {\n if ((i !== (this.presetsItem.length - 1)) && this.presetsItem[i].id === 'custom_range') {\n this.presetsItem.splice(i, 1);\n }\n }\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n for (var i = 0; i <= this.presetsItem.length - 2; i++) {\n var startDate = this.presetsItem[i].start;\n var endDate = this.presetsItem[i].end;\n if (this.startValue && this.endValue) {\n if (startDate.getDate() == this.startValue.getDate() && startDate.getMonth() == this.startValue.getMonth() && startDate.getFullYear() == this.startValue.getFullYear()\n && endDate.getDate() == this.endValue.getDate() && endDate.getMonth() == this.endValue.getMonth() && endDate.getFullYear() == this.endValue.getFullYear()) {\n this.activeIndex = i;\n this.isCustomRange = false;\n }\n }\n }\n this.popupWrapper = createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n this.adjustLongHeaderWidth();\n var isPreset = (!this.isCustomRange || this.isMobile);\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.isCustomWindow = false;\n this.createPresets();\n this.listRippleEffect();\n this.renderPopup();\n }\n else {\n this.isCustomWindow = true;\n this.renderControl();\n }\n };\n DateRangePicker.prototype.renderControl = function () {\n this.createControl();\n this.bindCalendarEvents();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) &&\n !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.updateHeader();\n };\n DateRangePicker.prototype.clearCalendarEvents = function () {\n if (this.leftCalPrevIcon && this.leftCalNextIcon && this.rightCalPrevIcon && this.rightCalNextIcon) {\n EventHandler.clearEvents(this.leftCalPrevIcon);\n EventHandler.clearEvents(this.leftCalNextIcon);\n EventHandler.clearEvents(this.rightCalPrevIcon);\n EventHandler.clearEvents(this.rightCalNextIcon);\n }\n };\n DateRangePicker.prototype.updateNavIcons = function () {\n _super.prototype.iconHandler.call(this);\n };\n DateRangePicker.prototype.calendarIconEvent = function () {\n this.clearCalendarEvents();\n if (this.leftCalPrevIcon && !this.leftCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.leftCalNextIcon && !this.leftCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.leftCalNextIcon, 'mousedown', this.navNextFunction);\n }\n if (this.rightCalPrevIcon && !this.rightCalPrevIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.rightCalNextIcon && !this.rightCalNextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.rightCalNextIcon, 'mousedown', this.navNextFunction);\n }\n };\n DateRangePicker.prototype.bindCalendarEvents = function () {\n if (!this.isMobile) {\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.headerTitleElement = this.popupObj.element.querySelector('.' + RIGHTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.headerTitleElement = this.popupObj.element.querySelector('.' + LEFTCALENDER + ' .' + HEADER + ' .' + TITLE);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.leftKeyboardModule = new KeyboardEvents(this.leftCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.rightKeyboardModule = new KeyboardEvents(this.rightCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.deviceCalendarEvent();\n EventHandler.add(this.startButton.element, 'click', this.deviceHeaderClick, this);\n EventHandler.add(this.endButton.element, 'click', this.deviceHeaderClick, this);\n }\n if (this.start === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.calendarIconRipple = function () {\n rippleEffect(this.leftCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.leftCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n };\n DateRangePicker.prototype.deviceCalendarEvent = function () {\n EventHandler.clearEvents(this.nextIcon);\n EventHandler.clearEvents(this.previousIcon);\n rippleEffect(this.nextIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.previousIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n if (this.nextIcon && !this.nextIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.nextIcon, 'mousedown', this.deviceNavNextFunction);\n }\n if (this.previousIcon && !this.previousIcon.classList.contains(DISABLED)) {\n EventHandler.add(this.previousIcon, 'mousedown', this.deviceNavPrevFunction);\n }\n };\n DateRangePicker.prototype.deviceNavNext = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigateNext(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.deviceNavPrevious = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigatePrevious(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.updateDeviceCalendar = function (calendar) {\n if (calendar) {\n this.previousIcon = calendar.querySelector('.' + PREVICON);\n this.nextIcon = calendar.querySelector('.' + NEXTICON);\n this.calendarElement = calendar;\n this.deviceCalendar = calendar;\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n }\n };\n DateRangePicker.prototype.deviceHeaderClick = function (event) {\n var element = event.currentTarget;\n if (element.classList.contains(STARTBUTTON) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.classList.remove(ACTIVE);\n this.startButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + STARTDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.startValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.removeClassDisabled();\n }\n else if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + ENDDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.endValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n this.selectableDates();\n }\n };\n DateRangePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n this.preventBlur = false;\n var focusArguments = {\n model: this\n };\n if (!this.preventFocus) {\n this.trigger('focus', focusArguments);\n }\n this.updateClearIconState();\n if (this.openOnFocus && !this.preventFocus) {\n this.preventFocus = true;\n this.show();\n }\n else {\n this.preventFocus = true;\n }\n };\n DateRangePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.preventBlur) {\n var value = this.inputElement.value;\n if (!isNullOrUndefined(this.presetsItem)) {\n if (this.presetsItem.length > 0 && this.previousEleValue !== this.inputElement.value) {\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n }\n }\n if (!isNullOrUndefined(value) && value.trim() !== '') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length > 1) {\n this.invalidValueString = null;\n var dateOptions = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var start = this.globalize.parseDate(range[0], dateOptions);\n var end = this.globalize.parseDate(range[1], dateOptions);\n var startDate = this.getStartEndDate(start, false, range, dateOptions);\n var endDate = this.getStartEndDate(end, true, range, dateOptions);\n if (!isNullOrUndefined(startDate) && !isNaN(+startDate) && !isNullOrUndefined(endDate) && !isNaN(+endDate)) {\n var prevStartVal = this.startValue;\n this.startValue = startDate;\n var prevEndVal = this.endValue;\n this.endValue = endDate;\n this.setValue();\n this.refreshControl();\n if (value !== this.previousEleValue) {\n this.changeTrigger(e);\n }\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n this.updateHiddenInput();\n // For Mobile mode, when a value is present and choose another range and click on console\n // when popup is open, two startvalues and end values are updated in the popup.\n if (this.isMobile && this.isPopupOpen()) {\n this.startValue = prevStartVal;\n this.endValue = prevEndVal;\n }\n return;\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n if (!this.strictMode) {\n if (isNullOrUndefined(this.popupObj)) {\n this.currentDate = null;\n }\n this.previousStartValue = this.previousEndValue = null;\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(value) && value.trim() === '') {\n this.startValue = null;\n this.endValue = null;\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.updateInput();\n }\n this.errorClass();\n this.changeTrigger(e);\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n }\n this.updateHiddenInput();\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n DateRangePicker.prototype.getStartEndDate = function (date, isEnd, range, dateOptions) {\n if (this.depth === 'Month') {\n return this.globalize.parseDate(range[isEnd ? 1 : 0].trim(), dateOptions);\n }\n else if (this.depth === 'Year') {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n };\n DateRangePicker.prototype.clearRange = function () {\n this.previousStartValue = this.previousEndValue = null;\n this.currentDate = null;\n };\n DateRangePicker.prototype.errorClass = function () {\n var inputStr = this.inputElement.value.trim();\n if (((isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue) && inputStr !== '') ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max))\n || ((this.startValue && this.isDateDisabled(this.startValue))\n || (this.endValue && this.isDateDisabled(this.endValue)))) && inputStr !== '') {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n };\n DateRangePicker.prototype.keyCalendarUpdate = function (isLeftCalendar, ele, isRemoveFocus) {\n if (isRemoveFocus === void 0) { isRemoveFocus = true; }\n if (isRemoveFocus) {\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n ele = this.leftCalendar;\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n ele = this.rightCalendar;\n }\n this.updateCalendarElement(ele);\n this.table.focus();\n return ele;\n };\n DateRangePicker.prototype.navInCalendar = function (e, isLeftCalendar, leftLimit, rightLimit, ele) {\n var view = this.getViewNumber(this.currentView());\n var date;\n var min = this.min;\n var max;\n if (!isNullOrUndefined(this.maxDays) && this.isMaxDaysClicked && !isNullOrUndefined(this.startValue)) {\n max = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n }\n else {\n max = this.max;\n }\n switch (e.action) {\n case 'moveRight':\n date = new Date(+this.currentDate);\n this.addDay(date, 1, e, max, min);\n if (isLeftCalendar && +date === +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveLeft':\n date = new Date(+this.currentDate);\n this.addDay(date, -1, e, max, min);\n if (!isLeftCalendar) {\n if (+date === +leftLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n }\n this.keyboardNavigate(-1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveUp':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, -7, e, max, min);\n if (+date <= +leftLimit && !isLeftCalendar) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.keyboardNavigate(-7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n this.keyNavigation(ele, e);\n break;\n case 'moveDown':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, 7, e, max, min);\n if (isLeftCalendar && +date >= +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n this.keyNavigation(ele, e);\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n ele = this.keyCalendarUpdate(false, ele, false);\n this.currentDate = this.firstCellToFocus(this.rightCalendar);\n view = this.getViewNumber(this.currentView());\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n case 'shiftTab':\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n ele = this.keyCalendarUpdate(true, ele, false);\n this.currentDate = this.firstCellToFocus(this.leftCalendar);\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n }\n };\n DateRangePicker.prototype.firstCellToFocus = function (calendar) {\n var focusAbleEle = this.getViewNumber(this.currentView()) === 2 ? calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-year)') : calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-month)');\n var focusEleID = focusAbleEle && focusAbleEle.id ? focusAbleEle.id.split('_')[0] : null;\n var currentFirstDay = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), 1);\n var focusDate = focusEleID ? new Date(+focusEleID) : currentFirstDay;\n return focusDate;\n };\n DateRangePicker.prototype.keyInputHandler = function (e, value) {\n var date;\n var view = this.getViewNumber(this.currentView());\n var rightDateLimit = new Date(this.rightCalCurrentDate.getFullYear(), this.rightCalCurrentDate.getMonth(), 1);\n var leftDateLimit = new Date(this.leftCalCurrentDate.getFullYear(), this.leftCalCurrentDate.getMonth() + 1, 0);\n var ele = closest(e.target, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n var isLeftCalendar = ele.classList.contains(LEFTCALENDER);\n this.updateCalendarElement(ele);\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n var focusedDate = ele.querySelector('tr td.' + FOCUSDATE);\n var startDate = ele.querySelector('tr td.' + STARTDATE);\n var endDate = ele.querySelector('tr td.' + ENDDATE);\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n var leftCalendar = closest(e.target, '.' + LEFTCALENDER);\n var rightCalendar = closest(e.target, '.' + RIGHTCALENDER);\n var presetElement = closest(e.target, '.' + PRESETS);\n if (!isNullOrUndefined(focusedDate)) {\n // eslint-disable-next-line no-self-assign\n this.currentDate = this.currentDate;\n }\n else if (!isNullOrUndefined(endDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.endValue);\n }\n else if (!isNullOrUndefined(startDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.startValue);\n }\n else if (!this.dateDisabled) {\n this.currentDate.setDate(1);\n }\n this.effect = '';\n switch (e.action) {\n case 'altUpArrow':\n if (this.isPopupOpen()) {\n this.hide(e);\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n break;\n case 'select':\n if (levelRestrict) {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : startDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n this.selectRange(null, (element));\n }\n }\n else {\n if (!isNullOrUndefined(selectedDate) && !levelRestrict || !isNullOrUndefined(focusedDate)) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n }\n e.preventDefault();\n break;\n case 'controlHome':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 0, 1);\n if (!isLeftCalendar && +yearDate < +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 0, 1));\n this.keyNavigation(ele, e);\n }\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else if (!isNullOrUndefined(rightCalendar)) {\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n if (this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(rightCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'controlUp':\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n this.calendarNavigation(e, this.calendarElement);\n }\n else {\n this.calendarNavigation(e, this.calendarElement);\n }\n e.preventDefault();\n break;\n case 'controlDown':\n if ((!isNullOrUndefined(selectedDate) || !isNullOrUndefined(focusedDate)) && !levelRestrict) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (selectedDate || focusedDate), value);\n }\n e.preventDefault();\n break;\n case 'controlEnd':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 11, 31);\n if (isLeftCalendar && +yearDate > +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 11, 31));\n this.keyNavigation(ele, e);\n }\n break;\n case 'pageUp':\n date = new Date(+this.currentDate);\n this.addMonths(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addMonths(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'pageDown':\n date = new Date(+this.currentDate);\n this.addMonths(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addMonths(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageUp':\n date = new Date(+this.currentDate);\n this.addYears(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addYears(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageDown':\n date = new Date(+this.currentDate);\n this.addYears(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addYears(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftTab':\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.setAttribute('tabindex', '0');\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n e.preventDefault();\n }\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n this.currentDate = new Date(+this.leftCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n case 'spacebar':\n if (this.applyButton && !this.applyButton.disabled) {\n this.applyFunction(e);\n }\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n this.currentDate = new Date(+this.rightCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n default:\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n this.checkMinMaxDays();\n }\n this.presetHeight();\n };\n DateRangePicker.prototype.tabKeyValidation = function (ele, calendarPos) {\n var isLeftCalendar = ele.classList.contains(calendarPos);\n var rightHeader = this.rightCalendar.querySelector('.e-header');\n var leftHeader = this.leftCalendar.querySelector('.e-header');\n var isRightMonth = rightHeader ? rightHeader.classList.contains('e-month') : false;\n var isLeftMonth = leftHeader ? leftHeader.classList.contains('e-month') : false;\n var isRightYear = rightHeader ? rightHeader.classList.contains('e-year') : false;\n var isLeftYear = leftHeader ? leftHeader.classList.contains('e-year') : false;\n var isRightDecade = rightHeader ? rightHeader.classList.contains('e-decade') : false;\n var isLeftDecade = leftHeader ? leftHeader.classList.contains('e-decade') : false;\n return isLeftCalendar && (isLeftMonth || isLeftYear || isLeftDecade) &&\n (isRightMonth || isRightYear || isRightDecade) && !this.isMobile;\n };\n DateRangePicker.prototype.keyNavigation = function (calendar, e) {\n this.bindCalendarCellEvents(calendar);\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n this.updateNavIcons();\n this.calendarIconEvent();\n this.updateRange([calendar]);\n this.dateDisabled = this.isDateDisabled(this.currentDate);\n e.preventDefault();\n };\n DateRangePicker.prototype.inputHandler = function (e) {\n switch (e.action) {\n case 'altDownArrow':\n if (!this.isPopupOpen()) {\n if (this.inputElement.value === '') {\n this.clear();\n this.changeTrigger(e);\n this.clearRange();\n }\n this.show(null, e);\n this.isRangeIconClicked = false;\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n this.isKeyPopup = true;\n }\n break;\n case 'escape':\n if (this.isPopupOpen()) {\n this.hide(e);\n }\n break;\n case 'enter':\n if (document.activeElement === this.inputElement) {\n this.inputBlurHandler(e);\n this.hide(e);\n }\n break;\n case 'tab':\n if (document.activeElement === this.inputElement && this.isPopupOpen()) {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n DateRangePicker.prototype.bindCalendarCellEvents = function (calendar) {\n var tdCells;\n if (calendar) {\n tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n }\n else {\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n }\n for (var _i = 0, tdCells_1 = tdCells; _i < tdCells_1.length; _i++) {\n var cell = tdCells_1[_i];\n EventHandler.clearEvents(cell);\n var disabledCell = cell.classList.contains(DISABLED) || cell.classList.contains(DATEDISABLED);\n if (!disabledCell && !cell.classList.contains(WEEKNUMBER)) {\n if (!this.isMobile) {\n EventHandler.add(cell, 'mouseover', this.hoverSelection, this);\n }\n EventHandler.add(cell, 'mousedown', this.selectRange, this);\n }\n }\n };\n DateRangePicker.prototype.removeFocusedDate = function () {\n var isDate = !isNullOrUndefined(this.startValue) || !isNullOrUndefined(this.endValue);\n var focusedDate = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' .' + FOCUSDATE);\n for (var _i = 0, focusedDate_1 = focusedDate; _i < focusedDate_1.length; _i++) {\n var ele = focusedDate_1[_i];\n var today = new Date();\n var eleDate = this.getIdValue(null, ele);\n if ((this.depth === 'Month' && this.currentView() === 'Month' &&\n (!ele.classList.contains(TODAY) || (ele.classList.contains(TODAY) && isDate)))\n || (this.depth === 'Year' && this.currentView() === 'Year' &&\n ((!this.isSameMonth(today, eleDate) && !this.isSameYear(today, eleDate)) || isDate))\n || (this.depth === 'Decade' && this.currentView() === 'Decade' &&\n (!this.isSameYear(today, eleDate) || isDate))) {\n ele.classList.remove(FOCUSDATE);\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(ENDDATE)) {\n ele.removeAttribute('aria-label');\n }\n }\n }\n };\n DateRangePicker.prototype.hoverSelection = function (event, element) {\n var currentElement = element || event.currentTarget;\n var currentDate = this.getIdValue(null, currentElement);\n if (!isNullOrUndefined(this.startValue) && +this.startValue >= +this.min && +this.startValue <= +this.max) {\n if ((!this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)\n && isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue))\n || (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n for (var _i = 0, tdCells_2 = tdCells; _i < tdCells_2.length; _i++) {\n var ele = tdCells_2[_i];\n var isDisabledCell = (!ele.classList.contains(DISABLED) || ele.classList.contains(DATEDISABLED));\n if (!ele.classList.contains(WEEKNUMBER) && isDisabledCell) {\n var eleDate = this.getIdValue(null, ele);\n var startDateValue = new Date(+this.startValue);\n var eleDateValue = new Date(+eleDate);\n if (eleDateValue.setHours(0, 0, 0, 0) >= startDateValue.setHours(0, 0, 0, 0) && +eleDate <= +currentDate) {\n addClass([ele], RANGEHOVER);\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.isSameStartEnd = function (startVal, endVal) {\n var isSame = false;\n if (this.depth === 'Month') {\n if ((startVal).setHours(0, 0, 0, 0) === (endVal).setHours(0, 0, 0, 0)) {\n isSame = true;\n }\n }\n else if (this.depth === 'Year') {\n if ((startVal.getFullYear() === endVal.getFullYear()) &&\n (startVal.getMonth() === endVal.getMonth())) {\n isSame = true;\n }\n }\n else if (this.depth === 'Decade') {\n if (startVal.getFullYear() === endVal.getFullYear()) {\n isSame = true;\n }\n }\n return isSame;\n };\n DateRangePicker.prototype.updateRange = function (elementCollection) {\n if (!isNullOrUndefined(this.startValue)) {\n for (var _i = 0, elementCollection_1 = elementCollection; _i < elementCollection_1.length; _i++) {\n var calendar = elementCollection_1[_i];\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n for (var _a = 0, tdCells_3 = tdCells; _a < tdCells_3.length; _a++) {\n var ele = tdCells_3[_a];\n if (!ele.classList.contains(WEEKNUMBER) && !ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n var eleDateValue = this.getIdValue(null, ele);\n if (!isNullOrUndefined(this.endValue)) {\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) >= +new Date(+this.startValue).setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +new Date(+this.endValue).setHours(0, 0, 0, 0) &&\n !this.isSameStartEnd(new Date(+this.startValue), new Date(+this.endValue)) &&\n +new Date(+this.startValue).setHours(0, 0, 0, 0) >= +this.min\n && +new Date(+this.endValue).setHours(0, 0, 0, 0) <= +this.max\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], RANGEHOVER);\n }\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n if (ele.classList.contains(SELECTED) && ele.classList.contains(ENDDATE) &&\n (+eleDateValue !== +this.endValue)) {\n removeClass([ele], [SELECTED]);\n removeClass([ele], [ENDDATE]);\n }\n if (ele.classList.contains(RANGEHOVER) && (+eleDateValue > +this.endValue)) {\n removeClass([ele], [RANGEHOVER]);\n }\n if (!ele.classList.contains(OTHERMONTH)) {\n var startDateValue = new Date(+this.startValue);\n var eleDateValue_1 = new Date(+eleDate);\n if (this.currentView() === this.depth &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +startDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) >= +startDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, true);\n }\n var endDateValue = new Date(+this.endValue);\n if (this.currentView() === 'Year') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), eleDateValue_1.getMonth() + 1, 0);\n }\n else if (this.currentView() === 'Decade') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), 11, 31);\n }\n if (this.currentView() === this.depth &&\n !isNullOrUndefined(this.endValue) &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +endDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) <= +endDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(ele, this.startValue, false);\n }\n if (+eleDate === +this.startValue && !isNullOrUndefined(this.endValue) && +eleDate === +this.endValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.checkMinMaxDays = function () {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n if (!this.isMobile) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + LEFTCALENDER));\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + RIGHTCALENDER));\n }\n else {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n }\n };\n DateRangePicker.prototype.rangeArgs = function (e) {\n var inputValue;\n var range;\n var startDate = !isNullOrUndefined(this.startValue) ?\n this.globalize.formatDate(this.startValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n var endDate = !isNullOrUndefined(this.endValue) ?\n this.globalize.formatDate(this.endValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n inputValue = startDate + ' ' + this.separator + ' ' + endDate;\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n }\n else {\n inputValue = '';\n range = 0;\n }\n var args = {\n value: this.value,\n startDate: this.startValue,\n endDate: this.endValue,\n daySpan: range,\n event: e || null,\n element: this.element,\n isInteracted: !isNullOrUndefined(e),\n text: inputValue\n };\n return args;\n };\n DateRangePicker.prototype.otherMonthSelect = function (ele, isStartDate, sameDate) {\n var value = +this.getIdValue(null, ele);\n var dateIdString = '*[id^=\"/id\"]:not(.e-other-month)'.replace('/id', '' + value);\n var tdCell = this.popupObj && this.popupObj.element.querySelector(dateIdString);\n if (!isNullOrUndefined(tdCell)) {\n if (isStartDate) {\n addClass([tdCell], [STARTDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.startValue, true);\n }\n else {\n addClass([tdCell], [ENDDATE, SELECTED]);\n this.addSelectedAttributes(tdCell, this.endValue, true);\n }\n if (sameDate) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n };\n DateRangePicker.prototype.selectRange = function (event, element) {\n var leftCalendar;\n var rightCalendar;\n if (event) {\n event.preventDefault();\n }\n var date = isNullOrUndefined(event) ? this.getIdValue(null, element)\n : this.getIdValue(event, null);\n var y = date.getFullYear();\n var m = date.getMonth();\n var firstDay = new Date(y, m, 1);\n var lastDay = new Date(y, m + 1, 0);\n var firstMonth = new Date(y, 0, 1);\n var lastMonth = new Date(y, 11, 31);\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n if (!this.isMobile || this.isMobile && !this.endButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n }\n else if (this.isMobile && this.startButton.element.classList.contains(ACTIVE)) {\n this.removeSelection();\n }\n var ele = element || event.currentTarget;\n if (isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.previousStartValue)) {\n date.setHours(this.previousStartValue.getHours());\n date.setMinutes(this.previousStartValue.getMinutes());\n date.setSeconds(this.previousStartValue.getSeconds());\n }\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.endValue = null;\n this.setValue();\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n this.applyButton.disabled = true;\n this.applyButton.element.disabled = true;\n if (this.isMobile) {\n this.endButton.element.classList.add(ACTIVE);\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else {\n if (+date === +this.startValue || +date > +this.startValue) {\n if (+date === +this.startValue && !isNullOrUndefined(this.minDays) && this.minDays > 1) {\n return;\n }\n this.endValue = null;\n this.setValue();\n if (this.isMobile || element) {\n this.hoverSelection(event, element);\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n date.setHours(this.previousEndValue.getHours());\n date.setMinutes(this.previousEndValue.getMinutes());\n date.setSeconds(this.previousEndValue.getSeconds());\n }\n this.endValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? lastDay : lastMonth;\n this.setValue();\n var endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n if (this.isMobile) {\n this.startButton.element.classList.remove(ACTIVE);\n this.endButton.element.classList.add(ACTIVE);\n for (var _i = 0, endEle_1 = endEle; _i < endEle_1.length; _i++) {\n var ele_1 = endEle_1[_i];\n ele_1.removeAttribute('aria-label');\n if (!ele_1.classList.contains(STARTDATE)) {\n ele_1.setAttribute('aria-selected', 'false');\n removeClass([ele_1], [ENDDATE, SELECTED]);\n }\n else {\n this.addSelectedAttributes(ele_1, this.startValue, true);\n removeClass([ele_1], [ENDDATE]);\n }\n }\n }\n addClass([ele], ENDDATE);\n if (+this.endValue === +this.startValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n else {\n this.addSelectedAttributes(ele, this.endValue, false);\n }\n if (ele.classList.contains(OTHERMONTH)) {\n if (+this.endValue === +this.startValue) {\n this.otherMonthSelect(ele, false, true);\n }\n else {\n this.otherMonthSelect(ele, false);\n }\n }\n endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, endEle_2 = endEle; _a < endEle_2.length; _a++) {\n var ele_2 = endEle_2[_a];\n if (ele_2.classList.contains(STARTDATE)) {\n removeClass([ele_2], [RANGEHOVER]);\n }\n }\n this.applyButton.disabled = false;\n this.applyButton.element.disabled = false;\n if (!this.isMobile) {\n this.removeClassDisabled();\n }\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else if (+date < +this.startValue) {\n this.removeClassDisabled();\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.setValue();\n this.removeSelectedAttributes();\n removeClass(this.popupObj.element.querySelectorAll('.' + STARTDATE), [STARTDATE, SELECTED]);\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n }\n }\n if (event) {\n leftCalendar = closest(event.target, '.' + LEFTCALENDER);\n }\n if (!isNullOrUndefined(leftCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (event) {\n rightCalendar = event && closest(event.target, '.' + RIGHTCALENDER);\n }\n if (!isNullOrUndefined(rightCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n addClass([ele], SELECTED);\n this.calendarIconEvent();\n this.updateHeader();\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.selectableDates = function () {\n if (!isNullOrUndefined(this.startValue)) {\n var tdCells = this.calendarElement.querySelectorAll('.' + CALENDAR + ' td');\n var isStartDate = false;\n if (this.currentView() === this.depth) {\n for (var _i = 0, tdCells_4 = tdCells; _i < tdCells_4.length; _i++) {\n var ele = tdCells_4[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n if (!ele.classList.contains(DISABLED)) {\n var eleDate = this.getIdValue(null, ele);\n if (+eleDate < +this.startValue) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n continue;\n }\n else {\n break;\n }\n }\n }\n if (ele.classList.contains(STARTDATE) && !ele.classList.contains(OTHERMONTH)) {\n isStartDate = true;\n break;\n }\n }\n if (isStartDate) {\n if (!this.previousIcon.classList.contains(DISABLED)) {\n addClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n else {\n for (var _a = 0, tdCells_5 = tdCells; _a < tdCells_5.length; _a++) {\n var ele = tdCells_5[_a];\n var startMonth = this.startValue.getMonth();\n var startYear = this.startValue.getFullYear();\n var element = this.getIdValue(null, ele);\n if (!this.startButton.element.classList.contains(ACTIVE) && ((this.currentView() === 'Year' &&\n (element.getMonth() < startMonth) && (element.getFullYear() <= startYear))\n || (this.currentView() === 'Decade' && (element.getMonth() <= startMonth) &&\n (element.getFullYear() < startYear)))) {\n addClass([ele], [DISABLED]);\n }\n else {\n break;\n }\n }\n if (tdCells[0].classList.contains(DISABLED)) {\n this.previousIconHandler(true);\n }\n else if (tdCells[tdCells.length - 1].classList.contains(DISABLED)) {\n this.nextIconHandler(true);\n }\n }\n }\n };\n DateRangePicker.prototype.updateMinMaxDays = function (calendar) {\n if ((!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) ||\n (this.isMobile && this.endButton.element.classList.contains(ACTIVE))) {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n var startValueSelected = this.removeTimeValueFromDate(this.startValue);\n var minDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.minDays - 1)));\n var maxDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.maxDays - 1)));\n minDate = (!isNullOrUndefined(this.minDays) && this.minDays > 0) ? minDate : null;\n maxDate = (!isNullOrUndefined(this.maxDays) && this.maxDays > 0) ? maxDate : null;\n if (this.currentView() === 'Year') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear(), minDate.getMonth(), 0);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), maxDate.getMonth(), 1);\n }\n else if (this.currentView() === 'Decade') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear() - 1, 11, 1);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), 0, 1);\n }\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n var maxEle = void 0;\n for (var _i = 0, tdCells_6 = tdCells; _i < tdCells_6.length; _i++) {\n var ele = tdCells_6[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER)) {\n var eleDate = this.getIdValue(null, ele);\n eleDate = this.removeTimeValueFromDate(eleDate);\n if (!isNullOrUndefined(minDate) && +eleDate === +minDate && ele.classList.contains(DISABLED)) {\n minDate.setDate(minDate.getDate() + 1);\n }\n if (!ele.classList.contains(DISABLED)) {\n if (+eleDate <= +startValueSelected) {\n continue;\n }\n if (!isNullOrUndefined(minDate) && +eleDate < +minDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.clearEvents(ele);\n }\n if (!isNullOrUndefined(maxDate) && +eleDate > +maxDate) {\n addClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n this.isMaxDaysClicked = true;\n EventHandler.clearEvents(ele);\n if (isNullOrUndefined(maxEle) && !ele.classList.contains(OTHERMONTH)) {\n maxEle = ele;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(maxEle)) {\n if (this.isMobile) {\n if (!this.nextIcon.classList.contains(DISABLED)) {\n addClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n var calendar_1 = closest(maxEle, '.' + RIGHTCALENDER);\n calendar_1 = isNullOrUndefined(calendar_1) ? this.leftCalendar : calendar_1;\n var isLeftCalendar = calendar_1.classList.contains(LEFTCALENDER);\n if (!isLeftCalendar) {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (!this.rightCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.leftCalNextIcon.classList.contains(DISABLED)) {\n addClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (!this.rightCalPrevIcon.classList.contains(DISABLED)) {\n addClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n }\n }\n }\n }\n else {\n this.isMaxDaysClicked = false;\n }\n };\n DateRangePicker.prototype.removeTimeValueFromDate = function (value) {\n var dateValue = new Date(value.getFullYear(), value.getMonth(), value.getDate());\n return dateValue;\n };\n DateRangePicker.prototype.removeClassDisabled = function () {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td' + '.' + DATEDISABLED);\n for (var _i = 0, tdCells_7 = tdCells; _i < tdCells_7.length; _i++) {\n var ele = tdCells_7[_i];\n if (ele.classList.contains(DATEDISABLED)) {\n removeClass([ele], [DATEDISABLED, DISABLED, OVERLAY]);\n EventHandler.add(ele, 'click', this.selectRange, this);\n if (!this.isMobile) {\n EventHandler.add(ele, 'mouseover', this.hoverSelection, this);\n }\n }\n }\n if (this.isMobile) {\n if (this.nextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.nextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.previousIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.previousIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n else {\n if (this.rightCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.rightCalPrevIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n if (this.leftCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED, OVERLAY]);\n }\n }\n };\n DateRangePicker.prototype.updateHeader = function () {\n var format = { type: 'date', skeleton: 'yMMMd' };\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = range.toString() + ' ' + this.l10n.getConstant('days');\n }\n else {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n if (!isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n }\n }\n if ((this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue)) ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue))\n && +this.startValue > +this.endValue))) {\n if (!this.isMobile) {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n }\n if (this.popupObj.element.querySelector('#custom_range')) {\n this.popupObj.element.querySelector('#custom_range').textContent =\n this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange') : 'Custom Range';\n }\n };\n DateRangePicker.prototype.removeSelection = function () {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.removeSelectedAttributes();\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [STARTDATE, ENDDATE, SELECTED]);\n }\n if (this.popupObj.element.querySelectorAll('.' + FOCUSDATE).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + FOCUSDATE), FOCUSDATE);\n }\n if (this.popupObj.element.querySelectorAll('.' + RANGEHOVER).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + RANGEHOVER), [RANGEHOVER]);\n }\n }\n };\n DateRangePicker.prototype.addSelectedAttributes = function (ele, date, isStartDate, sameDate) {\n if (ele) {\n var title = this.globalize.formatDate(date, { type: 'date', skeleton: 'full' });\n if (!isNullOrUndefined(sameDate) && sameDate) {\n ele.setAttribute('aria-label', 'The current start and end date is ' + '' + title);\n }\n else {\n ele.setAttribute('aria-label', 'The current ' + (isStartDate ? 'start' : 'end') + ' date is ' + '' + title);\n }\n ele.setAttribute('aria-selected', 'true');\n }\n };\n DateRangePicker.prototype.removeSelectedAttributes = function () {\n if (this.popupObj) {\n var start = this.popupObj.element.querySelectorAll('.' + STARTDATE);\n for (var _i = 0, start_1 = start; _i < start_1.length; _i++) {\n var ele = start_1[_i];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n var end = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, end_1 = end; _a < end_1.length; _a++) {\n var ele = end_1[_a];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n }\n };\n DateRangePicker.prototype.updateCalendarElement = function (calendar) {\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.calendarElement = this.leftCalendar;\n this.currentDate = this.leftCalCurrentDate;\n this.previousIcon = this.leftCalPrevIcon;\n this.nextIcon = this.leftCalNextIcon;\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.currentDate = this.rightCalCurrentDate;\n this.previousIcon = this.rightCalPrevIcon;\n this.nextIcon = this.rightCalNextIcon;\n }\n this.contentElement = calendar.querySelector('.' + CONTENT);\n this.tableBodyElement = select('.' + CONTENT + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER + ' .' + TITLE);\n this.headerElement = calendar.querySelector('.' + HEADER);\n };\n DateRangePicker.prototype.navPrevMonth = function (e) {\n e.preventDefault();\n var ele = closest(e.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(e.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigatePrevious(e);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.deviceNavigation = function (ele) {\n this.deviceCalendarEvent();\n this.updateRange([this.popupObj.element.querySelector('.' + CALENDAR)]);\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n if (this.endButton.element.classList.contains(ACTIVE)) {\n this.selectableDates();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.updateControl = function (calendar, customDate) {\n if (customDate === void 0) { customDate = null; }\n if (calendar.classList.contains(RIGHTCALENDER)) {\n this.rightCalCurrentDate = new Date(+(customDate ? customDate : this.currentDate));\n }\n else {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n this.calendarIconEvent();\n if ((((this.depth === 'Month')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-month')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-month'))\n || ((this.depth === 'Year')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-year')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-year'))\n || ((this.depth === 'Decade')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-decade')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-decade')))\n || this.isMobile) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange([calendar]);\n };\n DateRangePicker.prototype.navNextMonth = function (event) {\n event.preventDefault();\n var ele = closest(event.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(event.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigateNext(event);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n DateRangePicker.prototype.isPopupOpen = function () {\n if (!isNullOrUndefined(this.popupObj) && this.popupObj.element.classList.contains(POPUP)) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.createRangeHeader = function () {\n var labelContainer = this.createElement('div', { className: STARTENDCONTAINER });\n if (!this.isMobile) {\n var startLabel = this.createElement('a', { className: STARTLABEL });\n var endLabel = this.createElement('a', { className: ENDLABEL });\n var changeIcon = this.createElement('span', { className: CHANGEICON });\n attributes(startLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'Start Date', 'role': 'button' });\n attributes(endLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'End Date', 'role': 'button' });\n labelContainer.appendChild(startLabel);\n labelContainer.appendChild(changeIcon);\n labelContainer.appendChild(endLabel);\n startLabel.textContent = this.l10n.getConstant('startLabel');\n endLabel.textContent = this.l10n.getConstant('endLabel');\n }\n else {\n var endBtn = this.createElement('button', { className: ENDBUTTON });\n var startBtn = this.createElement('button', { className: STARTBUTTON });\n this.startButton = new Button({ content: this.l10n.getConstant('startLabel') }, startBtn);\n this.endButton = new Button({ content: this.l10n.getConstant('endLabel') }, endBtn);\n labelContainer.appendChild(startBtn);\n labelContainer.appendChild(endBtn);\n }\n return labelContainer;\n };\n DateRangePicker.prototype.disableInput = function () {\n if (this.strictMode) {\n if (!isNullOrUndefined(this.previousStartValue) && !isNullOrUndefined(this.previousEndValue)) {\n this.startValue = this.previousStartValue;\n this.endValue = this.previousEndValue;\n this.setValue();\n this.updateInput();\n }\n }\n else {\n this.updateInput();\n this.clearRange();\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.errorClass();\n }\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n };\n DateRangePicker.prototype.validateMinMax = function () {\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (!(this.min <= this.max)) {\n this.disableInput();\n return;\n }\n if (!isNullOrUndefined(this.minDays) && !isNullOrUndefined(this.maxDays)) {\n if (this.maxDays > 0 && this.minDays > 0 && (this.minDays > this.maxDays)) {\n this.maxDays = null;\n }\n }\n if (!isNullOrUndefined(this.minDays) && this.minDays < 0) {\n this.minDays = null;\n }\n if (!isNullOrUndefined(this.maxDays) && this.maxDays < 0) {\n this.maxDays = null;\n }\n };\n DateRangePicker.prototype.validateRangeStrict = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (+this.startValue <= +this.min) {\n this.startValue = this.min;\n this.setValue();\n }\n else if (+this.startValue >= +this.min && +this.startValue >= +this.max) {\n this.startValue = this.max;\n }\n }\n if (!isNullOrUndefined(this.endValue)) {\n if (+this.endValue > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else if (+this.endValue < +this.min) {\n this.endValue = this.min;\n this.setValue();\n }\n }\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateRange = function () {\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateMinMaxDays = function () {\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) && !(range >= this.minDays)) {\n if (this.strictMode) {\n var date = new Date(+this.startValue);\n date.setDate(date.getDate() + (this.minDays - 1));\n if (+date > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else {\n this.endValue = date;\n this.setValue();\n }\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n if ((!isNullOrUndefined(this.maxDays) && this.maxDays > 0) && !(range <= this.maxDays)) {\n if (this.strictMode) {\n this.endValue = new Date(+this.startValue);\n this.endValue.setDate(this.endValue.getDate() + (this.maxDays - 1));\n this.setValue();\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n };\n DateRangePicker.prototype.renderCalendar = function () {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(CALENDAR);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n attributes(this.calendarElement, { 'data-role': 'calendar' });\n _super.prototype.createHeader.call(this);\n _super.prototype.createContent.call(this);\n };\n DateRangePicker.prototype.isSameMonth = function (start, end) {\n if (start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameYear = function (start, end) {\n if (start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameDecade = function (start, end) {\n var startYear = start.getFullYear();\n var endYear = end.getFullYear();\n if ((startYear - (startYear % 10)) === (endYear - (endYear % 10))) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.startMonthCurrentDate = function () {\n if (this.isSameMonth(this.min, this.max) || +this.currentDate > +this.max || this.isSameMonth(this.currentDate, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (this.currentDate < this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n };\n DateRangePicker.prototype.selectNextMonth = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameMonth(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n return;\n }\n if ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setDate(1);\n var month = this.currentDate.getMonth() + 1;\n this.currentDate.setMonth(month);\n }\n };\n DateRangePicker.prototype.selectNextYear = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameYear(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setMonth(0);\n var yr = this.currentDate.getFullYear() + 1;\n this.currentDate.setFullYear(yr);\n return;\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setMonth(0);\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 1);\n }\n };\n DateRangePicker.prototype.selectNextDecade = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameDecade(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n var decyr = this.currentDate.getFullYear() + 10;\n this.currentDate.setFullYear(decyr);\n return;\n }\n if (((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 10);\n }\n };\n DateRangePicker.prototype.selectStartMonth = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.max) && this.isSameMonth(this.startValue, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (!(this.startValue >= this.min && this.startValue <= this.max)\n || this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n else {\n this.currentDate = new Date(+this.startValue);\n }\n }\n else {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.startMonthCurrentDate();\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.startMonthCurrentDate();\n };\n DateRangePicker.prototype.createCalendar = function () {\n var calendarContainer = this.createElement('div', { className: CALENDARCONTAINER });\n if (!this.isMobile) {\n this.selectStartMonth();\n this.renderCalendar();\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.calendarElement.classList.add(LEFTCALENDER);\n this.leftCalPrevIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + PREVICON);\n this.leftCalNextIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + NEXTICON);\n this.leftTitle = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalNextIcon);\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER).appendChild(this.leftCalPrevIcon);\n prepend([this.leftCalPrevIcon], this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER));\n this.leftCalendar = this.calendarElement;\n var leftContainer = this.createElement('div', { className: LEFTCONTAINER });\n var rightContainer = this.createElement('div', { className: RIGHTCONTAINER });\n leftContainer.appendChild(this.leftCalendar);\n calendarContainer.appendChild(leftContainer);\n if (!this.isMobile) {\n EventHandler.add(this.leftTitle, 'click', this.leftNavTitle, this);\n }\n if (this.start === 'Month') {\n this.selectNextMonth();\n }\n if (this.start === 'Year') {\n this.selectNextYear();\n }\n if (this.start === 'Decade') {\n this.selectNextDecade();\n }\n this.renderCalendar();\n this.rightCalCurrentDate = new Date(+this.currentDate);\n addClass([this.calendarElement], RIGHTCALENDER);\n this.rightCalendar = this.calendarElement;\n removeClass([this.leftCalendar && this.leftCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n removeClass([this.rightCalendar && this.rightCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n this.rightCalPrevIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + PREVICON);\n this.rightCalNextIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + NEXTICON);\n this.rightTitle = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + TITLE);\n remove(this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('table').setAttribute('tabindex', '0');\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalNextIcon);\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER).appendChild(this.rightCalPrevIcon);\n prepend([this.rightCalPrevIcon], this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER));\n rightContainer.appendChild(this.rightCalendar);\n calendarContainer.appendChild(rightContainer);\n if (!this.isMobile) {\n EventHandler.add(this.rightTitle, 'click', this.rightNavTitle, this);\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.currentDate = new Date(+this.startValue);\n }\n _super.prototype.validateDate.call(this);\n _super.prototype.minMaxUpdate.call(this);\n _super.prototype.render.call(this);\n var prevIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + PREVICON);\n var nextIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + NEXTICON);\n remove(this.calendarElement.querySelector('.' + CALENDAR + ' .' + ICONCONTAINER));\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(nextIcon);\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER).appendChild(prevIcon);\n prepend([prevIcon], this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER));\n this.deviceCalendar = this.calendarElement;\n calendarContainer.appendChild(this.calendarElement);\n this.headerTitleElement = this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER + ' .' + TITLE);\n }\n return calendarContainer;\n };\n DateRangePicker.prototype.leftNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.leftCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.calendarNavigation = function (e, element) {\n this.table = element.querySelector('table');\n this.headerTitleElement = element.querySelector('.e-title');\n this.tableBodyElement = element.querySelector('tbody');\n this.tableHeadElement = element.querySelector('thead');\n this.contentElement = element.querySelector('.e-content');\n this.updateCalendarElement(element);\n _super.prototype.navigateTitle.call(this, e);\n this.updateNavIcons();\n };\n DateRangePicker.prototype.rightNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.rightCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.clickEventEmitter = function (e) {\n if (!this.isMobile) {\n if (closest(e.target, '.e-calendar.e-left-calendar')) {\n this.calendarElement = this.leftCalendar;\n this.updateCalendarElement(this.leftCalendar);\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.updateCalendarElement(this.rightCalendar);\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n * @private\n * @hidden\n */\n DateRangePicker.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n DateRangePicker.prototype.getCalendarView = function (view) {\n if (view === 'Year') {\n return 'Year';\n }\n else if (view === 'Decade') {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n DateRangePicker.prototype.navigatedEvent = function (e) {\n this.trigger('navigated', this.navigatedArgs);\n if (!isNullOrUndefined(this.popupObj)) {\n var element = void 0;\n var view = this.getCalendarView(this.currentView());\n if (this.isMobile) {\n if (view === this.depth) {\n this.bindCalendarCellEvents();\n this.deviceNavigation();\n this.removeFocusedDate();\n this.checkMinMaxDays();\n }\n else {\n this.selectableDates();\n }\n }\n else {\n if (!this.isMobile && view === this.depth) {\n element = this.calendarElement.classList.contains('e-left-calendar') ? this.leftCalendar : this.rightCalendar;\n if (element === this.leftCalendar && ((e && !e.currentTarget.children[0].classList.contains('e-icons'))\n || (!isNullOrUndefined(this.controlDown)))) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.leftCalCurrentDate;\n this.updateCalendarElement(this.leftCalendar);\n this.updateControl(this.leftCalendar);\n this.updateCalendarElement(this.rightCalendar);\n _super.prototype.navigateTo.call(this, view, this.rightCalCurrentDate);\n var customDate = this.rightCalCurrentDate ? this.rightCalCurrentDate : this.currentDate;\n this.updateControl(this.rightCalendar, customDate);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n else if (e && !e.currentTarget.children[0].classList.contains('e-icons')\n || (!isNullOrUndefined(this.controlDown))) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.rightCalCurrentDate;\n this.updateCalendarElement(this.rightCalendar);\n this.updateControl(this.rightCalendar);\n this.updateCalendarElement(this.leftCalendar);\n if (this.startValue && isNullOrUndefined(this.endValue)) {\n if (view === 'Month' && this.startValue.getMonth() < this.rightCalCurrentDate.getMonth() &&\n this.startValue.getFullYear() <= this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else if (view === 'Year' && this.startValue.getFullYear() < this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n this.updateControl(this.leftCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n this.checkMinMaxDays();\n }\n else {\n this.updateNavIcons();\n this.calendarIconEvent();\n }\n }\n }\n };\n DateRangePicker.prototype.createControl = function () {\n var controlContainer = this.createElement('div', { className: RANGECONTAINER });\n var headerContainer = this.createElement('div', { className: RANGEHEADER });\n if (this.isMobile && this.fullScreenMode) {\n var modelHeaderIconWrapper = this.createElement(\"div\", { className: \"e-model-header-wrapper\" });\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var modelApplyButton = this.createElement(\"span\", { className: \"e-apply\" });\n EventHandler.add(modelApplyButton, 'mousedown touchstart', this.applyFunction, this);\n modelHeaderIconWrapper.appendChild(modelCloseIcon);\n modelHeaderIconWrapper.appendChild(modelApplyButton);\n headerContainer.appendChild(modelHeaderIconWrapper);\n }\n var labelContainer = this.createRangeHeader();\n headerContainer.appendChild(labelContainer);\n var daySpan = this.createElement('div', { className: DAYSPAN });\n attributes(daySpan, { 'aria-label': 'Selected Days' });\n daySpan.textContent = this.l10n.getConstant('selectedDays');\n headerContainer.appendChild(daySpan);\n var separator = this.createElement('div', { className: SEPARATOR });\n var calendarContainer = this.createCalendar();\n controlContainer.appendChild(headerContainer);\n controlContainer.appendChild(separator);\n controlContainer.appendChild(calendarContainer);\n var footerSection = this.createElement('div', { className: FOOTER });\n var cancelBtn = this.createElement('button', { className: CANCEL + ' ' + FLAT + ' ' + CSS });\n var applyBtn = this.createElement('button');\n addClass([applyBtn], [APPLY, FLAT, PRIMARY, CSS]);\n footerSection.appendChild(applyBtn);\n footerSection.appendChild(cancelBtn);\n var enable = !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue);\n this.cancelButton = new Button({ content: this.l10n.getConstant('cancelText') }, cancelBtn);\n this.applyButton = new Button({ content: this.l10n.getConstant('applyText'), disabled: !enable }, applyBtn);\n EventHandler.add(applyBtn, 'click', this.applyFunction, this);\n EventHandler.add(cancelBtn, 'click', this.cancelFunction, this);\n this.popupWrapper.appendChild(controlContainer);\n if (!this.isMobile) {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.createPresets();\n this.listRippleEffect();\n addClass([controlContainer], RANGEBORDER);\n addClass([this.popupWrapper], 'e-preset-wrapper');\n var presets = this.popupWrapper.querySelector('.' + PRESETS);\n presets.style.height = this.popupWrapper.querySelector('.' + RANGECONTAINER).getBoundingClientRect().height + 'px';\n }\n }\n this.popupWrapper.appendChild(footerSection);\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n this.renderPopup();\n };\n DateRangePicker.prototype.modelRangeCloseHandler = function (e) {\n this.hide();\n };\n DateRangePicker.prototype.cancelFunction = function (eve) {\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n eve.preventDefault();\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.startValue = null;\n this.endValue = null;\n this.removeSelection();\n this.hide(eve);\n };\n DateRangePicker.prototype.deviceHeaderUpdate = function () {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.endButton.element.setAttribute('disabled', '');\n this.startButton.element.classList.add(ACTIVE);\n }\n else if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.classList.add(ACTIVE);\n }\n };\n DateRangePicker.prototype.applyFunction = function (eve) {\n var isValueChanged = false;\n if (eve.type !== 'touchstart') {\n eve.preventDefault();\n }\n if (this.closeEventArgs && this.closeEventArgs.cancel) {\n this.startValue = this.popupWrapper.querySelector('.e-start-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-start-date'));\n this.endValue = this.popupWrapper.querySelector('.e-end-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-end-date'));\n this.setValue();\n }\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n if (eve.type !== 'touchstart' &&\n this.closeEventArgs && !this.closeEventArgs.cancel) {\n eve.preventDefault();\n }\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n if (!(this.previousStartValue && this.previousEndValue && this.startValue.getDate() == this.previousStartValue.getDate() && this.startValue.getMonth() == this.previousStartValue.getMonth() &&\n this.startValue.getFullYear() == this.previousStartValue.getFullYear()\n && this.endValue.getDate() == this.previousEndValue.getDate() && this.endValue.getMonth() == this.previousEndValue.getMonth()\n && this.endValue.getFullYear() == this.previousEndValue.getFullYear())) {\n Input.setValue(this.rangeArgs(eve).text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n this.previousEleValue = this.inputElement.value;\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n isValueChanged = true;\n }\n this.changeTrigger(eve);\n this.hide(eve ? eve : null);\n this.errorClass();\n isValueChanged = true;\n }\n else {\n this.hide(eve ? eve : null);\n }\n if (!(closest(eve.target, '.' + INPUTCONTAINER))\n && (!isValueChanged)) {\n this.focusOut();\n }\n if (!this.isMobile) {\n this.isKeyPopup = false;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyConfigs: this.keyInputConfigs,\n keyAction: this.popupKeyActionHandle.bind(this)\n });\n }\n }\n };\n DateRangePicker.prototype.onMouseClick = function (event, item) {\n if (event.type === 'touchstart') {\n return;\n }\n var target = item || event.target;\n var li = closest(target, '.' + LISTCLASS);\n var isClick = li && li.classList.contains(ACTIVE);\n if (li && li.classList.contains(LISTCLASS)) {\n this.setListSelection(li, event);\n }\n this.preventFocus = true;\n this.inputElement.focus();\n if (!this.isMobile) {\n this.preventFocus = true;\n if (li && li.classList.contains(LISTCLASS) && li.getAttribute('id') === 'custom_range') {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (!isClick && event.type === 'keydown') {\n this.inputElement.focus();\n }\n }\n }\n };\n DateRangePicker.prototype.onMouseOver = function (event) {\n var li = closest(event.target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS) && !li.classList.contains(HOVER)) {\n addClass([li], HOVER);\n }\n };\n DateRangePicker.prototype.onMouseLeave = function (event) {\n var item = closest(event.target, '.' + HOVER);\n if (!isNullOrUndefined(item)) {\n removeClass([item], HOVER);\n }\n };\n DateRangePicker.prototype.setListSelection = function (li, event) {\n if (li && (!li.classList.contains(ACTIVE) || (this.isMobile && li.classList.contains(ACTIVE)))) {\n if (this.isMobile && li.classList.contains(ACTIVE)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n var values_1 = this.presetsItem[this.activeIndex];\n if (values_1.id === 'custom_range') {\n this.renderCustomPopup();\n return;\n }\n return;\n }\n this.removeListSelection();\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([li], ACTIVE);\n li.setAttribute('aria-selected', 'true');\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n }\n else {\n this.applyPresetRange(values, event);\n }\n }\n };\n DateRangePicker.prototype.removeListSelection = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n if (!isNullOrUndefined(item)) {\n removeClass([item], ACTIVE);\n item.removeAttribute('aria-selected');\n }\n };\n DateRangePicker.prototype.setValue = function () {\n this.modelValue = [this.startValue, this.endValue];\n };\n DateRangePicker.prototype.applyPresetRange = function (values, e) {\n this.hide(null);\n this.presetsItem[this.presetsItem.length - 1].start = null;\n this.presetsItem[this.presetsItem.length - 1].end = null;\n this.startValue = values.start;\n this.endValue = values.end;\n this.setValue();\n this.refreshControl();\n this.trigger('select', this.rangeArgs(e));\n this.changeTrigger(e);\n this.previousEleValue = this.inputElement.value;\n this.isCustomRange = false;\n this.leftCalendar = this.rightCalendar = null;\n if (this.isKeyPopup) {\n this.isRangeIconClicked = false;\n this.inputElement.focus();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.showPopup = function (element, event) {\n this.presetHeight();\n if (this.zIndex === 1000) {\n this.popupObj.show(null, this.element);\n }\n else {\n this.popupObj.show(null, null);\n }\n if (this.isMobile) {\n this.popupObj.refreshPosition();\n }\n };\n DateRangePicker.prototype.renderCustomPopup = function () {\n this.isCustomWindow = true;\n this.popupObj.hide();\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: ROOT + ' ' + POPUP });\n this.renderControl();\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup();\n this.isCustomRange = true;\n if (!this.isMobile) {\n this.calendarFocus();\n }\n };\n DateRangePicker.prototype.listRippleEffect = function () {\n for (var _i = 0, _a = this.liCollections; _i < _a.length; _i++) {\n var li = _a[_i];\n rippleEffect(li);\n }\n };\n DateRangePicker.prototype.createPresets = function () {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });\n var listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);\n attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0', 'aria-label': 'daterangepicker-preset' });\n this.presetElement.appendChild(listTag);\n this.popupWrapper.appendChild(this.presetElement);\n var customElement = this.presetElement.querySelector('#custom_range');\n if (!isNullOrUndefined(customElement)) {\n customElement.textContent = this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange')\n : 'Custom Range';\n }\n this.liCollections = this.presetElement.querySelectorAll('.' + LISTCLASS);\n this.wireListEvents();\n if (this.isMobile) {\n if (this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-range-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select Preset\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var presetContent = this.presetElement;\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(presetContent);\n this.popupWrapper.insertBefore(modelWrapper, this.popupWrapper.firstElementChild);\n this.presetElement.style.width = '100%';\n }\n else {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\n }\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex > -1) {\n addClass([this.liCollections[this.activeIndex]], ACTIVE);\n }\n }\n };\n DateRangePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.presetElement, 'click', this.onMouseClick, this);\n if (!this.isMobile) {\n EventHandler.add(this.presetElement, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.presetElement, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateRangePicker.prototype.unWireListEvents = function () {\n if (!isNullOrUndefined(this.presetElement)) {\n EventHandler.remove(this.presetElement, 'click touchstart', this.onMouseClick);\n if (!this.isMobile) {\n EventHandler.remove(this.presetElement, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.presetElement, 'mouseout', this.onMouseLeave);\n }\n }\n };\n DateRangePicker.prototype.renderPopup = function () {\n var _this = this;\n this.popupWrapper.classList.add('e-control');\n var popupWidth = this.popupWrapper.getBoundingClientRect().width;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass.trim() !== '') {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (this.isMobile && this.isCustomWindow) {\n this.modal = this.createElement('div');\n document.body.appendChild(this.modal);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n relateTo: this.isMobile && this.isCustomWindow ? document.body :\n (!isNullOrUndefined(this.targetElement) ? this.targetElement : this.inputWrapper.container),\n position: (this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'left', Y: 'bottom' } : { X: 'center', Y: 'center' }) :\n this.enableRtl ? { X: 'left', Y: 'bottom' } : { X: 'right', Y: 'bottom' }),\n offsetX: this.isMobile || this.enableRtl ? 0 : -popupWidth,\n offsetY: OFFSETVALUE,\n collision: this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'fit' } : { X: 'fit', Y: 'fit' }) : { X: 'fit', Y: 'flip' },\n targetType: this.isMobile && this.isCustomWindow ? 'container' : 'relative',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n open: function () {\n if (_this.isMobile && _this.fullScreenMode) {\n _this.iconRangeRight = _this.calendarElement && window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).cssFloat;\n if (_this.iconRangeRight) {\n _this.touchRangeModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.dateRangeSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.touchStartRangeHandler, _this);\n }\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id, 'aria-controls': _this.inputElement.id });\n if (_this.value) {\n attributes(_this.inputElement, { 'aria-activedescendant': _this.inputElement.id });\n }\n else {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n addClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (!_this.isMobile) {\n if (_this.cancelButton) {\n _this.btnKeyboardModule = new KeyboardEvents(_this.cancelButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { tab: 'tab', altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n _this.btnKeyboardModule = new KeyboardEvents(_this.applyButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n }\n if (!isNullOrUndefined(_this.leftCalendar)) {\n if (!_this.isRangeIconClicked) {\n _this.calendarFocus();\n }\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.keyInputConfigs = extend(_this.keyInputConfigs, _this.keyConfigs);\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.presetKeyActionHandler.bind(_this),\n keyConfigs: _this.keyInputConfigs\n });\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n if (isNullOrUndefined(_this.leftCalendar)) {\n _this.preventBlur = true;\n _this.presetElement.focus();\n }\n else {\n _this.presetElement.setAttribute('tabindex', '-1');\n }\n }\n _this.popupKeyBoardHandler();\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.add(document, 'keydown', _this.popupCloseHandler, _this);\n }\n },\n close: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n if (_this.isRangeIconClicked) {\n _this.inputWrapper.container.children[1].focus();\n }\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label)) {\n _this.unWireListEvents();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n if (!isNullOrUndefined(_this.popupObj.element.parentElement)) {\n detach(_this.popupObj.element);\n }\n _this.popupObj.destroy();\n _this.popupObj = null;\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.remove(document, 'keydown', _this.popupCloseHandler);\n }\n }, targetExitViewport: function () {\n var popupEle = _this.popupObj && _this.popupObj.element;\n if (!Browser.isDevice && popupEle && popupEle.getBoundingClientRect().height < window.innerHeight) {\n _this.hide();\n }\n }\n });\n if (this.isMobile) {\n this.popupObj.element.classList.add(DEVICE);\n if (!this.isMobile) {\n this.popupObj.element.classList.add('e-bigger');\n }\n }\n if (this.isMobile && this.isCustomWindow) {\n addClass([this.modal], [DEVICE, ROOT, 'e-range-modal']);\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n };\n DateRangePicker.prototype.dateRangeSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRangeRight == 'left') {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchRangeStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchRangeStart = false;\n }\n };\n DateRangePicker.prototype.touchStartRangeHandler = function (e) {\n this.touchRangeStart = true;\n };\n DateRangePicker.prototype.popupCloseHandler = function (e) {\n switch (e.keyCode) {\n case 27:\n this.hide(e);\n break;\n }\n };\n DateRangePicker.prototype.calendarFocus = function () {\n var startDate = this.popupObj && this.popupObj.element.querySelector('.' + STARTDATE);\n if (startDate) {\n var ele = closest(startDate, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n ele.children[1].firstElementChild.focus();\n }\n addClass([startDate], FOCUSDATE);\n }\n else {\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n };\n DateRangePicker.prototype.presetHeight = function () {\n var presets = this.popupObj && this.popupObj.element.querySelector('.' + PRESETS);\n var rangeContainer = this.popupObj && this.popupObj.element.querySelector('.' + RANGECONTAINER);\n if (!isNullOrUndefined(presets) && !isNullOrUndefined(rangeContainer)) {\n presets.style.height = rangeContainer.getBoundingClientRect().height + 'px';\n }\n };\n DateRangePicker.prototype.presetKeyActionHandler = function (e) {\n switch (e.action) {\n case 'moveDown':\n this.listMoveDown(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'moveUp':\n this.listMoveUp(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'enter':\n {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(this.leftCalendar) && !isNullOrUndefined(actItem)) {\n if (isNullOrUndefined(hvrItem) || (!isNullOrUndefined(actItem) && actItem === hvrItem)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(actItem);\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.calendarFocus();\n actItem.classList.remove(HOVER);\n e.preventDefault();\n return;\n }\n }\n }\n if (!isNullOrUndefined(hvrItem) || !isNullOrUndefined(actItem)) {\n this.onMouseClick(e, hvrItem || actItem);\n }\n e.preventDefault();\n }\n break;\n case 'tab':\n if (this.leftCalendar) {\n var item = this.getHoverLI();\n if (!isNullOrUndefined(item)) {\n item.classList.remove(HOVER);\n }\n }\n else {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveDown = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n else {\n addClass([this.liCollections[0]], HOVER);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveUp = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n };\n DateRangePicker.prototype.getHoverLI = function () {\n var item = this.presetElement.querySelector('.' + HOVER);\n return item;\n };\n DateRangePicker.prototype.getActiveLI = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE);\n return item;\n };\n DateRangePicker.prototype.popupKeyBoardHandler = function () {\n this.popupKeyboardModule = new KeyboardEvents(this.popupWrapper, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { escape: 'escape' }\n });\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n };\n DateRangePicker.prototype.setScrollPosition = function () {\n var listHeight = this.presetElement.getBoundingClientRect().height;\n var hover = this.presetElement.querySelector('.' + HOVER);\n var active = this.presetElement.querySelector('.' + ACTIVE);\n var element = !isNullOrUndefined(hover) ? hover : active;\n if (!isNullOrUndefined(element)) {\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.presetElement.scrollTop = nextEle ? (height - (listHeight / 2 + liHeight / 2)) : height;\n }\n else {\n this.presetElement.scrollTop = 0;\n }\n }\n };\n DateRangePicker.prototype.popupKeyActionHandle = function (e) {\n var presetElement = closest(e.target, '.' + PRESETS);\n switch (e.action) {\n case 'escape':\n if (this.isPopupOpen()) {\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[1].blur();\n }\n break;\n case 'enter':\n if (!this.isPopupOpen()) {\n this.show(null, e);\n }\n else {\n this.inputWrapper.container.children[1].focus();\n }\n break;\n case 'tab':\n this.hide(e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n else {\n if (document.activeElement === this.cancelButton.element && this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (document.activeElement === this.applyButton.element && this.applyButton.element.disabled !== true) {\n this.cancelButton.element.focus();\n }\n else {\n if (!isNullOrUndefined(this.presetElement) && (document.activeElement === this.cancelButton.element)) {\n this.presetElement.focus();\n }\n else {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n e.preventDefault();\n break;\n }\n };\n DateRangePicker.prototype.documentHandler = function (e) {\n if (isNullOrUndefined(this.popupObj)) {\n return;\n }\n var target = e.target;\n if (!this.inputWrapper.container.contains(target) ||\n (!isNullOrUndefined(this.popupObj) && !closest(target, '[id=\"' + this.popupWrapper.id + '\"]') && e.type !== 'mousedown')) {\n if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||\n this.closeEventArgs && !this.closeEventArgs.cancel)) {\n e.preventDefault();\n }\n }\n if ((isNullOrUndefined(this.targetElement) ||\n (!isNullOrUndefined(this.targetElement) && !(target === this.targetElement))) &&\n !(closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && !(closest(target, '.e-daterangepicker.e-popup') && (!target.classList.contains('e-day'))) && (!target.classList.contains('e-dlg-overlay'))) {\n this.preventBlur = false;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n if (!this.isMobile) {\n this.isRangeIconClicked = false;\n }\n }\n }\n };\n DateRangePicker.prototype.createInput = function () {\n if (this.fullScreenMode && this.isMobile) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n floatLabelType: this.floatLabelType,\n element: this.inputElement,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [DATERANGEICON]\n }, this.createElement);\n attributes(this.inputElement, {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n });\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n // if (!isNullOrUndefined(this.placeholder) && this.placeholder.trim() !== '') {\n // Input.addAttributes({ 'aria-placeholder': this.placeholder }, this.inputElement);\n // }\n this.setEleWidth(this.width);\n addClass([this.inputWrapper.container], DATERANGEWRAPPER);\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.inputElement.type === 'hidden') {\n this.inputWrapper.container.style.display = 'none';\n }\n this.refreshControl();\n this.previousEleValue = this.inputElement.value;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.startCopy = this.startDate;\n this.endCopy = this.endDate;\n };\n DateRangePicker.prototype.setEleWidth = function (width) {\n if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (this.width);\n }\n else if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n DateRangePicker.prototype.adjustLongHeaderWidth = function () {\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.popupWrapper], DAYHEADERLONG);\n }\n };\n DateRangePicker.prototype.refreshControl = function () {\n this.validateMinMax();\n if (this.strictMode) {\n this.validateRangeStrict();\n }\n var isDisabled = this.disabledDates();\n if (this.strictMode && (isDisabled)) {\n this.startValue = this.previousStartValue;\n this.setProperties({ startDate: this.startValue }, true);\n this.endValue = this.previousEndValue;\n this.setProperties({ endDate: this.endValue }, true);\n this.setValue();\n }\n this.updateInput();\n if (!this.strictMode) {\n this.validateRange();\n }\n if (!this.strictMode && (isDisabled)) {\n this.clearRange();\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) &&\n !isDisabled && !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.errorClass();\n this.previousStartValue = isNullOrUndefined(this.startValue) || isNaN(+this.startValue) ? null : new Date(+this.startValue);\n this.previousEndValue = isNullOrUndefined(this.endValue) || isNaN(+this.endValue) ? null : new Date(+this.endValue);\n };\n DateRangePicker.prototype.updateInput = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var formatOption = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var startDate = this.globalize.formatDate(this.startValue, formatOption);\n var endDate = this.globalize.formatDate(this.endValue, formatOption);\n Input.setValue(startDate + ' ' + this.separator + ' ' + endDate, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n Input.setValue(this.invalidValueString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n DateRangePicker.prototype.checkInvalidRange = function (value) {\n if (!isNullOrUndefined(value)) {\n var invalid = false;\n var startinvalue = void 0;\n var endinvalue = void 0;\n var startString = null;\n var endString = null;\n var valueString = null;\n var startObject = false;\n var endObject = false;\n var invalidobject = false;\n if (typeof (value) === 'string') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length === 2) {\n startString = range[0];\n endString = range[1];\n }\n else {\n invalid = true;\n valueString = value;\n }\n }\n else {\n if (value.length > 0) {\n startinvalue = value[0];\n endinvalue = value[1];\n }\n else {\n startinvalue = value.start;\n endinvalue = value.end;\n }\n if (!(startinvalue instanceof Date) && typeof (startinvalue) !== 'object') {\n startString = this.getstringvalue(startinvalue);\n }\n else if (startinvalue instanceof Date) {\n startObject = true;\n }\n else if (!isNullOrUndefined(startinvalue)) {\n invalidobject = true;\n }\n if (!(endinvalue instanceof Date) && typeof (endinvalue) !== 'object') {\n endString = this.getstringvalue(endinvalue);\n }\n else if (endinvalue instanceof Date) {\n endObject = true;\n }\n else if (!isNullOrUndefined(endinvalue)) {\n invalidobject = true;\n }\n }\n if ((isNullOrUndefined(startString) && !startObject && !isNullOrUndefined(endString)) ||\n (!isNullOrUndefined(startString) && !endObject && isNullOrUndefined(endString))) {\n invalid = true;\n }\n if (invalidobject) {\n startString = endString = valueString = null;\n invalid = true;\n }\n if (startString) {\n invalid = invalid || this.checkInvalidValue(startString);\n }\n if (endString) {\n invalid = invalid || this.checkInvalidValue(endString);\n }\n if (invalid) {\n if (startObject && !invalidobject) {\n startString = startinvalue.toLocaleDateString();\n }\n if (endObject && !invalidobject) {\n endString = endinvalue.toLocaleDateString();\n }\n if (!isNullOrUndefined(startString) && !isNullOrUndefined(endString)) {\n valueString = startString + ' ' + this.separator + ' ' + endString;\n }\n else if (!isNullOrUndefined(startString)) {\n valueString = startString;\n }\n else if (!isNullOrUndefined(endString)) {\n valueString = endString;\n }\n this.invalidValueString = valueString;\n this.setProperties({ value: null }, true);\n this.setProperties({ startValue: null }, true);\n this.setProperties({ endValue: null }, true);\n this.startDate = null;\n this.endDate = null;\n }\n }\n };\n DateRangePicker.prototype.getstringvalue = function (value) {\n var stringValue = null;\n if (!isNullOrUndefined(value) && (typeof value === 'number')) {\n stringValue = (value).toString();\n }\n else if (!isNullOrUndefined(value) && (typeof value === 'string')) {\n stringValue = '' + value;\n }\n return stringValue;\n };\n DateRangePicker.prototype.checkInvalidValue = function (value) {\n var valueString = value;\n var invalid = false;\n var formatOpt = null;\n formatOpt = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n if (typeof valueString !== 'string') {\n invalid = true;\n }\n else {\n var globalize = new Internationalization(this.locale);\n if (!this.checkDateValue(globalize.parseDate(valueString, formatOpt))) {\n var extISOStr = null;\n var basISOString = null;\n // eslint-disable-next-line\n extISOStr = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOStr.test(valueString) && !basISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n }\n }\n return invalid;\n };\n DateRangePicker.prototype.isDateDisabled = function (date) {\n if (isNullOrUndefined(date)) {\n return false;\n }\n var value = new Date(+date);\n if (+value < +this.min || +value > +this.max) {\n return true;\n }\n this.virtualRenderCellArgs = {\n date: value,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.disabledDateRender = function () {\n this.disabledDays = [];\n this.disabledDayCnt = null;\n var localDate = new Date(+this.startValue);\n var count = 0;\n while (+localDate <= +this.endValue && +this.endValue <= +this.max) {\n this.virtualRenderCellArgs = {\n date: localDate,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n this.disabledDays.push(new Date(+args.date));\n if (+localDate > +this.startValue && +localDate < +this.endValue) {\n count++;\n }\n }\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n this.disabledDayCnt = count;\n };\n DateRangePicker.prototype.virtualRenderCellEvent = function (args) {\n extend(this.virtualRenderCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n DateRangePicker.prototype.disabledDates = function () {\n var isStartDisabled = false;\n var isEndDisabled = false;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n isStartDisabled = this.isDateDisabled(this.startValue);\n isEndDisabled = this.isDateDisabled(this.endValue);\n if (!this.isPopupOpen()) {\n this.currentDate = null;\n }\n this.setValue();\n }\n return (isStartDisabled || isEndDisabled);\n };\n DateRangePicker.prototype.setModelValue = function () {\n if (!this.value && this.startDate === null && this.endDate === null) {\n this.setProperties({ value: null }, true);\n }\n else if (this.value === null || this.value.start === null) {\n if (this.value === null) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n else if (this.value.start === null) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n else {\n if ((this.value && this.value.length > 0) ||\n this.valueType && this.valueType.length > 0) {\n if (+this.startDate !== +this.value[0] || +this.endDate !== +this.value[1]) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n if (this.value && this.value[0] == null && this.value[1] == null) {\n this.setProperties({ value: null }, true);\n }\n }\n else {\n if ((this.value && this.value.start)) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n }\n this.createHiddenInput();\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DateRangePicker.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n this.firstHiddenChild.dispatchEvent(evt);\n };\n DateRangePicker.prototype.changeTrigger = function (e) {\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.setModelValue();\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.rangeArgs(e));\n }\n }\n this.previousEleValue = this.inputElement.value;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n * @hidden\n */\n DateRangePicker.prototype.navigateTo = function (view, date) {\n if (this.isPopupOpen()) {\n if (view.toLowerCase() === 'month') {\n view = 'Month';\n }\n else if (view.toLowerCase() === 'year') {\n view = 'Year';\n }\n else if (view.toLowerCase() === 'decade') {\n view = 'Decade';\n }\n else {\n return;\n }\n if (this.getViewNumber(view) < this.getViewNumber(this.depth)) {\n view = this.depth;\n }\n if (this.isMobile) {\n _super.prototype.navigateTo.call(this, view, date);\n }\n else {\n if (date < this.min) {\n date = new Date(+this.min);\n }\n else if (date >= this.max) {\n date = new Date(+this.max);\n }\n if (view === 'Month' && this.isSameMonth(date, this.max)) {\n date = new Date(this.max.getFullYear(), this.max.getMonth() - 1, this.min.getDate());\n }\n else if (view === 'Year' && this.isSameYear(date, this.max)) {\n date = new Date((this.max.getFullYear() - 1), this.max.getMonth(), this.max.getDate());\n }\n else if (view === 'Decade' && this.isSameDecade(date, this.max)) {\n date = new Date((this.max.getFullYear() - 10), this.max.getMonth(), this.max.getDate());\n }\n this.leftCalCurrentDate = date;\n this.navigate(this.leftCalendar, this.leftCalCurrentDate, view);\n if (view === 'Month') {\n date = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));\n }\n else if (view === 'Year') {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 1));\n }\n else {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 10));\n }\n this.rightCalCurrentDate = date;\n this.navigate(this.rightCalendar, this.rightCalCurrentDate, view);\n this.leftKeyboardModule = this.rightKeyboardModule = null;\n this.updateNavIcons();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n };\n DateRangePicker.prototype.navigate = function (calendar, date, view) {\n this.calendarElement = calendar;\n this.table = calendar.querySelector('table');\n this.tableBodyElement = calendar.querySelector('tbody');\n this.headerTitleElement = calendar.querySelector('.e-title');\n this.tableHeadElement = calendar.querySelector('thead');\n this.contentElement = calendar.querySelector('.e-content');\n this.previousIcon = calendar.querySelector('.e-prev');\n this.nextIcon = calendar.querySelector('.e-next');\n this.effect = ZOOMIN;\n _super.prototype.navigateTo.call(this, view, date);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusOut = function () {\n var isBlur = this.preventBlur;\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.preventBlur = false;\n this.inputElement.blur();\n this.preventBlur = isBlur;\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.hide(null);\n var ariaAttrs = {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n removeClass([this.inputElement], [ROOT]);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.inputElement.classList.remove('e-input');\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n detach(this.inputWrapper.container);\n }\n }\n if (!isNullOrUndefined(this.inputKeyboardModule) && !this.isMobile) {\n this.inputKeyboardModule.destroy();\n }\n if (this.popupObj) {\n if (!this.isMobile) {\n this.clearCalendarEvents();\n }\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n this.inputWrapper = this.popupWrapper = this.popupObj = this.cloneElement = this.presetElement = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if ((!isNullOrUndefined(this.firstHiddenChild))\n && (!isNullOrUndefined(this.secondHiddenChild))) {\n detach(this.firstHiddenChild);\n detach(this.secondHiddenChild);\n this.firstHiddenChild = this.secondHiddenChild = null;\n this.inputElement.setAttribute('name', this.element.getAttribute('data-name'));\n this.inputElement.removeAttribute('data-name');\n }\n this.closeEventArgs = null;\n this.leftCalendar = null;\n this.rightTitle = null;\n this.leftTitle = null;\n this.openEventArgs = null;\n this.leftCalNextIcon = null;\n this.rightCalendar = null;\n this.closeEventArgs = null;\n this.rightCalPrevIcon = null;\n this.leftCalPrevIcon = null;\n this.popupKeyboardModule = null;\n this.cancelButton = null;\n this.applyButton = null;\n this.calendarElement = null;\n this.leftKeyboardModule = null;\n this.rightCalNextIcon = null;\n this.leftCalNextIcon = null;\n this.btnKeyboardModule = null;\n this.rightKeyboardModule = null;\n this.leftKeyboardModule = null;\n this.presetKeyboardModule = null;\n this.liCollections = null;\n this.popupObj = null;\n this.popupWrapper = null;\n };\n DateRangePicker.prototype.ensureInputAttribute = function () {\n var attr = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n attr[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < attr.length; i++) {\n if (isNullOrUndefined(this.cloneElement.getAttribute(attr[i]))) {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(attr[i]);\n }\n else {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(attr[i]);\n }\n this.inputElement.setAttribute(attr[i], this.cloneElement.getAttribute(attr[i]));\n }\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateRangePicker.prototype.getModuleName = function () {\n return 'daterangepicker';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Return the properties that are maintained upon browser refresh.\n *\n * @returns {string}\n */\n DateRangePicker.prototype.getPersistData = function () {\n var keyEntity = ['startDate', 'endDate', 'value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Return the selected range and day span in the DateRangePicker.\n *\n * @returns {Object}\n */\n DateRangePicker.prototype.getSelectedRange = function () {\n var range;\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n }\n else {\n range = 0;\n }\n return { startDate: this.startValue, endDate: this.endValue, daySpan: range };\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * To open the Popup container in the DateRangePicker component.\n *\n * @param {HTMLElement} element - Specifies element.\n * @returns {void}\n */\n DateRangePicker.prototype.show = function (element, event) {\n var _this = this;\n if (this.isMobile && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n if (!this.isPopupOpen()) {\n if (element) {\n this.targetElement = element;\n }\n this.createPopup();\n if (this.isMobile || Browser.isDevice) {\n this.mobileRangePopupWrap = this.createElement('div', { className: 'e-daterangepick-mob-popup-wrap' });\n document.body.appendChild(this.mobileRangePopupWrap);\n }\n this.openEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n var eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openEventArgs = eventArgs;\n if (!_this.openEventArgs.cancel) {\n _this.openEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.showPopup(element, event);\n var isPreset = (!_this.isCustomRange || (_this.isMobile && _this.isCustomRange));\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label) && isPreset) {\n _this.setScrollPosition();\n }\n _this.checkMinMaxDays();\n if ((_this.isMobile) && (!isNullOrUndefined(_this.startDate)) && (isNullOrUndefined(_this.endDate))) {\n _this.endButton.element.classList.add(ACTIVE);\n _this.startButton.element.classList.remove(ACTIVE);\n _this.endButton.element.removeAttribute('disabled');\n _this.selectableDates();\n }\n _super.prototype.setOverlayIndex.call(_this, _this.mobileRangePopupWrap, _this.popupObj.element, _this.modal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.isMobile || Browser.isDevice);\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileRangePopupWrap.appendChild(dlgOverlay);\n }\n }\n }\n };\n /**\n * To close the Popup container in the DateRangePicker component.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.hide = function (event) {\n var _this = this;\n if (this.popupObj) {\n if (isNullOrUndefined(this.previousEndValue) && isNullOrUndefined(this.previousStartValue)) {\n this.clearRange();\n }\n else {\n if (!isNullOrUndefined(this.previousStartValue)) {\n this.startValue = new Date(this.checkValue(this.previousStartValue));\n this.setValue();\n this.currentDate = new Date(this.checkValue(this.startValue));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n this.endValue = new Date(this.checkValue(this.previousEndValue));\n this.setValue();\n }\n else {\n this.endValue = null;\n this.setValue();\n }\n }\n if (this.isPopupOpen()) {\n this.closeEventArgs = {\n cancel: false,\n popup: this.popupObj,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null\n };\n var eventArgs = this.closeEventArgs;\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventArgs = eventArgs;\n if (!_this.closeEventArgs.cancel) {\n if (_this.isMobile) {\n if (!isNullOrUndefined(_this.startButton) && !isNullOrUndefined(_this.endButton)) {\n EventHandler.remove(_this.startButton.element, 'click touchstart', _this.deviceHeaderClick);\n EventHandler.remove(_this.endButton.element, 'click touchstart', _this.deviceHeaderClick);\n }\n }\n if (_this.popupObj) {\n _this.popupObj.hide();\n if (_this.preventBlur) {\n _this.inputElement.focus();\n addClass([_this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n if (!_this.isMobile) {\n if (!isNullOrUndefined(_this.leftKeyboardModule) && !isNullOrUndefined(_this.rightKeyboardModule)) {\n _this.leftKeyboardModule.destroy();\n _this.rightKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.presetKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.cancelButton)) {\n _this.btnKeyboardModule.destroy();\n }\n }\n _this.targetElement = null;\n removeClass([document.body], OVERFLOW);\n EventHandler.remove(document, 'mousedown touchstart', _this.documentHandler);\n if (_this.isMobile && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (_this.isMobile || Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileRangePopupWrap)) {\n _this.mobileRangePopupWrap.remove();\n _this.mobileRangePopupWrap = null;\n }\n }\n _this.isKeyPopup = _this.dateDisabled = false;\n }\n else {\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE);\n }\n _this.updateClearIconState();\n _this.updateHiddenInput();\n if (_this.isMobile && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n }\n else {\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DateRangePicker.prototype.setLocale = function () {\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateRangeOptions && this.dateRangeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n this.updateHiddenInput();\n this.changeTrigger();\n };\n DateRangePicker.prototype.refreshChange = function () {\n this.checkView();\n this.refreshControl();\n this.changeTrigger();\n };\n DateRangePicker.prototype.setDate = function () {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.refreshChange();\n };\n DateRangePicker.prototype.enableInput = function () {\n if (+this.min <= +this.max) {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.element.hasAttribute('disabled')) {\n this.bindEvents();\n }\n }\n };\n DateRangePicker.prototype.clearModelvalue = function (newProp, oldProp) {\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n if (oldProp.value && oldProp.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n else if (oldProp.value && oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n else if (oldProp.value && !oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n this.updateValue();\n this.setDate();\n };\n DateRangePicker.prototype.createHiddenInput = function () {\n if (isNullOrUndefined(this.firstHiddenChild) && isNullOrUndefined(this.secondHiddenChild)) {\n this.firstHiddenChild = this.createElement('input');\n this.secondHiddenChild = this.createElement('input');\n }\n if (!isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n this.inputElement.setAttribute('data-name', this.inputElement.getAttribute('name'));\n this.inputElement.removeAttribute('name');\n }\n attributes(this.firstHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n attributes(this.secondHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n var format = { format: this.formatString, type: 'datetime', skeleton: 'yMd' };\n this.firstHiddenChild.value = this.startDate && this.globalize.formatDate(this.startDate, format);\n this.secondHiddenChild.value = this.endDate && this.globalize.formatDate(this.endDate, format);\n this.inputElement.parentElement.appendChild(this.firstHiddenChild);\n this.inputElement.parentElement.appendChild(this.secondHiddenChild);\n };\n DateRangePicker.prototype.setMinMaxDays = function () {\n if (this.isPopupOpen()) {\n this.removeClassDisabled();\n this.checkMinMaxDays();\n if (this.isMobile) {\n this.selectableDates();\n }\n if (!this.strictMode && (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n this.removeSelection();\n }\n else {\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n this.updateHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n DateRangePicker.prototype.getStartEndValue = function (date, isEnd) {\n if (this.depth === 'Month') {\n return this.checkDateValue(new Date(this.checkValue(date)));\n }\n else if (this.depth === 'Year') {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateRangePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateRangePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['maxDays', 'minDays', 'value'];\n if (openPopup.indexOf(prop) < 0) {\n this.hide(null);\n }\n switch (prop) {\n case 'width':\n this.setEleWidth(this.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'separator':\n this.previousEleValue = this.inputElement.value;\n this.setProperties({ separator: newProp.separator }, true);\n this.updateInput();\n this.changeTrigger();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.setProperties({ placeholder: newProp.placeholder }, true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n this.setRangeAllowEdit();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'allowEdit':\n this.setRangeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.updateInput();\n this.changeTrigger();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateRangeOptions && this.dateRangeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.setLocale();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.setDataAttribute(true);\n this.checkHtmlAttributes(true);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'startDate':\n if (typeof newProp.startDate === 'string') {\n newProp.startDate = this.globalize.parseDate(newProp.startDate, format);\n }\n if (+this.initStartDate !== +newProp.startDate) {\n this.startValue = this.getStartEndValue(newProp.startDate, false);\n this.setDate();\n this.setValue();\n }\n break;\n case 'endDate':\n if (typeof newProp.endDate === 'string') {\n newProp.endDate = this.globalize.parseDate(newProp.endDate, format);\n }\n if (+this.initEndDate !== +newProp.endDate) {\n this.endValue = this.getStartEndValue(newProp.endDate, true);\n this.setDate();\n this.setValue();\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidRange(newProp.value);\n if (typeof (newProp.value) === 'string') {\n if (!this.invalidValueString) {\n var rangeArray = newProp.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n this.updateValue();\n this.setDate();\n }\n else {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else {\n if ((!isNullOrUndefined(newProp.value) && newProp.value.length > 0)\n || !isNullOrUndefined(newProp.value) && newProp.value.start) {\n this.valueType = newProp.value;\n if (newProp.value[0] === null || (newProp.value.start === null)) {\n if (newProp.value.length === 1 || (newProp.value.start)) {\n this.clearModelvalue(newProp, oldProp);\n }\n else if (newProp.value[1] === null ||\n (newProp.value.start === null)) {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else if ((+this.initStartDate !== +newProp.value[0]\n || +this.initEndDate !== +newProp.value[1]) ||\n (+this.initStartDate !== +(newProp.value.start\n || +this.initEndDate !== +newProp.value.start))) {\n if (newProp.value.length === 1) {\n this.modelValue = newProp.value;\n }\n else if (newProp.value.start) {\n this.modelValue = newProp.value;\n }\n this.updateValue();\n this.setDate();\n }\n }\n else {\n if (isNullOrUndefined(this.value)\n || newProp.value.start == null) {\n this.valueType = newProp.value;\n this.startValue = null;\n this.endValue = null;\n this.clearModelvalue(newProp, oldProp);\n }\n }\n }\n if (this.isPopupOpen()) {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.removeSelection();\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n return;\n }\n if (this.isMobile) {\n this.navigate(this.deviceCalendar, this.startValue, this.currentView());\n this.deviceHeaderUpdate();\n }\n else {\n this.navigate(this.leftCalendar, this.startValue, this.currentView());\n this.updateControl(this.leftCalendar);\n this.navigate(this.rightCalendar, this.endValue, this.currentView());\n this.updateControl(this.rightCalendar);\n }\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n this.updateHeader();\n this.applyButton.disabled = this.applyButton.element.disabled = false;\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'minDays':\n this.setProperties({ minDays: newProp.minDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'maxDays':\n this.setProperties({ maxDays: newProp.maxDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'min':\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n this.previousEleValue = this.inputElement.value;\n this.enableInput();\n this.refreshChange();\n break;\n case 'max':\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.enableInput();\n this.refreshChange();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.refreshChange();\n break;\n case 'presets':\n this.setProperties({ presets: newProp.presets }, true);\n this.processPresets();\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'start':\n this.setProperties({ start: newProp.start }, true);\n this.refreshChange();\n break;\n case 'depth':\n this.setProperties({ depth: newProp.depth }, true);\n this.refreshChange();\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateRangePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateRangePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"locale\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateRangePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"renderDayCell\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"startDate\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"endDate\", void 0);\n __decorate([\n Collection([{}], Presets)\n ], DateRangePicker.prototype, \"presets\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DateRangePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateRangePicker.prototype, \"depth\", void 0);\n __decorate([\n Property('')\n ], DateRangePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property('-')\n ], DateRangePicker.prototype, \"separator\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"minDays\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"maxDays\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DateRangePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], DateRangePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property('Never')\n ], DateRangePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DateRangePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], DateRangePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateRangePicker.prototype, \"blur\", void 0);\n DateRangePicker = __decorate([\n NotifyPropertyChanges\n ], DateRangePicker);\n return DateRangePicker;\n}(CalendarBase));\nexport { DateRangePicker };\n","import { gh, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nexport var PresetsDirective = vueDefineComponent({\n inject: { custom: { default: null } },\n render: function (createElement) {\n if (!isExecute) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('div', { class: 'e-directive' }, slots);\n }\n return;\n },\n updated: function () {\n if (!isExecute && this.custom) {\n this.custom();\n }\n },\n methods: {\n getTag: function () {\n return 'e-presets';\n }\n }\n});\nexport var PresetsPlugin = {\n name: 'e-presets',\n install: function (Vue) {\n Vue.component(PresetsPlugin.name, PresetsDirective);\n }\n};\n/**\n * 'e-presets' directive represent a presets of VueJS daterangepicker\n * It must be contained in a daterangepicker component(`ej-daterangepicker`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nexport var PresetDirective = vueDefineComponent({\n render: function () {\n return;\n },\n methods: {\n getTag: function () {\n return 'e-preset';\n }\n }\n});\nexport var PresetPlugin = {\n name: 'e-preset',\n install: function (Vue) {\n Vue.component(PresetPlugin.name, PresetDirective);\n }\n};\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { DateRangePicker } from '@syncfusion/ej2-calendars';\nimport { PresetsDirective, PresetDirective, PresetsPlugin, PresetPlugin } from './presets.directive';\nexport var properties = ['isLazyUpdate', 'plugins', 'allowEdit', 'calendarMode', 'cssClass', 'dayHeaderFormat', 'depth', 'enablePersistence', 'enableRtl', 'enabled', 'endDate', 'firstDayOfWeek', 'floatLabelType', 'format', 'fullScreenMode', 'htmlAttributes', 'keyConfigs', 'locale', 'max', 'maxDays', 'min', 'minDays', 'openOnFocus', 'placeholder', 'presets', 'readonly', 'separator', 'serverTimezoneOffset', 'showClearButton', 'start', 'startDate', 'strictMode', 'value', 'weekNumber', 'weekRule', 'width', 'zIndex', 'blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell', 'select'];\nexport var modelProps = ['startDate', 'endDate', 'value'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS DateRangePicker Component.\n * ```html\n * \n * ```\n */\nexport var DateRangePickerComponent = vueDefineComponent({\n name: 'DateRangePickerComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new DateRangePicker({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: true,\n hasInjectedModules: false,\n tagMapper: { \"e-presets\": \"e-preset\" },\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n focusOut: function () {\n return this.ej2Instances.focusOut();\n },\n getSelectedRange: function () {\n return this.ej2Instances.getSelectedRange();\n },\n hide: function (event) {\n return this.ej2Instances.hide(event);\n },\n requiredModules: function () {\n return this.ej2Instances.requiredModules();\n },\n show: function (element, event) {\n return this.ej2Instances.show(element, event);\n },\n }\n});\nexport var DateRangePickerPlugin = {\n name: 'ejs-daterangepicker',\n install: function (Vue) {\n Vue.component(DateRangePickerPlugin.name, DateRangePickerComponent);\n Vue.component(PresetPlugin.name, PresetDirective);\n Vue.component(PresetsPlugin.name, PresetsDirective);\n }\n};\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\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`](./printmode/).\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[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].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 if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\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('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, 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[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].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","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\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 @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.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 TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.getDateObject(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!target.classList.contains('e-dlg-overlay'))) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.timeModal.appendChild(dlgOverlay);\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = this;\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format == '') {\n format = format + formattext;\n }\n else {\n format = format + \"/\" + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\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 { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide, destroy as collisionDestroy } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n collisionDestroy();\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 height = this.element.clientHeight;\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, height);\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, height) {\n if (height === void 0) { height = 0; }\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' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - 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 var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\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' || parentStyle.position === 'sticky') && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - 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","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nexport var properties = ['isLazyUpdate', 'plugins', 'checked', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'htmlAttributes', 'indeterminate', 'label', 'labelPosition', 'locale', 'name', 'value', 'change', 'created'];\nexport var modelProps = ['checked', 'indeterminate'];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS CheckBox Component\n * ```html\n * \n * ```\n */\nexport var CheckBoxComponent = vueDefineComponent({\n name: 'CheckBoxComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n model: { event: 'modelchanged' },\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new CheckBox({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.ej2Instances._trigger = this.ej2Instances.trigger;\n this.ej2Instances.trigger = this.trigger;\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('input', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n trigger: function (eventName, eventProp, successHandler) {\n if (!isExecute) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('update:modelValue', eventProp[propKey]);\n }\n else {\n if (eventName === 'change' || (this.$props && !this.$props.isLazyUpdate)) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n if (!isExecute) {\n this.ej2Instances.vueInstance.$emit('update:' + propKey, eventProp[propKey]);\n this.ej2Instances.vueInstance.$emit('modelchanged', eventProp[propKey]);\n }\n else {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n }\n if ((this.ej2Instances && this.ej2Instances._trigger)) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n },\n custom: function () {\n this.updated();\n },\n click: function () {\n return this.ej2Instances.click();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n }\n});\nexport var CheckBoxPlugin = {\n name: 'ejs-checkbox',\n install: function (Vue) {\n Vue.component(CheckBoxPlugin.name, CheckBoxComponent);\n }\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\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","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","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","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[parseInt(i.toString(), 10)]];\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[parseInt(i.toString(), 10)];\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 *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\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 // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\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[parseInt(l.toString(), 10)]);\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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)];\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 var regExp = RegExp;\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[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\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 var regExp = RegExp;\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[parseInt(i.toString(), 10)] > 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 percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\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, option);\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 * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\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, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\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 fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\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 if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\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 * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\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 var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\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 /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n // eslint-disable-next-line\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\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[parseInt(i.toString(), 10)];\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 var regExp = RegExp;\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 var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\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 matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.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 regExp = RegExp;\n// eslint-disable-next-line\nvar parseRegex = new regExp('^([^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, id: id }];\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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].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[parseInt(index.toString(), 10)];\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 * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n // eslint-disable-next-line\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n // eslint-disable-next-line\n var curContext = eventsArr[\"\" + i].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\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';\nvar regExp = RegExp;\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 /* eslint-disable */\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 = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[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 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 val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\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 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 = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = 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[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\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 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 function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\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[parseInt(x.toString(), 10)] + 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 { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\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 * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\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 = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @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[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], 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[parseInt(j.toString(), 10)] && 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[parseInt(j.toString(), 10)], 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 var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.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 var regExp = RegExp;\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 if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\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[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = 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 ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\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[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], 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 var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], 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 (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\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 /**\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 // do nothing.\n });\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 * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\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[parseInt(i.toString(), 10)];\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 && 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 * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\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","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '25';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjU=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[\"\" + i] = decodeStr[\"\" + i].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\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[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\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 { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\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 // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\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 this.detachUnloadEvent();\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 * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('unload', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('unload', this.handleUnload);\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 this.attachUnloadEvent();\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 // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export']\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\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[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\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 // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\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 var regExp = RegExp;\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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 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 _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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 /* eslint-disable */\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 /* eslint-enable */\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 // eslint-disable-next-line\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[parseInt(i.toString(), 10)]))) {\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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchstart' : 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 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 // eslint-disable-next-line\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 if (isChangeTouch) {\n evt.preventDefault();\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 if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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 if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\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 // eslint-disable-next-line\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.enableAutoScroll) {\n this.setDragArea();\n }\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.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\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 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\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 if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\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 if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\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 if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\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 && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\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 /* tslint:disable no-any */\n // eslint-disable-next-line\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\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 // eslint-disable-next-line\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 * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n // eslint-disable-next-line\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 ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n /* eslint-disable */\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\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 /* eslint-enable */\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\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 var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\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 // eslint-disable-next-line\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\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.isSafari() ? 'touchend' : 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.isSafari() ? 'touchend' : 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 var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // 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 | Function} 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 if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n /* eslint-disable */\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\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 }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n /* eslint-enable */\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\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 if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\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 = 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 && str !== 'true' && str !== 'false') ? 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","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\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","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\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 fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\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","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption, resetColandRowSpanStickyPosition } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n var isFrozen = this.parent.isFrozenGrid();\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && (this_1.isSpan || (this_1.parent.isSpan && isEdit))) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if ((cellArgs.rowSpan > 1 || cellArgs.colSpan > 1)) {\n this_1.resetrowSpanvalue(this_1.parent.frozenRows > row.index ? this_1.parent.frozenRows :\n this_1.parent.currentViewData.length, cellArgs, row.index);\n if (cellArgs.column.visible === false) {\n cellArgs.colSpan = 1;\n }\n else {\n if (isFrozen) {\n var columns_2 = this_1.parent.getColumns();\n var right = this_1.parent.getFrozenRightColumnsCount();\n var left = this_1.parent.getFrozenLeftCount();\n var movableCount = columns_2.length - right;\n var cellIdx = cellArgs.column.index;\n if (left > cellIdx && left < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - left;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (movableCount <= cellIdx && columns_2.length < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - columns_2.length;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (cellArgs.column.freeze === 'Fixed') {\n var colSpan = 1;\n var index = cellIdx;\n for (var j = index + 1; j < index + cellArgs.colSpan; j++) {\n if (columns_2[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n colSpan++;\n }\n else {\n break;\n }\n }\n cellArgs.colSpan = colSpan;\n }\n else if (movableCount > cellIdx && movableCount < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - movableCount;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n }\n }\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.parent.isSpan = true;\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n if (isFrozen) {\n resetColandRowSpanStickyPosition(this_1.parent, cellArgs.column, td, cellArgs.colSpan);\n }\n }\n }\n if (isFrozen && this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var isRtl = this_1.parent.enableRtl;\n if (rowsObject[row.index - 1]) {\n var prevRowCells = rowsObject[row.index - 1].cells;\n var prevRowCell = prevRowCells[i - 1];\n var nextRowCell = prevRowCells[i + 1];\n var direction = prevRowCells[parseInt(i.toString(), 10)].column.freeze;\n if (prevRowCell && (prevRowCell.isRowSpanned || prevRowCell.rowSpanRange > 1) && prevRowCell.visible) {\n if (prevRowCell.column.freeze === 'Fixed' && direction === 'Fixed') {\n td.classList.add(isRtl ? 'e-removefreezerightborder' : 'e-removefreezeleftborder');\n }\n else if (!isRtl && i === 1 && direction === 'Left') {\n td.classList.add('e-addfreezefirstchildborder');\n }\n }\n if (nextRowCell && (nextRowCell.isRowSpanned || nextRowCell.rowSpanRange > 1) && nextRowCell.visible &&\n nextRowCell.column.freeze === 'Fixed' && direction === 'Fixed' && cellArgs.colSpan < 2) {\n td.classList.add(isRtl ? 'e-removefreezeleftborder' : 'e-removefreezerightborder');\n }\n }\n }\n if (cellArgs.rowSpan > 1 && this_1.parent.currentViewData.length - row.index === cellArgs.rowSpan) {\n td.classList.add('e-row-span-lastrowcell');\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.resetrowSpanvalue = function (rowCount, cellArgs, rowIndex) {\n if (rowCount > rowIndex && rowCount < rowIndex + cellArgs.rowSpan) {\n var rowSpan = (rowIndex + cellArgs.rowSpan) - rowCount;\n cellArgs.rowSpan = cellArgs.rowSpan - rowSpan;\n }\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n ;\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, formatUnit, isNullOrUndefined, createElement, addClass, append, prepend, remove, extend } 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.parent.uiStateValues.top = e.target.scrollTop;\n this.parent.uiStateValues.left = e.target.scrollLeft;\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 || !args.isPreventScrollUpdate && this.parent.currentView === 'TimelineMonth') {\n var top_1 = this.parent.currentView === 'TimelineMonth' ? this.parent.uiStateValues.top : args.scrollPosition.top;\n if (leftPanel) {\n leftPanel.scrollTop = top_1;\n }\n content.scrollTop = top_1;\n if (this.parent.uiStateValues.isInitial) {\n this.scrollToSelectedDate();\n this.parent.uiStateValues.isInitial = false;\n }\n else {\n content.scrollLeft = this.parent.currentView === 'TimelineMonth' ? this.parent.uiStateValues.left :\n args.scrollPosition.left;\n }\n }\n else {\n this.scrollToSelectedDate();\n }\n this.retainScrollPosition();\n };\n Month.prototype.scrollToSelectedDate = function () {\n var headerCell = this.element.querySelector('.' + cls.HEADER_CELLS_CLASS + '[data-date=\"'\n + this.parent.selectedDate.getTime().toString() + '\"]');\n var content = this.getContentAreaElement();\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 if (content.scrollLeft === 0 && this.parent.uiStateValues.isInitial) {\n this.parent.uiStateValues.left = 0;\n }\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.parent.activeViewOptions.interval > 1) ?\n this.getContentAreaElement().firstElementChild.offsetHeight :\n 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 var levels_1 = this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays);\n if (this.parent.activeViewOptions.group.byDate && this.parent.activeViewOptions.group.hideNonWorkingDays) {\n var index = levels_1.findIndex(function (x, index) {\n return index !== 0 && x.date.getDay() === levels_1[0].date.getDay();\n });\n levels_1 = index > -1 ? levels_1.slice(0, index) : levels_1;\n }\n colLevels = [levels_1];\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.currentTimezoneDate.getDay()) === col) {\n classList.push(cls.CURRENT_DAY_CLASS);\n }\n dateSlots.push({ date: renderDates[parseInt(col.toString(), 10)], 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 if (this.parent.currentView !== 'Month') {\n this.parent.activeViewOptions.group.hideNonWorkingDays = false;\n }\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling && !this.parent.uiStateValues.isGroupAdaptive) {\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 if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.resourceBase.renderedResources = extend([], this.parent.resourceBase.lastResourceLevel, null, true);\n }\n var tr = createElement('tr');\n if (this.parent.activeViewOptions.showWeekNumber) {\n tr.appendChild(this.renderWeekNumberContent());\n }\n var workTd = createElement('td');\n var levels = this.colLevels.slice(0);\n if (this.parent.virtualScrollModule) {\n this.resetColLevels();\n }\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 if (this.parent.virtualScrollModule) {\n this.colLevels = levels;\n this.parent.virtualScrollModule.renderVirtualTrack(wrap);\n }\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 if (this.parent.currentView === 'Month') {\n var thead = createElement('thead');\n thead.appendChild(createElement('tr'));\n prepend([thead], table);\n }\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[parseInt(i.toString(), 10)];\n var ntr = trEle.cloneNode();\n for (var j = 0; j < level.length; j++) {\n var td = level[parseInt(j.toString(), 10)];\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[parseInt(rowIndex.toString(), 10)]) {\n slotDatas[parseInt(rowIndex.toString(), 10)] = [];\n }\n slotDatas[parseInt(rowIndex.toString(), 10)].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 var level = this.colLevels.slice(0, 1)[0];\n var startIndex = this.renderDates.map(Number).indexOf(+level[0].date);\n for (var i = 0; i < (this.renderDates.length / count); i++) {\n var colDates = dates.splice(0, count);\n var k = startIndex;\n var _loop_1 = function (j) {\n var colDate = colDates[parseInt(k.toString(), 10)];\n k++;\n if (includeResource) {\n var lastRow = this_1.colLevels[(this_1.colLevels.length - 1)];\n var rowCount = lastRow.length / count;\n var resourcesTd = lastRow.slice(0, rowCount);\n if (this_1.parent.activeViewOptions.group.hideNonWorkingDays) {\n resourcesTd = lastRow.filter(function (x) { return x.date.getDay() === colDate.getDay(); });\n if (resourcesTd.length === 0) {\n j = j - 1;\n return out_j_1 = j, \"continue\";\n }\n }\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[parseInt(resIndex.toString(), 10)], clsList);\n }\n }\n else {\n prepareSlots(i, colDate, this_1.colLevels[this_1.colLevels.length - 1][0]);\n }\n out_j_1 = j;\n };\n var this_1 = this, out_j_1;\n for (var j = startIndex; j < (this.colLevels[0].length + startIndex) && j < colDates.length; j++) {\n _loop_1(j);\n j = out_j_1;\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 this.updateSelectedCellClass(data);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Month.prototype.updateSelectedCellClass = function (data) {\n return;\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.setAriaAttributes(tbl);\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');\n var td = createElement('td', { attrs: { '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[parseInt(row.toString(), 10)].length; col++) {\n var ntd = this.createContentTd(slotDatas[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)], 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 ntd.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 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","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","/**\n * vue-router v3.0.1\n * (c) 2017 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (process.env.NODE_ENV !== 'production' && !condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nvar View = {\n name: 'router-view',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n if (parent.$vnode && parent.$vnode.data.routerView) {\n depth++;\n }\n if (parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n return h(cache[name], data, children)\n }\n\n var matched = route.matched[depth];\n // render empty node if no matched route\n if (!matched) {\n cache[name] = null;\n return h()\n }\n\n var component = cache[name] = matched.components[name];\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // resolve props\n var propsToPass = data.props = resolveProps(route, matched.props && matched.props[name]);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n\n return h(component, data, children)\n }\n};\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\nfunction extend (to, from) {\n for (var key in from) {\n to[key] = from[key];\n }\n return to\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nvar decode = decodeURIComponent;\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n parsedQuery[key] = extraQuery[key];\n }\n return parsedQuery\n}\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0\n ? decode(parts.join('='))\n : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj ? Object.keys(obj).map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n }).filter(function (x) { return x.length > 0; }).join('&') : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery$$1 = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery$$1),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery$$1);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return (\n a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query)\n )\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params)\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key) {\n var aVal = a[key];\n var bVal = b[key];\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar Link = {\n name: 'router-link',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n exact: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(this.to, current, this.append);\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback = globalActiveClass == null\n ? 'router-link-active'\n : globalActiveClass;\n var exactActiveClassFallback = globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass = this.activeClass == null\n ? activeClassFallback\n : this.activeClass;\n var exactActiveClass = this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n var compareTarget = location.path\n ? createRoute(null, location, null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget);\n classes[activeClass] = this.exact\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location);\n } else {\n router.push(location);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) { on[e] = handler; });\n } else {\n on[this.event] = handler;\n }\n\n var data = {\n class: classes\n };\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var extend = _Vue.util.extend;\n var aData = a.data = extend({}, a.data);\n aData.on = on;\n var aAttrs = a.data.attrs = extend({}, a.data.attrs);\n aAttrs.href = href;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('router-view', View);\n Vue.component('router-link', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/\\//g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = 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\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n return filler(params || {}, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n }\n}\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(path || name)) + \" cannot be a \" +\n \"string id. Use an actual component instead.\"\n );\n }\n\n var pathToRegexpOptions = route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(\n path,\n parent,\n pathToRegexpOptions.strict\n );\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n instances: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props: route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (route.name && !route.redirect && route.children.some(function (child) { return /^\\/?$/.test(child.path); })) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias)\n ? route.alias\n : [route.alias];\n\n aliases.forEach(function (alias) {\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (path, pathToRegexpOptions) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(!keys[key.name], (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\"));\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (path, parent, strict) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next.name || next._normalized) {\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = assign({}, next);\n next._normalized = true;\n var params = assign(assign({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction assign (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n if (record) {\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n }\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];\n if (key) {\n params[key.name] = val;\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Fix for #1585 for Firefox\n window.history.replaceState({ key: getStateKey() }, '');\n window.addEventListener('popstate', function (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n });\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior(to, from, isPop ? position : null);\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll.then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n }).catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n var el = document.querySelector(shouldScroll.selector);\n if (el) {\n var offset = shouldScroll.offset && typeof shouldScroll.offset === 'object' ? shouldScroll.offset : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n window.scrollTo(position.x, position.y);\n }\n}\n\n/* */\n\nvar supportsPushState = inBrowser && (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && 'pushState' in window.history\n})();\n\n// use User Timing api (if present) for more accurate key precision\nvar Time = inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nvar _key = genKey();\n\nfunction genKey () {\n return Time.now().toFixed(3)\n}\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n _key = key;\n}\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n history.replaceState({ key: _key }, '', url);\n } else {\n _key = genKey();\n history.pushState({ key: _key }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) {\n var this$1 = this;\n\n var route = this.router.match(location, this.current);\n this.confirmTransition(route, function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) { cb(route); });\n }\n }, function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) { cb(err); });\n }\n });\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n var abort = function (err) {\n if (isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) { cb(err); });\n } else {\n warn(false, 'uncaught error during route navigation:');\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n route.matched.length === current.matched.length\n ) {\n this.ensureURL();\n return abort()\n }\n\n var ref = resolveQueue(this.current.matched, route.matched);\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n this.pending = route;\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort()\n }\n try {\n hook(route, current, function (to) {\n if (to === false || isError(to)) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' && (\n typeof to.path === 'string' ||\n typeof to.name === 'string'\n ))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort();\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n var postEnterCbs = [];\n var isValid = function () { return this$1.current === route; };\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort()\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n postEnterCbs.forEach(function (cb) { cb(); });\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n var prev = this.current;\n this.current = route;\n this.cb && this.cb(route);\n this.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated,\n cbs,\n isValid\n) {\n return extractGuards(activated, 'beforeRouteEnter', function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key, cbs, isValid)\n })\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key,\n cbs,\n isValid\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n next(cb);\n if (typeof cb === 'function') {\n cbs.push(function () {\n // #750\n // if a router-view is wrapped with an out-in transition,\n // the instance may not have been registered at this time.\n // we will need to poll for registration until current route\n // is no longer valid.\n poll(cb, match.instances, key, isValid);\n });\n }\n })\n }\n}\n\nfunction poll (\n cb, // somehow flow cannot infer this is a function\n instances,\n key,\n isValid\n) {\n if (instances[key]) {\n cb(instances[key]);\n } else if (isValid()) {\n setTimeout(function () {\n poll(cb, instances, key, isValid);\n }, 16);\n }\n}\n\n/* */\n\n\nvar HTML5History = (function (History$$1) {\n function HTML5History (router, base) {\n var this$1 = this;\n\n History$$1.call(this, router, base);\n\n var expectScroll = router.options.scrollBehavior;\n\n if (expectScroll) {\n setupScroll();\n }\n\n var initLocation = getLocation(this.base);\n window.addEventListener('popstate', function (e) {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === initLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (expectScroll) {\n handleScroll(router, route, current, true);\n }\n });\n });\n }\n\n if ( History$$1 ) HTML5History.__proto__ = History$$1;\n HTML5History.prototype = Object.create( History$$1 && History$$1.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\n\nvar HashHistory = (function (History$$1) {\n function HashHistory (router, base, fallback) {\n History$$1.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History$$1 ) HashHistory.__proto__ = History$$1;\n HashHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n setupScroll();\n }\n\n window.addEventListener(supportsPushState ? 'popstate' : 'hashchange', function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(\n cleanPath(base + '/#' + location)\n );\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n return index === -1 ? '' : href.slice(index + 1)\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\n\nvar AbstractHistory = (function (History$$1) {\n function AbstractHistory (router, base) {\n History$$1.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History$$1 ) AbstractHistory.__proto__ = History$$1;\n AbstractHistory.prototype = Object.create( History$$1 && History$$1.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(location, function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(route, function () {\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n });\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback = mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (\n raw,\n current,\n redirectedFrom\n) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' && assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // main app already initialized.\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History) {\n history.transitionTo(history.getCurrentLocation());\n } else if (history instanceof HashHistory) {\n var setupHashListener = function () {\n history.setupListeners();\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupHashListener,\n setupHashListener\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n this.history.push(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n this.history.replace(location, onComplete, onAbort);\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply([], route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n }))\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n var location = normalizeLocation(\n to,\n current || this.history.current,\n append,\n this\n );\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.0.1';\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } 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'))\n ? 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 if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, 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 var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\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 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 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 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 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 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 = SanitizeHtmlHelper.sanitize(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 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 (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\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","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\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","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\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","/**\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 /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\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","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\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 { 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, CLS_RTL]);\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","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","import { ComponentBase, gh, getProps, isExecute, vueDefineComponent } from '@syncfusion/ej2-vue-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nexport var properties = ['isLazyUpdate', 'plugins', 'content', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'iconCss', 'iconPosition', 'isPrimary', 'isToggle', 'locale', 'created'];\nexport var modelProps = [];\nexport var testProp = getProps({ props: properties });\nexport var props = testProp[0], watch = testProp[1], emitProbs = Object.keys(watch);\nemitProbs.push('modelchanged', 'update:modelValue');\nfor (var _i = 0, modelProps_1 = modelProps; _i < modelProps_1.length; _i++) {\n var props_1 = modelProps_1[_i];\n emitProbs.push('update:' + props_1);\n}\n/**\n * Represents the Essential JS 2 VueJS Button Component\n * ```html\n * Button\n * ```\n */\nexport var ButtonComponent = vueDefineComponent({\n name: 'ButtonComponent',\n mixins: [ComponentBase],\n props: props,\n watch: watch,\n emits: emitProbs,\n provide: function () { return { custom: this.custom }; },\n data: function () {\n return {\n ej2Instances: new Button({}),\n propKeys: properties,\n models: modelProps,\n hasChildDirective: false,\n hasInjectedModules: false,\n tagMapper: {},\n tagNameMapper: {},\n isVue3: !isExecute,\n templateCollection: {},\n };\n },\n created: function () {\n this.bindProperties();\n this.ej2Instances._setProperties = this.ej2Instances.setProperties;\n this.ej2Instances.setProperties = this.setProperties;\n this.ej2Instances.clearTemplate = this.clearTemplate;\n this.updated = this.updated;\n },\n render: function (createElement) {\n var h = !isExecute ? gh : createElement;\n var slots = null;\n if (!isNullOrUndefined(this.$slots.default)) {\n slots = !isExecute ? this.$slots.default() : this.$slots.default;\n }\n return h('button', slots);\n },\n methods: {\n clearTemplate: function (templateNames) {\n if (!templateNames) {\n templateNames = Object.keys(this.templateCollection || {});\n }\n if (templateNames.length && this.templateCollection) {\n for (var _i = 0, templateNames_1 = templateNames; _i < templateNames_1.length; _i++) {\n var tempName = templateNames_1[_i];\n var elementCollection = this.templateCollection[tempName];\n if (elementCollection && elementCollection.length) {\n for (var _a = 0, elementCollection_1 = elementCollection; _a < elementCollection_1.length; _a++) {\n var ele = elementCollection_1[_a];\n var destroy = getValue('__vue__.$destroy', ele);\n if (destroy) {\n ele.__vue__.$destroy();\n }\n if (ele.innerHTML) {\n ele.innerHTML = '';\n }\n }\n delete this.templateCollection[tempName];\n }\n }\n }\n },\n setProperties: function (prop, muteOnChange) {\n var _this = this;\n if (this.isVue3) {\n this.models = !this.models ? this.ej2Instances.referModels : this.models;\n }\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n if (_this.isVue3) {\n _this.ej2Instances.vueInstance.$emit('update:' + key, prop[key]);\n }\n else {\n _this.$emit('update:' + key, prop[key]);\n _this.$emit('modelchanged', prop[key]);\n }\n }\n });\n });\n }\n },\n custom: function () {\n this.updated();\n },\n click: function () {\n return this.ej2Instances.click();\n },\n focusIn: function () {\n return this.ej2Instances.focusIn();\n },\n }\n});\nexport var ButtonPlugin = {\n name: 'ejs-button',\n install: function (Vue) {\n Vue.component(ButtonPlugin.name, ButtonComponent);\n }\n};\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n ejInst.element = wrapper;\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","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","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, addFixedColumnBorder } 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 var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\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.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 this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\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 if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ||\n ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow) ? '' :\n 'e-hide', attrs: { role: 'rowgroup' } });\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', { attrs: { role: 'row' }, className: (this.parent.enableVirtualization ||\n this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow ? 'e-hide' : '' });\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[parseInt(i.toString(), 10)].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 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 columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\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[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\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 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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)], 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[parseInt(i.toString(), 10)], 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 isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\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 if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\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[parseInt(i.toString(), 10)], 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[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\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[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\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 for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (gObj.editSettings.showAddNewRow && gObj.element.querySelector('.e-addedrow')) {\n setStyleAttribute(gObj.element.querySelector('.e-addedrow').querySelector('colgroup').childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.isAddNewRow = true;\n }\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 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 = undefined;\n if (table) {\n remove(table);\n if (this.parent.editSettings.showAddNewRow && !this.parent.isAddNewRow && table.querySelector('.e-addedrow') &&\n (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n (table.querySelector('.e-addedrow')).classList.add('e-addrow-removed');\n this.parent.isAddNewRow = true;\n }\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 this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\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 this.parent.notify(events.headerRefreshed, { rows: this.rows });\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 var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\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[parseInt(i.toString(), 10)], 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 this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\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 cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } 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: { tabindex: '-1', role: 'columnheader' } });\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', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\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', attrs: { 'aria-hidden': 'true' } });\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', attrs: { 'aria-hidden': 'true' } });\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 var elementDesc = '';\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()] = this.parent.sanitize(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 if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\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 elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\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[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].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 (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\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 var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\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], undefined, undefined, this.parent['root']);\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 && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\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', attrs: { 'aria-hidden': 'true' } }));\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[parseInt(j.toString(), 10)].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, frozenDirection, isChildColumn, applyStickyLeftRightPosition } 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 tabindex: '-1', role: 'columnheader'\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, this.parent.sanitize(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 if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\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';\nimport { CellType } from '../base/enum';\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.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', 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 this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\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 for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\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 && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\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';\nimport { CellType } from '../base/enum';\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.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 if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache &&\n !this.parent.groupSettings.enableLazyLoading) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\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', 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('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\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';\nimport { applyStickyLeftRightPosition } from '../base/util';\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: { tabindex: '-1', role: 'gridcell' }\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 attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\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';\nimport { applyStickyLeftRightPosition } from '../base/util';\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 if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\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 if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true \n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\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) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (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.enableVirtualization ? _this.parent.lazyLoadRender :\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[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].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[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + 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 var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\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 if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\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 gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\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, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var className = gObj.editSettings.showAddNewRow && gObj.editSettings.newRowPosition === 'Bottom' ?\n 'e-emptyrow e-show-added-row' : 'e-emptyrow';\n var tr = this.parent.createElement('tr', { className: className, attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\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 if (gObj.editSettings.showAddNewRow) {\n gObj.addRecord();\n this.parent.notify(events.showAddNewRowFocus, {});\n }\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[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\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 !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\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 if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\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 (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\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 if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\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 gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\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 = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\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 if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\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 var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\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[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].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[parseInt(index.toString(), 10)];\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[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].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 /**\n * @param {string} key - Defines the key\n * @param {string} operator - Defines the operator\n * @param {string | number | Date} value - Defines the value\n * @returns {Predicate} - Returns the predicate\n * @hidden */\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 /**\n * @param {Object[]} current - Defines the current object\n * @param {Object[]} untouched - Defines the object needs to merge\n * @returns {Object[]} - Returns the updated group information\n * @hidden */\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 updatedGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n if (!isNullOrUndefined(updatedGroup)) {\n elements[parseInt(i.toString(), 10)].count = updatedGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var updatedGroupItem = updatedGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, updatedGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var column = row.columns[parseInt(k.toString(), 10)];\n var types = column.type instanceof Array ? (column.type) : [(column.type)];\n for (var l = 0; l < types.length; l++) {\n var key = column.field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? updatedGroupItem.records : updatedGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? updatedGroupItem : updatedGroup;\n var temp = column\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\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 { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } 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: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.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 if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\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[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : '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[parseInt(i.toString(), 10)][\"\" + 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 directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\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[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\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 filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\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.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\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, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\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, column) {\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, column),\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 cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + '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 id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : '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[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].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 if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\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[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].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 else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\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 else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_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 action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\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: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.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: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : '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.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\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 this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\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[parseInt(i.toString(), 10)].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, Browser.isDevice ? 'touchend' : '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 } 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","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[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + 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[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].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[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].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')) {\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 = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\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 && this.parent.isEdit) {\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[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length && editTableCol[parseInt(index.toString(), 10)]) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\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 movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\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', 'e-temp-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 (!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.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\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 var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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","import { 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, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses, getCellFromRow } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } 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.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\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 this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = 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.destroyAutoFillElements();\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.editSettings.showAddNewRow) && !this.parent.isPersistSelection;\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[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\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 rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\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 if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = 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 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.isCheckboxReset = true;\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 if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, 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, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\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, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\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 selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, 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 this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, 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 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 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_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\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 this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = 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 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 }\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 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.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\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 ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === 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, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\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, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\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 || preventFocus) {\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 this.isHdrSelectAllClicked = 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 rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_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[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\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[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\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, null, 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[parseInt(i.toString(), 10)], 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[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\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, null, undefined, null);\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 }, null);\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 || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\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, 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 }\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 /**\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 args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\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.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.parent.isSpan ? getCellFromRow(this.parent, startIndex.rowIndex, startIndex.cellIndex) :\n gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\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 selectedCell = _this.parent.isSpan ? getCellFromRow(gObj, i, j) : gObj.getCellFromIndex(i, j);\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 = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\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[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\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 if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\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[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\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[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\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 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[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 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 && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\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[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].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 this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\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[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].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 cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\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.dataRowIndex), 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 if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (mouseEvent, position, scrollElement) {\n var _this = this;\n var clientRect = scrollElement.getBoundingClientRect();\n if (clientRect.left >= position.x - 20 -\n (this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0)) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'right' : 'left', mouseEvent); }, 200);\n }\n else if (clientRect.left + scrollElement.clientWidth - 20 -\n (!this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'left' : 'right', mouseEvent); }, 200);\n }\n if (clientRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'up', mouseEvent); }, 200);\n }\n else if (clientRect.top + scrollElement.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElement.firstElementChild.scrollWidth > scrollElement.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'down', mouseEvent); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElement, direction, mouseEvent) {\n var rowIndex = -1;\n var columnIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index')) : this.prevECIdxs.rowIndex;\n columnIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex')) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (mouseEvent && closest(mouseEvent.target, '.e-headercontent'))\n return;\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n rowIndex -= 1;\n if (this.parent.frozenRows)\n rowIndex += this.parent.frozenRows + 1;\n rowIndex < 1 ? scrollElement.scrollTop = 0 : scrollElement.scrollTop -= this.parent.getRowByIndex(rowIndex).offsetHeight;\n break;\n case 'down':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'));\n }\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(rowIndex, this.selectedRowCellIndexes[0].cellIndexes[0]);\n }\n scrollElement.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElement.scrollTop = scrollElement.scrollHeight;\n }\n break;\n case 'left':\n if (columnIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 &&\n ((!this.parent.enableRtl && this.startAFCell.getBoundingClientRect().left > 0) ||\n (this.parent.enableRtl && this.startAFCell.getBoundingClientRect().left < this.parent.element.offsetWidth))))) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var nextElement_1 = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n columnIndex = nextElement_1 ? parseInt(nextElement_1.getAttribute('data-colindex')) : -1;\n if (this.parent.enableRtl && nextElement_1) {\n columnIndex < 1 ? scrollElement.scrollLeft = scrollElement.scrollWidth :\n scrollElement.scrollLeft += nextElement_1.offsetWidth;\n }\n else if (nextElement_1) {\n columnIndex < 1 ? scrollElement.scrollLeft = 0 : scrollElement.scrollLeft -= nextElement_1.offsetWidth;\n }\n }\n break;\n case 'right':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'));\n }\n var currentElement = this.parent.getCellFromIndex(rowIndex, columnIndex);\n var nextElement = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n if (nextElement && this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(this.selectedRowCellIndexes[0].rowIndex, parseInt(nextElement.getAttribute('data-colindex')));\n }\n columnIndex = nextElement ? parseInt(nextElement.getAttribute('data-colindex')) : -1;\n if (this.parent.enableRtl && nextElement) {\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft -= currentElement.offsetWidth :\n scrollElement.scrollLeft = -scrollElement.scrollWidth;\n }\n else if (nextElement) {\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft += currentElement.offsetWidth :\n scrollElement.scrollLeft = scrollElement.scrollWidth;\n }\n if (this.isAutoFillSel && (columnIndex === this.parent.columns.length - 1 || columnIndex === -1) &&\n this.startAFCell && this.endAFCell) {\n this.positionAFBorders();\n scrollElement.scrollLeft = this.parent.enableRtl ? -scrollElement.scrollWidth : scrollElement.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && rowIndex < this.parent.getRows().length && columnIndex > -1) {\n var mouseEvent_1 = { target: this.parent.getCellFromIndex(rowIndex, columnIndex) };\n if (this.isAutoFillSel && mouseEvent_1.target.classList.contains('e-cellselectionbackground') &&\n ((direction === 'down' && parseInt(mouseEvent_1.target.getAttribute('index')) === this.parent.getRows().length - 1) ||\n (direction === 'right' && parseInt(mouseEvent_1.target.getAttribute('data-colindex')) === this.parent.columns.length - 1))) {\n return;\n }\n this.endAFCell = mouseEvent_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(mouseEvent_1, rowIndex, columnIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElement, direction, columnIndex, rowIndex) {\n var nextElement = this.parent.getCellFromIndex(rowIndex, direction === 'left' ? columnIndex - 1 : columnIndex + 1);\n if (nextElement && nextElement.classList.contains('e-hide')) {\n var siblingEles = nextElement.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextElement.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextElement = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextElement;\n }\n else {\n scrollElement.scrollLeft = 0;\n return null;\n }\n }\n return nextElement;\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.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl && parseInt(width[3], 10) === 2)) ||\n (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl && parseInt(width[1], 10) === 2)) ||\n (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\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 if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\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 && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\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 if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 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 + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 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.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), 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.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), 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.getContentTable().parentElement.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.getContentTable().parentElement.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.getHeaderTable().parentElement.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.getHeaderTable().parentElement.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, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\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 - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\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 var borderAFRightValue = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1;\n borderAFRightValue > 0 ? this.bdrAFRight.style.right = borderAFRightValue + 'px' : this.bdrAFRight.style.right = '0px';\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 if (this.parent.height !== 'auto' && getScrollBarWidth()) {\n this.bdrAFTop.style.left = getScrollBarWidth() + 'px';\n this.bdrAFTop.style.width = (parseInt(this.bdrAFTop.style.width, 10) - getScrollBarWidth()) + 'px';\n }\n else {\n this.bdrAFTop.style.left = '0px';\n }\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.destroyAutoFillElements = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.remove();\n this.bdrAFRight.remove();\n this.bdrAFBottom.remove();\n this.bdrAFTop.remove();\n this.bdrAFLeft = this.bdrAFRight = this.bdrAFBottom = this.bdrAFTop = null;\n }\n if (this.autofill) {\n this.autofill.remove();\n this.autofill = null;\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()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 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.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 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[parseInt(c.toString(), 10)]);\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[parseInt(c.toString(), 10)]);\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.dataRowIndex), 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[parseInt(c.toString(), 10)]);\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.dataRowIndex), 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[parseInt(c.toString(), 10)]);\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 this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\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 var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 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 this.preventFocus = true;\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 if (!isNullOrUndefined(this.endAFCell) && !isNullOrUndefined(this.startAFCell)) {\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n this.isAutoFillSel = false;\n this.preventFocus = 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.dataColIndex), 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 (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.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 if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\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.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 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.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 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 if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\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.destroyAutoFillElements, handler: this.destroyAutoFillElements },\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 EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\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 this.parent.off(events.destroyAutoFillElements, this.destroyAutoFillElements);\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 else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\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 else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\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 var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\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)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\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 else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\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 () {\n if (!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 var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\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 else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && 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[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].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 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 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[parseInt(j.toString(), 10)], 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.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && 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[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\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 var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\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 }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\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 ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\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 this.updateSelectedRowIndexes();\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 if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top' && !this.parent.editSettings.showAddNewRow) {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 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 ? this.getPkValue(this.primaryKey, rowObj.data) : 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.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n 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 (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\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 = false;\n var isFiltered = false;\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() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\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 var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.isSelectAllRowCount(checkedLen)\n || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\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 && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\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 if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\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 var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\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.isAutoFillSel && !e.ctrlKey && !e.shiftKey) {\n this.startAFCell = this.endAFCell = null;\n }\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.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\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 (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\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 (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\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.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && !this.parent.editSettings.showAddNewRow\n && 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.dataColIndex), 10));\n }\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.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\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 > 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 if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\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.dataRowIndex));\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 = ((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 (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var hdrLength = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n e.keyArgs.action === 'upArrow') {\n hdrLength++;\n }\n rowIndex -= hdrLength;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - hdrLength : 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.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-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 if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) && e.keyArgs.action === 'downArrow') {\n rowIndex--;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\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 if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\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 if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\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.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\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.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\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 if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\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[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\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 && this.selectedRecords.length) {\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()[parseInt(index.toString(), 10)])) {\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()[parseInt(startIndex.toString(), 10)])) {\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[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\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()[parseInt(startIndex.toString(), 10)])) {\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 column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\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[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].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[parseInt(i.toString(), 10)]).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 seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].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()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else {\n if (this.parent.isSpan && this.parent.isFrozenGrid()) {\n var cells = rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('aria-colindex') === selectedCol.getAttribute('aria-colindex')) {\n addRemoveActiveClasses([cells[parseInt(i.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\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 addClass([spanEle.parentElement], ['e-checkbox-disabled']);\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 && !(e.requestType === 'save' && e['action'] === 'add');\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 if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is decimal or integer and parseFloat to remove trailing zeros\n /* eslint-disable-next-line */\n gObj.searchSettings.key = /^\\d+(\\.\\d+)?$/.test(searchString) ? parseFloat(searchString).toString() : searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } 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.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].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 ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\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 this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\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 if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\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 var addedRow = _this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && addedRow) {\n remove(addedRow);\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.parent.isAddNewRow = true;\n }\n _this.parent.addNewRowFocus = true;\n _this.parent.isEdit = false;\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 if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\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 var startAdd = !_this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && startAdd) {\n _this.parent.isEdit = false;\n _this.parent.addRecord();\n if (!(_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\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 var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\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.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && 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()\n .querySelector(literals.tbody + ':not(.e-masked-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 else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\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 content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '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`](./#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 };\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 this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\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 if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth - target.scrollLeft) +\n (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && (!_this.parent.isEdit\n || (_this.parent.editSettings.showAddNewRow && !_this.parent.element.querySelector('.e-editedrow')))) {\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 (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\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 = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _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 && _this.parent.enableColumnVirtualization) {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\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 mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\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 (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\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 if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n removeClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Bottom') {\n addClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n addClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\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 var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\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 if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\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 if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\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","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, 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, defaultCurrencyCode } 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, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\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 { Logger } from '../actions/logger';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\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 __decorate([\n Property()\n ], Predicate.prototype, \"condition\", 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('OnEnter')\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, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", 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 __decorate([\n Property(false)\n ], EditSettings.prototype, \"showAddNewRow\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\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_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n _this_1.autoFitColumnsResize = false;\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.isSpan = false;\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.isAddNewRow = false;\n /** @hidden */\n _this_1.addNewRowFocus = true;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n _this_1.enableLogger = false;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\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[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _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 name: 'Filter'\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator],\n name: 'ExcelExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this],\n name: 'PdfExport'\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator],\n name: 'Sort'\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings],\n name: 'Page'\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator],\n name: 'Selection'\n });\n }\n if (this.resizeCheck()) {\n modules.push({\n member: 'resize',\n args: [this],\n name: 'Resize'\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this],\n name: 'Reorder'\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this],\n name: 'RowDD'\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator],\n name: 'Group'\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator], name: 'Aggregate' });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator],\n name: 'DetailRow'\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator],\n name: 'Toolbar'\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator],\n name: 'VirtualScroll'\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator], name: 'Freeze' });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator],\n name: 'CommandColumn'\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 name: 'Edit'\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 name: 'InfiniteScroll'\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator],\n name: 'LazyLoadGroup'\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator],\n name: 'ContextMenu'\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator],\n name: 'ColumnMenu'\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator],\n name: 'ColumnChooser'\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator], name: 'ForeignKey' });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this], name: 'Logger' });\n }\n };\n Grid.prototype.resizeCheck = function () {\n var autoFitColumns = this.getColumns().filter(function (c) { return c.autoFit === true; }).length ? true : false;\n if (!isNullOrUndefined(this.columnModel) && this.columnModel.length && !(this.columnModel[0] instanceof Column)) {\n this.columnModel = [];\n }\n var columnMenu = this.showColumnMenu && (!this.columnMenuItems || this.columnMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length) ? true : false;\n var contextMenu = this.contextMenuItems && this.contextMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length ? true : false;\n return this.allowResizing || this.autoFitColumnsResize || autoFitColumns || columnMenu || contextMenu;\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', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\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 ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\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 GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\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 AddCurrentSelection: 'Add current selection to filter',\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 ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit 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 FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\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, cssClass: this.cssClass ? this.cssClass : null }, 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 !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\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.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\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[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\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[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\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[parseInt(i.toString(), 10)].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()[parseInt(columnIndex.toString(), 10)];\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 > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || 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 if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].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) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\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[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = 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 };\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 this.notify(events.destroyAutoFillElements, {});\n }\n };\n Grid.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 /**\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 var childGridParent = null;\n var parentInstance = null;\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 if (this.height === '100%') {\n this.scrollModule.refresh();\n }\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 if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\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 if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\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' || (this.editSettings.showAddNewRow && this.filterSettings.type === 'FilterBar')) {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\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 'cssClass':\n this.setCSSClass(oldProp.cssClass);\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 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\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 if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\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 if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n if (this.isFrozenGrid()) {\n this.log('frozen_rows_columns');\n }\n freezeRefresh = true;\n requireGridRefresh = true;\n this.addNewRowFocus = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\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 && !this.enableAdaptiveUI) {\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 (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\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[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\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 if ((!isNullOrUndefined(this.dataSource) && this.dataSource.result\n && this.dataSource.count && this.groupSettings.columns.length)) {\n var gResult = this.dataSource.result;\n var names = this.groupSettings.columns;\n if (names.length && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)]);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count\n };\n }\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_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.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 {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 for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].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[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\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.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 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[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\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_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.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 var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\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[parseInt(i.toString(), 10)];\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 *\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 *\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 *\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 *\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 *\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 *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(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 */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(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 */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\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_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.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[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, 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 */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\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.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.editSettings.showAddNewRow) {\n if (rows[0].classList.contains('e-addedrow')) {\n rows.shift();\n }\n else if (rows[rows.length - 1].classList.contains('e-addedrow')) {\n rows.pop();\n }\n }\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n if (this.editSettings.showAddNewRow && freezeRows[0].classList.contains('e-addedrow')) {\n freezeRows.shift();\n }\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[parseInt(i.toString(), 10)]);\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[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\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 */\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\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\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\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\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\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\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 *\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 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 = 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 if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = 0;\n if (this.isRowDragable()) {\n left++;\n }\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 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()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\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 if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\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 var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) { return col.field === cell.column.field; });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].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 };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\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 *\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 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 var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\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 Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\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 *\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 *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\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 */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\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 */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\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 */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\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 */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(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) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\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 if (rows) {\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 }\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 */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\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 *\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 *\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 *\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[parseInt(i.toString(), 10)].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 *\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 *\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 *\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()[parseInt(i.toString(), 10)];\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 empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\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[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].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_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].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 *\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 *\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 || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n }\n if (col.width === 'auto') {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\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.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\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 else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\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.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\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[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].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 *\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 *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\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 *\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 * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\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: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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_1 = 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.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.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 || (this.columns.length === this.groupSettings.columns.length)) {\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 if (this.autoFit) {\n this.preventAdjustColumns();\n }\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.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\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 *\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 *\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 *\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 *\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[parseInt(i.toString(), 10)].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[parseInt(j.toString(), 10)];\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 * > * By specifying the start row index and end row index, providing the range within which the maximum width for that column should be considered when applying `autoFitColumns`.\n * > * The width of header rows is always calculated. If the width of a header row exceeds the specified range, its width will be allocated to the specific content rows.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @param {number} startRowIndex - Specifies the start index of the content row.\n * @param {number} endRowIndex - Specifies the end index of content row.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames, startRowIndex, endRowIndex) {\n var injectedModules = this.getInjectedModules();\n var resize = injectedModules.find(function (item) {\n if (typeof item === 'function' && !isNullOrUndefined(item.prototype)) {\n return item.prototype.getModuleName() === 'resize';\n }\n else {\n return item.name === 'Resize';\n }\n });\n if (!this.resizeModule && resize) {\n this.autoFitColumnsResize = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames, startRowIndex, endRowIndex);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\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_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\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 var _a;\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 if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n if (this.editSettings.showAddNewRow && (this.enableVirtualization || this.enableInfiniteScrolling)) {\n this.editSettings.newRowPosition = 'Top';\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, this.serviceLocator);\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({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : '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 && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n // 0.55 - defines the width of adaptive content cell, 16 - defines the scrollbar 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 (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\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[parseInt(i.toString(), 10)].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', { attrs: { role: 'row' } });\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, 'mouseover', 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, 'mouseover', 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.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, 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.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\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 *\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')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\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 !this.editSettings.showAddNewRow);\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 && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\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-multi-select-list-wrapper')) && parentsUntil(relatedTarget, 'e-input-group'))\n && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(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 if (this.editSettings.showAddNewRow) {\n this.editModule.isShowAddedRowValidate = false;\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 && dataObj.pageSettings) {\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 this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\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 isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(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_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.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 if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\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 && (!this.editSettings.showAddNewRow || (this.editSettings.showAddNewRow &&\n this.element.querySelector(literals.editedRow)))) && e.action !== 'escape' && e.action !== 'enter'\n && e.action !== 'shiftEnter' && 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 Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\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.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).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 if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\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 *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\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 *\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 *\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_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.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 *\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 *\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 * @returns {void}\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 var injectedModules = this.getInjectedModules();\n var logger = injectedModules.find(function (item) { return item.name === 'Logger'; });\n if (!logger) {\n Grid_1.Inject(Logger);\n this.enableLogger = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\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 if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\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 *\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[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].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, isForeignKey) {\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 ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\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[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\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) || this.searchSettings.key.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|macintosh/.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 * @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 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 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 * Calculates the page size by parent element height\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')[parseInt(i.toString(), 10)].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 *\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 *\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 *\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 *\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[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\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 * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\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_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.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[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = 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_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = 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_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(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 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.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\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 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[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\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 */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.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 * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(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.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", 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, \"enableHtmlSanitizer\", 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 Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", 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 Property(false)\n ], Grid.prototype, \"autoFit\", 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, \"emptyRecordTemplate\", 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, \"exportGrids\", 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('')\n ], Grid.prototype, \"cssClass\", 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('')\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, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","/**\n *\n * `Logger` class\n */\nimport { isNullOrUndefined, L10n, isUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil, DataManager } from '@syncfusion/ej2-data';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nvar WARNING = '[EJ2Grid.Warning]';\nvar ERROR = '[EJ2Grid.Error]';\nvar INFO = '[EJ2Grid.Info]';\nvar Logger = /** @class */ (function () {\n function Logger(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n // eslint-disable-next-line no-console\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n };\n Logger.prototype.patchadaptor = function () {\n var adaptor = this.parent.getDataModule().dataManager.adaptor;\n var original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = function (dm, request, settings) {\n original.call(adaptor, dm, request, settings);\n };\n }\n };\n Logger.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n };\n return Logger;\n}());\nexport { Logger };\nexport var detailLists = {\n // eslint-disable-next-line camelcase\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check: function (args, parent) {\n var injected = parent.getInjectedModules().map(function (m) { return m.prototype.getModuleName(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var modules = parent.requiredModules().map(function (m) { return m.member; })\n .filter(function (name) { return injected.indexOf(name) === -1; });\n return { success: modules.filter(function (m) { return m !== 'resize'; }).length > 0, options: modules };\n },\n generateMessage: function (args, parent, modules) {\n modules = modules.filter(function (m) { return m !== 'resize'; })\n .reduce(function (prev, cur) { return prev + (\"* \" + cur + \"\\n\"); }, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n (\"\" + modules) +\n (\"Refer to \" + BASE_DOC_URL + \"/module.html for documentation on importing feature modules.\");\n }\n },\n // eslint-disable-next-line camelcase\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check: function () {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage: function () {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n (\"Refer to \" + DOC_URL + \"/base/browser.html?#required-polyfills for more information.\");\n }\n },\n // eslint-disable-next-line camelcase\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.enableColumnVirtualization\n ? parent.getPrimaryKeyFieldNames().length === 0\n : parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function (args, parent) {\n var message = '';\n var formatError = formatErrorHandler(args, parent);\n var ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n // eslint-disable-next-line camelcase\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check: function (args, parent) {\n var lObj = DataUtil.getObject(\"locale.\" + parent.locale + \".grid\", L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage: function (args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + (\"Locale configuration for '\" + parent.locale + \"' is not provided.\\n\") +\n (\"Refer to \" + BASE_DOC_URL + \"/globalization-and-localization.html?#localization \\n for documentation on setting locale configuration.\");\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check: function (args, parent) {\n var name = args;\n var opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: parent.allowGrouping || !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid)\n || !isUndefined(parent.rowTemplate) || parent.enableVirtualization,\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid) || parent.frozenRows !== 0\n || parent.frozenColumns !== 0,\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage: function (args, parent, options) {\n var name = options.name;\n var opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Virtualization\\n' +\n '* Row Template\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n' +\n '* Grouping';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Freeze rows and columns.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + (\": \" + name.toUpperCase() + \" LIMITATIONS\\n\") + opt;\n }\n },\n // eslint-disable-next-line camelcase\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check: function (args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) || parent.dataSource.length) };\n },\n generateMessage: function () {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns.html for documentation on configuring the grid data and columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check: function (args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage: function () {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/virtual.html for documentation on configuring the virtual grid.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check: function (args) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage: function () {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/edit.html for documentation on configuring editing with remote data.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage: function () {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n (\"Refer to \" + BASE_DOC_URL + \"/sorting/#custom-sort-comparer for documentation on using the sort comparer.\");\n }\n },\n // eslint-disable-next-line camelcase\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check: function (args) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage: function () {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n // eslint-disable-next-line camelcase\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = \"reordering action is disabled for the \" + args.column.headerText + \" column\";\n }\n else {\n fn = \"reordering action is disabled for the \" + (args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText) + \" column\";\n }\n break;\n case 'group':\n fn = \"grouping action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'filter':\n fn = \"filtering action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'sort':\n fn = \"sorting action is disabled for the \" + args.columnName + \" column.\";\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": ACTION DISABLED \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG INPROGRESS \\n Grid \" + options.args + \"ing is in progress\");\n }\n },\n // eslint-disable-next-line camelcase\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG COMPLETED \\n Grid \" + options.args + \"ing is complete\");\n }\n },\n // eslint-disable-next-line camelcase\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function () {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns/#foreign-key-column for documentation on configuring foreign key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'group':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": INITIAL ACTION FAILURE \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check: function (args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns\n || (parent.currentViewData.length && parent.frozenRows >= parent.currentViewData.length) };\n },\n generateMessage: function (args, parent) {\n return ERROR + (\": OUT OF RANGE ERROR-\\n \" + (parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : '')) +\n ((parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : '') + \" invalid\");\n }\n },\n // eslint-disable-next-line camelcase\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check: function (args) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": COLUMN TYPE MISSING-\\n \" + options + \" column type was invalid or not defined.\") +\n (\"Please go through below help link: \" + DOC_URL + \"/grid/columns/#column-type\");\n }\n },\n // eslint-disable-next-line camelcase\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check: function (args) {\n return { success: args.dataState.dataSource && !(args.dataState.dataSource instanceof DataManager ||\n 'result' in args.dataState.dataSource || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage: function () {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nvar formatErrorHandler = function (args) {\n var error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n (\"Number format: \" + DOC_URL + \"/base/intl.html?#supported-format-string.\\n\") +\n (\"Date format: \" + DOC_URL + \"/base/intl.html?#manipulating-datetime.\\n\") +\n (\"Message: \" + error);\n};\nvar ajaxErrorHandler = function (args) {\n var error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n var jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n (\"Url: \" + error.responseURL + \"\\n\") +\n (\"Status: \" + error.status + \" - \" + error.statusText + \"\\n\") +\n (\"\" + (jsonResult !== '' ? 'Message: ' + jsonResult : ''));\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, setValue } 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', 'id'];\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 _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan = null;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\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 ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\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.getLabel = function () {\n if (this.element) {\n return this.element.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', true);\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\n });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\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.replace(/\\s+/g, ' ').trim().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.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\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.replace(/\\s+/g, ' ').trim().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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\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 EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, 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.validCheck ? this.element.checked : !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 var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\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 if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\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(true)\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","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","/*!\n * Vue.js v2.6.11\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.