{"version":3,"sources":["src/app/core/helpers/guards/auth.guard.ts","node_modules/@progress/kendo-angular-treeview/fesm2020/progress-kendo-angular-treeview.mjs","node_modules/@progress/kendo-angular-dropdowns/fesm2020/progress-kendo-angular-dropdowns.mjs","node_modules/@progress/kendo-data-query/dist/es2015/utils.js","node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-descriptor.interface.js","node_modules/@progress/kendo-data-query/dist/es2015/funcs.js","node_modules/@progress/kendo-data-query/dist/es2015/filter-serialization.common.js","node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter.operators.js","node_modules/@progress/kendo-data-query/dist/es2015/odata.operators.js","node_modules/@progress/kendo-data-query/dist/es2015/accessor.js","node_modules/@progress/kendo-data-query/dist/es2015/mvc/operators.js","node_modules/@progress/kendo-data-query/dist/es2015/mvc/deserialization.js","node_modules/@progress/kendo-data-query/dist/es2015/sorting/sort-array.operator.js","node_modules/@progress/kendo-data-query/dist/es2015/transducers.js","node_modules/@progress/kendo-data-query/dist/es2015/grouping/aggregate.operators.js","node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-no-eval.js","node_modules/@progress/kendo-data-query/dist/es2015/filtering/filter-expression.factory.js","node_modules/@progress/kendo-data-query/dist/es2015/grouping/group.operators.js","node_modules/@progress/kendo-data-query/dist/es2015/array.operators.js","node_modules/@progress/kendo-data-query/dist/es2015/filtering/operators.enum.js","node_modules/@progress/kendo-angular-progressbar/fesm2020/progress-kendo-angular-progressbar.mjs","node_modules/@progress/kendo-angular-layout/fesm2020/progress-kendo-angular-layout.mjs","node_modules/@progress/kendo-file-saver/dist/es2015/save-as.js","node_modules/@progress/kendo-file-saver/dist/es2015/base64.js","node_modules/@progress/kendo-ooxml/dist/es2015/services/template-service.js","node_modules/@progress/kendo-ooxml/dist/es2015/utils/getter.js","node_modules/@progress/kendo-ooxml/dist/es2015/utils/map.js","node_modules/@progress/kendo-ooxml/dist/es2015/excel-exporter.js","node_modules/@progress/kendo-ooxml/dist/es2015/services/intl-service.js","node_modules/@progress/jszip-esm/dist/jszip-esm2015.js","node_modules/@progress/kendo-ooxml/dist/es2015/utils/create-zip.js","node_modules/@progress/kendo-ooxml/dist/es2015/utils/time.js","node_modules/@progress/kendo-ooxml/dist/es2015/ooxml.js","node_modules/@progress/kendo-angular-excel-export/fesm2020/progress-kendo-angular-excel-export.mjs","node_modules/@progress/kendo-angular-pdf-export/fesm2020/progress-kendo-angular-pdf-export.mjs","node_modules/@progress/kendo-draggable-common/dist/es2015/algorithms/intersect.js","node_modules/@progress/kendo-draggable-common/dist/es2015/utils/index.js","node_modules/@progress/kendo-draggable-common/dist/es2015/drag-n-drop.js","node_modules/@progress/kendo-draggable-common/dist/es2015/auto-scroll.js","node_modules/@progress/kendo-angular-utils/fesm2020/progress-kendo-angular-utils.mjs","node_modules/@progress/kendo-angular-grid/fesm2020/progress-kendo-angular-grid.mjs","src/app/core/services/infrastructure/element-reference.service.ts","node_modules/lodash-es/_listCacheClear.js","node_modules/lodash-es/eq.js","node_modules/lodash-es/_assocIndexOf.js","node_modules/lodash-es/_listCacheDelete.js","node_modules/lodash-es/_listCacheGet.js","node_modules/lodash-es/_listCacheHas.js","node_modules/lodash-es/_listCacheSet.js","node_modules/lodash-es/_ListCache.js","node_modules/lodash-es/_stackClear.js","node_modules/lodash-es/_stackDelete.js","node_modules/lodash-es/_stackGet.js","node_modules/lodash-es/_stackHas.js","node_modules/lodash-es/_freeGlobal.js","node_modules/lodash-es/_root.js","node_modules/lodash-es/_Symbol.js","node_modules/lodash-es/_getRawTag.js","node_modules/lodash-es/_objectToString.js","node_modules/lodash-es/_baseGetTag.js","node_modules/lodash-es/isObject.js","node_modules/lodash-es/isFunction.js","node_modules/lodash-es/_coreJsData.js","node_modules/lodash-es/_isMasked.js","node_modules/lodash-es/_toSource.js","node_modules/lodash-es/_baseIsNative.js","node_modules/lodash-es/_getValue.js","node_modules/lodash-es/_getNative.js","node_modules/lodash-es/_Map.js","node_modules/lodash-es/_nativeCreate.js","node_modules/lodash-es/_hashClear.js","node_modules/lodash-es/_hashDelete.js","node_modules/lodash-es/_hashGet.js","node_modules/lodash-es/_hashHas.js","node_modules/lodash-es/_hashSet.js","node_modules/lodash-es/_Hash.js","node_modules/lodash-es/_mapCacheClear.js","node_modules/lodash-es/_isKeyable.js","node_modules/lodash-es/_getMapData.js","node_modules/lodash-es/_mapCacheDelete.js","node_modules/lodash-es/_mapCacheGet.js","node_modules/lodash-es/_mapCacheHas.js","node_modules/lodash-es/_mapCacheSet.js","node_modules/lodash-es/_MapCache.js","node_modules/lodash-es/_stackSet.js","node_modules/lodash-es/_Stack.js","node_modules/lodash-es/_arrayEach.js","node_modules/lodash-es/_defineProperty.js","node_modules/lodash-es/_baseAssignValue.js","node_modules/lodash-es/_assignValue.js","node_modules/lodash-es/_copyObject.js","node_modules/lodash-es/_baseTimes.js","node_modules/lodash-es/isObjectLike.js","node_modules/lodash-es/_baseIsArguments.js","node_modules/lodash-es/isArguments.js","node_modules/lodash-es/isArray.js","node_modules/lodash-es/stubFalse.js","node_modules/lodash-es/isBuffer.js","node_modules/lodash-es/_isIndex.js","node_modules/lodash-es/isLength.js","node_modules/lodash-es/_baseIsTypedArray.js","node_modules/lodash-es/_baseUnary.js","node_modules/lodash-es/_nodeUtil.js","node_modules/lodash-es/isTypedArray.js","node_modules/lodash-es/_arrayLikeKeys.js","node_modules/lodash-es/_isPrototype.js","node_modules/lodash-es/_overArg.js","node_modules/lodash-es/_nativeKeys.js","node_modules/lodash-es/_baseKeys.js","node_modules/lodash-es/isArrayLike.js","node_modules/lodash-es/keys.js","node_modules/lodash-es/_baseAssign.js","node_modules/lodash-es/_nativeKeysIn.js","node_modules/lodash-es/_baseKeysIn.js","node_modules/lodash-es/keysIn.js","node_modules/lodash-es/_baseAssignIn.js","node_modules/lodash-es/_cloneBuffer.js","node_modules/lodash-es/_copyArray.js","node_modules/lodash-es/_arrayFilter.js","node_modules/lodash-es/stubArray.js","node_modules/lodash-es/_getSymbols.js","node_modules/lodash-es/_copySymbols.js","node_modules/lodash-es/_arrayPush.js","node_modules/lodash-es/_getPrototype.js","node_modules/lodash-es/_getSymbolsIn.js","node_modules/lodash-es/_copySymbolsIn.js","node_modules/lodash-es/_baseGetAllKeys.js","node_modules/lodash-es/_getAllKeys.js","node_modules/lodash-es/_getAllKeysIn.js","node_modules/lodash-es/_DataView.js","node_modules/lodash-es/_Promise.js","node_modules/lodash-es/_Set.js","node_modules/lodash-es/_WeakMap.js","node_modules/lodash-es/_getTag.js","node_modules/lodash-es/_initCloneArray.js","node_modules/lodash-es/_Uint8Array.js","node_modules/lodash-es/_cloneArrayBuffer.js","node_modules/lodash-es/_cloneDataView.js","node_modules/lodash-es/_cloneRegExp.js","node_modules/lodash-es/_cloneSymbol.js","node_modules/lodash-es/_cloneTypedArray.js","node_modules/lodash-es/_initCloneByTag.js","node_modules/lodash-es/_baseCreate.js","node_modules/lodash-es/_initCloneObject.js","node_modules/lodash-es/_baseIsMap.js","node_modules/lodash-es/isMap.js","node_modules/lodash-es/_baseIsSet.js","node_modules/lodash-es/isSet.js","node_modules/lodash-es/_baseClone.js","node_modules/lodash-es/cloneDeep.js","node_modules/lodash-es/identity.js","node_modules/lodash-es/_apply.js","node_modules/lodash-es/_shortOut.js","node_modules/lodash-es/constant.js","node_modules/lodash-es/_baseSetToString.js","node_modules/lodash-es/_setToString.js","node_modules/lodash-es/_overRest.js","node_modules/lodash-es/_baseRest.js","node_modules/lodash-es/_isIterateeCall.js","node_modules/lodash-es/_createAssigner.js","node_modules/lodash-es/isPlainObject.js","node_modules/lodash-es/compact.js","node_modules/lodash-es/_createBaseFor.js","node_modules/lodash-es/_baseFor.js","node_modules/lodash-es/_assignMergeValue.js","node_modules/lodash-es/isArrayLikeObject.js","node_modules/lodash-es/_safeGet.js","node_modules/lodash-es/toPlainObject.js","node_modules/lodash-es/_baseMergeDeep.js","node_modules/lodash-es/_baseMerge.js","node_modules/lodash-es/fromPairs.js","node_modules/lodash-es/merge.js"],"sourcesContent":["import { inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateChildFn, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { AccountService } from \"@services/account/account.service\";\r\n\r\nexport const userAuthGuard: CanActivateChildFn =\r\n (_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\r\n const router = inject(Router);\r\n let isAuthenticated = AccountService.isAuthenticated();\r\n if (isAuthenticated)\r\n return true;\r\n\r\n let queryString = parseQueryString(_state.url);\r\n let url = _state.url;\r\n if (url.contains(\"?\"))\r\n url = url.substring(0, url.indexOf(\"?\"));\r\n\r\n queryString[\"returnUrl\"] = url;\r\n return router.navigate([ 'open-area', 'sign-in' ], { queryParams: queryString });\r\n };\r\n\r\n\r\nexport const patientPortalAuthGuard: CanActivateChildFn =\r\n (_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\r\n const router = inject(Router);\r\n let isAuthenticated = AccountService.isInRole('portal.all');\r\n if (isAuthenticated)\r\n return true;\r\n\r\n return router.navigate([ 'secure-area', 'welcome' ],\r\n { queryParams: { returnUrl: _state.url } });\r\n };\r\n\r\nexport const paymentPortalAuthGuard: CanActivateChildFn =\r\n (_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\r\n const router = inject(Router);\r\n let isAuthenticated = AccountService.isInRole('payment.all') && AccountService.isMerchantAvailable();\r\n if (isAuthenticated)\r\n return true;\r\n\r\n return router.navigate([ 'secure-area', 'welcome' ],\r\n { queryParams: { returnUrl: _state.url } });\r\n };\r\n\r\nexport function parseQueryString(relativeUrl: string): Record {\r\n // Check if the URL contains a query string\r\n const queryStringIndex = relativeUrl.indexOf('?');\r\n if (queryStringIndex === -1) {\r\n return {}; // No query string present\r\n }\r\n\r\n // Extract the query string part\r\n const queryString = relativeUrl.substring(queryStringIndex + 1);\r\n\r\n // Use URLSearchParams to parse the query string\r\n const searchParams = new URLSearchParams(queryString);\r\n\r\n // Create an empty object to store the query parameters\r\n const queryParams: Record = {};\r\n\r\n // Iterate over the search params and add them to the queryParams object\r\n searchParams.forEach((value, key) => {\r\n queryParams[key] = value;\r\n });\r\n\r\n return queryParams;\r\n}\r\n","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, Directive, Optional, Input, HostBinding, Component, forwardRef, isDevMode, ViewContainerRef, ChangeDetectionStrategy, ViewChild, Output, ContentChild, Host, NgModule } from '@angular/core';\nimport { isDocumentAvailable, Keys, anyChanged, hasObservers, isChanged, guid, ResizeBatchService } from '@progress/kendo-angular-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subject, Subscription, of, EMPTY, BehaviorSubject, merge } from 'rxjs';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter, setter } from '@progress/kendo-common';\nimport { caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, searchIcon, cancelIcon, insertMiddleIcon, insertBottomIcon, insertTopIcon, plusIcon } from '@progress/kendo-svg-icons';\nimport { CheckBoxComponent, TextBoxComponent, TextBoxPrefixTemplateDirective } from '@progress/kendo-angular-inputs';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { filter, tap, switchMap, delay, takeUntil, catchError, finalize, take, map } from 'rxjs/operators';\nimport { NgFor, NgClass, NgIf, NgSwitch, NgSwitchCase, NgTemplateOutlet, NgSwitchDefault } from '@angular/common';\nimport { IconWrapperComponent, IconsService } from '@progress/kendo-angular-icons';\nimport { Draggable } from '@progress/kendo-draggable';\nimport { DialogContainerService, DialogService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';\nimport { PopupService } from '@progress/kendo-angular-popup';\n\n/**\n * @hidden\n */\nconst _c0 = [\"kendoTreeViewGroup\", \"\"];\nconst _c1 = (a0, a1) => ({\n $implicit: a0,\n index: a1\n});\nconst _c2 = a0 => ({\n index: a0\n});\nfunction TreeViewGroupComponent_li_0_span_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 13);\n i0.ɵɵlistener(\"click\", function TreeViewGroupComponent_li_0_span_2_Template_span_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n const node_r3 = ctx_r1.$implicit;\n const index_r4 = ctx_r1.index;\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.expandNode(ctx_r4.nodeIndex(index_r4), node_r3, !ctx_r4.isExpanded(node_r3, ctx_r4.nodeIndex(index_r4))));\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 14);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const node_r3 = ctx_r1.$implicit;\n const index_r4 = ctx_r1.index;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-disabled\", !ctx_r4.isItemExpandable(node_r3, index_r4));\n i0.ɵɵproperty(\"kendoTreeViewLoading\", ctx_r4.nodeIndex(index_r4));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r4.getFontIcon(node_r3, ctx_r4.nodeIndex(index_r4)))(\"svgIcon\", ctx_r4.getSvgIcon(node_r3, ctx_r4.nodeIndex(index_r4)));\n }\n}\nfunction TreeViewGroupComponent_li_0_kendo_checkbox_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-checkbox\", 15, 0);\n i0.ɵɵlistener(\"checkedStateChange\", function TreeViewGroupComponent_li_0_kendo_checkbox_3_Template_kendo_checkbox_checkedStateChange_0_listener() {\n i0.ɵɵrestoreView(_r6);\n const checkbox_r7 = i0.ɵɵreference(1);\n const index_r4 = i0.ɵɵnextContext().index;\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.checkNode(ctx_r4.nodeIndex(index_r4), checkbox_r7));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const node_r3 = ctx_r1.$implicit;\n const index_r4 = ctx_r1.index;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"disabled\", ctx_r4.isItemDisabled(node_r3, index_r4))(\"size\", ctx_r4.size)(\"checkedState\", ctx_r4.getCheckBoxState(node_r3, ctx_r4.nodeIndex(index_r4)))(\"tabindex\", -1)(\"inputAttributes\", ctx_r4.getCheckboxAttributes(index_r4));\n }\n}\nfunction TreeViewGroupComponent_li_0_ng_container_7_ng_template_1_Template(rf, ctx) {}\nfunction TreeViewGroupComponent_li_0_ng_container_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TreeViewGroupComponent_li_0_ng_container_7_ng_template_1_Template, 0, 0, \"ng-template\", 16);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const node_r3 = ctx_r1.$implicit;\n const index_r4 = ctx_r1.index;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.nodeTemplateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c1, node_r3, ctx_r4.nodeIndex(index_r4)));\n }\n}\nfunction TreeViewGroupComponent_li_0_ng_container_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const node_r3 = i0.ɵɵnextContext().$implicit;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r4.nodeText(node_r3), \" \");\n }\n}\nfunction TreeViewGroupComponent_li_0_ul_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"ul\", 17);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const node_r3 = ctx_r1.$implicit;\n const index_r4 = ctx_r1.index;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"size\", ctx_r4.size)(\"nodes\", ctx_r4.fetchChildren)(\"loadOnDemand\", ctx_r4.loadOnDemand)(\"checkboxes\", ctx_r4.checkboxes)(\"expandIcons\", ctx_r4.expandIcons)(\"selectable\", ctx_r4.selectable)(\"touchActions\", ctx_r4.touchActions)(\"children\", ctx_r4.children)(\"hasChildren\", ctx_r4.hasChildren)(\"isChecked\", ctx_r4.isChecked)(\"isDisabled\", ctx_r4.isDisabled)(\"hasCheckbox\", ctx_r4.hasCheckbox)(\"disabled\", ctx_r4.isItemDisabled(node_r3, index_r4))(\"expandDisabledNodes\", ctx_r4.expandDisabledNodes)(\"isExpanded\", ctx_r4.isExpanded)(\"isSelected\", ctx_r4.isSelected)(\"isVisible\", ctx_r4.isVisible)(\"nodeTemplateRef\", ctx_r4.nodeTemplateRef)(\"loadMoreButtonTemplateRef\", ctx_r4.loadMoreButtonTemplateRef)(\"parentIndex\", ctx_r4.nodeIndex(index_r4))(\"parentDataItem\", node_r3)(\"textField\", ctx_r4.nextFields)(\"loadMoreService\", ctx_r4.loadMoreService)(\"@toggle\", true)(\"trackBy\", ctx_r4.trackBy)(\"disableParentNodesOnly\", ctx_r4.disableParentNodesOnly);\n }\n}\nfunction TreeViewGroupComponent_li_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 3)(1, \"div\", 4);\n i0.ɵɵtemplate(2, TreeViewGroupComponent_li_0_span_2_Template, 2, 5, \"span\", 5)(3, TreeViewGroupComponent_li_0_kendo_checkbox_3_Template, 2, 5, \"kendo-checkbox\", 6);\n i0.ɵɵelementStart(4, \"span\", 7)(5, \"span\", 8);\n i0.ɵɵelementContainerStart(6, 9);\n i0.ɵɵtemplate(7, TreeViewGroupComponent_li_0_ng_container_7_Template, 2, 5, \"ng-container\", 10)(8, TreeViewGroupComponent_li_0_ng_container_8_Template, 2, 1, \"ng-container\", 11);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵelementEnd()()();\n i0.ɵɵtemplate(9, TreeViewGroupComponent_li_0_ul_9_Template, 1, 26, \"ul\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const node_r3 = ctx.$implicit;\n const index_r4 = ctx.index;\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-hidden\", !ctx_r4.isVisible(node_r3, ctx_r4.nodeIndex(index_r4)));\n i0.ɵɵproperty(\"dataItem\", node_r3)(\"index\", ctx_r4.nodeIndex(index_r4))(\"parentDataItem\", ctx_r4.parentDataItem)(\"parentIndex\", ctx_r4.parentIndex)(\"loadOnDemand\", ctx_r4.loadOnDemand)(\"checkable\", ctx_r4.checkboxes)(\"isChecked\", ctx_r4.isChecked(node_r3, ctx_r4.nodeIndex(index_r4)))(\"isDisabled\", ctx_r4.isItemDisabled(node_r3, index_r4))(\"isVisible\", ctx_r4.isVisible(node_r3, ctx_r4.nodeIndex(index_r4)))(\"expandable\", ctx_r4.expandIcons && ctx_r4.hasChildren(node_r3))(\"isExpanded\", ctx_r4.isExpanded(node_r3, ctx_r4.nodeIndex(index_r4)))(\"selectable\", ctx_r4.selectable)(\"isSelected\", ctx_r4.isSelected(node_r3, ctx_r4.nodeIndex(index_r4)));\n i0.ɵɵattribute(\"aria-setsize\", ctx_r4.totalNodesCount)(\"data-treeindex\", ctx_r4.nodeIndex(index_r4));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx_r4.setItemClasses(ctx_r4.data.length, index_r4));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.expandIcons && ctx_r4.hasChildren(node_r3));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.checkboxes && ctx_r4.hasCheckbox(node_r3, ctx_r4.nodeIndex(index_r4)));\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"touch-action\", ctx_r4.touchActions ? \"\" : \"none\");\n i0.ɵɵclassProp(\"k-disabled\", ctx_r4.isItemDisabled(node_r3, index_r4));\n i0.ɵɵproperty(\"id\", ctx_r4.nodeIndex(index_r4))(\"dataItem\", node_r3)(\"index\", ctx_r4.nodeIndex(index_r4))(\"initialSelection\", ctx_r4.isSelected(node_r3, ctx_r4.nodeIndex(index_r4)))(\"isSelected\", ctx_r4.isSelected);\n i0.ɵɵattribute(\"data-treeindex\", ctx_r4.nodeIndex(index_r4));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngSwitch\", ctx_r4.hasTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", true);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r4.isExpanded(node_r3, ctx_r4.nodeIndex(index_r4)) && ctx_r4.hasChildren(node_r3));\n }\n}\nfunction TreeViewGroupComponent_li_1_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 23);\n }\n}\nfunction TreeViewGroupComponent_li_1_5_ng_template_0_Template(rf, ctx) {}\nfunction TreeViewGroupComponent_li_1_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TreeViewGroupComponent_li_1_5_ng_template_0_Template, 0, 0, \"ng-template\", 16);\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.loadMoreButtonTemplateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c2, ctx_r4.loadMoreButtonIndex));\n }\n}\nfunction TreeViewGroupComponent_li_1_ng_container_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r4.loadMoreTitle, \" \");\n }\n}\nfunction TreeViewGroupComponent_li_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 18)(1, \"div\", 19);\n i0.ɵɵtemplate(2, TreeViewGroupComponent_li_1_span_2_Template, 1, 0, \"span\", 20);\n i0.ɵɵelementStart(3, \"span\", 21)(4, \"span\", 8);\n i0.ɵɵtemplate(5, TreeViewGroupComponent_li_1_5_Template, 1, 4, null, 22)(6, TreeViewGroupComponent_li_1_ng_container_6_Template, 2, 1, \"ng-container\", 22);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-treeview-load-more-checkboxes-container\", ctx_r4.checkboxes);\n i0.ɵɵproperty(\"selectable\", false)(\"checkable\", false)(\"expandable\", false)(\"index\", ctx_r4.loadMoreButtonIndex)(\"parentDataItem\", ctx_r4.parentDataItem)(\"parentIndex\", ctx_r4.parentIndex);\n i0.ɵɵattribute(\"data-treeindex\", ctx_r4.loadMoreButtonIndex);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r4.loadingMoreNodes);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"index\", ctx_r4.loadMoreButtonIndex);\n i0.ɵɵattribute(\"data-treeindex\", ctx_r4.loadMoreButtonIndex);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r4.loadMoreButtonTemplateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r4.loadMoreButtonTemplateRef);\n }\n}\nconst _c3 = [\"assetsContainer\"];\nconst _c4 = [\"searchbox\"];\nfunction TreeViewComponent_span_1_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.searchIcon);\n }\n}\nfunction TreeViewComponent_span_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 5)(1, \"kendo-textbox\", 6, 1);\n i0.ɵɵlistener(\"valueChange\", function TreeViewComponent_span_1_Template_kendo_textbox_valueChange_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.filterChange.emit($event));\n });\n i0.ɵɵtemplate(3, TreeViewComponent_span_1_ng_template_3_Template, 1, 1, \"ng-template\", 7);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"value\", ctx_r1.filter)(\"clearButton\", true)(\"placeholder\", ctx_r1.filterInputPlaceholder);\n }\n}\nconst _c5 = (a0, a1, a2, a3) => ({\n text: a0,\n action: a1,\n sourceItem: a2,\n destinationItem: a3\n});\nfunction DragClueComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 1);\n i0.ɵɵelementStart(2, \"span\");\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r0.statusIconClass)(\"svgIcon\", ctx_r0.statusSVGIcon);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r0.text);\n }\n}\nfunction DragClueComponent_1_ng_template_0_Template(rf, ctx) {}\nfunction DragClueComponent_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DragClueComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 2);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction4(2, _c5, ctx_r0.text, ctx_r0.action, ctx_r0.sourceItem, ctx_r0.destinationItem));\n }\n}\nconst _c6 = (a0, a1, a2) => ({\n action: a0,\n sourceItem: a1,\n destinationItem: a2\n});\nfunction DropHintComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵelement(1, \"div\", 3)(2, \"div\", 4);\n i0.ɵɵelementEnd();\n }\n}\nfunction DropHintComponent_1_ng_template_0_ng_template_0_Template(rf, ctx) {}\nfunction DropHintComponent_1_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropHintComponent_1_ng_template_0_ng_template_0_Template, 0, 0, \"ng-template\");\n }\n}\nfunction DropHintComponent_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropHintComponent_1_ng_template_0_Template, 1, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(2, _c6, ctx_r0.action, ctx_r0.sourceItem, ctx_r0.destinationItem));\n }\n}\nconst packageMetadata = {\n name: '@progress/kendo-angular-treeview',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621750,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/**\n * @hidden\n */\nclass DataChangeNotificationService {\n constructor() {\n this.changes = new EventEmitter();\n }\n notify() {\n this.changes.emit();\n }\n}\n\n/**\n * @hidden\n */\nconst hasChildren = () => false;\n/**\n * @hidden\n */\nconst isChecked = () => 'none';\n/**\n * @hidden\n */\nconst isDisabled = () => false;\n/**\n * @hidden\n */\nconst hasCheckbox = () => true;\n/**\n * @hidden\n */\nconst isExpanded = () => true;\n/**\n * @hidden\n */\nconst isSelected = () => false;\n/**\n * @hidden\n */\nconst isVisible = () => true;\n/**\n * @hidden\n */\nconst trackBy = (_, item) => item;\n\n/**\n * @hidden\n */\nlet ExpandStateService = /*#__PURE__*/(() => {\n class ExpandStateService {\n constructor() {\n this.changes = new Subject();\n }\n expand(index, dataItem) {\n this.changes.next({\n dataItem,\n index,\n expand: true\n });\n }\n collapse(index, dataItem) {\n this.changes.next({\n dataItem,\n index,\n expand: false\n });\n }\n }\n ExpandStateService.ɵfac = function ExpandStateService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpandStateService)();\n };\n ExpandStateService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ExpandStateService,\n factory: ExpandStateService.ɵfac\n });\n return ExpandStateService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet IndexBuilderService = /*#__PURE__*/(() => {\n class IndexBuilderService {\n constructor() {\n this.INDEX_SEPARATOR = '_';\n }\n nodeIndex(index = '', parentIndex = '') {\n return `${parentIndex}${parentIndex ? this.INDEX_SEPARATOR : ''}${index}`;\n }\n indexForLevel(index, level) {\n return index.split(this.INDEX_SEPARATOR).slice(0, level).join(this.INDEX_SEPARATOR);\n }\n lastLevelIndex(index = '') {\n const parts = index.split(this.INDEX_SEPARATOR);\n if (!parts.length) {\n return NaN;\n }\n return parseInt(parts[parts.length - 1], 10);\n }\n level(index) {\n return index.split(this.INDEX_SEPARATOR).length;\n }\n }\n IndexBuilderService.ɵfac = function IndexBuilderService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IndexBuilderService)();\n };\n IndexBuilderService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IndexBuilderService,\n factory: IndexBuilderService.ɵfac\n });\n return IndexBuilderService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LoadingNotificationService = /*#__PURE__*/(() => {\n class LoadingNotificationService {\n constructor() {\n this.changes = new Subject();\n }\n notifyLoaded(index) {\n this.changes.next(index);\n }\n }\n LoadingNotificationService.ɵfac = function LoadingNotificationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LoadingNotificationService)();\n };\n LoadingNotificationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LoadingNotificationService,\n factory: LoadingNotificationService.ɵfac\n });\n return LoadingNotificationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\n/**\n * @hidden\n */\nconst match = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector.toLowerCase());\n};\n/**\n * @hidden\n */\nconst closestWithMatch = (element, selector) => {\n if (!document.documentElement.contains(element)) {\n return null;\n }\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (match(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n */\nconst noop = () => {};\n/**\n * @hidden\n */\nconst isPresent = value => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = value => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = value => Array.isArray(value);\n/**\n * @hidden\n */\nconst isNullOrEmptyString = value => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nconst isBoolean = value => typeof value === 'boolean';\n/**\n * @hidden\n */\nconst closestNode = element => {\n const selector = 'li.k-treeview-item';\n if (!isDocumentAvailable()) {\n return null;\n }\n if (element.closest) {\n return element.closest(selector);\n } else {\n return closestWithMatch(element, selector);\n }\n};\n/**\n * @hidden\n */\nconst isFocusable = element => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst isContent = element => {\n const scopeSelector = '.k-treeview-leaf:not(.k-treeview-load-more-button),.k-treeview-item,.k-treeview';\n if (!isDocumentAvailable()) {\n return null;\n }\n let node = element;\n while (node && !match(node, scopeSelector)) {\n node = node.parentNode;\n }\n if (node) {\n return match(node, '.k-treeview-leaf:not(.k-treeview-load-more-button)');\n }\n};\n/**\n * @hidden\n *\n * Returns the nested .k-treeview-leaf:not(.k-treeview-load-more-button) element.\n * If the passed parent item is itself a content node, it is returned.\n */\nconst getContentElement = parent => {\n if (!isPresent(parent)) {\n return null;\n }\n const selector = '.k-treeview-leaf:not(.k-treeview-load-more-button)';\n if (match(parent, selector)) {\n return parent;\n }\n return parent.querySelector(selector);\n};\n/**\n * @hidden\n */\nconst isLoadMoreButton = element => {\n return isPresent(closestWithMatch(element, '.k-treeview-leaf.k-treeview-load-more-button'));\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst hasParent = (element, container) => {\n return Boolean(closest(element, node => node === container));\n};\n/**\n * @hidden\n */\nconst focusableNode = element => element.nativeElement.querySelector('li[tabindex=\"0\"]');\n/**\n * @hidden\n */\nconst hasActiveNode = (target, node) => {\n const closestItem = node || closestNode(target);\n return closestItem && (closestItem === target || target.tabIndex < 0);\n};\n/**\n * @hidden\n */\nconst nodeId = node => node ? node.getAttribute('data-treeindex') : '';\n/**\n * @hidden\n */\nconst nodeIndex = item => (item || {}).index;\n/**\n * @hidden\n */\nconst dataItemsEqual = (first, second) => {\n if (!isPresent(first) && !isPresent(second)) {\n return true;\n }\n return isPresent(first) && isPresent(second) && first.item.dataItem === second.item.dataItem;\n};\n/**\n * @hidden\n */\nconst getDataItem = lookup => {\n if (!isPresent(lookup)) {\n return lookup;\n }\n return lookup.item.dataItem;\n};\n/**\n * @hidden\n */\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\n/**\n * @hidden\n * A recursive tree-filtering algorithm that returns:\n * - all child nodes of matching nodes\n * - a chain parent nodes from the match to the root node\n */\nconst filterTree = (items, term, {\n operator,\n ignoreCase,\n mode\n}, textField, depth = 0) => {\n const field = typeof textField === \"string\" ? textField : textField[depth];\n items.forEach(wrapper => {\n const matcher = typeof operator === \"string\" ? matchByFieldAndCase(field, operator, ignoreCase) : operator;\n const isMatch = matcher(wrapper.dataItem, term);\n wrapper.isMatch = isMatch;\n wrapper.visible = isMatch;\n wrapper.containsMatches = false;\n if (isMatch) {\n setParentChain(wrapper.parent);\n }\n if (wrapper.children && wrapper.children.length > 0) {\n if (mode === \"strict\" || !isMatch) {\n filterTree(wrapper.children, term, {\n operator,\n ignoreCase,\n mode\n }, textField, depth + 1);\n } else {\n makeAllVisible(wrapper.children);\n }\n }\n });\n};\nconst setParentChain = node => {\n if (!isPresent(node)) {\n return;\n }\n node.containsMatches = true;\n node.visible = true;\n if (isPresent(node.parent) && !node.parent.containsMatches) {\n setParentChain(node.parent);\n }\n};\nconst makeAllVisible = nodes => {\n nodes.forEach(node => {\n node.visible = true;\n if (node.children) {\n makeAllVisible(node.children);\n }\n });\n};\nconst operators = {\n contains: (a, b) => a.indexOf(b) >= 0,\n doesnotcontain: (a, b) => a.indexOf(b) === -1,\n startswith: (a, b) => a.lastIndexOf(b, 0) === 0,\n doesnotstartwith: (a, b) => a.lastIndexOf(b, 0) === -1,\n endswith: (a, b) => a.indexOf(b, a.length - b.length) >= 0,\n doesnotendwith: (a, b) => a.indexOf(b, a.length - b.length) < 0\n};\nconst matchByCase = (matcher, ignoreCase) => (a, b) => {\n if (ignoreCase) {\n return matcher(a.toLowerCase(), b.toLowerCase());\n }\n return matcher(a, b);\n};\nconst matchByFieldAndCase = (field, operator, ignoreCase) => (dataItem, term) => matchByCase(operators[operator], ignoreCase)(getter(field)(dataItem), term);\n/**\n * @hidden\n */\nconst buildTreeIndex = (parentIndex, itemIndex) => {\n return [parentIndex, itemIndex].filter(part => isPresent(part)).join('_');\n};\n/**\n * @hidden\n */\nconst buildTreeItem = (dataItem, currentLevelIndex, parentIndex) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n return {\n dataItem,\n index: buildTreeIndex(parentIndex, currentLevelIndex)\n };\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchLoadedDescendants = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(filterExpression);\n }\n descendants.forEach(child => descendants = descendants.concat(fetchLoadedDescendants(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Compares two Seets to determine whether all unique elements in one, are present in the other.\n * Important:\n * - it disregards the element order\n */\nconst sameValues = (as, bs) => {\n if (as.size !== bs.size) {\n return false;\n }\n return Array.from(as).every(v => bs.has(v));\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\nconst safe = node => node || {};\nconst safeChildren = node => safe(node).children || [];\nconst lastVisibleNode = nodes => {\n if (!Array.isArray(nodes) || nodes.length === 0) {\n return null;\n }\n const nodesCount = nodes.length;\n const lastIndex = nodesCount - 1;\n for (let index = lastIndex; index >= 0; index -= 1) {\n const node = nodes[index];\n if (node.visible) {\n return node;\n }\n }\n return null;\n};\n/**\n * @hidden\n */\nclass NavigationModel {\n constructor() {\n this.ib = new IndexBuilderService();\n this.nodes = [];\n }\n firstVisibleNode() {\n return (this.nodes || []).find(node => node.visible);\n }\n lastVisibleNode() {\n let node = lastVisibleNode(this.nodes);\n while (isPresent(node) && safeChildren(node).length > 0) {\n const children = safeChildren(node);\n const lastVisibleChild = lastVisibleNode(children);\n if (!isPresent(lastVisibleChild)) {\n return node;\n }\n node = lastVisibleChild;\n }\n return node;\n }\n closestNode(index) {\n const {\n prev\n } = safe(this.findNode(index));\n const sibling = prev || this.firstVisibleNode();\n return safe(sibling).index === index ? this.visibleSibling(sibling, 1) : sibling;\n }\n firstFocusableNode() {\n return this.nodes.find(node => {\n return !node.disabled && node.visible;\n });\n }\n findNode(index) {\n return this.find(index, this.nodes);\n }\n findParent(index) {\n const parentLevel = this.ib.level(index) - 1;\n return this.findNode(this.ib.indexForLevel(index, parentLevel));\n }\n findVisibleChild(index) {\n const node = this.findNode(index);\n const children = safeChildren(node);\n return children.find(child => child.visible);\n }\n findVisiblePrev(item) {\n const index = item.index;\n const parent = this.findParent(index);\n const levelIndex = this.ib.lastLevelIndex(index);\n const prevNodes = this.container(parent).slice(0, levelIndex);\n const prevNodesHidden = prevNodes.every(node => !node.visible);\n if (levelIndex === 0 || prevNodesHidden) {\n return parent;\n }\n const currentNode = this.findNode(index);\n let prev = this.visibleSibling(currentNode, -1);\n if (prev) {\n let children = this.container(prev);\n while (children.length > 0 && children.some(node => node.visible)) {\n prev = lastVisibleNode(children);\n children = this.container(prev);\n }\n }\n return prev;\n }\n findVisibleNext(item) {\n const children = this.container(item);\n const hasVisibleChildren = children.some(child => child.visible);\n if (children.length === 0 || !hasVisibleChildren) {\n return this.visibleSibling(item, 1);\n }\n return children.find(child => child.visible);\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const children = [];\n const level = this.ib.level(index);\n const parent = this.findParent(index);\n if (parent || level === 1) {\n const node = {\n id,\n children,\n index,\n parent,\n disabled,\n loadMoreButton,\n visible\n };\n this.insert(node, parent);\n }\n }\n unregisterItem(id, index) {\n const node = this.find(index, this.nodes);\n if (!node || node.id !== id) {\n return;\n }\n const children = this.container(node.parent);\n children.splice(children.indexOf(node), 1);\n }\n childLevel(nodes) {\n const children = nodes.filter(node => isPresent(node));\n if (!children || !children.length) {\n return 1;\n }\n return this.ib.level(children[0].index);\n }\n container(node) {\n return node ? node.children : this.nodes;\n }\n find(index, nodes) {\n const childLevel = this.childLevel(nodes);\n const indexToMatch = this.ib.indexForLevel(index, childLevel);\n const isLeaf = childLevel === this.ib.level(index);\n const node = nodes.find(n => n && n.index === indexToMatch);\n if (!node) {\n return null;\n }\n return isLeaf ? node : this.find(index, node.children);\n }\n insert(node, parent) {\n const nodes = this.container(parent);\n nodes.splice(this.ib.lastLevelIndex(node.index), 0, node);\n }\n visibleSibling(node, offset) {\n if (!node) {\n return null;\n }\n const parent = this.findParent(node.index);\n const container = this.container(parent);\n let nextItemIndex = container.indexOf(node) + offset;\n let nextItem = container[nextItemIndex];\n while (isPresent(nextItem)) {\n if (nextItem.visible) {\n return nextItem;\n }\n nextItemIndex += offset;\n nextItem = container[nextItemIndex];\n }\n return this.visibleSibling(parent, offset);\n }\n}\n\n/**\n * @hidden\n */\nlet NavigationService = /*#__PURE__*/(() => {\n class NavigationService {\n constructor(localization) {\n this.localization = localization;\n this.expands = new Subject();\n this.moves = new Subject();\n this.checks = new Subject();\n this.selects = new Subject();\n this.deselectAllButCurrentItem = new Subject();\n this.loadMore = new Subject();\n this.navigable = true;\n this.selection = 'single';\n this.isTreeViewActive = false;\n this.actions = {\n [Keys.ArrowUp]: () => this.activate(this.model.findVisiblePrev(this.focusableItem), true),\n [Keys.ArrowDown]: () => this.activate(this.model.findVisibleNext(this.focusableItem), true),\n [Keys.ArrowLeft]: () => !this.isLoadMoreButton && this.expand({\n expand: this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToFirstVisibleChild : this.moveToParent\n }),\n [Keys.ArrowRight]: () => !this.isLoadMoreButton && this.expand({\n expand: !this.localization.rtl,\n intercept: this.localization.rtl ? this.moveToParent : this.moveToFirstVisibleChild\n }),\n [Keys.Home]: () => this.activate(this.model.firstVisibleNode(), true),\n [Keys.End]: () => this.activate(this.model.lastVisibleNode(), true),\n [Keys.Enter]: e => this.handleEnter(e),\n [Keys.Space]: () => this.handleSpace()\n };\n this.isFocused = false;\n this.shouldScroll = false;\n this._model = new NavigationModel();\n this.moveToFirstVisibleChild = this.moveToFirstVisibleChild.bind(this);\n this.moveToParent = this.moveToParent.bind(this);\n }\n get model() {\n return this._model;\n }\n set model(model) {\n this._model = model;\n }\n get activeIndex() {\n return nodeIndex(this.activeItem) || null;\n }\n get isActiveExpanded() {\n return this.activeItem && this.activeItem.children.length > 0;\n }\n get isLoadMoreButton() {\n return this.activeItem && this.activeItem.loadMoreButton;\n }\n get focusableItem() {\n return this.activeItem || this.model.firstFocusableNode();\n }\n activate(item, shouldScroll = false) {\n if (!this.navigable || !item || this.isActive(nodeIndex(item))) {\n return;\n }\n this.isFocused = true;\n this.activeItem = item || this.activeItem;\n this.shouldScroll = shouldScroll;\n this.notifyMove();\n }\n activateParent(index) {\n this.activate(this.model.findParent(index));\n }\n activateIndex(index) {\n if (!index) {\n return;\n }\n this.activate(this.model.findNode(index));\n }\n activateClosest(index) {\n if (!index || nodeIndex(this.focusableItem) !== index) {\n return;\n }\n this.activeItem = this.model.closestNode(index);\n this.notifyMove();\n }\n activateFocusable() {\n if (this.activeItem) {\n return;\n }\n this.activeItem = this.model.firstVisibleNode();\n this.notifyMove();\n }\n deactivate() {\n if (!this.navigable || !this.isFocused) {\n return;\n }\n this.isFocused = false;\n this.notifyMove();\n }\n checkIndex(index) {\n if (!this.isDisabled(index)) {\n this.checks.next(index);\n }\n }\n selectIndex(index) {\n if (!this.isDisabled(index)) {\n this.selects.next(index);\n }\n }\n notifyLoadMore(index) {\n if (!isPresent(index)) {\n return;\n }\n this.loadMore.next(index);\n }\n isActive(index) {\n if (!index) {\n return false;\n }\n return this.isFocused && this.activeIndex === index;\n }\n isFocusable(index) {\n return nodeIndex(this.focusableItem) === index;\n }\n isDisabled(index) {\n if (!index) {\n return false;\n }\n return this.model.findNode(index).disabled;\n }\n registerItem(id, index, disabled, loadMoreButton = false, visible = true) {\n const itemAtIndex = this.model.findNode(index);\n if (isPresent(itemAtIndex)) {\n this.model.unregisterItem(itemAtIndex.id, itemAtIndex.index);\n if (this.isActive(index)) {\n this.deactivate();\n }\n }\n this.model.registerItem(id, index, disabled, loadMoreButton, visible);\n }\n updateItem(index, disabled, visible = true) {\n const itemAtIndex = this.model.findNode(index);\n if (isPresent(itemAtIndex)) {\n if (this.isActive(index)) {\n this.deactivate();\n }\n }\n itemAtIndex.disabled = disabled;\n itemAtIndex.visible = visible;\n }\n unregisterItem(id, index) {\n if (this.isActive(index)) {\n this.activateParent(index);\n }\n this.model.unregisterItem(id, index);\n }\n move(e) {\n if (!this.navigable) {\n return;\n }\n const moveAction = this.actions[e.keyCode];\n if (!moveAction) {\n return;\n }\n moveAction(e);\n e.preventDefault();\n }\n expand({\n expand,\n intercept\n }) {\n const index = nodeIndex(this.activeItem);\n if (!index || intercept(index)) {\n return;\n }\n this.notifyExpand(expand);\n }\n moveToParent() {\n if (this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findParent(nodeIndex(this.activeItem)));\n return true;\n }\n moveToFirstVisibleChild() {\n if (!this.isActiveExpanded) {\n return false;\n }\n this.activate(this.model.findVisibleChild(nodeIndex(this.activeItem)));\n return true;\n }\n notifyExpand(expand) {\n this.expands.next(this.navigationState(expand));\n }\n notifyMove() {\n this.moves.next(this.navigationState());\n }\n navigationState(expand = false) {\n return {\n expand,\n index: this.activeIndex,\n isFocused: this.isFocused,\n shouldScroll: this.shouldScroll\n };\n }\n handleEnter(event) {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n } else {\n const isCtrlPressed = event.ctrlKey || event.metaKey;\n if (isCtrlPressed) {\n this.selectIndex(this.activeIndex);\n } else {\n if (this.selection === 'multiple') {\n this.deselectAllButCurrentItem.next({\n dataItem: this.activeItem,\n index: this.activeIndex\n });\n } else {\n this.selectIndex(this.activeIndex);\n }\n }\n }\n }\n handleSpace() {\n if (!this.navigable) {\n return;\n }\n if (this.isLoadMoreButton) {\n this.notifyLoadMore(this.activeIndex);\n } else {\n this.checkIndex(this.activeIndex);\n }\n }\n }\n NavigationService.ɵfac = function NavigationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NavigationService)(i0.ɵɵinject(i1.LocalizationService));\n };\n NavigationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NavigationService,\n factory: NavigationService.ɵfac\n });\n return NavigationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet NodeChildrenService = /*#__PURE__*/(() => {\n class NodeChildrenService {\n constructor() {\n this.changes = new Subject();\n }\n childrenLoaded(item, children) {\n this.changes.next({\n item,\n children\n });\n }\n }\n NodeChildrenService.ɵfac = function NodeChildrenService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NodeChildrenService)();\n };\n NodeChildrenService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NodeChildrenService,\n factory: NodeChildrenService.ɵfac\n });\n return NodeChildrenService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the template for the TreeView nodes ([more information and example]({% slug nodetemplate_treeview %})).\n * The template helps to customize the content of the nodes. To define the node template, nest an ``\n * tag with the `kendoTreeViewNodeTemplate` directive inside a `` tag.\n *\n *\n * The node data item and its hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - available as implicit context variable\n * - `let-index=\"index\"` (`string`)\n *\n *\n * @example\n * ```ts\n *\n * import { Component } from '@angular/core';\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{ index }}: {{ dataItem.text }}\n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * {\n * text: \"Inbox\",\n * items: [{ text: \"Read Mail\" }]\n * },\n * {\n * text: \"Drafts\"\n * },\n * {\n * text: \"Search Folders\",\n * items: [\n * { text: \"Categorized Mail\" },\n * { text: \"Large Mail\" },\n * { text: \"Unread Mail\"}\n * ]\n * },\n * { text: \"Settings\" }\n * ];\n * }\n *\n * ```\n */\nlet NodeTemplateDirective = /*#__PURE__*/(() => {\n class NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n NodeTemplateDirective.ɵfac = function NodeTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NodeTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n NodeTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NodeTemplateDirective,\n selectors: [[\"\", \"kendoTreeViewNodeTemplate\", \"\"]],\n standalone: true\n });\n return NodeTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the template for the TreeView load more buttons.\n * To define a button template, nest an ``\n * tag with the `kendoTreeViewLoadMoreButtonTemplate` directive inside a `` tag\n * ([see example]({% slug loadmorebutton_treeview %}#toc-button-template)).\n *\n * The hierarchical index of the load more button node is available as a context variable:\n *\n * - `let-index=\"index\"` (`string`)\n */\nlet LoadMoreButtonTemplateDirective = /*#__PURE__*/(() => {\n class LoadMoreButtonTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n LoadMoreButtonTemplateDirective.ɵfac = function LoadMoreButtonTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LoadMoreButtonTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n LoadMoreButtonTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LoadMoreButtonTemplateDirective,\n selectors: [[\"\", \"kendoTreeViewLoadMoreButtonTemplate\", \"\"]],\n standalone: true\n });\n return LoadMoreButtonTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * An injection token used by the data binding directives to interface with\n * the TreeView or the DropDownTree components.\n */\nlet DataBoundComponent = /*#__PURE__*/(() => {\n class DataBoundComponent {}\n DataBoundComponent.ɵfac = function DataBoundComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataBoundComponent)();\n };\n DataBoundComponent.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DataBoundComponent,\n factory: DataBoundComponent.ɵfac\n });\n return DataBoundComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * An injection token used by the expand-directive to interface with\n * the TreeView or the DropDownTree components.\n */\nlet ExpandableComponent = /*#__PURE__*/(() => {\n class ExpandableComponent {}\n ExpandableComponent.ɵfac = function ExpandableComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpandableComponent)();\n };\n ExpandableComponent.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ExpandableComponent,\n factory: ExpandableComponent.ɵfac\n });\n return ExpandableComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet SelectionService = /*#__PURE__*/(() => {\n class SelectionService {\n constructor() {\n this.changes = new Subject();\n }\n isFirstSelected(index) {\n return this.firstIndex === index;\n }\n setFirstSelected(index, selected) {\n if (this.firstIndex === index && selected === false) {\n this.firstIndex = null;\n } else if (!this.firstIndex && selected) {\n this.firstIndex = index;\n }\n }\n select(index, dataItem) {\n this.changes.next({\n dataItem,\n index\n });\n }\n }\n SelectionService.ɵfac = function SelectionService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectionService)();\n };\n SelectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SelectionService,\n factory: SelectionService.ɵfac\n });\n return SelectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst INDEX_REGEX = /\\d+$/;\n/**\n * @hidden\n */\nlet TreeViewLookupService = /*#__PURE__*/(() => {\n class TreeViewLookupService {\n constructor() {\n this.map = new Map();\n }\n reset() {\n this.map.clear();\n }\n registerItem(item, parent) {\n const currentLookup = {\n children: [],\n item,\n parent: this.item(nodeIndex(parent))\n };\n this.map.set(item.index, currentLookup);\n }\n registerChildren(index, children) {\n const item = this.item(index);\n if (!item) {\n return;\n }\n item.children = children;\n }\n unregisterItem(index, dataItem) {\n const current = this.item(index);\n if (current && current.item.dataItem === dataItem) {\n this.map.delete(index);\n if (current.parent && current.parent.children) {\n current.parent.children = current.parent.children.filter(item => item.dataItem !== dataItem);\n }\n }\n }\n replaceItem(index, item, parent) {\n if (!item) {\n return;\n }\n this.unregisterItem(index, item.dataItem);\n this.registerItem(item, parent);\n this.addToParent(item, parent);\n }\n itemLookup(index) {\n const item = this.item(index);\n if (!item) {\n return null;\n }\n return {\n children: this.mapChildren(item.children),\n item: item.item,\n parent: item.parent\n };\n }\n hasItem(index) {\n return this.map.has(index);\n }\n item(index) {\n return this.map.get(index) || null;\n }\n addToParent(item, parent) {\n if (parent) {\n const parentItem = this.item(parent.index);\n const index = parseInt(INDEX_REGEX.exec(item.index)[0], 10);\n parentItem.children = parentItem.children || [];\n parentItem.children.splice(index, 0, item);\n }\n }\n mapChildren(children = []) {\n return children.map(c => {\n const {\n item,\n parent,\n children\n } = this.item(c.index);\n return {\n children: this.mapChildren(children),\n item,\n parent\n };\n });\n }\n }\n TreeViewLookupService.ɵfac = function TreeViewLookupService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TreeViewLookupService)();\n };\n TreeViewLookupService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TreeViewLookupService,\n factory: TreeViewLookupService.ɵfac\n });\n return TreeViewLookupService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nlet TreeViewItemContentDirective = /*#__PURE__*/(() => {\n class TreeViewItemContentDirective {\n constructor(element, navigationService, selectionService, renderer) {\n this.element = element;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.renderer = renderer;\n this.initialSelection = false;\n this.isSelected = isSelected;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.navigationService.moves.subscribe(this.updateFocusClass.bind(this)));\n this.subscriptions.add(this.navigationService.selects.pipe(filter(index => index === this.index)).subscribe(index => this.selectionService.select(index, this.dataItem)));\n this.subscriptions.add(this.selectionService.changes.subscribe(() => {\n this.updateSelectionClass(this.isSelected(this.dataItem, this.index));\n }));\n }\n ngOnChanges(changes) {\n if (changes['initialSelection']) {\n this.updateSelectionClass(this.initialSelection);\n }\n if (changes['index']) {\n this.updateFocusClass();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n updateFocusClass() {\n this.render(this.navigationService.isActive(this.index), 'k-focus');\n }\n updateSelectionClass(selected) {\n this.render(selected, 'k-selected');\n }\n render(addClass, className) {\n const action = addClass ? 'addClass' : 'removeClass';\n this.renderer[action](this.element.nativeElement, className);\n }\n }\n TreeViewItemContentDirective.ɵfac = function TreeViewItemContentDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TreeViewItemContentDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n TreeViewItemContentDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TreeViewItemContentDirective,\n selectors: [[\"\", \"kendoTreeViewItemContent\", \"\"]],\n inputs: {\n dataItem: \"dataItem\",\n index: \"index\",\n initialSelection: \"initialSelection\",\n isSelected: \"isSelected\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return TreeViewItemContentDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LoadingIndicatorDirective = /*#__PURE__*/(() => {\n class LoadingIndicatorDirective {\n constructor(expandService, loadingService, cd) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.cd = cd;\n this._loading = false;\n }\n get loading() {\n return this._loading;\n }\n set loading(value) {\n this._loading = value;\n this.cd.markForCheck();\n }\n ngOnInit() {\n const loadingNotifications = this.loadingService.changes.pipe(filter(index => index === this.index));\n this.subscription = this.expandService.changes.pipe(filter(({\n index\n }) => index === this.index), tap(({\n expand\n }) => {\n if (!expand && this.loading) {\n this.loading = false;\n }\n }), filter(({\n expand\n }) => expand), switchMap(x => of(x).pipe(delay(100), takeUntil(loadingNotifications)))).subscribe(() => this.loading = true);\n this.subscription.add(loadingNotifications.subscribe(() => this.loading = false));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n }\n LoadingIndicatorDirective.ɵfac = function LoadingIndicatorDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LoadingIndicatorDirective)(i0.ɵɵdirectiveInject(ExpandStateService), i0.ɵɵdirectiveInject(LoadingNotificationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n LoadingIndicatorDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LoadingIndicatorDirective,\n selectors: [[\"\", \"kendoTreeViewLoading\", \"\"]],\n hostVars: 2,\n hostBindings: function LoadingIndicatorDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-i-loading\", ctx.loading);\n }\n },\n inputs: {\n index: [0, \"kendoTreeViewLoading\", \"index\"]\n },\n standalone: true\n });\n return LoadingIndicatorDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst buildItem = (index, dataItem) => ({\n dataItem,\n index\n});\nlet id = 0;\nconst TREE_ITEM_ROLE = 'treeitem';\nconst BUTTON_ROLE = 'button';\n/**\n * @hidden\n *\n * A directive which manages the expanded state of the TreeView.\n */\nlet TreeViewItemDirective = /*#__PURE__*/(() => {\n class TreeViewItemDirective {\n constructor(element, expandService, navigationService, selectionService, lookupService, renderer, ib) {\n this.element = element;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.selectionService = selectionService;\n this.lookupService = lookupService;\n this.renderer = renderer;\n this.ib = ib;\n this.role = TREE_ITEM_ROLE;\n this.loadOnDemand = true;\n this.isDisabled = false;\n this.isVisible = true;\n this.ariaChecked = 'false';\n this.id = id++;\n this.isInitialized = false;\n this.subscriptions = [];\n this.subscribe();\n }\n set isChecked(checked) {\n if (checked === 'checked') {\n this.ariaChecked = 'true';\n } else if (checked === 'indeterminate') {\n this.ariaChecked = 'mixed';\n } else {\n this.ariaChecked = 'false';\n }\n }\n get isExpanded() {\n return this._isExpanded || false;\n }\n set isExpanded(isExpanded) {\n this._isExpanded = isExpanded;\n }\n get isSelected() {\n return this._isSelected || false;\n }\n set isSelected(isSelected) {\n this._isSelected = isSelected;\n }\n get isButton() {\n return this.role === BUTTON_ROLE;\n }\n get treeItem() {\n return buildItem(this.index, this.dataItem);\n }\n get parentTreeItem() {\n return this.parentDataItem ? buildItem(this.parentIndex, this.parentDataItem) : null;\n }\n ngOnInit() {\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.registerItem(this.treeItem, this.parentTreeItem);\n }\n this.registerNavigationItem();\n this.isInitialized = true;\n this.setAttribute('role', this.role);\n this.setAriaAttributes();\n this.updateTabIndex();\n }\n ngOnChanges(changes) {\n const {\n index\n } = changes;\n if (anyChanged(['index', 'checkable', 'isChecked', 'expandable', 'isExpanded', 'selectable', 'isSelected'], changes)) {\n this.setAriaAttributes();\n }\n if (this.loadOnDemand && !this.isButton) {\n this.moveLookupItem(changes);\n }\n this.moveNavigationItem(index);\n if (anyChanged(['isDisabled', 'isVisible'], changes)) {\n this.updateNodeAvailability();\n }\n }\n ngOnDestroy() {\n this.navigationService.unregisterItem(this.id, this.index);\n if (this.loadOnDemand && !this.isButton) {\n this.lookupService.unregisterItem(this.index, this.dataItem);\n }\n this.subscriptions = this.subscriptions.reduce((list, callback) => (callback.unsubscribe(), list), []);\n }\n subscribe() {\n this.subscriptions = [this.navigationService.moves.subscribe(navState => {\n this.updateTabIndex();\n this.focusItem(navState.shouldScroll);\n }), this.navigationService.expands.pipe(filter(({\n index\n }) => index === this.index && !this.isDisabled)).subscribe(({\n expand\n }) => this.expand(expand))];\n }\n registerNavigationItem() {\n this.navigationService.registerItem(this.id, this.index, this.isDisabled, this.isButton, this.isVisible);\n this.activateItem();\n }\n activateItem() {\n if (this.isDisabled) {\n return;\n }\n const navigationService = this.navigationService;\n const selectionService = this.selectionService;\n const index = this.index;\n selectionService.setFirstSelected(index, this.isSelected);\n if (!navigationService.isActive(index) && selectionService.isFirstSelected(index)) {\n navigationService.activateIndex(index);\n }\n }\n expand(shouldExpand) {\n this.expandService[shouldExpand ? 'expand' : 'collapse'](this.index, this.dataItem);\n }\n isFocusable() {\n return !this.isDisabled && this.navigationService.isFocusable(this.index);\n }\n focusItem(scrollIntoView = false) {\n if (this.isInitialized && this.navigationService.isActive(this.index)) {\n this.element.nativeElement.focus({\n preventScroll: !scrollIntoView\n });\n }\n }\n moveLookupItem(changes = {}) {\n const {\n dataItem,\n index,\n parentDataItem,\n parentIndex\n } = changes;\n if (index && index.firstChange ||\n //skip first change\n !dataItem && !index && !parentDataItem && !parentIndex) {\n return;\n }\n const oldIndex = (index || {}).previousValue || this.index;\n this.lookupService.replaceItem(oldIndex, this.treeItem, this.parentTreeItem);\n }\n moveNavigationItem(indexChange = {}) {\n const {\n currentValue,\n firstChange,\n previousValue\n } = indexChange;\n if (!firstChange && isPresent(currentValue) && isPresent(previousValue)) {\n this.navigationService.unregisterItem(this.id, previousValue);\n this.navigationService.registerItem(this.id, currentValue, this.isDisabled, this.isButton);\n }\n }\n updateNodeAvailability() {\n const service = this.navigationService;\n if (this.isDisabled || !this.isVisible && this.navigationService.isTreeViewActive) {\n service.activateClosest(this.index); // activate before updating the item\n } else {\n service.activateFocusable();\n }\n service.updateItem(this.index, this.isDisabled, this.isVisible);\n }\n setAriaAttributes() {\n this.setAttribute('aria-level', this.ib.level(this.index).toString());\n // don't render attributes when the component configuration doesn't allow the specified state\n this.setAttribute('aria-expanded', this.expandable ? this.isExpanded.toString() : null);\n this.setAttribute('aria-selected', this.selectable ? this.isSelected.toString() : null);\n this.setAttribute('aria-checked', this.checkable ? this.ariaChecked : null);\n }\n updateTabIndex() {\n this.setAttribute('tabIndex', this.isFocusable() ? '0' : '-1');\n }\n setAttribute(attr, value) {\n if (!isPresent(value)) {\n this.renderer.removeAttribute(this.element.nativeElement, attr);\n return;\n }\n this.renderer.setAttribute(this.element.nativeElement, attr, value);\n }\n }\n TreeViewItemDirective.ɵfac = function TreeViewItemDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TreeViewItemDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ExpandStateService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(TreeViewLookupService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(IndexBuilderService));\n };\n TreeViewItemDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TreeViewItemDirective,\n selectors: [[\"\", \"kendoTreeViewItem\", \"\"]],\n inputs: {\n dataItem: \"dataItem\",\n index: \"index\",\n parentDataItem: \"parentDataItem\",\n parentIndex: \"parentIndex\",\n role: \"role\",\n loadOnDemand: \"loadOnDemand\",\n checkable: \"checkable\",\n selectable: \"selectable\",\n expandable: \"expandable\",\n isChecked: \"isChecked\",\n isDisabled: \"isDisabled\",\n isVisible: \"isVisible\",\n isExpanded: \"isExpanded\",\n isSelected: \"isSelected\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return TreeViewItemDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst TOP_ITEM = 'k-treeview-top';\nconst MID_ITEM = 'k-treeview-mid';\nconst BOT_ITEM = 'k-treeview-bot';\n/**\n * @hidden\n */\nlet TreeViewGroupComponent = /*#__PURE__*/(() => {\n class TreeViewGroupComponent {\n constructor(expandService, loadingService, indexBuilder, treeViewLookupService, navigationService, nodeChildrenService, dataChangeNotification, changeDetectorRef, localization, renderer) {\n this.expandService = expandService;\n this.loadingService = loadingService;\n this.indexBuilder = indexBuilder;\n this.treeViewLookupService = treeViewLookupService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.dataChangeNotification = dataChangeNotification;\n this.changeDetectorRef = changeDetectorRef;\n this.localization = localization;\n this.renderer = renderer;\n /**\n * @hidden\n */\n this.caretAltDownIcon = caretAltDownIcon;\n /**\n * @hidden\n */\n this.caretAltRightIcon = caretAltRightIcon;\n /**\n * @hidden\n */\n this.caretAltLeftIcon = caretAltLeftIcon;\n this.kGroupClass = true;\n this.loadOnDemand = true;\n this.textField = \"\";\n this.size = 'medium';\n this.initialNodesLoaded = false;\n this.loadingMoreNodes = false;\n this.isItemExpandable = (node, index) => this.expandDisabledNodes || !this.isItemDisabled(node, index);\n this._data = [];\n this.singleRecordSubscriptions = new Subscription();\n this.localizationSubscriptions = new Subscription();\n this.isChecked = () => 'none';\n this.isDisabled = () => false;\n this.hasCheckbox = () => true;\n this.isExpanded = () => false;\n this.isVisible = () => true;\n this.isSelected = () => false;\n this.children = () => of([]);\n this.hasChildren = () => false;\n }\n get role() {\n return this.parentIndex ? 'group' : 'tree';\n }\n getFontIcon(node, index) {\n return this.isExpanded(node, index) ? 'caret-alt-down' : !this.localization.rtl ? 'caret-alt-right' : 'caret-alt-left';\n }\n getSvgIcon(node, index) {\n return this.isExpanded(node, index) ? caretAltDownIcon : !this.localization.rtl ? caretAltRightIcon : caretAltLeftIcon;\n }\n get moreNodesAvailable() {\n if (!isPresent(this.loadMoreService) || this.data.length === 0) {\n return false;\n }\n return this.pageSize < this.totalNodesCount;\n }\n get pageSize() {\n if (!isPresent(this.loadMoreService)) {\n return null;\n }\n return this.loadMoreService.getGroupSize(this.parentDataItem);\n }\n set pageSize(pageSize) {\n this.loadMoreService.setGroupSize(this.parentDataItem, pageSize);\n }\n get data() {\n if (isPresent(this.pageSize)) {\n const normalizedSizeValue = this.pageSize > 0 ? this.pageSize : 0;\n return this._data.slice(0, normalizedSizeValue);\n }\n return this._data;\n }\n set data(data) {\n this._data = data;\n this.registerLoadedNodes(this.data);\n }\n get loadMoreButtonIndex() {\n if (!this.loadMoreService) {\n return null;\n }\n return this.nodeIndex(this.data.length);\n }\n /**\n * Represents the total number of nodes for the current level.\n */\n get totalNodesCount() {\n if (!this.loadMoreService) {\n return this.data.length;\n }\n return this.loadMoreService.getTotalNodesCount(this.parentDataItem, this._data.length);\n }\n get hasTemplate() {\n return isPresent(this.nodeTemplateRef);\n }\n expandNode(index, dataItem, expand) {\n if (expand) {\n this.expandService.expand(index, dataItem);\n } else {\n this.expandService.collapse(index, dataItem);\n }\n }\n checkNode(index, checkBox) {\n this.navigationService.checkIndex(index);\n this.navigationService.activateIndex(index);\n if (checkBox?.input) {\n this.renderer.removeClass(checkBox.input.nativeElement, 'k-focus');\n }\n }\n nodeIndex(index) {\n return this.indexBuilder.nodeIndex(index.toString(), this.parentIndex);\n }\n nodeText(dataItem) {\n const textField = isArray(this.textField) ? this.textField[0] : this.textField;\n return getter(textField)(dataItem);\n }\n getCheckBoxState(item, index) {\n const state = this.isChecked(item, index);\n if (state === 'indeterminate') {\n return state;\n }\n return state === 'checked';\n }\n getCheckboxAttributes(index) {\n return {\n 'aria-hidden': 'true',\n role: 'none',\n 'aria-labelledby': this.nodeIndex(index)\n };\n }\n ngOnDestroy() {\n if (isPresent(this.nodesSubscription)) {\n this.nodesSubscription.unsubscribe();\n }\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.singleRecordSubscriptions.unsubscribe();\n this.localizationSubscriptions.unsubscribe();\n }\n ngOnInit() {\n this.subscribeToNodesChange();\n this.singleRecordSubscriptions.add(this.dataChangeNotification.changes.subscribe(this.subscribeToNodesChange.bind(this)));\n this.singleRecordSubscriptions.add(this.navigationService.loadMore.pipe(filter(index => index === this.loadMoreButtonIndex)).subscribe(this.loadMoreNodes.bind(this)));\n this.localizationSubscriptions.add(this.localization.changes.subscribe(this.l10nChange.bind(this)));\n }\n ngOnChanges(changes) {\n if (changes.parentIndex && this.loadOnDemand) {\n this.setNodeChildren(this.mapToTreeItem(this.data));\n }\n if (this.localization.get('loadMore')) {\n this.loadMoreTitle = this.localization.get('loadMore');\n }\n }\n l10nChange() {\n if (this.localization.get('loadMore')) {\n this.loadMoreTitle = this.localization.get('loadMore');\n }\n this.changeDetectorRef.markForCheck();\n }\n fetchChildren(node, index) {\n return this.children(node).pipe(catchError(() => {\n this.loadingService.notifyLoaded(index);\n return EMPTY;\n }), tap(() => this.loadingService.notifyLoaded(index)));\n }\n get nextFields() {\n if (isArray(this.textField)) {\n return this.textField.length > 1 ? this.textField.slice(1) : this.textField;\n }\n return [this.textField];\n }\n loadMoreNodes() {\n if (isPresent(this.loadMoreService.loadMoreNodes)) {\n this.fetchMoreNodes();\n } else {\n this.loadMoreLocalNodes();\n }\n }\n /**\n * @hidden\n */\n isItemDisabled(node, index) {\n return this.disabled && !this.disableParentNodesOnly || this.isDisabled(node, this.nodeIndex(index));\n }\n /**\n * @hidden\n */\n setItemClasses(dataLength, index) {\n if (dataLength === 1) {\n return this.parentIndex ? BOT_ITEM : `${TOP_ITEM} ${BOT_ITEM}`;\n }\n if (index === 0) {\n return TOP_ITEM;\n }\n if (index > 0 && index < dataLength - 1) {\n return MID_ITEM;\n }\n return index === this.totalNodesCount - 1 ? BOT_ITEM : MID_ITEM;\n }\n loadMoreLocalNodes() {\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += this.loadMoreService.getInitialPageSize(this.parentDataItem);\n this.registerLoadedNodes(this.data);\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n fetchMoreNodes() {\n if (this.loadingMoreNodes) {\n return;\n }\n this.loadingMoreNodes = true;\n if (isPresent(this.loadMoreNodesSubscription)) {\n this.loadMoreNodesSubscription.unsubscribe();\n }\n this.loadMoreNodesSubscription = this.loadMoreService.loadMoreNodes({\n dataItem: this.parentDataItem,\n skip: this.data.length,\n take: this.loadMoreService.getInitialPageSize(this.parentDataItem)\n }).pipe(finalize(() => this.loadingMoreNodes = false)).subscribe(items => {\n if (!(Array.isArray(items) && items.length > 0)) {\n return;\n }\n const initialLoadMoreButtonIndex = this.loadMoreButtonIndex;\n this.pageSize += items.length;\n this.data = this.data.concat(items);\n if (this.navigationService.isActive(initialLoadMoreButtonIndex)) {\n // forces the new items to be registered before the focus is changed\n this.changeDetectorRef.detectChanges();\n this.reselectItemAt(initialLoadMoreButtonIndex);\n }\n });\n }\n setNodeChildren(children) {\n this.treeViewLookupService.registerChildren(this.parentIndex, children);\n }\n mapToTreeItem(data) {\n if (!this.parentIndex) {\n return [];\n }\n return data.map((dataItem, idx) => ({\n dataItem,\n index: this.nodeIndex(idx)\n }));\n }\n emitChildrenLoaded(children) {\n if (!this.parentIndex) {\n return;\n }\n // ignores the registered load-more button\n const contentChildren = children.filter(item => item.dataItem);\n this.nodeChildrenService.childrenLoaded({\n dataItem: this.parentDataItem,\n index: this.parentIndex\n }, contentChildren);\n }\n subscribeToNodesChange() {\n if (this.nodesSubscription) {\n this.nodesSubscription.unsubscribe();\n }\n this.nodesSubscription = this.nodes(this.parentDataItem, this.parentIndex).subscribe(data => {\n this.data = data;\n this.initialNodesLoaded = true;\n });\n }\n reselectItemAt(index) {\n if (!isPresent(index)) {\n return;\n }\n // make sure the old index is cleared first\n this.navigationService.deactivate();\n this.navigationService.activateIndex(index);\n }\n registerLoadedNodes(nodes = []) {\n const mappedChildren = this.mapToTreeItem(nodes);\n if (this.loadOnDemand) {\n this.setNodeChildren(mappedChildren);\n }\n this.emitChildrenLoaded(mappedChildren);\n }\n }\n TreeViewGroupComponent.ɵfac = function TreeViewGroupComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TreeViewGroupComponent)(i0.ɵɵdirectiveInject(ExpandStateService), i0.ɵɵdirectiveInject(LoadingNotificationService), i0.ɵɵdirectiveInject(IndexBuilderService), i0.ɵɵdirectiveInject(TreeViewLookupService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(NodeChildrenService), i0.ɵɵdirectiveInject(DataChangeNotificationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n TreeViewGroupComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TreeViewGroupComponent,\n selectors: [[\"\", \"kendoTreeViewGroup\", \"\"]],\n hostVars: 3,\n hostBindings: function TreeViewGroupComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.role);\n i0.ɵɵclassProp(\"k-treeview-group\", ctx.kGroupClass);\n }\n },\n inputs: {\n checkboxes: \"checkboxes\",\n expandIcons: \"expandIcons\",\n disabled: \"disabled\",\n selectable: \"selectable\",\n touchActions: \"touchActions\",\n disableParentNodesOnly: \"disableParentNodesOnly\",\n loadOnDemand: \"loadOnDemand\",\n trackBy: \"trackBy\",\n nodes: \"nodes\",\n textField: \"textField\",\n parentDataItem: \"parentDataItem\",\n parentIndex: \"parentIndex\",\n nodeTemplateRef: \"nodeTemplateRef\",\n loadMoreButtonTemplateRef: \"loadMoreButtonTemplateRef\",\n loadMoreService: \"loadMoreService\",\n size: \"size\",\n expandDisabledNodes: \"expandDisabledNodes\",\n isChecked: \"isChecked\",\n isDisabled: \"isDisabled\",\n hasCheckbox: \"hasCheckbox\",\n isExpanded: \"isExpanded\",\n isVisible: \"isVisible\",\n isSelected: \"isSelected\",\n children: \"children\",\n hasChildren: \"hasChildren\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n decls: 2,\n vars: 3,\n consts: [[\"checkbox\", \"\"], [\"class\", \"k-treeview-item\", \"kendoTreeViewItem\", \"\", 3, \"k-hidden\", \"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"loadOnDemand\", \"checkable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"expandable\", \"isExpanded\", \"selectable\", \"isSelected\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"k-treeview-item\", \"kendoTreeViewItem\", \"\", \"role\", \"button\", 3, \"k-treeview-load-more-checkboxes-container\", \"selectable\", \"checkable\", \"expandable\", \"index\", \"parentDataItem\", \"parentIndex\", 4, \"ngIf\"], [\"kendoTreeViewItem\", \"\", 1, \"k-treeview-item\", 3, \"dataItem\", \"index\", \"parentDataItem\", \"parentIndex\", \"loadOnDemand\", \"checkable\", \"isChecked\", \"isDisabled\", \"isVisible\", \"expandable\", \"isExpanded\", \"selectable\", \"isSelected\"], [3, \"ngClass\"], [\"class\", \"k-treeview-toggle\", 3, \"k-disabled\", \"kendoTreeViewLoading\", \"click\", 4, \"ngIf\"], [3, \"disabled\", \"size\", \"checkedState\", \"tabindex\", \"inputAttributes\", \"checkedStateChange\", 4, \"ngIf\"], [\"kendoTreeViewItemContent\", \"\", 1, \"k-treeview-leaf\", 3, \"id\", \"dataItem\", \"index\", \"initialSelection\", \"isSelected\"], [1, \"k-treeview-leaf-text\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [4, \"ngSwitchDefault\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 3, \"size\", \"nodes\", \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"hasCheckbox\", \"disabled\", \"expandDisabledNodes\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"parentIndex\", \"parentDataItem\", \"textField\", \"loadMoreService\", \"trackBy\", \"disableParentNodesOnly\", 4, \"ngIf\"], [1, \"k-treeview-toggle\", 3, \"click\", \"kendoTreeViewLoading\"], [3, \"name\", \"svgIcon\"], [3, \"checkedStateChange\", \"disabled\", \"size\", \"checkedState\", \"tabindex\", \"inputAttributes\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"group\", 3, \"size\", \"nodes\", \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"hasCheckbox\", \"disabled\", \"expandDisabledNodes\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"parentIndex\", \"parentDataItem\", \"textField\", \"loadMoreService\", \"trackBy\", \"disableParentNodesOnly\"], [\"kendoTreeViewItem\", \"\", \"role\", \"button\", 1, \"k-treeview-item\", 3, \"selectable\", \"checkable\", \"expandable\", \"index\", \"parentDataItem\", \"parentIndex\"], [1, \"k-treeview-bot\"], [\"class\", \"k-icon k-i-loading\", 4, \"ngIf\"], [\"kendoTreeViewItemContent\", \"\", 1, \"k-treeview-leaf\", \"k-treeview-load-more-button\", 3, \"index\"], [4, \"ngIf\"], [1, \"k-icon\", \"k-i-loading\"]],\n template: function TreeViewGroupComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TreeViewGroupComponent_li_0_Template, 10, 33, \"li\", 1)(1, TreeViewGroupComponent_li_1_Template, 7, 14, \"li\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.initialNodesLoaded && ctx.moreNodesAvailable);\n }\n },\n dependencies: [TreeViewGroupComponent, NgFor, TreeViewItemDirective, NgClass, NgIf, LoadingIndicatorDirective, IconWrapperComponent, CheckBoxComponent, TreeViewItemContentDirective, NgSwitch, NgSwitchCase, NgTemplateOutlet, NgSwitchDefault],\n encapsulation: 2,\n data: {\n animation: [trigger('toggle', [transition('void => *', [style({\n height: 0\n }), animate('0.1s ease-in', style({\n height: \"*\"\n }))]), transition('* => void', [style({\n height: \"*\"\n }), animate('0.1s ease-in', style({\n height: 0\n }))])])]\n }\n });\n return TreeViewGroupComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TreeViewMessages = /*#__PURE__*/(() => {\n class TreeViewMessages extends ComponentMessages {}\n TreeViewMessages.ɵfac = /* @__PURE__ */(() => {\n let ɵTreeViewMessages_BaseFactory;\n return function TreeViewMessages_Factory(__ngFactoryType__) {\n return (ɵTreeViewMessages_BaseFactory || (ɵTreeViewMessages_BaseFactory = i0.ɵɵgetInheritedFactory(TreeViewMessages)))(__ngFactoryType__ || TreeViewMessages);\n };\n })();\n TreeViewMessages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TreeViewMessages,\n selectors: [[\"kendo-treeview-messages-base\"]],\n inputs: {\n loadMore: \"loadMore\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return TreeViewMessages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedMessagesDirective extends TreeViewMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedMessagesDirective)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n LocalizedMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedMessagesDirective,\n selectors: [[\"\", \"kendoTreeViewLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: TreeViewMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextId = 0;\nconst LOAD_MORE_DOC_LINK$1 = 'https://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\nconst providers = [ExpandStateService, IndexBuilderService, TreeViewLookupService, LoadingNotificationService, NodeChildrenService, NavigationService, SelectionService, DataChangeNotificationService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.treeview'\n}, {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n}, {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => TreeViewComponent)\n}];\n/**\n * Represents the [Kendo UI TreeView component for Angular]({% slug overview_treeview %}).\n *\n */\nlet TreeViewComponent = /*#__PURE__*/(() => {\n class TreeViewComponent {\n constructor(element, changeDetectorRef, expandService, navigationService, nodeChildrenService, selectionService, treeViewLookupService, ngZone, renderer, dataChangeNotification, localization) {\n this.element = element;\n this.changeDetectorRef = changeDetectorRef;\n this.expandService = expandService;\n this.navigationService = navigationService;\n this.nodeChildrenService = nodeChildrenService;\n this.selectionService = selectionService;\n this.treeViewLookupService = treeViewLookupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.dataChangeNotification = dataChangeNotification;\n this.localization = localization;\n /**\n * @hidden\n */\n this.searchIcon = searchIcon;\n this.classNames = true;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.filterInputPlaceholder = \"\";\n /** @hidden */\n this.fetchNodes = () => this.data;\n /**\n * Fires when the children of the expanded node are loaded.\n */\n this.childrenLoaded = new EventEmitter();\n /**\n * Fires when the user blurs the component.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires when the user focuses the component.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires when the user expands a TreeView node.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the user collapses a TreeView node.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires just before the dragging of the node starts ([see example]({% slug draganddrop_treeview %}#toc-setup)). This event is preventable.\n * If you prevent the event default, no drag hint will be created and the subsequent drag-related events will not be fired.\n */\n this.nodeDragStart = new EventEmitter();\n /**\n * Fires when an item is being dragged ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDrag = new EventEmitter();\n /**\n * Emits when the built-in filtering mechanism in the data-binding directives updates the node's visibility.\n * Used for the built-in auto-expand functionalities of the component and available for custom implementations.\n */\n this.filterStateChange = new EventEmitter();\n /**\n * Fires on the target TreeView when a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * This event is preventable. If you prevent the event default (`event.preventDefualt()`) or invalidate its state (`event.setValid(false)`),\n * the `addItem` and `removeItem` events will not be triggered.\n *\n * Both operations cancel the default drop operation, but the indication to the user is different. `event.setValid(false)` indicates that the operation was\n * unsuccessful by animating the drag clue to its original position. `event.preventDefault()` simply removes the clue, as if it has been dropped successfully.\n * As a general rule, use `preventDefault` to manually handle the add and remove operations, and `setValid(false)` to indicate the operation was unsuccessful.\n */\n this.nodeDrop = new EventEmitter();\n /**\n * Fires on the source TreeView after the dragged item has been dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n */\n this.nodeDragEnd = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView where the item is dropped.\n */\n this.addItem = new EventEmitter();\n /**\n * Fires after a dragged item is dropped ([see example]({% slug draganddrop_treeview %}#toc-setup)).\n * Called on the TreeView from where the item is dragged.\n */\n this.removeItem = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node checkbox\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n this.checkedChange = new EventEmitter();\n /**\n * Fires when the user selects a TreeView node\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the user clicks a TreeView node.\n */\n this.nodeClick = new EventEmitter();\n /**\n * Fires when the user double clicks a TreeView node.\n */\n this.nodeDblClick = new EventEmitter();\n /**\n * A function that defines how to track node changes.\n * By default, the TreeView tracks the nodes by data item object reference.\n *\n * @example\n * ```ts\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n *\n * public trackBy(index: number, item: any): any {\n * return item.text;\n * }\n * }\n * ```\n */\n this.trackBy = trackBy;\n /**\n * A function which determines if a specific node is disabled.\n */\n this.isDisabled = isDisabled;\n /**\n * A function which determines if a specific node has a checkbox.\n *\n * > If there is no checkbox for a node, then this node is not checkable and is excluded from any built-in check functionality.\n */\n this.hasCheckbox = hasCheckbox;\n /**\n * A callback which determines whether a TreeView node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isVisible = isVisible;\n /**\n * Determines whether the TreeView keyboard navigable is enabled.\n */\n this.navigable = true;\n /**\n * A function which provides the child nodes for a given parent node\n * ([see example]({% slug databinding_treeview %})).\n */\n this.children = () => of([]);\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the TreeView.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the TreeView manually]({% slug filtering_treeview %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %}) and [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * Sets an initial value of the built-in input element used for filtering.\n */\n this.filter = '';\n /**\n * Indicates whether only parent nodes should be disabled or their child nodes as well\n * @default false\n */\n this.disableParentNodesOnly = false;\n this.checkboxes = false;\n this.expandIcons = false;\n this.selectable = false;\n this.touchActions = true;\n this.data = new BehaviorSubject([]);\n this._animate = true;\n this._size = 'medium';\n this.subscriptions = new Subscription();\n this.domSubscriptions = [];\n this._nextId = nextId;\n validatePackage(packageMetadata);\n nextId++;\n }\n /** @hidden */\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Determines whether the content animation is enabled.\n */\n set animate(value) {\n this._animate = value;\n }\n get animate() {\n return !this._animate;\n }\n /**\n * @hidden\n *\n * Defines the template for each node.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set nodeTemplateRef(template) {\n this._nodeTemplateRef = template;\n }\n get nodeTemplateRef() {\n return this._nodeTemplateRef || this.nodeTemplateQuery;\n }\n /**\n * @hidden\n *\n * Defines the template for each load-more button.\n * Takes precedence over nested templates in the TreeView tag.\n */\n set loadMoreButtonTemplateRef(template) {\n this._loadMoreButtonTemplateRef = template;\n }\n get loadMoreButtonTemplateRef() {\n return this._loadMoreButtonTemplateRef || this.loadMoreButtonTemplateQuery;\n }\n /**\n * The nodes which will be displayed by the TreeView\n * ([see example]({% slug databinding_treeview %})).\n */\n set nodes(value) {\n this.data.next(value || []);\n this.dataChangeNotification.notify();\n }\n get nodes() {\n return this.data.value;\n }\n /**\n * A function which determines if a specific node has child nodes\n * ([see example]({% slug databinding_treeview %})).\n */\n get hasChildren() {\n return this._hasChildren || hasChildren;\n }\n set hasChildren(callback) {\n this._hasChildren = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is checked\n * ([see example]({% slug checkboxes_treeview %}#toc-modifying-the-checked-state)).\n */\n get isChecked() {\n return this._isChecked || isChecked;\n }\n set isChecked(callback) {\n this._isChecked = callback;\n this.checkboxes = Boolean(this._isChecked);\n }\n /**\n * A function which determines if a specific node is expanded.\n */\n get isExpanded() {\n return this._isExpanded || isExpanded;\n }\n set isExpanded(callback) {\n this._isExpanded = callback;\n this.expandIcons = Boolean(this._isExpanded && this._hasChildren);\n }\n /**\n * A function which determines if a specific node is selected\n * ([see example]({% slug selection_treeview %}#toc-modifying-the-selection)).\n */\n get isSelected() {\n return this._isSelected || isSelected;\n }\n set isSelected(callback) {\n this._isSelected = callback;\n this.selectable = Boolean(this._isSelected);\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n */\n set size(size) {\n const newSize = size ? size : 'medium';\n if (this.size !== 'none') {\n this.renderer.removeClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', newSize));\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get isActive() {\n return this.navigationService.isTreeViewActive;\n }\n /**\n * @hidden\n */\n get treeviewId() {\n return `treeview_${this._nextId}`;\n }\n ngOnChanges(changes) {\n this.navigationService.navigable = Boolean(this.navigable);\n // TODO: should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'children', 'hasChildren', 'loadOnDemand'], changes, false) && !this.loadOnDemand) {\n this.preloadChildNodes();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.domSubscriptions.forEach(subscription => subscription());\n }\n ngOnInit() {\n this.subscriptions.add(this.nodeChildrenService.changes.subscribe(x => this.childrenLoaded.emit(x)));\n this.subscriptions.add(this.expandService.changes.subscribe(({\n index,\n dataItem,\n expand\n }) => expand ? this.expand.emit({\n index,\n dataItem\n }) : this.collapse.emit({\n index,\n dataItem\n })));\n this.subscriptions.add(this.navigationService.checks.subscribe(x => this.checkedChange.emit(this.treeViewLookupService.itemLookup(x))));\n this.subscriptions.add(this.selectionService.changes.subscribe(x => {\n if (hasObservers(this.selectionChange)) {\n this.ngZone.run(() => {\n this.selectionChange.emit(x);\n });\n }\n }));\n if (this.element) {\n this.ngZone.runOutsideAngular(() => {\n this.attachDomHandlers();\n });\n }\n if (this.size) {\n this.renderer.addClass(this.element.nativeElement, getSizeClass('treeview', this.size));\n }\n }\n ngAfterViewInit() {\n if (this.searchbox) {\n this.renderer.setAttribute(this.searchbox.input.nativeElement, 'role', 'searchbox');\n this.renderer.setAttribute(this.searchbox.input.nativeElement, 'aria-controls', this.treeviewId);\n this.renderer.setAttribute(this.searchbox.input.nativeElement, 'aria-label', 'searchbar');\n }\n }\n /**\n * Blurs the focused TreeView item.\n */\n blur() {\n if (!isDocumentAvailable()) {\n return;\n }\n const target = focusableNode(this.element);\n if (document.activeElement === target) {\n target.blur();\n }\n }\n /**\n * Focuses the first focusable item in the TreeView component if no hierarchical index is provided.\n *\n * @example\n * ```ts\n * import { Component } from '@angular/core';\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * `\n * })\n * export class AppComponent {\n * public data: any[] = [\n * { text: \"Furniture\" },\n * { text: \"Decor\" }\n * ];\n * }\n * ```\n */\n focus(index) {\n const focusIndex = index || nodeIndex(this.navigationService.focusableItem);\n this.navigationService.activateIndex(focusIndex);\n const target = focusableNode(this.element);\n if (target) {\n target.focus();\n }\n }\n /**\n * Based on the specified index, returns the TreeItemLookup node.\n *\n * @param index - The index of the node.\n * @returns {TreeItemLookup} - The item that was searched (looked up).\n */\n itemLookup(index) {\n return this.treeViewLookupService.itemLookup(index);\n }\n /**\n * Triggers the [`children`]({% slug api_treeview_treeviewcomponent %}#toc-children) function for every expanded node,\n * causing all rendered child nodes to be fetched again.\n */\n rebindChildren() {\n this.dataChangeNotification.notify();\n }\n /**\n * Triggers the `expand` event for the provided node and displays it's loading indicator.\n */\n expandNode(item, index) {\n this.expandService.expand(index, item);\n }\n /**\n * Triggers the `collapse` event for the provided node.\n */\n collapseNode(item, index) {\n this.expandService.collapse(index, item);\n }\n /**\n * Gets the current page size of the checked data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to get its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @returns {number} - The page size of the checked data item children collection.\n */\n getNodePageSize(dataItem) {\n this.verifyLoadMoreService();\n return this.loadMoreService.getGroupSize(dataItem);\n }\n /**\n * Sets the page size of the targeted data item children collection\n * ([see example]({% slug loadmorebutton_treeview %}#toc-managing-page-sizes)).\n *\n * > Since the root nodes collection is not associated with any parent data item, pass `null` as `dataItem` param to target its page size.\n *\n * @param dataItem {any} - The parent data item of the targeted collection.\n * @param pageSize {number} - The new page size.\n */\n setNodePageSize(dataItem, pageSize) {\n this.verifyLoadMoreService();\n this.loadMoreService.setGroupSize(dataItem, pageSize);\n }\n /**\n * @hidden\n *\n * Clears the current TreeViewLookupService node map and re-registers all nodes anew.\n * Child nodes are acquired through the provided `children` callback.\n */\n preloadChildNodes() {\n this.treeViewLookupService.reset();\n this.registerLookupItems(this.nodes);\n }\n attachDomHandlers() {\n const element = this.element.nativeElement;\n this.clickHandler = this.clickHandler.bind(this);\n this.domSubscriptions.push(this.renderer.listen(element, 'contextmenu', this.clickHandler), this.renderer.listen(element, 'click', this.clickHandler), this.renderer.listen(element, 'dblclick', this.clickHandler), this.renderer.listen(element, 'focusin', this.focusHandler.bind(this)), this.renderer.listen(element, 'focusout', this.blurHandler.bind(this)), this.renderer.listen(element, 'keydown', this.keydownHandler.bind(this)));\n }\n focusHandler(e) {\n let focusItem;\n if (match(e.target, '.k-treeview-item')) {\n focusItem = e.target;\n } else if (!isFocusable(e.target)) {\n // with compliments to IE\n focusItem = closestNode(e.target);\n }\n if (focusItem) {\n const nodeIndex = nodeId(e.target);\n if (this.navigationService.isDisabled(nodeIndex)) {\n return;\n }\n this.navigationService.activateIndex(nodeIndex);\n if (!this.isActive && hasObservers(this.onFocus)) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n });\n }\n this.navigationService.isTreeViewActive = true;\n }\n }\n blurHandler(e) {\n if (this.isActive && match(e.target, '.k-treeview-item') && (!e.relatedTarget || !match(e.relatedTarget, '.k-treeview-item') || !hasParent(e.relatedTarget, this.element.nativeElement))) {\n this.navigationService.deactivate();\n this.navigationService.isTreeViewActive = false;\n if (hasObservers(this.onBlur)) {\n this.ngZone.run(() => {\n this.onBlur.emit();\n });\n }\n }\n }\n clickHandler(e) {\n const target = e.target;\n if (e.type === 'contextmenu' && !hasObservers(this.nodeClick) || e.type === 'click' && !hasObservers(this.nodeClick) && !hasObservers(this.selectionChange) && !isLoadMoreButton(target) || e.type === 'dblclick' && !hasObservers(this.nodeDblClick) || isFocusable(target) || !isContent(target) && !isLoadMoreButton(target) || !hasParent(target, this.element.nativeElement)) {\n return;\n }\n const index = nodeId(closestNode(target));\n // the disabled check is probably not needed due to the k-disabled styles\n if (!index || this.navigationService.isDisabled(index)) {\n return;\n }\n this.ngZone.run(() => {\n // record this value before emitting selectionChange (`this.navigationService.selectIndex`), as the treeview state may be changed on its emission\n const lookup = this.treeViewLookupService.itemLookup(index);\n if (e.type === 'click') {\n const loadMoreButton = this.navigationService.model.findNode(index).loadMoreButton;\n if (loadMoreButton) {\n this.navigationService.notifyLoadMore(index);\n return;\n } else {\n this.navigationService.selectIndex(index);\n }\n }\n const emitter = e.type === 'dblclick' ? this.nodeDblClick : this.nodeClick;\n emitter.emit({\n item: lookup.item,\n originalEvent: e,\n type: e.type\n });\n });\n }\n keydownHandler(e) {\n if (this.isActive && this.navigable) {\n this.ngZone.run(() => {\n this.navigationService.move(e);\n });\n }\n }\n verifyLoadMoreService() {\n if (isDevMode() && !isPresent(this.loadMoreService)) {\n throw new Error(`To use the TreeView paging functionality, you need to assign the \\`kendoTreeViewLoadMore\\` directive. See ${LOAD_MORE_DOC_LINK$1}.`);\n }\n }\n registerLookupItems(data, parentItem = null) {\n if (!isPresent(data) || data.length === 0) {\n return;\n }\n const parentIndex = nodeIndex(parentItem);\n const treeItems = data.map((node, index) => buildTreeItem(node, index, parentIndex));\n if (isPresent(parentItem)) {\n this.treeViewLookupService.registerChildren(parentIndex, treeItems);\n }\n treeItems.forEach(item => {\n this.treeViewLookupService.registerItem(item, parentItem);\n if (this.hasChildren(item.dataItem)) {\n this.children(item.dataItem).subscribe(children => this.registerLookupItems(children, item));\n }\n });\n }\n }\n TreeViewComponent.ɵfac = function TreeViewComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TreeViewComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ExpandStateService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(NodeChildrenService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(TreeViewLookupService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(DataChangeNotificationService), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n TreeViewComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TreeViewComponent,\n selectors: [[\"kendo-treeview\"]],\n contentQueries: function TreeViewComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, LoadMoreButtonTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nodeTemplateQuery = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadMoreButtonTemplateQuery = _t.first);\n }\n },\n viewQuery: function TreeViewComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c3, 7, ViewContainerRef);\n i0.ɵɵviewQuery(_c4, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.assetsContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchbox = _t.first);\n }\n },\n hostVars: 4,\n hostBindings: function TreeViewComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@.disabled\", ctx.animate);\n i0.ɵɵattribute(\"dir\", ctx.direction);\n i0.ɵɵclassProp(\"k-treeview\", ctx.classNames);\n }\n },\n inputs: {\n filterInputPlaceholder: \"filterInputPlaceholder\",\n expandDisabledNodes: \"expandDisabledNodes\",\n animate: \"animate\",\n nodeTemplateRef: [0, \"nodeTemplate\", \"nodeTemplateRef\"],\n loadMoreButtonTemplateRef: [0, \"loadMoreButtonTemplate\", \"loadMoreButtonTemplateRef\"],\n trackBy: \"trackBy\",\n nodes: \"nodes\",\n textField: \"textField\",\n hasChildren: \"hasChildren\",\n isChecked: \"isChecked\",\n isDisabled: \"isDisabled\",\n hasCheckbox: \"hasCheckbox\",\n isExpanded: \"isExpanded\",\n isSelected: \"isSelected\",\n isVisible: \"isVisible\",\n navigable: \"navigable\",\n children: \"children\",\n loadOnDemand: \"loadOnDemand\",\n filterable: \"filterable\",\n filter: \"filter\",\n size: \"size\",\n disableParentNodesOnly: \"disableParentNodesOnly\"\n },\n outputs: {\n childrenLoaded: \"childrenLoaded\",\n onBlur: \"blur\",\n onFocus: \"focus\",\n expand: \"expand\",\n collapse: \"collapse\",\n nodeDragStart: \"nodeDragStart\",\n nodeDrag: \"nodeDrag\",\n filterStateChange: \"filterStateChange\",\n nodeDrop: \"nodeDrop\",\n nodeDragEnd: \"nodeDragEnd\",\n addItem: \"addItem\",\n removeItem: \"removeItem\",\n checkedChange: \"checkedChange\",\n selectionChange: \"selectionChange\",\n filterChange: \"filterChange\",\n nodeClick: \"nodeClick\",\n nodeDblClick: \"nodeDblClick\"\n },\n exportAs: [\"kendoTreeView\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 5,\n vars: 24,\n consts: () => {\n let i18n_0;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Load More button\n * @meaning kendo.treeview.loadMore\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_TREEVIEW_FESM2020_PROGRESS_KENDO_ANGULAR_TREEVIEW_MJS_0 = goog.getMsg(\"Load more...\");\n i18n_0 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_TREEVIEW_FESM2020_PROGRESS_KENDO_ANGULAR_TREEVIEW_MJS_0;\n } else {\n i18n_0 = $localize`:kendo.treeview.loadMore|The title of the Load More button:Load more...`;\n }\n return [[\"assetsContainer\", \"\"], [\"searchbox\", \"\"], [\"kendoTreeViewLocalizedMessages\", \"\", \"loadMore\", i18n_0], [\"class\", \"k-treeview-filter\", 4, \"ngIf\"], [\"kendoTreeViewGroup\", \"\", \"role\", \"tree\", 1, \"k-treeview-lines\", 3, \"size\", \"loadOnDemand\", \"checkboxes\", \"expandIcons\", \"selectable\", \"touchActions\", \"children\", \"hasChildren\", \"isChecked\", \"isDisabled\", \"hasCheckbox\", \"disableParentNodesOnly\", \"isExpanded\", \"isSelected\", \"isVisible\", \"nodeTemplateRef\", \"loadMoreButtonTemplateRef\", \"textField\", \"nodes\", \"loadMoreService\", \"trackBy\", \"expandDisabledNodes\"], [1, \"k-treeview-filter\"], [3, \"valueChange\", \"size\", \"value\", \"clearButton\", \"placeholder\"], [\"kendoTextBoxPrefixTemplate\", \"\"], [\"innerCssClass\", \"k-input-icon\", \"name\", \"search\", 3, \"svgIcon\"]];\n },\n template: function TreeViewComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 2);\n i0.ɵɵtemplate(1, TreeViewComponent_span_1_Template, 4, 4, \"span\", 3);\n i0.ɵɵelement(2, \"ul\", 4);\n i0.ɵɵelementContainer(3, null, 0);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.filterable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx.size)(\"loadOnDemand\", ctx.loadOnDemand)(\"checkboxes\", ctx.checkboxes)(\"expandIcons\", ctx.expandIcons)(\"selectable\", ctx.selectable)(\"touchActions\", ctx.touchActions)(\"children\", ctx.children)(\"hasChildren\", ctx.hasChildren)(\"isChecked\", ctx.isChecked)(\"isDisabled\", ctx.isDisabled)(\"hasCheckbox\", ctx.hasCheckbox)(\"disableParentNodesOnly\", ctx.disableParentNodesOnly)(\"isExpanded\", ctx.isExpanded)(\"isSelected\", ctx.isSelected)(\"isVisible\", ctx.isVisible)(\"nodeTemplateRef\", ctx.nodeTemplateRef == null ? null : ctx.nodeTemplateRef.templateRef)(\"loadMoreButtonTemplateRef\", ctx.loadMoreButtonTemplateRef == null ? null : ctx.loadMoreButtonTemplateRef.templateRef)(\"textField\", ctx.textField)(\"nodes\", ctx.fetchNodes)(\"loadMoreService\", ctx.loadMoreService)(\"trackBy\", ctx.trackBy)(\"expandDisabledNodes\", ctx.expandDisabledNodes);\n i0.ɵɵattribute(\"id\", ctx.treeviewId);\n }\n },\n dependencies: [LocalizedMessagesDirective, NgIf, TextBoxComponent, TextBoxPrefixTemplateDirective, IconWrapperComponent, TreeViewGroupComponent],\n encapsulation: 2\n });\n return TreeViewComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst indexChecked = (keys, index) => keys.filter(k => k === index).length > 0;\nconst matchKey = index => k => {\n if (index === k) {\n return true;\n }\n if (!k.split) {\n return false;\n }\n return k.split('_').reduce(({\n key,\n result\n }, part) => {\n key += part;\n if (index === key || result) {\n return {\n result: true\n };\n }\n key += \"_\";\n return {\n key,\n result: false\n };\n }, {\n key: \"\",\n result: false\n }).result;\n};\n/**\n * A directive which manages the in-memory checked state of the TreeView node\n * ([see example]({% slug checkboxes_treeview %})).\n */\nlet CheckDirective = /*#__PURE__*/(() => {\n class CheckDirective {\n constructor(treeView, zone) {\n this.treeView = treeView;\n this.zone = zone;\n /**\n * Fires when the `checkedKeys` collection was updated.\n */\n this.checkedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.checkActions = {\n 'multiple': e => this.checkMultiple(e),\n 'single': e => this.checkSingle(e)\n };\n /**\n * Reflectes the internal `checkedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.checkedChange.subscribe(e => this.check(e)));\n const expandedItems = [];\n this.subscriptions.add(this.treeView.childrenLoaded.pipe(filter(() => this.options.checkChildren && this.treeView.loadOnDemand), tap(item => expandedItems.push(item)), switchMap(() => this.zone.onStable.pipe(take(1)))).subscribe(() => this.addCheckedItemsChildren(expandedItems)));\n this.treeView.isChecked = this.isItemChecked.bind(this);\n }\n /**\n * @hidden\n */\n set isChecked(value) {\n this.treeView.isChecked = value;\n }\n get options() {\n const defaultOptions = {\n checkChildren: true,\n checkParents: true,\n enabled: true,\n mode: \"multiple\",\n uncheckCollapsedChildren: false\n };\n if (!isPresent(this.checkable) || typeof this.checkable === 'string') {\n return defaultOptions;\n }\n const checkSettings = isBoolean(this.checkable) ? {\n enabled: this.checkable\n } : this.checkable;\n return Object.assign(defaultOptions, checkSettings);\n }\n ngOnChanges(changes) {\n if (changes.checkable) {\n this.treeView.checkboxes = this.options.enabled;\n this.toggleCheckOnClick();\n }\n if (isChanged('checkedKeys', changes, false) && changes.checkedKeys.currentValue !== this.lastChange) {\n this.state = new Set(changes.checkedKeys.currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n isItemChecked(dataItem, index) {\n if (!this.checkKey) {\n return this.isIndexChecked(index);\n }\n const hasKey = this.state.has(this.itemKey({\n dataItem,\n index\n }));\n return hasKey ? 'checked' : 'none';\n }\n isIndexChecked(index) {\n const checkedKeys = Array.from(this.state).filter(matchKey(index));\n if (indexChecked(checkedKeys, index)) {\n return 'checked';\n }\n const {\n mode,\n checkParents\n } = this.options;\n if (mode === 'multiple' && checkParents && checkedKeys.length) {\n return 'indeterminate';\n }\n return 'none';\n }\n itemKey(item) {\n if (!isPresent(this.checkKey)) {\n return item.index;\n }\n if (typeof this.checkKey === \"string\" && isPresent(item.dataItem)) {\n return item.dataItem[this.checkKey];\n }\n if (typeof this.checkKey === \"function\") {\n return this.checkKey(item);\n }\n }\n check(e) {\n const {\n enabled,\n mode\n } = this.options;\n const performSelection = this.checkActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n checkSingle(node) {\n const key = this.itemKey(node.item);\n const hasKey = this.state.has(key);\n this.state.clear();\n if (!hasKey) {\n this.state.add(key);\n }\n this.notify();\n }\n checkMultiple(node) {\n this.checkNode(node);\n if (this.options.checkParents) {\n this.checkParents(node.parent);\n }\n this.notify();\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.options.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick.subscribe(args => {\n if (args.type === 'click') {\n const lookup = this.treeView.itemLookup(args.item.index);\n this.check(lookup);\n }\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(node) {\n if (!isPresent(node.item.dataItem) || this.treeView.isDisabled(node.item.dataItem, node.item.index) || !this.treeView.hasCheckbox(node.item.dataItem, node.item.index)) {\n return;\n }\n const currentKey = this.itemKey(node.item);\n if (!isPresent(currentKey)) {\n return;\n }\n const pendingCheck = [currentKey];\n if (this.options.checkChildren) {\n const descendants = fetchLoadedDescendants(node, ({\n item\n }) => this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren ? this.treeView.isVisible(item.dataItem, item.index) : this.treeView.isVisible(item.dataItem, item.index) && !this.treeView.isDisabled(item.dataItem, item.index) && this.treeView.hasCheckbox(item.dataItem, item.index));\n pendingCheck.push(...descendants.filter(item => this.options.checkDisabledChildren || !this.treeView.isDisabled(item.item.dataItem, item.item.index) || this.treeView.hasCheckbox(item.item.dataItem, item.item.index)).map(({\n item\n }) => this.itemKey(item)));\n }\n const shouldCheck = !this.state.has(currentKey);\n pendingCheck.forEach(key => {\n if (shouldCheck) {\n this.state.add(key);\n } else {\n this.state.delete(key);\n if (this.options.uncheckCollapsedChildren && this.options.mode === 'multiple' && this.treeView.loadOnDemand) {\n if (this.checkKey && this.treeView.hasChildren(node.item.dataItem)) {\n this.uncheckChildren(node.item.dataItem, node.item.index);\n return;\n }\n const checkedKeys = Array.from(this.state).filter(matchKey(node.item.index));\n checkedKeys.forEach(key => this.state.delete(key));\n }\n }\n });\n }\n uncheckChildren(dataItem, parentNodeIndex) {\n this.treeView.children(dataItem).subscribe(children => children.forEach((item, index) => {\n const nodeIndex = `${parentNodeIndex}_${index}`;\n this.state.delete(this.itemKey({\n dataItem: item,\n index: nodeIndex\n }));\n if (this.treeView.hasChildren(item)) {\n this.uncheckChildren(item, nodeIndex);\n }\n }));\n }\n checkParents(parent) {\n if (!isPresent(parent)) {\n return;\n }\n let currentParent = parent;\n while (currentParent) {\n const parentKey = this.itemKey(currentParent.item);\n const isDisabled = this.treeView.isDisabled(currentParent.item.dataItem, currentParent.item.index);\n const allChildrenSelected = currentParent.children.every(item => this.state.has(this.itemKey(item)));\n const hasCheckbox = this.treeView.hasCheckbox(currentParent.item.dataItem, currentParent.item.index);\n if (hasCheckbox && (!isDisabled || this.options.checkDisabledChildren) && allChildrenSelected) {\n this.state.add(parentKey);\n } else {\n this.state.delete(parentKey);\n }\n currentParent = currentParent.parent;\n }\n }\n allChildrenSelected(children) {\n return children.every(item => {\n const childrenSel = this.allChildrenSelected(item.children);\n return this.state.has(this.itemKey(item.item)) && childrenSel;\n });\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.checkedKeysChange.emit(this.lastChange);\n }\n addCheckedItemsChildren(lookups) {\n if (!isPresent(lookups) || lookups.length === 0) {\n return;\n }\n const initiallyCheckedItemsCount = this.state.size;\n const disabledItems = new Set();\n lookups.forEach(lookup => {\n const itemKey = this.itemKey(lookup.item);\n if (!this.state.has(itemKey)) {\n return;\n }\n lookup.children.forEach(item => {\n // ensure both the parent item and each child node is enabled\n if (!this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index) && !this.treeView.isDisabled(item.dataItem, item.index) && this.treeView.hasCheckbox(lookup.item.dataItem, lookup.item.index) && this.treeView.hasCheckbox(item.dataItem, item.index) || this.treeView.disableParentNodesOnly || this.options.checkDisabledChildren) {\n this.state.add(this.itemKey(item));\n }\n if (this.treeView.disableParentNodesOnly && !this.options.checkDisabledChildren && (this.treeView.isDisabled(item.dataItem, item.index) || !this.treeView.hasCheckbox(item.dataItem, item.index))) {\n disabledItems.add(this.itemKey(item));\n }\n });\n });\n disabledItems.forEach(item => this.state.delete(item));\n const hasNewlyCheckedItems = initiallyCheckedItemsCount !== this.state.size;\n if (hasNewlyCheckedItems) {\n this.zone.run(() => this.notify());\n }\n }\n }\n CheckDirective.ɵfac = function CheckDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CheckDirective)(i0.ɵɵdirectiveInject(TreeViewComponent), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n CheckDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CheckDirective,\n selectors: [[\"\", \"kendoTreeViewCheckable\", \"\"]],\n inputs: {\n isChecked: \"isChecked\",\n checkKey: [0, \"checkBy\", \"checkKey\"],\n checkedKeys: \"checkedKeys\",\n checkable: [0, \"kendoTreeViewCheckable\", \"checkable\"]\n },\n outputs: {\n checkedKeysChange: \"checkedKeysChange\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return CheckDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which manages the disabled in-memory state of the TreeView node\n * ([see example]({% slug disabledstate_treeview %})).\n */\nlet DisableDirective = /*#__PURE__*/(() => {\n class DisableDirective {\n constructor(treeView, cdr) {\n this.treeView = treeView;\n this.cdr = cdr;\n /**\n * Defines the collection that will store the disabled keys.\n */\n this.disabledKeys = [];\n this.treeView.isDisabled = (dataItem, index) => this.disabledKeys.indexOf(this.itemKey({\n dataItem,\n index\n })) > -1;\n }\n /**\n * @hidden\n */\n set isDisabled(value) {\n this.treeView.isDisabled = value;\n }\n ngOnChanges(changes = {}) {\n const {\n disabledKeys\n } = changes;\n if (disabledKeys && !disabledKeys.firstChange) {\n this.cdr.markForCheck();\n }\n }\n itemKey(e) {\n if (!this.disableKey) {\n return e.index;\n }\n if (typeof this.disableKey === \"string\") {\n return e.dataItem[this.disableKey];\n }\n if (typeof this.disableKey === \"function\") {\n return this.disableKey(e);\n }\n }\n }\n DisableDirective.ɵfac = function DisableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DisableDirective)(i0.ɵɵdirectiveInject(TreeViewComponent), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n DisableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DisableDirective,\n selectors: [[\"\", \"kendoTreeViewDisable\", \"\"]],\n inputs: {\n isDisabled: \"isDisabled\",\n disableKey: [0, \"kendoTreeViewDisable\", \"disableKey\"],\n disabledKeys: \"disabledKeys\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return DisableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which enables the update of the initially provided data array during drag-and-drop.\n *\n * Either use this directive in combination with one of the data binding directives ([`kendoTreeViewHierarchyBinding`]({% slug api_treeview_hierarchybindingdirective %})\n * or [`kendoTreeViewFlatDataBinding`]({% slug api_treeview_flatdatabindingdirective %})) which set their own edit handlers, or provide\n * your own [`editService`]({% slug api_treeview_editservice %}) to this directive. The latter subscribes to and calls the\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * handlers when the corresponding events are triggered by the TreeView component.\n */\nlet DragAndDropEditingDirective = /*#__PURE__*/(() => {\n class DragAndDropEditingDirective {\n constructor(treeview) {\n this.treeview = treeview;\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeview.addItem.subscribe(this.handleAdd.bind(this)));\n this.subscriptions.add(this.treeview.removeItem.subscribe(this.handleRemove.bind(this)));\n }\n /**\n * Specifies the handlers called on drag-and-drop [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem)\n * and [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events.\n */\n set editService(service) {\n this.treeview.editService = service;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleAdd(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.add(args);\n }\n handleRemove(args) {\n if (!isPresent(this.treeview.editService)) {\n throw new Error('No `editService` provided. Either provide your own implementation or use this directive in combination with one of the data binding directives (`kendoTreeViewHierarchyBinding` or `kendoTreeViewFlatDataBinding`).');\n }\n this.treeview.editService.remove(args);\n }\n }\n DragAndDropEditingDirective.ɵfac = function DragAndDropEditingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragAndDropEditingDirective)(i0.ɵɵdirectiveInject(TreeViewComponent));\n };\n DragAndDropEditingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DragAndDropEditingDirective,\n selectors: [[\"\", \"kendoTreeViewDragAndDropEditing\", \"\"]],\n inputs: {\n editService: \"editService\"\n },\n standalone: true\n });\n return DragAndDropEditingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Describes the attempted drop action during dragging.\n * Passed as `action` value to the [`kendoTreeViewDragClueTemplate`]({% slug api_treeview_dragcluetemplatedirective %}) directive.\n * By default, this value defines the rendered icon in the drag clue.\n */\nvar DropAction = /*#__PURE__*/function (DropAction) {\n DropAction[DropAction[\"Add\"] = 0] = \"Add\";\n DropAction[DropAction[\"InsertTop\"] = 1] = \"InsertTop\";\n DropAction[DropAction[\"InsertBottom\"] = 2] = \"InsertBottom\";\n DropAction[DropAction[\"InsertMiddle\"] = 3] = \"InsertMiddle\";\n DropAction[DropAction[\"Invalid\"] = 4] = \"Invalid\";\n return DropAction;\n}(DropAction || {});\n/**\n * Describes where the dragged item is dropped relative to the drop target item.\n */\nvar DropPosition = /*#__PURE__*/function (DropPosition) {\n DropPosition[DropPosition[\"Over\"] = 0] = \"Over\";\n DropPosition[DropPosition[\"Before\"] = 1] = \"Before\";\n DropPosition[DropPosition[\"After\"] = 2] = \"After\";\n return DropPosition;\n}(DropPosition || {});\n/**\n * @hidden\n */\nvar ScrollDirection = /*#__PURE__*/function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Up\"] = -1] = \"Up\";\n ScrollDirection[ScrollDirection[\"Down\"] = 1] = \"Down\";\n return ScrollDirection;\n}(ScrollDirection || {});\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop) event.\n */\nclass TreeItemDropEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer, originalEvent) {\n super();\n /**\n * @hidden\n */\n this.isValid = true;\n Object.assign(this, initializer);\n this.originalEvent = originalEvent;\n }\n /**\n * Specifies if the drop action should be marked as valid.\n * If set to `false`, the [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem) events will not be fired and the drag clue\n * will be animated back to the source item to indicate the action is marked as invalid.\n */\n setValid(isValid) {\n this.isValid = isValid;\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart) event.\n */\nclass TreeItemDragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(initializer) {\n super();\n Object.assign(this, initializer);\n }\n}\n\n/**\n * Arguments for the TreeView [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag) and\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend) events.\n */\nclass TreeItemDragEvent {\n /** @hidden */\n constructor() {}\n}\n\n/**\n * @hidden\n */\nlet DragClueComponent = /*#__PURE__*/(() => {\n class DragClueComponent {\n constructor(cdr) {\n this.cdr = cdr;\n this.hostClasses = true;\n this.posistionStyle = 'fixed';\n }\n get statusIconClass() {\n switch (this.action) {\n case DropAction.Add:\n return 'plus';\n case DropAction.InsertTop:\n return 'insert-top';\n case DropAction.InsertBottom:\n return 'insert-bottom';\n case DropAction.InsertMiddle:\n return 'insert-middle';\n case DropAction.Invalid:\n default:\n return 'cancel';\n }\n }\n get statusSVGIcon() {\n switch (this.action) {\n case DropAction.Add:\n return plusIcon;\n case DropAction.InsertTop:\n return insertTopIcon;\n case DropAction.InsertBottom:\n return insertBottomIcon;\n case DropAction.InsertMiddle:\n return insertMiddleIcon;\n case DropAction.Invalid:\n default:\n return cancelIcon;\n }\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.cdr.detectChanges();\n }\n }\n DragClueComponent.ɵfac = function DragClueComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragClueComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n DragClueComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DragClueComponent,\n selectors: [[\"kendo-treeview-drag-clue\"]],\n hostVars: 6,\n hostBindings: function DragClueComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"position\", ctx.posistionStyle);\n i0.ɵɵclassProp(\"k-header\", ctx.hostClasses)(\"k-drag-clue\", ctx.hostClasses);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 2,\n consts: [[4, \"ngIf\"], [\"innerCssClass\", \"k-drag-status\", 3, \"name\", \"svgIcon\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function DragClueComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DragClueComponent_ng_container_0_Template, 4, 3, \"ng-container\", 0)(1, DragClueComponent_1_Template, 1, 7, null, 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.template);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n return DragClueComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DragAndDropAssetService = /*#__PURE__*/(() => {\n class DragAndDropAssetService {\n get componentRef() {\n if (!isPresent(this._componentRef)) {\n throw new Error('The `initalize` method must be called before calling other service methods.');\n }\n return this._componentRef;\n }\n set componentRef(componentRef) {\n this._componentRef = componentRef;\n }\n get element() {\n return this.componentRef.location.nativeElement;\n }\n ngOnDestroy() {\n if (!isPresent(this._componentRef)) {\n return;\n }\n this.element.parentElement.removeChild(this.element);\n this.componentRef.destroy();\n this.componentRef = null;\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n move(left, top, offset = 0) {\n this.element.style.left = `${left + offset}px`;\n this.element.style.top = `${top + offset}px`;\n }\n }\n DragAndDropAssetService.ɵfac = function DragAndDropAssetService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragAndDropAssetService)();\n };\n DragAndDropAssetService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DragAndDropAssetService,\n factory: DragAndDropAssetService.ɵfac\n });\n return DragAndDropAssetService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Checks if the browser supports relative stacking context.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\nconst hasRelativeStackingContext = memoize(() => {\n if (!(isDocumentAvailable() && isPresent(document.body))) {\n return false;\n }\n const top = 10;\n const parent = document.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n const innerDiv = document.createElement('div');\n innerDiv.innerText = 'child';\n innerDiv.style.position = 'fixed';\n innerDiv.style.top = `${top}px`;\n parent.appendChild(innerDiv);\n document.body.appendChild(parent);\n const isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n});\n/**\n * Stores the result of the passed function's first invokation and returns it instead of invoking it again afterwards.\n */\nfunction memoize(fn) {\n let result;\n let called = false;\n return (...args) => {\n if (called) {\n return result;\n }\n result = fn(...args);\n called = true;\n return result;\n };\n}\n/**\n * @hidden\n *\n * Gets the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the `fixed` children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n *\n * If no parent container is `transform`-ed the function will return `{ left: 0, top: 0 }`;\n */\nconst getContainerOffset = element => {\n if (!(element && hasRelativeStackingContext())) {\n return {\n left: 0,\n top: 0\n };\n }\n let offsetParent = element.parentElement;\n while (offsetParent) {\n if (window.getComputedStyle(offsetParent).transform !== 'none') {\n break;\n }\n offsetParent = offsetParent.parentElement;\n }\n if (offsetParent) {\n const rect = offsetParent.getBoundingClientRect();\n return {\n left: rect.left - offsetParent.scrollLeft,\n top: rect.top - offsetParent.scrollTop\n };\n }\n return {\n left: 0,\n top: 0\n };\n};\n/**\n * @hidden\n */\nconst getDropAction = (dropPosition, dropTarget) => {\n if (!(isPresent(dropPosition) && isPresent(dropTarget))) {\n return DropAction.Invalid;\n }\n switch (dropPosition) {\n case DropPosition.Over:\n return DropAction.Add;\n case DropPosition.Before:\n return isPresent(closestNode(dropTarget).previousElementSibling) ? DropAction.InsertMiddle : DropAction.InsertTop;\n case DropPosition.After:\n return isPresent(closestNode(dropTarget).nextElementSibling) ? DropAction.InsertMiddle : DropAction.InsertBottom;\n default:\n return DropAction.Invalid;\n }\n};\n/**\n * @hidden\n */\nconst getDropPosition = (draggedItem, target, clientY, targetTreeView, containerOffset) => {\n if (!(isPresent(draggedItem) && isPresent(target) && isPresent(targetTreeView) && isPresent(containerOffset))) {\n return;\n }\n // the .k-treeview-mid element starts just after the checkbox/expand arrow and stretches till the end of the treeview on the right\n const item = closestWithMatch(target, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n if (!isPresent(item)) {\n return;\n }\n // the content element (.k-treeview-leaf:not(.k-treeview-load-more-button)) holds just the treeview item text\n const content = getContentElement(item);\n const targetChildOfDraggedItem = hasParent(item, closestNode(draggedItem));\n if (!isPresent(content) || content === draggedItem || targetChildOfDraggedItem) {\n return;\n }\n const itemViewPortCoords = content.getBoundingClientRect();\n /*\n if the user is hovering a treeview item, split the item height into four parts:\n - dropping into the top quarter should insert the dragged item before the drop target\n - dropping into the bottom quarter should insert the dragged item after the drop target\n - dropping into the second or third quarter should add the item as child node of the drop target\n if the user is NOT hovering a treeview item (he's dragging somewhere on the right), split the item height to just two parts:\n - dropping should insert before or after\n */\n const itemDivisionHeight = itemViewPortCoords.height / (isContent(target) ? 4 : 2);\n // clear any possible container offset created by parent elements with `transform` css property set\n const pointerPosition = clientY - containerOffset.top;\n const itemTop = itemViewPortCoords.top - containerOffset.top;\n if (pointerPosition < itemTop + itemDivisionHeight) {\n return DropPosition.Before;\n }\n if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {\n return DropPosition.After;\n }\n return DropPosition.Over;\n};\n/**\n * @hidden\n */\nconst treeItemFromEventTarget = (treeView, dropTarget) => {\n if (!(isPresent(treeView) && isPresent(dropTarget))) {\n return null;\n }\n const node = closestNode(dropTarget);\n const index = nodeId(node);\n const lookup = treeView.itemLookup(index);\n if (!(isPresent(lookup) && isPresent(lookup.item.dataItem))) {\n return null;\n }\n return lookup;\n};\n/**\n * @hidden\n *\n * Emits `collapse` on the specified TreeView node if the latter is left empty after its last child node was dragged out.\n */\nconst collapseEmptyParent = (parent, parentNodes, treeview) => {\n if (isPresent(parent) && parentNodes.length === 0 && treeview.isExpanded(parent.item.dataItem, parent.item.index)) {\n treeview.collapseNode(parent.item.dataItem, parent.item.index);\n }\n};\n/**\n * @hidden\n *\n * Expands the node if it's dropped into and it's not yet expanded.\n */\nconst expandDropTarget = (dropTarget, treeView) => {\n if (!treeView.isExpanded(dropTarget.item.dataItem, dropTarget.item.index)) {\n treeView.expandNode(dropTarget.item.dataItem, dropTarget.item.index);\n }\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = event => {\n if (!(isDocumentAvailable() && isPresent(document.elementFromPoint))) {\n return event.target;\n }\n return document.elementFromPoint(event.clientX, event.clientY);\n};\n/**\n * @hidden\n *\n * Checks if the original index is before the new one and corrects the new one by decrementing the index for the level, where the original item stood.\n */\nconst updateMovedItemIndex = (newIndex, originalIndex) => {\n const movedItemNewIndexParts = newIndex.split('_');\n const originalItemIndexParts = originalIndex.split('_');\n // if the original item was moved from a deeper level, there's no need for index correction\n // e.g. 4_0_1 is moved to 5_0 => removing 4_0_1 will not cause 5_0 to be moved\n if (movedItemNewIndexParts.length < originalItemIndexParts.length) {\n return newIndex;\n }\n // check if the parent item paths are the same - index correction is not required when the original item path differs from the path of the moved item - they belong to different hierarchies\n // e.g. 4_1 is moved to 5_1 - the parent item paths are differen (4 compared to 5) => removing 4_1 will not cause 5_1 to be moved\n // e.g 4_1 is moved to 4_3 - the parent paths are the same (both 4) => removing 4_1 will cause 4_3 to be moved\n const originalItemParentPathLength = originalItemIndexParts.length - 1;\n const originalItemParentPath = originalItemIndexParts.slice(0, originalItemParentPathLength).join('_');\n const movedItemParentPath = movedItemNewIndexParts.slice(0, originalItemParentPathLength).join('_');\n // check if the the index of the level where the original item is taken from is greater than the one of the moved item\n // e.g. 4_5 is moved to 4_1 (comapre 5 and 1) => removing 4_5 will not cause 4_1 to be moved\n // e.g. 4_1 is moved to 4_5 (comapre 1 and 5) => removing 4_1 will cause 4_5 to be moved\n const originalItemIndexLevel = originalItemIndexParts.length - 1;\n const originalItemLevelIndex = Number(originalItemIndexParts[originalItemIndexLevel]);\n const movedItemLevelIndex = Number(movedItemNewIndexParts[originalItemIndexLevel]);\n if (originalItemParentPath === movedItemParentPath && movedItemLevelIndex > originalItemLevelIndex) {\n // if the removed item causes the dropped item to be moved a position up - decrement the index at that level\n movedItemNewIndexParts[originalItemIndexLevel] = String(movedItemLevelIndex - 1);\n return movedItemNewIndexParts.join('_');\n }\n return newIndex;\n};\n/**\n * @hidden\n */\nconst SCROLLBAR_REG_EXP = new RegExp('(auto|scroll)');\n/**\n * @hidden\n *\n * Retrives the first scrollable element starting the search from the provided one, traversing to the top of the DOM tree.\n */\nconst getScrollableContainer = node => {\n while (isPresent(node) && node.nodeName !== 'HTML') {\n const hasOverflow = node.scrollHeight > node.clientHeight;\n const hasScrollbar = SCROLLBAR_REG_EXP.test(getComputedStyle(node).overflowY);\n if (hasOverflow && hasScrollbar) {\n return node;\n }\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n *\n * Checks if the top of the scrollable element is reached.\n * Floors the scrollTop value.\n */\nconst isTopReached = element => Math.floor(element.scrollTop) <= 0;\n/**\n * @hidden\n *\n * Checks if the bottom of the scrollable element is reached.\n * Ceils the scrollTop value.\n */\nconst isBottomReached = element => Math.ceil(element.scrollTop) >= element.scrollHeight - element.clientHeight;\n/**\n * @hidden\n *\n * Scrolls the element in the given direction by the provided step.\n *\n * If the targeted scroll incrementation doesn't yield any result due to device pixel ratio issues (https://github.com/dimitar-pechev/RenderingIndependentScrollOffsets#readme),\n * increments the step with 1px and again attempts to change the scrollTop of the element, until the content is actually scrolled.\n *\n * Cuts the operation short after 20 unsuccessful attempts to prevent infinite loops in possible corner-case scenarios.\n */\nconst scrollElementBy = (element, step, direction) => {\n if (!(isPresent(element) && isDocumentAvailable())) {\n return;\n }\n const initialScrollTop = element.scrollTop;\n let currentStep = step;\n let iterations = 0;\n while (initialScrollTop === element.scrollTop && !(direction === ScrollDirection.Up && isTopReached(element)) && !(direction === ScrollDirection.Down && isBottomReached(element)) && iterations < 20 // as the bulgarian saying goes - to ties our underpants\n ) {\n element.scrollTop += currentStep * direction;\n currentStep += 1;\n iterations += 1;\n }\n};\n\n/**\n * @hidden\n */\nconst CLUE_OFFSET = 10;\n/**\n * @hidden\n */\nconst RETURN_ANIMATION_DURATION = 200;\n/**\n * @hidden\n */\nlet DragClueService = /*#__PURE__*/(() => {\n class DragClueService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const clueComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DragClueComponent);\n this.componentRef = container.createComponent(clueComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n ngOnDestroy() {\n this.cancelReturnAnimation();\n this.cancelScroll();\n super.ngOnDestroy();\n }\n move(left, top) {\n super.move(left, top, CLUE_OFFSET);\n }\n animateDragClueToElementPosition(target) {\n if (!(isPresent(target) && isPresent(this.element.animate))) {\n this.hide();\n return;\n }\n const targetElementViewPortCoords = target.getBoundingClientRect();\n const clueElementViewPortCoords = this.element.getBoundingClientRect();\n this.returnAnimation = this.element.animate([{\n transform: 'translate(0, 0)'\n }, {\n transform: `translate(${targetElementViewPortCoords.left - clueElementViewPortCoords.left}px, ${targetElementViewPortCoords.top - clueElementViewPortCoords.top}px)`\n }], RETURN_ANIMATION_DURATION);\n this.returnAnimation.onfinish = () => this.hide();\n }\n cancelReturnAnimation() {\n if (!isPresent(this.returnAnimation)) {\n return;\n }\n this.returnAnimation.cancel();\n this.returnAnimation = null;\n }\n updateDragClueData(action, sourceItem, destinationItem) {\n const dragClue = this.componentRef.instance;\n if (action === dragClue.action && dataItemsEqual(sourceItem, dragClue.sourceItem) && dataItemsEqual(destinationItem, dragClue.destinationItem)) {\n return;\n }\n dragClue.action = action;\n dragClue.sourceItem = sourceItem;\n dragClue.destinationItem = destinationItem;\n dragClue.detectChanges();\n }\n updateText(text) {\n if (text === this.componentRef.instance.text) {\n return;\n }\n this.componentRef.instance.text = text;\n this.componentRef.instance.detectChanges();\n }\n /**\n * Triggers the first scrollable parent to scroll upwards or downwards.\n * Uses setInterval, so should be called outside the angular zone.\n */\n scrollIntoView({\n step,\n interval\n }) {\n this.cancelScroll();\n const scrollableContainer = getScrollableContainer(this.element);\n if (!isPresent(scrollableContainer)) {\n return;\n }\n const containerRect = scrollableContainer.getBoundingClientRect();\n const clueRect = this.element.getBoundingClientRect();\n // if the beginning of the scrollable container is above the current viewport, fall-back to 0\n const firstVisibleClientTopPart = Math.max(containerRect.top, 0);\n // start scrolling up when the first visible item is dragged over\n const topLimit = firstVisibleClientTopPart + clueRect.height;\n // if the end of the scrollable container is beneath the current viewport, fall-back to its client height\n // add the distance from the start of the viewport to the beginning of the container to ensure scrolling bottom begins when the actual end of the container is reached\n const bottomLimit = firstVisibleClientTopPart + Math.min(containerRect.bottom, scrollableContainer.clientHeight);\n if (clueRect.top < topLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Up), interval);\n } else if (clueRect.bottom > bottomLimit) {\n this.scrollInterval = setInterval(() => scrollElementBy(scrollableContainer, step, ScrollDirection.Down), interval);\n }\n }\n /**\n * Cancels out the on-going scroll animation, if present.\n */\n cancelScroll() {\n if (isPresent(this.scrollInterval)) {\n clearInterval(this.scrollInterval);\n this.scrollInterval = null;\n }\n }\n }\n DragClueService.ɵfac = function DragClueService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragClueService)(i0.ɵɵinject(i0.ComponentFactoryResolver));\n };\n DragClueService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DragClueService,\n factory: DragClueService.ɵfac\n });\n return DragClueService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DropHintComponent = /*#__PURE__*/(() => {\n class DropHintComponent {\n constructor(changeDetectorRef) {\n this.changeDetectorRef = changeDetectorRef;\n this.hostClass = true;\n this.position = 'fixed';\n this.pointerEvents = 'none';\n }\n // exposed as a public method that can be called from outside as the component uses `OnPush` strategy\n detectChanges() {\n this.changeDetectorRef.detectChanges();\n }\n }\n DropHintComponent.ɵfac = function DropHintComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropHintComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n DropHintComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DropHintComponent,\n selectors: [[\"kendo-treeview-drop-hint\"]],\n hostVars: 6,\n hostBindings: function DropHintComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"position\", ctx.position)(\"pointer-events\", ctx.pointerEvents);\n i0.ɵɵclassProp(\"k-drop-hint-container\", ctx.hostClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 2,\n consts: [[\"class\", \"k-drop-hint k-drop-hint-h\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-drop-hint\", \"k-drop-hint-h\"], [1, \"k-drop-hint-start\"], [1, \"k-drop-hint-line\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function DropHintComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropHintComponent_div_0_Template, 3, 0, \"div\", 0)(1, DropHintComponent_1_Template, 1, 6, null, 1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.template);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n return DropHintComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DropHintService = /*#__PURE__*/(() => {\n class DropHintService extends DragAndDropAssetService {\n constructor(componentFactoryResolver) {\n super();\n this.componentFactoryResolver = componentFactoryResolver;\n }\n initialize(container, template) {\n if (isPresent(this._componentRef)) {\n this.ngOnDestroy();\n }\n const hintComponentFactory = this.componentFactoryResolver.resolveComponentFactory(DropHintComponent);\n this.componentRef = container.createComponent(hintComponentFactory);\n this.hide();\n this.componentRef.instance.template = template;\n this.componentRef.changeDetectorRef.detectChanges();\n }\n updateDropHintData(action, sourceItem, destinationItem) {\n const dropHint = this.componentRef.instance;\n if (action === dropHint.action && dataItemsEqual(sourceItem, dropHint.sourceItem) && dataItemsEqual(destinationItem, dropHint.destinationItem)) {\n return;\n }\n dropHint.action = action;\n dropHint.sourceItem = sourceItem;\n dropHint.destinationItem = destinationItem;\n dropHint.detectChanges();\n }\n }\n DropHintService.ɵfac = function DropHintService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropHintService)(i0.ɵɵinject(i0.ComponentFactoryResolver));\n };\n DropHintService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DropHintService,\n factory: DropHintService.ɵfac\n });\n return DropHintService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the template for the TreeView drag clue when an item is dragged. To define the clue template,\n * nest an `` tag with the `kendoTreeViewDragClueTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n *\n * The text, attempted drop action, source item and destination item are available as context variables in the template:\n *\n *\n * - `let-text=\"text\"` (`string`)\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nlet DragClueTemplateDirective = /*#__PURE__*/(() => {\n class DragClueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n DragClueTemplateDirective.ɵfac = function DragClueTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragClueTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n DragClueTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DragClueTemplateDirective,\n selectors: [[\"\", \"kendoTreeViewDragClueTemplate\", \"\"]],\n standalone: true\n });\n return DragClueTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the template for the TreeView drop hint when an item is dragged. To define the hint template,\n * nest an `` tag with the `kendoTreeViewDropHintTemplate` directive inside a `` tag\n * ([see example]({% slug draganddrop_treeview %}#toc-templates)).\n *\n * The attempted drop action, source item and destination item are available as context variables in the template:\n *\n * - `let-action=\"action\"` ([`DropAction`]({% slug api_treeview_dropaction %}))\n * - `let-sourceItem=\"sourceItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n * - `let-destinationItem=\"destinationItem\"` ([`TreeItemLookup`]({% slug api_treeview_treeitemlookup %}))\n */\nlet DropHintTemplateDirective = /*#__PURE__*/(() => {\n class DropHintTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n DropHintTemplateDirective.ɵfac = function DropHintTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropHintTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n DropHintTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DropHintTemplateDirective,\n selectors: [[\"\", \"kendoTreeViewDropHintTemplate\", \"\"]],\n standalone: true\n });\n return DropHintTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_SCROLL_SETTINGS = {\n enabled: true,\n step: 1,\n interval: 1\n};\n/**\n * A directive which enables the dragging and dropping items inside the current TreeView or between multiple linked TreeView component instances\n * ([see example]({% slug draganddrop_treeview %})).\n *\n * Triggers the [`nodeDragStart`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragstart),\n * [`nodeDrag`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrag),\n * [`nodeDrop`]({% slug api_treeview_treeviewcomponent %}#toc-nodedrop),\n * [`nodeDragEnd`]({% slug api_treeview_treeviewcomponent %}#toc-nodedragend),\n * [`addItem`]({% slug api_treeview_treeviewcomponent %}#toc-additem) and\n * [`removeItem`]({% slug api_treeview_treeviewcomponent %}#toc-removeitem)\n * events when the corresponding actions occur on the respective TreeView instance.\n */\nlet DragAndDropDirective = /*#__PURE__*/(() => {\n class DragAndDropDirective {\n constructor(element, zone, treeview, dragClueService, dropHintService) {\n this.element = element;\n this.zone = zone;\n this.treeview = treeview;\n this.dragClueService = dragClueService;\n this.dropHintService = dropHintService;\n /**\n * Specifies whether the `removeItem` event will be fired after an item is dropped when the `ctrl` key is pressed.\n * If enabled, the `removeItem` event will not be fired on the source TreeView\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n *\n * @default false\n */\n this.allowCopy = false;\n /**\n * Specifes the TreeViewComponent instances into which dragged items from the current TreeViewComponent can be dropped\n * ([see example]({% slug draganddrop_treeview %}#toc-multiple-treeviews)).\n */\n this.dropZoneTreeViews = [];\n /**\n * Specifies the distance in pixels from the initial item pointerdown event, before the dragging is initiated.\n * The `nodeDragStart` and all consequent TreeView drag events will not be fired until the actual dragging begins.\n *\n * @default 5\n */\n this.startDragAfter = 5;\n /**\n * Controlls the auto-scrolling behavior during drag-and-drop ([see example]({% slug draganddrop_treeview %}#toc-auto-scrolling)).\n * Enbaled by default. To turn the auto-scrolling off, set this prop to `false`.\n *\n * By default, the scrolling will be performed by 1 pixel at every 1 millisecond, when the dragged item reaches the top or the bottom of the scrollable container.\n * The `step` and `interval` can be overridden by providing a `DragAndDropScrollSettings` object to this prop.\n *\n * @default true\n */\n this.autoScroll = true;\n /**\n * @hidden\n */\n this.userSelectStyle = 'none';\n /**\n * Describes the offset of the parent element if the latter has the `transform` CSS prop applied.\n * Transformed parents create new stacking context and the fixed children must be position based on the transformed parent.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context\n */\n this.containerOffset = {\n top: 0,\n left: 0\n };\n this.treeview.touchActions = false;\n }\n get scrollSettings() {\n const userProvidedSettings = typeof this.autoScroll === 'boolean' ? {\n enabled: this.autoScroll\n } : this.autoScroll;\n return Object.assign({}, DEFAULT_SCROLL_SETTINGS, userProvidedSettings);\n }\n ngAfterContentInit() {\n this.initalizeDraggable();\n this.dragClueService.initialize(this.treeview.assetsContainer, this.dragClueTemplate && this.dragClueTemplate.templateRef);\n this.dropHintService.initialize(this.treeview.assetsContainer, this.dropHintTemplate && this.dropHintTemplate.templateRef);\n }\n ngOnDestroy() {\n this.draggable.destroy();\n }\n /**\n * @hidden\n */\n handlePress({\n originalEvent\n }) {\n if (!isContent(originalEvent.target)) {\n return;\n }\n // store the drag target on press, show it only when it's actually dragged\n this.draggedItem = closestWithMatch(originalEvent.target, '.k-treeview-leaf');\n // record the current pointer down coords - copared to the `startDragAfter` value to calculate whether to initiate dragging\n this.pendingDragStartEvent = originalEvent;\n }\n /**\n * @hidden\n */\n handleDrag({\n originalEvent,\n clientX,\n clientY\n }) {\n if (this.shouldInitiateDragStart({\n clientX,\n clientY\n })) {\n this.initiateDragStart();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n if (hasObservers(this.treeview.nodeDrag)) {\n this.zone.run(() => this.notifyDrag(originalEvent, dropTarget));\n }\n const targetTreeView = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, targetTreeView, this.containerOffset);\n const dropHintAnchor = closestWithMatch(dropTarget, '.k-treeview-top, .k-treeview-mid, .k-treeview-bot');\n const dropAction = getDropAction(dropPosition, dropTarget);\n const sourceItem = treeItemFromEventTarget(this.treeview, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(targetTreeView, dropTarget);\n this.updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem);\n this.updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem);\n if (this.scrollSettings.enabled) {\n this.dragClueService.scrollIntoView(this.scrollSettings);\n }\n }\n /**\n * @hidden\n */\n handleRelease({\n originalEvent,\n clientY\n }) {\n if (this.scrollSettings.enabled) {\n this.dragClueService.cancelScroll();\n }\n if (!isPresent(this.draggedItem) || isPresent(this.pendingDragStartEvent)) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n const dropTarget = getDropTarget(originalEvent);\n const sourceTree = this.treeview;\n const destinationTree = this.getTargetTreeView(dropTarget);\n const dropPosition = getDropPosition(this.draggedItem, dropTarget, clientY, this.getTargetTreeView(dropTarget), this.containerOffset);\n const sourceItem = treeItemFromEventTarget(sourceTree, this.draggedItem);\n const destinationItem = treeItemFromEventTarget(destinationTree, dropTarget);\n if (isPresent(destinationItem) && isPresent(dropPosition)) {\n this.zone.run(() => this.notifyDrop({\n sourceItem,\n destinationItem,\n dropPosition,\n sourceTree,\n destinationTree\n }, originalEvent));\n } else {\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n if (hasObservers(this.treeview.nodeDragEnd)) {\n this.zone.run(() => this.notifyDragEnd({\n sourceItem,\n destinationItem,\n originalEvent\n }));\n }\n this.dropHintService.hide();\n this.draggedItem = null;\n }\n updateDropHintState(dropPosition, dropHintAnchor, dropAction, sourceItem, destinationItem) {\n if (!isPresent(dropHintAnchor) || dropPosition === DropPosition.Over || !isPresent(dropPosition)) {\n this.dropHintService.hide();\n return;\n }\n const anchorViewPortCoords = dropHintAnchor.getBoundingClientRect();\n const insertBefore = dropPosition === DropPosition.Before;\n const top = insertBefore ? anchorViewPortCoords.top : anchorViewPortCoords.top + anchorViewPortCoords.height;\n this.dropHintService.updateDropHintData(dropAction, sourceItem, destinationItem);\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dropHintService.move(anchorViewPortCoords.left - this.containerOffset.left, top - this.containerOffset.top);\n this.dropHintService.show();\n }\n updateDragClueState(dropAction, clientX, clientY, sourceItem, destinationItem) {\n // clear any possible container offset created by parent elements with `transform` css property set\n this.dragClueService.move(clientX - this.containerOffset.left, clientY - this.containerOffset.top);\n this.dragClueService.updateDragClueData(dropAction, sourceItem, destinationItem);\n this.dragClueService.show();\n }\n initalizeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.element.nativeElement));\n }\n notifyDragStart(originalEvent, dropTarget) {\n const sourceItem = treeItemFromEventTarget(this.treeview, dropTarget);\n const event = new TreeItemDragStartEvent({\n sourceItem,\n originalEvent\n });\n this.treeview.nodeDragStart.emit(event);\n return event;\n }\n notifyDrag(originalEvent, dropTarget) {\n const dragEvent = {\n sourceItem: treeItemFromEventTarget(this.treeview, this.draggedItem),\n destinationItem: treeItemFromEventTarget(this.getTargetTreeView(dropTarget), dropTarget),\n originalEvent\n };\n this.treeview.nodeDrag.emit(dragEvent);\n }\n notifyDrop(args, originalEvent) {\n const event = new TreeItemDropEvent(args, originalEvent);\n args.destinationTree.nodeDrop.emit(event);\n // disable the animations on drop and restore them afterwards (if they were initially turned on)\n this.disableAnimationsForNextTick(args.destinationTree);\n if (args.sourceTree !== args.destinationTree) {\n this.disableAnimationsForNextTick(args.sourceTree);\n }\n if (!event.isDefaultPrevented() && event.isValid) {\n this.dragClueService.hide();\n // order matters in a flat data binding scenario (first add, then remove)\n args.destinationTree.addItem.emit(args);\n if (!(originalEvent.ctrlKey && this.allowCopy)) {\n args.sourceTree.removeItem.emit(args);\n }\n } else if (event.isDefaultPrevented()) {\n // directly hide the clue if the default is prevented\n this.dragClueService.hide();\n } else if (!event.isValid) {\n // animate the clue back to the source item position if marked as invalid\n this.dragClueService.animateDragClueToElementPosition(this.draggedItem);\n }\n }\n notifyDragEnd(dragEndEvent) {\n this.treeview.nodeDragEnd.emit(dragEndEvent);\n }\n getTargetTreeView(dropTarget) {\n const treeViewTagName = this.treeview.element.nativeElement.tagName;\n const targetTreeView = closestWithMatch(dropTarget, treeViewTagName);\n return [this.treeview, ...this.dropZoneTreeViews].find(treeView => isPresent(treeView) && treeView.element.nativeElement === targetTreeView);\n }\n disableAnimationsForNextTick(treeView) {\n // the treeView.animate getter returns `true` when the animations are turned off\n // confusing, but seems on purpose (the `animate` prop sets the value of the @.disabled host-bound attribute)\n if (treeView.animate) {\n return;\n }\n treeView.animate = false;\n this.zone.runOutsideAngular(() => setTimeout(() => treeView.animate = true));\n }\n shouldInitiateDragStart(currentPointerCoords) {\n if (!isPresent(this.pendingDragStartEvent)) {\n return false;\n }\n const distanceFromPointerDown = Math.sqrt(Math.pow(this.pendingDragStartEvent.clientX - currentPointerCoords.clientX, 2) + Math.pow(this.pendingDragStartEvent.clientY - currentPointerCoords.clientY, 2));\n return distanceFromPointerDown >= this.startDragAfter;\n }\n initiateDragStart() {\n if (hasObservers(this.treeview.nodeDragStart)) {\n const dragStartEvent = this.zone.run(() => this.notifyDragStart(this.pendingDragStartEvent, getDropTarget(this.pendingDragStartEvent)));\n if (dragStartEvent.isDefaultPrevented()) {\n this.pendingDragStartEvent = null;\n this.draggedItem = null;\n return;\n }\n }\n this.dragClueService.cancelReturnAnimation();\n this.dragClueService.updateText(this.draggedItem.innerText);\n this.containerOffset = getContainerOffset(this.draggedItem);\n this.pendingDragStartEvent = null;\n }\n }\n DragAndDropDirective.ɵfac = function DragAndDropDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragAndDropDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(TreeViewComponent), i0.ɵɵdirectiveInject(DragClueService), i0.ɵɵdirectiveInject(DropHintService));\n };\n DragAndDropDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DragAndDropDirective,\n selectors: [[\"\", \"kendoTreeViewDragAndDrop\", \"\"]],\n contentQueries: function DragAndDropDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DragClueTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DropHintTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dragClueTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropHintTemplate = _t.first);\n }\n },\n hostVars: 8,\n hostBindings: function DragAndDropDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"user-select\", ctx.userSelectStyle)(\"-ms-user-select\", ctx.userSelectStyle)(\"-moz-user-select\", ctx.userSelectStyle)(\"-webkit-user-select\", ctx.userSelectStyle);\n }\n },\n inputs: {\n allowCopy: \"allowCopy\",\n dropZoneTreeViews: \"dropZoneTreeViews\",\n startDragAfter: \"startDragAfter\",\n autoScroll: \"autoScroll\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([DragClueService, DropHintService])]\n });\n return DragAndDropDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_FILTER_EXPAND_SETTINGS = {\n maxAutoExpandResults: -1,\n expandMatches: false,\n expandedOnClear: \"none\"\n};\n/**\n * A directive which manages the expanded state of the TreeView.\n * ([see example]({% slug expandedstate_treeview %})).\n */\nlet ExpandDirective = /*#__PURE__*/(() => {\n class ExpandDirective {\n constructor(component) {\n this.component = component;\n /**\n * Whether or not to auto-expand the nodes leading from the root node to each filter result.\n * To fine-tune this behavior, pass a [`FilterExpandSettings`]({% slug api_treeview_filterexpandsettings %}) object to this input.\n * @default false\n */\n this.expandOnFilter = false;\n /**\n * Fires when the `expandedKeys` collection was updated.\n */\n this.expandedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n /**\n * Reflectes the internal `expandedKeys` state.\n */\n this.state = new Set();\n this.originalExpandedKeys = new Set();\n this.isFiltered = false;\n /**\n * Fills array with the correct expand keys according to wrapper metadata.\n */\n this.updateExpandedNodes = (collection, node, autoExpandMatches) => {\n if (node.containsMatches || node.isMatch && autoExpandMatches && isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({\n dataItem: node.dataItem,\n index: node.index\n }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.updateExpandedNodes(collection, child, autoExpandMatches);\n });\n }\n };\n /**\n * Fills array with the expand key of every node.\n */\n this.getEveryExpandKey = (collection, node) => {\n if (isArrayWithAtLeastOneItem(node.children)) {\n collection.push(this.itemKey({\n dataItem: node.dataItem,\n index: node.index\n }));\n }\n if (isArrayWithAtLeastOneItem(node.children)) {\n node.children.forEach(child => {\n this.getEveryExpandKey(collection, child);\n });\n }\n };\n this.subscriptions.add(merge(this.component.expand.pipe(map(e => ({\n expand: true,\n ...e\n }))), this.component.collapse.pipe(map(e => ({\n expand: false,\n ...e\n })))).subscribe(this.toggleExpand.bind(this)));\n if (this.component.filterStateChange) {\n this.subscriptions.add(this.component.filterStateChange.subscribe(this.handleAutoExpand.bind(this)));\n }\n this.component.isExpanded = (dataItem, index) => this.state.has(this.itemKey({\n dataItem,\n index\n }));\n }\n /**\n * @hidden\n */\n set isExpanded(value) {\n this.component.isExpanded = value;\n }\n get filterExpandSettings() {\n const settings = isBoolean(this.expandOnFilter) ? {\n enabled: this.expandOnFilter\n } : {\n ...this.expandOnFilter,\n enabled: true\n };\n return Object.assign({}, DEFAULT_FILTER_EXPAND_SETTINGS, settings);\n }\n ngOnChanges(changes) {\n if (isChanged('expandedKeys', changes, false) && changes['expandedKeys'].currentValue !== this.lastChange) {\n this.state = new Set(changes['expandedKeys'].currentValue);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n itemKey(e) {\n if (this.expandKey) {\n if (typeof this.expandKey === \"string\") {\n return e.dataItem[this.expandKey];\n }\n if (typeof this.expandKey === \"function\") {\n return this.expandKey(e);\n }\n }\n return e.index;\n }\n toggleExpand({\n index,\n dataItem,\n expand\n }) {\n const key = this.itemKey({\n index,\n dataItem\n });\n const isExpanded = this.state.has(key);\n let notify = false;\n if (isExpanded && !expand) {\n this.state.delete(key);\n notify = true;\n } else if (!isExpanded && expand) {\n this.state.add(key);\n notify = true;\n }\n if (notify) {\n this.notify();\n }\n }\n handleAutoExpand({\n nodes,\n matchCount,\n term\n }) {\n if (!this.filterExpandSettings.enabled) {\n return;\n }\n const {\n maxAutoExpandResults,\n expandMatches: autoExpandMatches,\n expandedOnClear\n } = this.filterExpandSettings;\n if (!this.isFiltered) {\n this.originalExpandedKeys = new Set(this.state);\n }\n const exitingFilteredState = this.isFiltered && !term;\n const maxExceeded = maxAutoExpandResults !== -1 && matchCount > maxAutoExpandResults;\n const exitAutoExpandedState = exitingFilteredState || maxExceeded;\n if (exitAutoExpandedState) {\n switch (expandedOnClear) {\n case \"initial\":\n {\n if (!sameValues(this.state, this.originalExpandedKeys)) {\n this.state = this.originalExpandedKeys;\n this.notify();\n }\n break;\n }\n case \"all\":\n {\n this.state = new Set(nodes.reduce((acc, rootNode) => {\n this.getEveryExpandKey(acc, rootNode);\n return acc;\n }, []));\n this.notify();\n break;\n }\n case \"unchanged\":\n {\n break;\n }\n case \"none\":\n default:\n {\n if (this.state.size !== 0) {\n this.state.clear();\n this.notify();\n }\n break;\n }\n }\n this.isFiltered = false;\n return;\n }\n const indicesToExpand = new Set(nodes.reduce((acc, rootNode) => {\n this.updateExpandedNodes(acc, rootNode, autoExpandMatches);\n return acc;\n }, []));\n if (!sameValues(this.state, indicesToExpand)) {\n this.state = indicesToExpand;\n this.notify();\n }\n this.isFiltered = true;\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.expandedKeysChange.emit(this.lastChange);\n }\n }\n ExpandDirective.ɵfac = function ExpandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpandDirective)(i0.ɵɵdirectiveInject(ExpandableComponent));\n };\n ExpandDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ExpandDirective,\n selectors: [[\"\", \"kendoTreeViewExpandable\", \"\"]],\n inputs: {\n isExpanded: \"isExpanded\",\n expandKey: [0, \"expandBy\", \"expandKey\"],\n expandOnFilter: \"expandOnFilter\",\n expandedKeys: \"expandedKeys\"\n },\n outputs: {\n expandedKeysChange: \"expandedKeysChange\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return ExpandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions must have a unary.\n */\nconst compose = (...args) => data => args.reduceRight((acc, curr) => curr(acc), data);\n\n/**\n * @hidden\n */\nconst copyPageSize = (treeview, source, target) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const sourceGroupSize = treeview.getNodePageSize(source);\n treeview.setNodePageSize(target, sourceGroupSize);\n};\n/**\n * @hidden\n */\nconst incrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize + 1);\n};\n/**\n * @hidden\n */\nconst decrementPageSize = (treeview, dataItem) => {\n if (!isPresent(treeview.loadMoreService)) {\n return;\n }\n const currentPageSize = treeview.getNodePageSize(dataItem);\n treeview.setNodePageSize(dataItem, currentPageSize - 1);\n};\n\n/**\n * @hidden\n */\nclass FlatEditingService {\n constructor(flatBinding) {\n this.flatBinding = flatBinding;\n }\n add({\n sourceItem,\n destinationItem,\n dropPosition,\n sourceTree,\n destinationTree\n }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationItemId = getter(this.flatBinding.idField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemId);\n const lastChildNodeIndex = this.getLastVisibleChildNodeIndex(destinationTree, this.flatBinding.originalData, getDataItem(destinationItem));\n // insert after the last visible child\n const targetIndex = lastChildNodeIndex + 1;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const focusTarget = this.fetchChildNodes(getDataItem(destinationItem), destinationTree).indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, focusTarget);\n } else {\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = this.flatBinding.originalData.indexOf(getDataItem(destinationItem)) + shiftIndex;\n this.flatBinding.originalData.splice(targetIndex, 0, clonedSourceDataItem);\n const destinationItemParentId = getter(this.flatBinding.parentIdField)(getDataItem(destinationItem));\n setter(this.flatBinding.parentIdField)(clonedSourceDataItem, destinationItemParentId);\n // rebind the treeview data before searching for the focus target index\n this.rebindData();\n const parentIndex = destinationItem.parent ? destinationItem.parent.item.index : null;\n const parentContainer = destinationItem.parent ? this.fetchChildNodes(getDataItem(destinationItem.parent), destinationTree) : destinationTree.nodes;\n const focusTarget = parentContainer.indexOf(clonedSourceDataItem);\n this.movedItemNewIndex = buildTreeIndex(parentIndex, focusTarget);\n }\n if (sourceTree !== destinationTree) {\n this.addChildNodes(clonedSourceDataItem, sourceTree);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({\n sourceItem,\n sourceTree,\n destinationTree\n }) {\n const sourceDataItem = getDataItem(sourceItem);\n const sourceItemIndex = this.flatBinding.originalData.indexOf(sourceDataItem);\n this.flatBinding.originalData.splice(sourceItemIndex, 1);\n if (sourceTree !== destinationTree) {\n this.removeChildNodes(sourceDataItem, sourceTree);\n }\n this.rebindData();\n // emit collapse for the parent node if its last child node was spliced\n const parentChildren = sourceItem.parent ? sourceItem.parent.children : [];\n collapseEmptyParent(sourceItem.parent, parentChildren, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n addChildNodes(dataItem, source) {\n const itemChildren = this.fetchAllDescendantNodes(dataItem, source);\n this.flatBinding.originalData.push(...itemChildren);\n }\n removeChildNodes(dataItem, source) {\n const sourceChildren = this.fetchAllDescendantNodes(dataItem, source);\n sourceChildren.forEach(item => {\n const index = this.flatBinding.originalData.indexOf(item);\n this.flatBinding.originalData.splice(index, 1);\n });\n }\n fetchAllDescendantNodes(node, treeview) {\n let nodes = this.fetchChildNodes(node, treeview);\n nodes.forEach(node => nodes = nodes.concat(this.fetchAllDescendantNodes(node, treeview) || []));\n return nodes;\n }\n fetchChildNodes(node, treeview) {\n if (!node) {\n return [];\n }\n let nodes = [];\n treeview.children(node).pipe(take(1)).subscribe(children => nodes = nodes.concat(children || []));\n return nodes;\n }\n getLastVisibleChildNodeIndex(treeview, data, node) {\n if (!isPresent(treeview.loadMoreService) || !treeview.hasChildren(node)) {\n return data.length;\n }\n const visibleNodesCount = treeview.loadMoreService.getGroupSize(node);\n const visibleChildren = this.fetchChildNodes(node, treeview).slice(0, visibleNodesCount);\n const lastNode = visibleChildren[visibleChildren.length - 1];\n const lastNodeIndex = data.indexOf(lastNode);\n return lastNodeIndex;\n }\n rebindData() {\n this.flatBinding.nodes = this.flatBinding.originalData;\n this.flatBinding.updateNodes(this.flatBinding.originalData);\n }\n}\n\n/**\n * @hidden\n */\nconst DEFAULT_FILTER_SETTINGS = {\n operator: 'contains',\n ignoreCase: true,\n mode: \"lenient\"\n};\n\n/**\n * @hidden\n */\nlet FilteringBase = /*#__PURE__*/(() => {\n class FilteringBase {\n constructor(component) {\n this.component = component;\n this.visibleNodes = new Set();\n this._filterSettings = DEFAULT_FILTER_SETTINGS;\n }\n /**\n * The settings which are applied when performing a filter on the component's data.\n */\n set filterSettings(settings) {\n this._filterSettings = {\n ...DEFAULT_FILTER_SETTINGS,\n ...settings\n };\n }\n get filterSettings() {\n return this._filterSettings;\n }\n /**\n * Applies a filter and changes the visibility of the component's nodes accordingly.\n */\n set filter(term) {\n this.handleFilterChange(term);\n }\n /**\n * @hidden\n */\n handleFilterChange(term) {\n if (!this.filterData) {\n return;\n }\n this.resetNodesVisibility(this.filterData);\n if (term) {\n filterTree(this.filterData, term, this.filterSettings, this.component.textField);\n }\n this.updateVisibleNodes(this.filterData);\n if (isPresent(this.component.filterStateChange)) {\n this.component.filterStateChange.emit({\n nodes: this.filterData,\n matchCount: this.visibleNodes.size,\n term,\n filterSettings: this.filterSettings\n });\n }\n }\n updateVisibleNodes(items) {\n items.forEach(wrapper => {\n if (wrapper.visible) {\n this.visibleNodes.add(wrapper.dataItem);\n }\n if (wrapper.children) {\n this.updateVisibleNodes(wrapper.children);\n }\n });\n }\n resetNodesVisibility(items) {\n this.visibleNodes.clear();\n items.forEach(wrapper => {\n wrapper.visible = true;\n if (wrapper.children) {\n this.resetNodesVisibility(wrapper.children);\n }\n });\n }\n }\n FilteringBase.ɵfac = function FilteringBase_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilteringBase)(i0.ɵɵdirectiveInject(DataBoundComponent));\n };\n FilteringBase.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilteringBase,\n inputs: {\n filterSettings: \"filterSettings\",\n filter: \"filter\"\n }\n });\n return FilteringBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst findChildren = (prop, nodes, value) => nodes.filter(x => prop(x) === value);\nconst indexBuilder$1 = new IndexBuilderService();\nconst mapToTree = (currentLevelNodes, allNodes, parentIdField, idField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder$1.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToTree(findChildren(getter(parentIdField), allNodes || [], getter(idField)(node)), allNodes, parentIdField, idField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes.\n */\nlet FlatDataBindingDirective = /*#__PURE__*/(() => {\n class FlatDataBindingDirective extends FilteringBase {\n constructor(component) {\n super(component);\n this.component = component;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n /**\n * @hidden\n */\n this.originalData = [];\n this.component.isVisible = node => this.visibleNodes.has(node);\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (isPresent(this.parentIdField) && isPresent(this.idField)) {\n const fetchChildren = node => findChildren(getter(this.parentIdField), this.originalData || [], getter(this.idField)(node));\n this.component.hasChildren = node => fetchChildren(node).length > 0;\n this.component.children = node => of(fetchChildren(node));\n this.component.editService = new FlatEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (isChanged('parentIdField', changes, false)) {\n this.nodes = this.originalData;\n this.updateNodes(this.originalData);\n }\n if (isChanged('nodes', changes, false)) {\n this.updateNodes(changes['nodes'].currentValue);\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n /**\n * @hidden\n */\n updateNodes(values) {\n this.originalData = values || [];\n if (!isNullOrEmptyString(this.parentIdField)) {\n const prop = getter(this.parentIdField);\n this.component.nodes = this.originalData.filter(compose(isBlank, prop));\n this.filterData = mapToTree(this.component.nodes, this.originalData, this.parentIdField, this.idField);\n this.updateVisibleNodes(this.filterData);\n } else {\n this.component.nodes = this.originalData.slice(0);\n }\n }\n }\n FlatDataBindingDirective.ɵfac = function FlatDataBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FlatDataBindingDirective)(i0.ɵɵdirectiveInject(DataBoundComponent));\n };\n FlatDataBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FlatDataBindingDirective,\n selectors: [[\"\", \"kendoTreeViewFlatDataBinding\", \"\"]],\n inputs: {\n nodes: \"nodes\",\n parentIdField: \"parentIdField\",\n idField: \"idField\",\n loadOnDemand: \"loadOnDemand\",\n isVisible: \"isVisible\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return FlatDataBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass HierarchyEditingService {\n constructor(hierarchyBinding) {\n this.hierarchyBinding = hierarchyBinding;\n }\n add({\n sourceItem,\n destinationItem,\n dropPosition,\n sourceTree,\n destinationTree\n }) {\n // shallow clone the item as not to mistake it for its 'older' version when the remove handler kicks in to splice the item at its old position\n const clonedSourceDataItem = Object.assign({}, getDataItem(sourceItem));\n if (dropPosition === DropPosition.Over) {\n // expand the item that was dropped into\n expandDropTarget(destinationItem, destinationTree);\n const destinationChildren = this.childrenFor(getDataItem(destinationItem));\n // add the moved node just before the load more button if load more is enabled\n const targetIndex = isPresent(destinationTree.loadMoreService) ? Math.min(destinationTree.loadMoreService.getGroupSize(getDataItem(destinationItem)), destinationChildren.length) :\n // the page size might be greater than the actual children array length\n destinationChildren.length;\n destinationChildren.splice(targetIndex, 0, clonedSourceDataItem);\n setter(this.hierarchyBinding.childrenField)(getDataItem(destinationItem), destinationChildren);\n this.movedItemNewIndex = buildTreeIndex(destinationItem.item.index, targetIndex);\n } else {\n const destinationParentNodes = this.getParentNodes(destinationItem, destinationTree);\n const shiftIndex = dropPosition === DropPosition.After ? 1 : 0;\n const targetIndex = destinationParentNodes.indexOf(getDataItem(destinationItem)) + shiftIndex;\n destinationParentNodes.splice(targetIndex, 0, clonedSourceDataItem);\n const parentIndex = destinationItem.parent ? destinationItem.parent.item.index : null;\n this.movedItemNewIndex = buildTreeIndex(parentIndex, targetIndex);\n }\n // increment the parent page size => an item is moved into it\n const updatedParent = dropPosition === DropPosition.Over ? getDataItem(destinationItem) : getDataItem(destinationItem.parent);\n incrementPageSize(destinationTree, updatedParent);\n // the page sizes are stored by data-item reference => copy the old item ref page size to the new item reference\n copyPageSize(destinationTree, getDataItem(sourceItem), clonedSourceDataItem);\n // the source tree nodes are reloaded on `removeItem` - reload the destination tree nodes if the soruce and the destination tree are different\n if (sourceTree !== destinationTree && !destinationTree.loadOnDemand) {\n destinationTree.preloadChildNodes();\n }\n // if the source and destination trees are the same, focusing the moved item here will not have the desired effect\n // as the `remove` handler has not yet kicked-in to remove the item from its old position\n if (sourceTree !== destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n destinationTree.focus(this.movedItemNewIndex);\n }\n }\n remove({\n sourceItem,\n sourceTree,\n destinationTree\n }) {\n const sourceParentNodes = this.getParentNodes(sourceItem, sourceTree);\n const sourceItemIndex = sourceParentNodes.indexOf(getDataItem(sourceItem));\n sourceParentNodes.splice(sourceItemIndex, 1);\n // emit collapse for the parent node if its last child node was spliced\n collapseEmptyParent(sourceItem.parent, sourceParentNodes, sourceTree);\n // decrement source item parent page size => an item has been removed from it\n decrementPageSize(sourceTree, getDataItem(sourceItem.parent));\n // reload the treeview nodes\n if (!sourceTree.loadOnDemand) {\n sourceTree.preloadChildNodes();\n }\n // if the source and destination trees are different we want to focus only the moved item in the destination tree\n if (sourceTree === destinationTree) {\n // ensure the focus target is rendered and registered\n destinationTree.changeDetectorRef.detectChanges();\n // after the source item is removed from its original position, the candidate index might have to be corrected\n const index = updateMovedItemIndex(this.movedItemNewIndex, sourceItem.item.index);\n destinationTree.focus(index);\n }\n }\n getParentNodes(node, treeView) {\n return isPresent(node.parent) ? this.childrenFor(getDataItem(node.parent)) : treeView.nodes;\n }\n childrenFor(dataItem) {\n return getter(this.hierarchyBinding.childrenField)(dataItem) || [];\n }\n}\nconst indexBuilder = new IndexBuilderService();\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = indexBuilder.nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of child nodes.\n */\nlet HierarchyBindingDirective = /*#__PURE__*/(() => {\n class HierarchyBindingDirective extends FilteringBase {\n constructor(component, dragAndDropDirective) {\n super(component);\n this.component = component;\n this.dragAndDropDirective = dragAndDropDirective;\n /**\n * @hidden\n */\n this.loadOnDemand = true;\n this.originalData = [];\n const shouldFilter = !isPresent(this.dragAndDropDirective);\n this.component.isVisible = shouldFilter ? node => this.visibleNodes.has(node) : isVisible;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n set childrenField(value) {\n if (!value) {\n throw new Error(\"'childrenField' cannot be empty\");\n }\n this._childrenField = value;\n }\n /**\n * The field name which holds the data items of the child component.\n */\n get childrenField() {\n return this._childrenField;\n }\n /**\n * @hidden\n * A callback which determines whether a TreeView node should be rendered as hidden.\n */\n set isVisible(fn) {\n this.component.isVisible = fn;\n }\n ngOnInit() {\n if (isPresent(this.childrenField)) {\n this.component.children = item => of(getter(this.childrenField)(item));\n this.component.hasChildren = item => {\n const children = getter(this.childrenField)(item);\n return Boolean(children && children.length);\n };\n this.component.editService = new HierarchyEditingService(this);\n this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n if (this.component.filter) {\n this.handleFilterChange(this.component.filter);\n }\n if (!this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n }\n ngOnChanges(changes) {\n if (isChanged('childrenField', changes, false)) {\n this.nodes = this.originalData;\n this.updateNodes(this.originalData);\n }\n if (isChanged('nodes', changes, false)) {\n this.updateNodes(changes['nodes'].currentValue);\n }\n // should react to changes.loadOnDemand as well - should preload the data or clear the already cached items\n if (anyChanged(['nodes', 'loadOnDemand'], changes) && !this.loadOnDemand && isPresent(this.component.preloadChildNodes)) {\n this.component.preloadChildNodes();\n }\n }\n /**\n * @hidden\n */\n updateNodes(values) {\n this.originalData = values || [];\n this.filterData = mapToWrappers(values, this.childrenField) || [];\n this.updateVisibleNodes(this.filterData);\n }\n }\n HierarchyBindingDirective.ɵfac = function HierarchyBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HierarchyBindingDirective)(i0.ɵɵdirectiveInject(DataBoundComponent), i0.ɵɵdirectiveInject(DragAndDropDirective, 9));\n };\n HierarchyBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: HierarchyBindingDirective,\n selectors: [[\"\", \"kendoTreeViewHierarchyBinding\", \"\"]],\n inputs: {\n childrenField: \"childrenField\",\n nodes: \"nodes\",\n isVisible: \"isVisible\",\n loadOnDemand: \"loadOnDemand\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return HierarchyBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst LOAD_MORE_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/treeview/load-more-button/';\n/**\n * A directive that enables the display of only a limited amount of nodes per level\n * ([see example]({% slug loadmorebutton_treeview %})).\n */\nlet LoadMoreDirective = /*#__PURE__*/(() => {\n class LoadMoreDirective {\n constructor(treeview) {\n this.treeview = treeview;\n /**\n * Keeps track of the current page size of each node over expand/collapse cycles.\n */\n this.pageSizes = new Map();\n /**\n * Used as an identifier for the root page size as the root collection of nodes is not associated with a data item.\n */\n this.rootLevelId = guid();\n this.treeview.loadMoreService = {\n getInitialPageSize: this.getInitalPageSize.bind(this),\n getGroupSize: this.getGroupSize.bind(this),\n setGroupSize: this.setGroupSize.bind(this),\n getTotalNodesCount: this.getTotalNodesCount.bind(this)\n };\n }\n /**\n * Specifies the callback that will be called when the load more button is clicked.\n * Providing a function is only required when additional nodes are fetched on demand\n * ([see example]({% slug loadmorebutton_treeview %}#toc-remote-data)).\n */\n set loadMoreNodes(loadMoreNodes) {\n if (typeof loadMoreNodes === 'string') {\n return;\n }\n this.treeview.loadMoreService.loadMoreNodes = loadMoreNodes;\n }\n ngOnChanges() {\n this.verifySettings();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.pageSize)) {\n throw new Error(`To use the TreeView \\`kendoTreeViewLoadMore\\` directive, you need to assign a \\`pageSize\\` value. See ${LOAD_MORE_DOC_LINK}.`);\n }\n const loadMoreNodes = this.treeview.loadMoreService.loadMoreNodes;\n if (isPresent(loadMoreNodes) && typeof loadMoreNodes !== 'function') {\n throw new Error(`The passed value to the \\`kendoTreeViewLoadMore\\` directive must be a function that retrieves additional nodes. See ${LOAD_MORE_DOC_LINK}.`);\n }\n if (isPresent(loadMoreNodes) && !isPresent(this.totalField)) {\n throw new Error(`When a function to fetch additional nodes is provided to the \\`kendoTreeViewLoadMore\\` directive, the \\`totalField\\` and \\`totalRootNodes\\` values must also be provided. See ${LOAD_MORE_DOC_LINK}.`);\n }\n }\n getGroupSize(dataItem) {\n const itemKey = dataItem || this.rootLevelId;\n return this.pageSizes.has(itemKey) ? this.pageSizes.get(itemKey) : this.pageSize;\n }\n setGroupSize(dataItem, pageSize) {\n const itemKey = dataItem || this.rootLevelId;\n const normalizedSizeValue = pageSize > 0 ? pageSize : 0;\n this.pageSizes.set(itemKey, normalizedSizeValue);\n }\n getTotalNodesCount(dataItem, loadedNodesCount) {\n if (isPresent(dataItem) && isPresent(this.totalField)) {\n return dataItem[this.totalField];\n } else if (!isPresent(dataItem) && isPresent(this.totalRootNodes)) {\n return this.totalRootNodes;\n } else {\n return loadedNodesCount;\n }\n }\n getInitalPageSize() {\n return this.pageSize;\n }\n }\n LoadMoreDirective.ɵfac = function LoadMoreDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LoadMoreDirective)(i0.ɵɵdirectiveInject(TreeViewComponent));\n };\n LoadMoreDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LoadMoreDirective,\n selectors: [[\"\", \"kendoTreeViewLoadMore\", \"\"]],\n inputs: {\n loadMoreNodes: [0, \"kendoTreeViewLoadMore\", \"loadMoreNodes\"],\n pageSize: \"pageSize\",\n totalRootNodes: \"totalRootNodes\",\n totalField: \"totalField\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return LoadMoreDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Custom component messages override default component messages\n */\nlet CustomMessagesComponent = /*#__PURE__*/(() => {\n class CustomMessagesComponent extends TreeViewMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n CustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CustomMessagesComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n CustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CustomMessagesComponent,\n selectors: [[\"kendo-treeview-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: TreeViewMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function CustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return CustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which manages the in-memory selection state of the TreeView node\n * ([see example]({% slug selection_treeview %})).\n */\nlet SelectDirective = /*#__PURE__*/(() => {\n class SelectDirective {\n constructor(treeView, navigationService) {\n this.treeView = treeView;\n this.navigationService = navigationService;\n /**\n * Fires when the `selectedKeys` collection was updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.subscriptions = new Subscription();\n this.selectActions = {\n 'multiple': e => this.selectMultiple(e),\n 'single': e => this.selectSingle(e)\n };\n /**\n * Reflectes the internal `selectedKeys` state.\n */\n this.state = new Set();\n this.subscriptions.add(this.treeView.selectionChange.subscribe(this.select.bind(this)));\n this.treeView.isSelected = (dataItem, index) => this.state.has(this.itemKey({\n dataItem,\n index\n }));\n this.navigationService.deselectAllButCurrentItem.subscribe(node => {\n this.selectSingle(node);\n });\n }\n /**\n * @hidden\n */\n set isSelected(value) {\n this.treeView.isSelected = value;\n }\n get getAriaMultiselectable() {\n return this.options.mode === 'multiple';\n }\n get options() {\n const defaultOptions = {\n enabled: true,\n mode: 'single'\n };\n if (!isPresent(this.selection) || typeof this.selection === 'string') {\n return defaultOptions;\n }\n const selectionSettings = isBoolean(this.selection) ? {\n enabled: this.selection\n } : this.selection;\n return Object.assign(defaultOptions, selectionSettings);\n }\n ngOnChanges(changes) {\n if (isChanged('selectedKeys', changes, false) && changes['selectedKeys'].currentValue !== this.lastChange) {\n this.state = new Set(changes['selectedKeys'].currentValue);\n }\n const isSelectionBooleanTrue = typeof this.selection === 'boolean' && this.selection;\n this.navigationService.selection = isSelectionBooleanTrue ? 'single' : this.selection?.mode;\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n itemKey(e) {\n if (!this.selectKey) {\n return e.index;\n }\n if (typeof this.selectKey === 'string') {\n return e.dataItem[this.selectKey];\n }\n if (typeof this.selectKey === 'function') {\n return this.selectKey(e);\n }\n }\n select(e) {\n const {\n enabled,\n mode\n } = this.options;\n const performSelection = this.selectActions[mode] || noop;\n if (!enabled) {\n return;\n }\n performSelection(e);\n }\n selectSingle(node) {\n const key = this.itemKey(node);\n if (!this.state.has(key)) {\n this.state.clear();\n this.state.add(key);\n this.notify();\n }\n }\n selectMultiple(node) {\n const key = this.itemKey(node);\n const isSelected = this.state.has(key);\n if (!isPresent(key)) {\n return;\n }\n if (isSelected) {\n this.state.delete(key);\n } else {\n this.state.add(key);\n }\n this.notify();\n }\n notify() {\n this.lastChange = Array.from(this.state);\n this.selectedKeysChange.emit(this.lastChange);\n }\n }\n SelectDirective.ɵfac = function SelectDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectDirective)(i0.ɵɵdirectiveInject(TreeViewComponent), i0.ɵɵdirectiveInject(NavigationService));\n };\n SelectDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectDirective,\n selectors: [[\"\", \"kendoTreeViewSelectable\", \"\"]],\n hostVars: 1,\n hostBindings: function SelectDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-multiselectable\", ctx.getAriaMultiselectable);\n }\n },\n inputs: {\n isSelected: \"isSelected\",\n selectKey: [0, \"selectBy\", \"selectKey\"],\n selection: [0, \"kendoTreeViewSelectable\", \"selection\"],\n selectedKeys: \"selectedKeys\"\n },\n outputs: {\n selectedKeysChange: \"selectedKeysChange\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return SelectDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Utility array that contains all `@progress/kendo-angular-treeview` related components and directives\n */\nconst KENDO_TREEVIEW = [TreeViewComponent, NodeTemplateDirective, CheckDirective, DisableDirective, ExpandDirective, SelectDirective, HierarchyBindingDirective, FlatDataBindingDirective, DragAndDropDirective, DragClueTemplateDirective, DropHintTemplateDirective, DragAndDropEditingDirective, LoadMoreDirective, LoadMoreButtonTemplateDirective, CustomMessagesComponent];\n\n//IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi']) definition for the TreeView component.\n */\nlet TreeViewModule = /*#__PURE__*/(() => {\n class TreeViewModule {}\n TreeViewModule.ɵfac = function TreeViewModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TreeViewModule)();\n };\n TreeViewModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: TreeViewModule\n });\n TreeViewModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService],\n imports: [TreeViewComponent, CustomMessagesComponent]\n });\n return TreeViewModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CheckDirective, CustomMessagesComponent, DataBoundComponent, DisableDirective, DragAndDropDirective, DragAndDropEditingDirective, DragClueService, DragClueTemplateDirective, DropAction, DropHintService, DropHintTemplateDirective, DropPosition, ExpandDirective, ExpandableComponent, FlatDataBindingDirective, HierarchyBindingDirective, KENDO_TREEVIEW, LoadMoreButtonTemplateDirective, LoadMoreDirective, LocalizedMessagesDirective, NodeTemplateDirective, SelectDirective, TreeItemDragEvent, TreeItemDragStartEvent, TreeItemDropEvent, TreeViewComponent, TreeViewModule };","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Component, Input, HostBinding, Output, Directive, Injectable, HostListener, ViewChildren, ViewChild, forwardRef, isDevMode, ViewContainerRef, ContentChild, ContentChildren, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i10 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, isObjectPresent, removeHTMLAttributes, parseAttributes, isSafari, Keys, setHTMLAttributes, EventsOutsideAngularDirective, isChanged, TemplateContextDirective, ResizeSensorComponent, closest as closest$1, isControlRequired, hasObservers, KendoInput, SuffixTemplateDirective, PrefixTemplateDirective, SeparatorComponent, MultiTabStop, anyChanged, guid as guid$1, ResizeBatchService, AdornmentsModule, ResizeSensorModule, EventsModule } from '@progress/kendo-angular-common';\nconst _c0 = [\"kendoSearchbar\", \"\"];\nconst _c1 = [\"content\"];\nconst _c2 = [\"list\"];\nconst _c3 = [\"virtualContainer\"];\nconst _c4 = (a0, a1, a2) => ({\n \"height.px\": a0,\n \"minHeight.px\": a1,\n \"boxSizing\": a2\n});\nconst _c5 = (a0, a1) => ({\n templateRef: a0,\n $implicit: a1\n});\nconst _c6 = (a0, a1) => ({\n \"k-disabled\": a0,\n \"k-table-alt-row\": a1\n});\nfunction ListComponent_div_0_1_ng_template_0_Template(rf, ctx) {}\nfunction ListComponent_div_0_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_div_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r1.fixedGroupTemplate.templateRef, ctx_r1.currentGroup));\n }\n}\nfunction ListComponent_div_0_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.listGroupStickyHeaderTextClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.currentGroup);\n }\n}\nfunction ListComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 10);\n i0.ɵɵtemplate(1, ListComponent_div_0_1_Template, 1, 4, null, 7)(2, ListComponent_div_0_ng_template_2_Template, 2, 3, \"ng-template\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.listGroupStickyHeaderClass);\n i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction3(5, _c4, ctx_r1.virtual == null ? null : ctx_r1.virtual.itemHeight, ctx_r1.virtual == null ? null : ctx_r1.virtual.itemHeight, ctx_r1.virtual ? \"border-box\" : \"inherit\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.fixedGroupTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.fixedGroupTemplate);\n }\n}\nfunction ListComponent_5_ng_template_0_input_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"input\", 16);\n i0.ɵɵlistener(\"change\", function ListComponent_5_ng_template_0_input_1_Template_input_change_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const itemIndex_r4 = i0.ɵɵnextContext().index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onCheckedChange($event, itemIndex_r4));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const itemIndex_r4 = i0.ɵɵnextContext().index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngClass\", ctx_r1.checkboxClasses)(\"checked\", ctx_r1.isChecked(itemIndex_r4));\n }\n}\nfunction ListComponent_5_ng_template_0_2_ng_template_0_Template(rf, ctx) {}\nfunction ListComponent_5_ng_template_0_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_5_ng_template_0_2_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const dataItem_r5 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r1.template.templateRef, dataItem_r5));\n }\n}\nfunction ListComponent_5_ng_template_0_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 17);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const dataItem_r5 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.getText(dataItem_r5));\n }\n}\nfunction ListComponent_5_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 14);\n i0.ɵɵtemplate(1, ListComponent_5_ng_template_0_input_1_Template, 1, 2, \"input\", 15)(2, ListComponent_5_ng_template_0_2_Template, 1, 4, null, 7)(3, ListComponent_5_ng_template_0_ng_template_3_Template, 2, 1, \"ng-template\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const itemIndex_r4 = ctx.index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.listItemClass);\n i0.ɵɵproperty(\"checkboxes\", ctx_r1.checkboxes)(\"height\", ctx_r1.virtual == null ? null : ctx_r1.virtual.itemHeight)(\"index\", itemIndex_r4 + ctx_r1.startFrom)(\"multipleSelection\", ctx_r1.multipleSelection)(\"ngClass\", i0.ɵɵpureFunction2(13, _c6, ctx_r1.isDisabled(itemIndex_r4), ctx_r1.isAltRow(itemIndex_r4)));\n i0.ɵɵattribute(\"id\", ctx_r1.optionPrefix + \"-\" + itemIndex_r4)(\"tabIndex\", -1)(\"aria-selected\", ctx_r1.isItemSelected(itemIndex_r4));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.checkboxes.enabled);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.template);\n }\n}\nfunction ListComponent_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_5_ng_template_0_Template, 4, 16, \"ng-template\", 13);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.data);\n }\n}\nfunction ListComponent_6_ng_template_0_li_0_3_ng_template_0_Template(rf, ctx) {}\nfunction ListComponent_6_ng_template_0_li_0_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_0_3_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const dataItem_r6 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r1.groupTemplate.templateRef, dataItem_r6.value));\n }\n}\nfunction ListComponent_6_ng_template_0_li_0_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const dataItem_r6 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵtextInterpolate(dataItem_r6.value);\n }\n}\nfunction ListComponent_6_ng_template_0_li_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 20, 2)(2, \"span\");\n i0.ɵɵtemplate(3, ListComponent_6_ng_template_0_li_0_3_Template, 1, 4, null, 7)(4, ListComponent_6_ng_template_0_li_0_ng_template_4_Template, 1, 1, \"ng-template\", 11);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r6 = i0.ɵɵnextContext();\n const dataItem_r6 = ctx_r6.$implicit;\n const itemIndex_r8 = ctx_r6.index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.listGroupItemClass);\n i0.ɵɵclassProp(\"k-table-alt-row\", ctx_r1.isAltRow(itemIndex_r8 - 1));\n i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction3(12, _c4, ctx_r1.virtual == null ? null : ctx_r1.virtual.itemHeight, ctx_r1.virtual == null ? null : ctx_r1.virtual.itemHeight, ctx_r1.virtual ? \"border-box\" : \"inherit\"));\n i0.ɵɵattribute(\"group-index\", dataItem_r6.index)(\"id\", ctx_r1.optionPrefix + \"-\" + itemIndex_r8)(\"tabIndex\", -1);\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx_r1.listGroupItemTextClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.groupTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.groupTemplate);\n }\n}\nfunction ListComponent_6_ng_template_0_li_1_2_ng_template_0_Template(rf, ctx) {}\nfunction ListComponent_6_ng_template_0_li_1_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const dataItem_r6 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r1.template.templateRef, dataItem_r6.value));\n }\n}\nfunction ListComponent_6_ng_template_0_li_1_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 17);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const dataItem_r6 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.getText(dataItem_r6.value));\n }\n}\nfunction ListComponent_6_ng_template_0_li_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 21, 2);\n i0.ɵɵtemplate(2, ListComponent_6_ng_template_0_li_1_2_Template, 1, 4, null, 7)(3, ListComponent_6_ng_template_0_li_1_ng_template_3_Template, 2, 1, \"ng-template\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r6 = i0.ɵɵnextContext();\n const dataItem_r6 = ctx_r6.$implicit;\n const itemIndex_r8 = ctx_r6.index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.listItemClass);\n i0.ɵɵproperty(\"height\", ctx_r1.virtual == null ? null : ctx_r1.virtual.itemHeight)(\"index\", dataItem_r6.offsetIndex)(\"multipleSelection\", ctx_r1.multipleSelection)(\"ngClass\", i0.ɵɵpureFunction2(12, _c6, ctx_r1.isDisabled(dataItem_r6.offsetIndex), ctx_r1.isAltRow(itemIndex_r8 - 1)));\n i0.ɵɵattribute(\"absolute-index\", dataItem_r6.index)(\"id\", ctx_r1.optionPrefix + \"-\" + itemIndex_r8)(\"tabIndex\", -1)(\"aria-selected\", ctx_r1.isItemSelected(dataItem_r6.offsetIndex));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.template);\n }\n}\nfunction ListComponent_6_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_6_ng_template_0_li_0_Template, 5, 16, \"li\", 18)(1, ListComponent_6_ng_template_0_li_1_Template, 4, 15, \"li\", 19);\n }\n if (rf & 2) {\n const dataItem_r6 = ctx.$implicit;\n i0.ɵɵproperty(\"ngIf\", dataItem_r6.header);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !dataItem_r6.header);\n }\n}\nfunction ListComponent_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_6_ng_template_0_Template, 2, 2, \"ng-template\", 13);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.data);\n }\n}\nfunction ListComponent_kendo_resize_sensor_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 22);\n i0.ɵɵlistener(\"resize\", function ListComponent_kendo_resize_sensor_7_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.listResize.emit());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction ListComponent_div_8_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 23, 3)(2, \"div\")(3, \"kendo-resize-sensor\", 22);\n i0.ɵɵlistener(\"resize\", function ListComponent_div_8_Template_kendo_resize_sensor_resize_3_listener() {\n i0.ɵɵrestoreView(_r10);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.listResize.emit());\n });\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"height\", ctx_r1.scrollHeight, \"px\");\n }\n}\nconst _c7 = [\"actionSheetSearchBar\"];\nconst _c8 = a0 => ({\n duration: a0\n});\nfunction ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon\", 19);\n }\n}\nfunction ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-textbox\", 17, 1);\n i0.ɵɵlistener(\"valueChange\", function ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_Template_kendo_textbox_valueChange_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onValueChange($event));\n });\n i0.ɵɵtemplate(2, ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_ng_template_2_Template, 1, 0, \"ng-template\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"value\", ctx_r2.searchBarValue)(\"size\", ctx_r2.size);\n }\n}\nfunction ResponsiveRendererComponent_ng_template_2_ng_container_13_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction ResponsiveRendererComponent_ng_template_2_div_14_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 20)(1, \"button\", 21);\n i0.ɵɵlistener(\"click\", function ResponsiveRendererComponent_ng_template_2_div_14_Template_button_click_1_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onCancel.emit());\n })(\"keydown.enter\", function ResponsiveRendererComponent_ng_template_2_div_14_Template_button_keydown_enter_1_listener($event) {\n i0.ɵɵrestoreView(_r5);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"button\", 22);\n i0.ɵɵlistener(\"click\", function ResponsiveRendererComponent_ng_template_2_div_14_Template_button_click_3_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onApply.emit());\n })(\"keydown.enter\", function ResponsiveRendererComponent_ng_template_2_div_14_Template_button_keydown_enter_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx_r2.size);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.messageFor(\"cancelButton\"), \" \");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx_r2.size);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.messageFor(\"applyButton\"), \" \");\n }\n}\nfunction ResponsiveRendererComponent_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 4)(1, \"div\", 5)(2, \"div\", 6)(3, \"div\", 7);\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"div\", 8);\n i0.ɵɵtext(6);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(7, \"div\", 9)(8, \"button\", 10);\n i0.ɵɵlistener(\"click\", function ResponsiveRendererComponent_ng_template_2_Template_button_click_8_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.closePopup.emit());\n });\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(9, \"div\", 11);\n i0.ɵɵtemplate(10, ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_Template, 3, 2, \"kendo-textbox\", 12);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(11, \"div\", 13)(12, \"div\", 14);\n i0.ɵɵtemplate(13, ResponsiveRendererComponent_ng_template_2_ng_container_13_Template, 1, 0, \"ng-container\", 15);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(14, ResponsiveRendererComponent_ng_template_2_div_14_Template, 5, 4, \"div\", 16);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(4);\n i0.ɵɵtextInterpolate(ctx_r2.title);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.subtitle);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"svgIcon\", ctx_r2.xIcon)(\"size\", ctx_r2.size)(\"tabIndex\", -1);\n i0.ɵɵattribute(\"title\", ctx_r2.messageFor(\"clearTitle\"));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showTextInput);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.sharedPopupActionSheetTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showActionButtons);\n }\n}\nconst _c9 = [\"container\"];\nconst _c10 = [\"popupTemplate\"];\nconst _c11 = [\"optionsList\"];\nconst _c12 = a0 => ({\n templateRef: a0\n});\nfunction AutoCompleteComponent_span_2_ng_template_1_Template(rf, ctx) {}\nfunction AutoCompleteComponent_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 14);\n i0.ɵɵtemplate(1, AutoCompleteComponent_span_2_ng_template_1_Template, 0, 0, \"ng-template\", 15);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.prefixTemplate == null ? null : ctx_r1.prefixTemplate.templateRef);\n }\n}\nfunction AutoCompleteComponent_kendo_separator_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction AutoCompleteComponent_span_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 16);\n i0.ɵɵlistener(\"click\", function AutoCompleteComponent_span_5_Template_span_click_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearValue($event));\n })(\"mousedown\", function AutoCompleteComponent_span_5_Template_span_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 17);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"visibility\", ctx_r1.clearButtonVisiblity);\n i0.ɵɵattribute(\"title\", ctx_r1.messageFor(\"clearTitle\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.xIcon);\n }\n}\nfunction AutoCompleteComponent_span_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 18);\n }\n}\nfunction AutoCompleteComponent_kendo_separator_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction AutoCompleteComponent_span_8_ng_template_1_Template(rf, ctx) {}\nfunction AutoCompleteComponent_span_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 19);\n i0.ɵɵtemplate(1, AutoCompleteComponent_span_8_ng_template_1_Template, 0, 0, \"ng-template\", 15);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.suffixTemplate == null ? null : ctx_r1.suffixTemplate.templateRef);\n }\n}\nfunction AutoCompleteComponent_ng_template_9_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction AutoCompleteComponent_ng_template_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_9_ng_container_0_Template, 1, 0, \"ng-container\", 20);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(16);\n i0.ɵɵproperty(\"ngTemplateOutlet\", sharedPopupActionSheetTemplate_r4);\n }\n}\nfunction AutoCompleteComponent_kendo_resize_sensor_13_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 21);\n i0.ɵɵlistener(\"resize\", function AutoCompleteComponent_kendo_resize_sensor_13_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction AutoCompleteComponent_ng_template_15_0_ng_template_0_Template(rf, ctx) {}\nfunction AutoCompleteComponent_ng_template_15_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_15_0_ng_template_0_Template, 0, 0, \"ng-template\", 24);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.headerTemplate.templateRef));\n }\n}\nfunction AutoCompleteComponent_ng_template_15_div_3_ng_template_1_Template(rf, ctx) {}\nfunction AutoCompleteComponent_ng_template_15_div_3_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.messageFor(\"noDataText\"));\n }\n}\nfunction AutoCompleteComponent_ng_template_15_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 25);\n i0.ɵɵtemplate(1, AutoCompleteComponent_ng_template_15_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 26)(2, AutoCompleteComponent_ng_template_15_div_3_ng_template_2_Template, 2, 1, \"ng-template\", 27);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.noDataTemplate)(\"templateContext\", i0.ɵɵpureFunction1(3, _c12, ctx_r1.noDataTemplate == null ? null : ctx_r1.noDataTemplate.templateRef));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.noDataTemplate);\n }\n}\nfunction AutoCompleteComponent_ng_template_15_4_ng_template_0_Template(rf, ctx) {}\nfunction AutoCompleteComponent_ng_template_15_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_15_4_ng_template_0_Template, 0, 0, \"ng-template\", 24);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.footerTemplate.templateRef));\n }\n}\nfunction AutoCompleteComponent_ng_template_15_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, AutoCompleteComponent_ng_template_15_0_Template, 1, 3, null, 7);\n i0.ɵɵelementStart(1, \"kendo-list\", 22, 3);\n i0.ɵɵlistener(\"pageChange\", function AutoCompleteComponent_ng_template_15_Template_kendo_list_pageChange_1_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.pageChange($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, AutoCompleteComponent_ng_template_15_div_3_Template, 3, 5, \"div\", 23)(4, AutoCompleteComponent_ng_template_15_4_Template, 1, 3, null, 7);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"rounded\", ctx_r1.rounded)(\"id\", ctx_r1.listBoxId)(\"optionPrefix\", ctx_r1.optionPrefix)(\"data\", ctx_r1.data)(\"textField\", ctx_r1.valueField)(\"valueField\", ctx_r1.valueField)(\"template\", ctx_r1.template)(\"groupTemplate\", ctx_r1.groupTemplate)(\"fixedGroupTemplate\", ctx_r1.fixedGroupTemplate)(\"height\", ctx_r1.listHeight)(\"show\", ctx_r1.isOpen)(\"virtual\", ctx_r1.virtual)(\"showStickyHeader\", ctx_r1.showStickyHeader);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.data.length === 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n }\n}\nconst _c13 = [\"select\"];\nconst _c14 = a0 => ({\n mousedown: a0\n});\nfunction ComboBoxComponent_span_2_ng_template_1_Template(rf, ctx) {}\nfunction ComboBoxComponent_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 17);\n i0.ɵɵtemplate(1, ComboBoxComponent_span_2_ng_template_1_Template, 0, 0, \"ng-template\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.prefixTemplate == null ? null : ctx_r1.prefixTemplate.templateRef);\n }\n}\nfunction ComboBoxComponent_kendo_separator_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction ComboBoxComponent_span_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 19);\n i0.ɵɵlistener(\"click\", function ComboBoxComponent_span_5_Template_span_click_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearValue($event));\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 20);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"visibility\", ctx_r1.clearButtonVisiblity);\n i0.ɵɵproperty(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(5, _c14, ctx_r1.preventEventDefault));\n i0.ɵɵattribute(\"title\", ctx_r1.messageFor(\"clearTitle\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.xIcon);\n }\n}\nfunction ComboBoxComponent_span_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 21);\n }\n}\nfunction ComboBoxComponent_kendo_separator_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction ComboBoxComponent_span_8_ng_template_1_Template(rf, ctx) {}\nfunction ComboBoxComponent_span_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 22);\n i0.ɵɵtemplate(1, ComboBoxComponent_span_8_ng_template_1_Template, 0, 0, \"ng-template\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.suffixTemplate == null ? null : ctx_r1.suffixTemplate.templateRef);\n }\n}\nfunction ComboBoxComponent_ng_template_12_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction ComboBoxComponent_ng_template_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ComboBoxComponent_ng_template_12_ng_container_0_Template, 1, 0, \"ng-container\", 23);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(19);\n i0.ɵɵproperty(\"ngTemplateOutlet\", sharedPopupActionSheetTemplate_r4);\n }\n}\nfunction ComboBoxComponent_kendo_resize_sensor_14_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 24);\n i0.ɵɵlistener(\"resize\", function ComboBoxComponent_kendo_resize_sensor_14_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction ComboBoxComponent_ng_template_18_0_ng_template_0_Template(rf, ctx) {}\nfunction ComboBoxComponent_ng_template_18_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ComboBoxComponent_ng_template_18_0_ng_template_0_Template, 0, 0, \"ng-template\", 27);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.headerTemplate.templateRef));\n }\n}\nfunction ComboBoxComponent_ng_template_18_div_3_ng_template_1_Template(rf, ctx) {}\nfunction ComboBoxComponent_ng_template_18_div_3_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.messageFor(\"noDataText\"));\n }\n}\nfunction ComboBoxComponent_ng_template_18_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 28);\n i0.ɵɵtemplate(1, ComboBoxComponent_ng_template_18_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 29)(2, ComboBoxComponent_ng_template_18_div_3_ng_template_2_Template, 2, 1, \"ng-template\", 30);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.noDataTemplate)(\"templateContext\", i0.ɵɵpureFunction1(3, _c12, ctx_r1.noDataTemplate ? ctx_r1.noDataTemplate.templateRef : undefined));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.noDataTemplate);\n }\n}\nfunction ComboBoxComponent_ng_template_18_4_ng_template_0_Template(rf, ctx) {}\nfunction ComboBoxComponent_ng_template_18_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ComboBoxComponent_ng_template_18_4_ng_template_0_Template, 0, 0, \"ng-template\", 27);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.footerTemplate.templateRef));\n }\n}\nfunction ComboBoxComponent_ng_template_18_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, ComboBoxComponent_ng_template_18_0_Template, 1, 3, null, 8);\n i0.ɵɵelementStart(1, \"kendo-list\", 25, 4);\n i0.ɵɵlistener(\"pageChange\", function ComboBoxComponent_ng_template_18_Template_kendo_list_pageChange_1_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.pageChange($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, ComboBoxComponent_ng_template_18_div_3_Template, 3, 5, \"div\", 26)(4, ComboBoxComponent_ng_template_18_4_Template, 1, 3, null, 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"rounded\", ctx_r1.rounded)(\"id\", ctx_r1.listBoxId)(\"optionPrefix\", ctx_r1.optionPrefix)(\"data\", ctx_r1.data)(\"textField\", ctx_r1.textField)(\"valueField\", ctx_r1.valueField)(\"template\", ctx_r1.template)(\"groupTemplate\", ctx_r1.groupTemplate)(\"fixedGroupTemplate\", ctx_r1.fixedGroupTemplate)(\"height\", ctx_r1.listHeight)(\"show\", ctx_r1.isOpen)(\"virtual\", ctx_r1.virtual)(\"showStickyHeader\", ctx_r1.showStickyHeader);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.data.length === 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n }\n}\nconst _c15 = a0 => ({\n \"k-disabled\": a0\n});\nfunction DropDownListComponent_3_ng_template_0_Template(rf, ctx) {}\nfunction DropDownListComponent_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownListComponent_3_ng_template_0_Template, 0, 0, \"ng-template\", 15);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r1.valueTemplate.templateRef, ctx_r1.dataItem));\n }\n}\nfunction DropDownListComponent_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵtextInterpolate(ctx_r1.getText());\n }\n}\nfunction DropDownListComponent_span_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 16);\n }\n}\nfunction DropDownListComponent_ng_template_8_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction DropDownListComponent_ng_template_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownListComponent_ng_template_8_ng_container_0_Template, 1, 0, \"ng-container\", 17);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const sharedPopupActionSheetTemplate_r3 = i0.ɵɵreference(15);\n i0.ɵɵproperty(\"ngTemplateOutlet\", sharedPopupActionSheetTemplate_r3);\n }\n}\nfunction DropDownListComponent_kendo_resize_sensor_10_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 18);\n i0.ɵɵlistener(\"resize\", function DropDownListComponent_kendo_resize_sensor_10_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction DropDownListComponent_ng_template_14_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 21);\n i0.ɵɵlistener(\"click\", function DropDownListComponent_ng_template_14_ng_template_0_Template_div_click_0_listener($event) {\n i0.ɵɵrestoreView(_r6);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵelementStart(1, \"span\", 22);\n i0.ɵɵelement(2, \"kendo-icon-wrapper\", 23);\n i0.ɵɵelementStart(3, \"input\", 24, 4);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DropDownListComponent_ng_template_14_ng_template_0_Template_input_ngModelChange_3_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵtwoWayBindingSet(ctx_r1.filterText, $event) || (ctx_r1.filterText = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"keydown\", function DropDownListComponent_ng_template_14_ng_template_0_Template_input_keydown_3_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const searchInput_r7 = i0.ɵɵreference(4);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.keydown($event, searchInput_r7));\n })(\"input\", function DropDownListComponent_ng_template_14_ng_template_0_Template_input_input_3_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleFilter($event));\n })(\"focus\", function DropDownListComponent_ng_template_14_ng_template_0_Template_input_focus_3_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onFilterFocus());\n })(\"blur\", function DropDownListComponent_ng_template_14_ng_template_0_Template_input_blur_3_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.blurFilterInput());\n })(\"click\", function DropDownListComponent_ng_template_14_ng_template_0_Template_input_click_3_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleClick());\n });\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx_r1.filterInputClasses);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.searchIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"filterInput\", ctx_r1.isFocused && !ctx_r1.touchEnabled)(\"dir\", ctx_r1.direction);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r1.filterText);\n i0.ɵɵattribute(\"aria-controls\", ctx_r1.listBoxId)(\"aria-label\", ctx_r1.messageFor(\"filterInputLabel\"));\n }\n}\nfunction DropDownListComponent_ng_template_14_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"div\", 26);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngClass\", ctx_r1.optionLabelSizeClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(4, _c15, ctx_r1.isDisabledDefaultItem))(\"index\", -1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.getDefaultItemText(), \" \");\n }\n}\nfunction DropDownListComponent_ng_template_14_ng_template_2_ng_template_2_Template(rf, ctx) {}\nfunction DropDownListComponent_ng_template_14_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 25)(1, \"div\", 26);\n i0.ɵɵtemplate(2, DropDownListComponent_ng_template_14_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 15);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngClass\", ctx_r1.optionLabelSizeClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(4, _c15, ctx_r1.isDisabledDefaultItem))(\"index\", -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(6, _c5, ctx_r1.itemTemplate.templateRef, ctx_r1.defaultItem));\n }\n}\nfunction DropDownListComponent_ng_template_14_3_ng_template_0_Template(rf, ctx) {}\nfunction DropDownListComponent_ng_template_14_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownListComponent_ng_template_14_3_ng_template_0_Template, 0, 0, \"ng-template\", 15);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.headerTemplate.templateRef));\n }\n}\nfunction DropDownListComponent_ng_template_14_div_6_ng_template_1_Template(rf, ctx) {}\nfunction DropDownListComponent_ng_template_14_div_6_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.messageFor(\"noDataText\"));\n }\n}\nfunction DropDownListComponent_ng_template_14_div_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 27);\n i0.ɵɵtemplate(1, DropDownListComponent_ng_template_14_div_6_ng_template_1_Template, 0, 0, \"ng-template\", 28)(2, DropDownListComponent_ng_template_14_div_6_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.noDataTemplate)(\"templateContext\", i0.ɵɵpureFunction1(3, _c12, ctx_r1.noDataTemplate ? ctx_r1.noDataTemplate.templateRef : undefined));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.noDataTemplate);\n }\n}\nfunction DropDownListComponent_ng_template_14_7_ng_template_0_Template(rf, ctx) {}\nfunction DropDownListComponent_ng_template_14_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownListComponent_ng_template_14_7_ng_template_0_Template, 0, 0, \"ng-template\", 15);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.footerTemplate.templateRef));\n }\n}\nfunction DropDownListComponent_ng_template_14_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, DropDownListComponent_ng_template_14_ng_template_0_Template, 5, 7, \"ng-template\", 9)(1, DropDownListComponent_ng_template_14_ng_template_1_Template, 3, 6, \"ng-template\", 9)(2, DropDownListComponent_ng_template_14_ng_template_2_Template, 3, 9, \"ng-template\", 9)(3, DropDownListComponent_ng_template_14_3_Template, 1, 3, null, 8);\n i0.ɵɵelementStart(4, \"kendo-list\", 19, 3);\n i0.ɵɵlistener(\"pageChange\", function DropDownListComponent_ng_template_14_Template_kendo_list_pageChange_4_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.pageChange($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, DropDownListComponent_ng_template_14_div_6_Template, 3, 5, \"div\", 20)(7, DropDownListComponent_ng_template_14_7_Template, 1, 3, null, 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.filterable && !ctx_r1.isActionSheetExpanded);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.defaultItem && !ctx_r1.itemTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.defaultItem && ctx_r1.itemTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"id\", ctx_r1.listBoxId)(\"size\", ctx_r1.size)(\"rounded\", ctx_r1.rounded)(\"optionPrefix\", ctx_r1.optionPrefix)(\"data\", ctx_r1.data)(\"textField\", ctx_r1.textField)(\"valueField\", ctx_r1.valueField)(\"template\", ctx_r1.itemTemplate)(\"groupTemplate\", ctx_r1.groupTemplate)(\"fixedGroupTemplate\", ctx_r1.fixedGroupTemplate)(\"height\", ctx_r1.listHeight)(\"show\", ctx_r1.isOpen)(\"virtual\", ctx_r1.virtual)(\"ariaLive\", ctx_r1.ariaLive)(\"showStickyHeader\", ctx_r1.showStickyHeader);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.data.length === 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n }\n}\nconst _c16 = [\"*\"];\nconst _c17 = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => ({\n \"k-focus\": a0,\n \"k-disabled\": a1,\n \"k-chip-sm\": a2,\n \"k-chip-md\": a3,\n \"k-chip-lg\": a4,\n \"k-rounded-sm\": a5,\n \"k-rounded-md\": a6,\n \"k-rounded-lg\": a7,\n \"k-rounded-full\": a8,\n \"k-chip-solid k-chip-solid-base\": a9,\n \"k-chip-flat k-chip-flat-base\": a10,\n \"k-chip-outline k-chip-outline-base\": a11\n});\nfunction TagListComponent_div_0_2_ng_template_0_Template(rf, ctx) {}\nfunction TagListComponent_div_0_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TagListComponent_div_0_2_ng_template_0_Template, 0, 0, \"ng-template\");\n }\n}\nfunction TagListComponent_div_0_ng_template_3_1_ng_template_0_Template(rf, ctx) {}\nfunction TagListComponent_div_0_ng_template_3_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TagListComponent_div_0_ng_template_3_1_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const tag_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r2.groupTemplate.templateRef, tag_r2));\n }\n}\nfunction TagListComponent_div_0_ng_template_3_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const tag_r2 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵtextInterpolate2(\"\", tag_r2.length, \" \", tag_r2.length === 1 ? \"item\" : \"items\", \" selected\");\n }\n}\nfunction TagListComponent_div_0_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 9);\n i0.ɵɵtemplate(1, TagListComponent_div_0_ng_template_3_1_Template, 1, 4, null, 10)(2, TagListComponent_div_0_ng_template_3_ng_template_2_Template, 1, 2, \"ng-template\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.groupTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.groupTemplate);\n }\n}\nfunction TagListComponent_div_0_ng_template_5_1_ng_template_0_Template(rf, ctx) {}\nfunction TagListComponent_div_0_ng_template_5_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TagListComponent_div_0_ng_template_5_1_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const tag_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r2.template.templateRef, tag_r2));\n }\n}\nfunction TagListComponent_div_0_ng_template_5_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext(2);\n const tag_r2 = ctx_r3.$implicit;\n const index_r5 = ctx_r3.index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵtextInterpolate(ctx_r2.tagProp(tag_r2, ctx_r2.textField, index_r5));\n }\n}\nfunction TagListComponent_div_0_ng_template_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 9);\n i0.ɵɵtemplate(1, TagListComponent_div_0_ng_template_5_1_Template, 1, 4, null, 10)(2, TagListComponent_div_0_ng_template_5_ng_template_2_Template, 1, 1, \"ng-template\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.template);\n }\n}\nfunction TagListComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 3)(1, \"span\", 4);\n i0.ɵɵtemplate(2, TagListComponent_div_0_2_Template, 1, 0, null, 5)(3, TagListComponent_div_0_ng_template_3_Template, 3, 2, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(5, TagListComponent_div_0_ng_template_5_Template, 3, 2, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"span\", 6)(8, \"span\", 7)(9, \"kendo-icon-wrapper\", 8);\n i0.ɵɵlistener(\"mousedown\", function TagListComponent_div_0_Template_kendo_icon_wrapper_mousedown_9_listener($event) {\n const ctx_r5 = i0.ɵɵrestoreView(_r1);\n const tag_r2 = ctx_r5.$implicit;\n const index_r5 = ctx_r5.index;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.deleteTag($event, tag_r2, index_r5));\n });\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const tag_r2 = ctx.$implicit;\n const index_r5 = ctx.index;\n const groupTag_r7 = i0.ɵɵreference(4);\n const singleTag_r8 = i0.ɵɵreference(6);\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunctionV(9, _c17, [index_r5 === ctx_r2.focused, ctx_r2.isTagDisabled(tag_r2, index_r5), ctx_r2.size === \"small\", ctx_r2.size === \"medium\", ctx_r2.size === \"large\", ctx_r2.rounded === \"small\", ctx_r2.rounded === \"medium\", ctx_r2.rounded === \"large\", ctx_r2.rounded === \"full\", ctx_r2.fillMode === \"solid\", ctx_r2.fillMode === \"flat\", ctx_r2.fillMode === \"outline\"]));\n i0.ɵɵattribute(\"id\", ctx_r2.itemId(tag_r2, index_r5))(\"aria-selected\", true)(\"role\", \"option\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.isGroupTag(tag_r2))(\"ngIfThen\", groupTag_r7)(\"ngIfElse\", singleTag_r8);\n i0.ɵɵadvance(6);\n i0.ɵɵattribute(\"aria-hidden\", index_r5 !== ctx_r2.focused);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r2.xCircleIcon);\n }\n}\nfunction MultiSelectComponent_span_2_ng_template_1_Template(rf, ctx) {}\nfunction MultiSelectComponent_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 17);\n i0.ɵɵtemplate(1, MultiSelectComponent_span_2_ng_template_1_Template, 0, 0, \"ng-template\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.prefixTemplate == null ? null : ctx_r1.prefixTemplate.templateRef);\n }\n}\nfunction MultiSelectComponent_kendo_separator_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction MultiSelectComponent_span_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 19);\n i0.ɵɵlistener(\"mousedown\", function MultiSelectComponent_span_7_Template_span_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearAll($event));\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 20);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"visibility\", ctx_r1.clearButtonVisiblity);\n i0.ɵɵattribute(\"title\", ctx_r1.messageFor(\"clearTitle\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.xIcon);\n }\n}\nfunction MultiSelectComponent_span_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 21);\n }\n}\nfunction MultiSelectComponent_kendo_separator_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction MultiSelectComponent_span_10_ng_template_1_Template(rf, ctx) {}\nfunction MultiSelectComponent_span_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 22);\n i0.ɵɵtemplate(1, MultiSelectComponent_span_10_ng_template_1_Template, 0, 0, \"ng-template\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.suffixTemplate == null ? null : ctx_r1.suffixTemplate.templateRef);\n }\n}\nfunction MultiSelectComponent_ng_template_11_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction MultiSelectComponent_ng_template_11_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiSelectComponent_ng_template_11_ng_container_0_Template, 1, 0, \"ng-container\", 23);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(18);\n i0.ɵɵproperty(\"ngTemplateOutlet\", sharedPopupActionSheetTemplate_r4);\n }\n}\nfunction MultiSelectComponent_kendo_resize_sensor_13_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 24);\n i0.ɵɵlistener(\"resize\", function MultiSelectComponent_kendo_resize_sensor_13_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction MultiSelectComponent_ng_template_17_0_ng_template_0_Template(rf, ctx) {}\nfunction MultiSelectComponent_ng_template_17_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiSelectComponent_ng_template_17_0_ng_template_0_Template, 0, 0, \"ng-template\", 28);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.headerTemplate.templateRef));\n }\n}\nfunction MultiSelectComponent_ng_template_17_div_1_2_ng_template_0_Template(rf, ctx) {}\nfunction MultiSelectComponent_ng_template_17_div_1_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiSelectComponent_ng_template_17_div_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 28);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r1.customItemTemplate.templateRef, ctx_r1.text));\n }\n}\nfunction MultiSelectComponent_ng_template_17_div_1_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵtextInterpolate(ctx_r1.text);\n }\n}\nfunction MultiSelectComponent_ng_template_17_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 29)(1, \"div\", 30);\n i0.ɵɵtemplate(2, MultiSelectComponent_ng_template_17_div_1_2_Template, 1, 4, null, 31)(3, MultiSelectComponent_ng_template_17_div_1_ng_template_3_Template, 1, 1, \"ng-template\", null, 4, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelement(5, \"kendo-icon-wrapper\", 32);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const default_custom_item_template_r7 = i0.ɵɵreference(4);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngClass\", ctx_r1.customItemSizeClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"multipleSelection\", true)(\"index\", -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.customItemTemplate)(\"ngIfElse\", default_custom_item_template_r7);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.plusIcon);\n }\n}\nfunction MultiSelectComponent_ng_template_17_div_4_ng_template_1_Template(rf, ctx) {}\nfunction MultiSelectComponent_ng_template_17_div_4_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.messageFor(\"noDataText\"));\n }\n}\nfunction MultiSelectComponent_ng_template_17_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 33);\n i0.ɵɵtemplate(1, MultiSelectComponent_ng_template_17_div_4_ng_template_1_Template, 0, 0, \"ng-template\", 34)(2, MultiSelectComponent_ng_template_17_div_4_ng_template_2_Template, 2, 1, \"ng-template\", 35);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.noDataTemplate)(\"templateContext\", i0.ɵɵpureFunction1(3, _c12, ctx_r1.noDataTemplate ? ctx_r1.noDataTemplate.templateRef : undefined));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.noDataTemplate);\n }\n}\nfunction MultiSelectComponent_ng_template_17_5_ng_template_0_Template(rf, ctx) {}\nfunction MultiSelectComponent_ng_template_17_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiSelectComponent_ng_template_17_5_ng_template_0_Template, 0, 0, \"ng-template\", 28);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.footerTemplate.templateRef));\n }\n}\nfunction MultiSelectComponent_ng_template_17_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, MultiSelectComponent_ng_template_17_0_Template, 1, 3, null, 8)(1, MultiSelectComponent_ng_template_17_div_1_Template, 6, 6, \"div\", 25);\n i0.ɵɵelementStart(2, \"kendo-list\", 26, 3);\n i0.ɵɵlistener(\"pageChange\", function MultiSelectComponent_ng_template_17_Template_kendo_list_pageChange_2_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.pageChange($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, MultiSelectComponent_ng_template_17_div_4_Template, 3, 5, \"div\", 27)(5, MultiSelectComponent_ng_template_17_5_Template, 1, 3, null, 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.allowCustom && ctx_r1.text);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"rounded\", ctx_r1.rounded)(\"id\", ctx_r1.listBoxId)(\"optionPrefix\", ctx_r1.optionPrefix)(\"data\", ctx_r1.data)(\"textField\", ctx_r1.textField)(\"valueField\", ctx_r1.valueField)(\"template\", ctx_r1.template)(\"groupTemplate\", ctx_r1.groupTemplate)(\"fixedGroupTemplate\", ctx_r1.fixedGroupTemplate)(\"height\", ctx_r1.listHeight)(\"show\", ctx_r1.isOpen)(\"multipleSelection\", true)(\"virtual\", ctx_r1.virtual)(\"checkboxes\", ctx_r1.checkboxes)(\"isMultiselect\", true)(\"isActionSheetExpanded\", ctx_r1.isActionSheetExpanded)(\"showStickyHeader\", ctx_r1.showStickyHeader);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.data.length === 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n }\n}\nconst _c18 = [\"header\"];\nconst _c19 = (a0, a1, a2) => ({\n templateRef: a0,\n $implicit: a1,\n column: a2\n});\nconst _c20 = (a0, a1, a2, a3) => ({\n templateRef: a0,\n $implicit: a1,\n dataItem: a2,\n column: a3\n});\nfunction MultiColumnComboBoxComponent_span_2_ng_template_1_Template(rf, ctx) {}\nfunction MultiColumnComboBoxComponent_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 20);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_span_2_ng_template_1_Template, 0, 0, \"ng-template\", 21);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.prefixTemplate == null ? null : ctx_r1.prefixTemplate.templateRef);\n }\n}\nfunction MultiColumnComboBoxComponent_kendo_separator_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction MultiColumnComboBoxComponent_span_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 22);\n i0.ɵɵlistener(\"click\", function MultiColumnComboBoxComponent_span_5_Template_span_click_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearValue($event));\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 23);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"visibility\", ctx_r1.clearButtonVisiblity);\n i0.ɵɵproperty(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(5, _c14, ctx_r1.preventEventDefault));\n i0.ɵɵattribute(\"title\", ctx_r1.messageFor(\"clearTitle\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.xIcon);\n }\n}\nfunction MultiColumnComboBoxComponent_span_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 24);\n }\n}\nfunction MultiColumnComboBoxComponent_kendo_separator_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-separator\");\n }\n}\nfunction MultiColumnComboBoxComponent_span_8_ng_template_1_Template(rf, ctx) {}\nfunction MultiColumnComboBoxComponent_span_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 25);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_span_8_ng_template_1_Template, 0, 0, \"ng-template\", 21);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.suffixTemplate == null ? null : ctx_r1.suffixTemplate.templateRef);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_12_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_12_ng_container_0_Template, 1, 0, \"ng-container\", 26);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(19);\n i0.ɵɵproperty(\"ngTemplateOutlet\", sharedPopupActionSheetTemplate_r4);\n }\n}\nfunction MultiColumnComboBoxComponent_kendo_resize_sensor_14_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 27);\n i0.ɵɵlistener(\"resize\", function MultiColumnComboBoxComponent_kendo_resize_sensor_14_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_0_ng_template_0_Template(rf, ctx) {}\nfunction MultiColumnComboBoxComponent_ng_template_18_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_18_0_ng_template_0_Template, 0, 0, \"ng-template\", 37);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.headerTemplate == null ? null : ctx_r1.headerTemplate.templateRef));\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_8_col_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"col\");\n }\n if (rf & 2) {\n const column_r7 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵstyleProp(\"width\", column_r7.width, \"px\");\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_18_ng_container_8_col_1_Template, 1, 2, \"col\", 38);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r7 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r7.hidden && column_r7.matchesMedia);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r8 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", column_r8.title || column_r8.field, \" \");\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_2_ng_template_0_Template(rf, ctx) {}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 37);\n }\n if (rf & 2) {\n const column_r8 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction3(1, _c19, column_r8.headerTemplate == null ? null : column_r8.headerTemplate.templateRef, column_r8, column_r8));\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\", 40);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_ng_container_1_Template, 2, 1, \"ng-container\", 11)(2, MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_2_Template, 1, 5, null, 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r8 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"ngStyle\", column_r8.headerStyle)(\"ngClass\", column_r8.headerClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r8.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", column_r8.headerTemplate);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_11_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_Template, 3, 4, \"th\", 39);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r8 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r8.hidden && column_r8.matchesMedia);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r9 = i0.ɵɵnextContext(2).$implicit;\n const dataItem_r10 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.textFrom(dataItem_r10, column_r9.field), \" \");\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_2_ng_template_0_Template(rf, ctx) {}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 37);\n }\n if (rf & 2) {\n const column_r9 = i0.ɵɵnextContext(2).$implicit;\n const dataItem_r10 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction4(1, _c20, column_r9.cellTemplate == null ? null : column_r9.cellTemplate.templateRef, dataItem_r10, dataItem_r10, column_r9));\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 42);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_ng_container_1_Template, 2, 1, \"ng-container\", 11)(2, MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_2_Template, 1, 6, null, 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r9 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵstyleProp(\"width\", column_r9.width, \"px\");\n i0.ɵɵproperty(\"ngClass\", column_r9.class)(\"ngStyle\", column_r9.style);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r9.cellTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", column_r9.cellTemplate);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_Template, 3, 6, \"span\", 41);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r9 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r9.hidden && column_r9.matchesMedia);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_template_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_Template, 2, 1, \"ng-container\", 32);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.columns);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_div_16_ng_template_1_Template(rf, ctx) {}\nfunction MultiColumnComboBoxComponent_ng_template_18_div_16_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.messageFor(\"noDataText\"));\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_div_16_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 43);\n i0.ɵɵtemplate(1, MultiColumnComboBoxComponent_ng_template_18_div_16_ng_template_1_Template, 0, 0, \"ng-template\", 44)(2, MultiColumnComboBoxComponent_ng_template_18_div_16_ng_template_2_Template, 2, 1, \"ng-template\", 45);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.noDataTemplate)(\"templateContext\", i0.ɵɵpureFunction1(3, _c12, ctx_r1.noDataTemplate == null ? null : ctx_r1.noDataTemplate.templateRef));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.noDataTemplate);\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_17_ng_template_6_Template(rf, ctx) {}\nfunction MultiColumnComboBoxComponent_ng_template_18_ng_container_17_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"div\", 46)(2, \"table\", 47)(3, \"tfoot\", 48)(4, \"tr\", 34)(5, \"td\", 49);\n i0.ɵɵtemplate(6, MultiColumnComboBoxComponent_ng_template_18_ng_container_17_ng_template_6_Template, 0, 0, \"ng-template\", 37);\n i0.ɵɵelementEnd()()()()();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(6);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.footerTemplate.templateRef));\n }\n}\nfunction MultiColumnComboBoxComponent_ng_template_18_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, MultiColumnComboBoxComponent_ng_template_18_0_Template, 1, 3, null, 11);\n i0.ɵɵelementStart(1, \"div\", 28)(2, \"div\", 29, 4)(4, \"div\", 30, 5)(6, \"table\", 31)(7, \"colgroup\");\n i0.ɵɵtemplate(8, MultiColumnComboBoxComponent_ng_template_18_ng_container_8_Template, 2, 1, \"ng-container\", 32);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"thead\", 33)(10, \"tr\", 34);\n i0.ɵɵtemplate(11, MultiColumnComboBoxComponent_ng_template_18_ng_container_11_Template, 2, 1, \"ng-container\", 32);\n i0.ɵɵelementEnd()()()()();\n i0.ɵɵtemplate(12, MultiColumnComboBoxComponent_ng_template_18_ng_template_12_Template, 1, 1, \"ng-template\", null, 6, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementStart(14, \"kendo-list\", 35, 7);\n i0.ɵɵlistener(\"pageChange\", function MultiColumnComboBoxComponent_ng_template_18_Template_kendo_list_pageChange_14_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.pageChange($event));\n })(\"listResize\", function MultiColumnComboBoxComponent_ng_template_18_Template_kendo_list_listResize_14_listener() {\n i0.ɵɵrestoreView(_r6);\n const header_r11 = i0.ɵɵreference(3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.updateHeaderPadding(header_r11));\n })(\"popupListScroll\", function MultiColumnComboBoxComponent_ng_template_18_Template_kendo_list_popupListScroll_14_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const headerWrap_r12 = i0.ɵɵreference(5);\n return i0.ɵɵresetView(headerWrap_r12.scrollLeft = $event.target.scrollLeft);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(16, MultiColumnComboBoxComponent_ng_template_18_div_16_Template, 3, 5, \"div\", 36)(17, MultiColumnComboBoxComponent_ng_template_18_ng_container_17_Template, 7, 3, \"ng-container\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const rowTemplate_r13 = i0.ɵɵreference(13);\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx_r1.tableSizeClass);\n i0.ɵɵadvance(7);\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.columns);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.columns);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"optionPrefix\", ctx_r1.optionPrefix)(\"data\", ctx_r1.data)(\"textField\", ctx_r1.textField)(\"valueField\", ctx_r1.valueField)(\"template\", i0.ɵɵpureFunction1(19, _c12, rowTemplate_r13))(\"groupTemplate\", ctx_r1.groupTemplate)(\"fixedGroupTemplate\", ctx_r1.fixedGroupTemplate)(\"height\", ctx_r1.listHeight)(\"show\", ctx_r1.isOpen)(\"id\", ctx_r1.listBoxId)(\"virtual\", ctx_r1.virtual)(\"type\", \"dropdowngrid\")(\"showStickyHeader\", ctx_r1.showStickyHeader);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.data.length === 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n }\n}\nconst _c21 = [\"treeview\"];\nconst _c22 = [\"filterInput\"];\nconst _c23 = a0 => ({\n blur: a0\n});\nfunction DropDownTreeComponent_3_ng_template_0_Template(rf, ctx) {}\nfunction DropDownTreeComponent_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownTreeComponent_3_ng_template_0_Template, 0, 0, \"ng-template\", 16);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction2(1, _c5, ctx_r1.valueTemplate.templateRef, ctx_r1.dataItem));\n }\n}\nfunction DropDownTreeComponent_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.text || ctx_r1.placeholder, \" \");\n }\n}\nfunction DropDownTreeComponent_span_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 17);\n i0.ɵɵlistener(\"click\", function DropDownTreeComponent_span_5_Template_span_click_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearValue($event));\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 18);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"visibility\", ctx_r1.clearButtonVisiblity);\n i0.ɵɵattribute(\"title\", ctx_r1.messageFor(\"clearTitle\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.xIcon);\n }\n}\nfunction DropDownTreeComponent_span_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 19);\n }\n}\nfunction DropDownTreeComponent_ng_template_9_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction DropDownTreeComponent_ng_template_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_9_ng_container_0_Template, 1, 0, \"ng-container\", 20);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(15);\n i0.ɵɵproperty(\"ngTemplateOutlet\", sharedPopupActionSheetTemplate_r4);\n }\n}\nfunction DropDownTreeComponent_ng_template_14_span_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 24)(1, \"span\", 25)(2, \"span\", 26);\n i0.ɵɵelement(3, \"kendo-icon-wrapper\", 27);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"input\", 28, 3);\n i0.ɵɵlistener(\"input\", function DropDownTreeComponent_ng_template_14_span_0_Template_input_input_4_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleFilterInputChange($event.target));\n })(\"keydown.arrowdown\", function DropDownTreeComponent_ng_template_14_span_0_Template_input_keydown_arrowdown_4_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const filterInput_r6 = i0.ɵɵreference(5);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleKeydown($event, filterInput_r6));\n })(\"keydown.alt.arrowup\", function DropDownTreeComponent_ng_template_14_span_0_Template_input_keydown_alt_arrowup_4_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const filterInput_r6 = i0.ɵɵreference(5);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleKeydown($event, filterInput_r6));\n })(\"keydown.escape\", function DropDownTreeComponent_ng_template_14_span_0_Template_input_keydown_escape_4_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const filterInput_r6 = i0.ɵɵreference(5);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleKeydown($event, filterInput_r6));\n });\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx_r1.filterInputClasses);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.searchIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"filterInput\", ctx_r1.filterable && !ctx_r1.touchEnabled)(\"value\", ctx_r1.filter)(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(7, _c23, ctx_r1.handleBlur))(\"scope\", ctx_r1);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.messageFor(\"filterInputLabel\"));\n }\n}\nfunction DropDownTreeComponent_ng_template_14_1_ng_template_0_Template(rf, ctx) {}\nfunction DropDownTreeComponent_ng_template_14_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_14_1_ng_template_0_Template, 0, 0, \"ng-template\", 16);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.headerTemplate == null ? null : ctx_r1.headerTemplate.templateRef));\n }\n}\nfunction DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-treeview\", 29, 4);\n i0.ɵɵtwoWayListener(\"selectedKeysChange\", function DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template_kendo_treeview_selectedKeysChange_0_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵtwoWayBindingSet(ctx_r1.selectedKeys, $event) || (ctx_r1.selectedKeys = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"focusout\", function DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template_kendo_treeview_focusout_0_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleBlur($event));\n })(\"keydown\", function DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template_kendo_treeview_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleKeydown($event));\n })(\"selectionChange\", function DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template_kendo_treeview_selectionChange_0_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onSelectionChange($event));\n })(\"expand\", function DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template_kendo_treeview_expand_0_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.nodeExpand.emit($event));\n })(\"collapse\", function DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template_kendo_treeview_collapse_0_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.nodeCollapse.emit($event));\n })(\"childrenLoaded\", function DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template_kendo_treeview_childrenLoaded_0_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onChildrenLoaded());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"max-height\", ctx_r1.listHeight, \"px\");\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"nodes\", ctx_r1.data)(\"animate\", false);\n i0.ɵɵtwoWayProperty(\"selectedKeys\", ctx_r1.selectedKeys);\n i0.ɵɵproperty(\"selectBy\", ctx_r1.selectBy)(\"textField\", ctx_r1.textField)(\"children\", ctx_r1.children)(\"hasChildren\", ctx_r1.hasChildren)(\"loadOnDemand\", ctx_r1.loadOnDemand)(\"isExpanded\", ctx_r1.isNodeExpanded)(\"isDisabled\", ctx_r1.itemDisabled)(\"nodeTemplate\", ctx_r1.nodeTemplate)(\"filter\", ctx_r1.filter)(\"isVisible\", ctx_r1.isNodeVisible);\n i0.ɵɵattribute(\"id\", ctx_r1.treeViewId);\n }\n}\nfunction DropDownTreeComponent_ng_template_14_3_ng_template_0_Template(rf, ctx) {}\nfunction DropDownTreeComponent_ng_template_14_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_14_3_ng_template_0_Template, 0, 0, \"ng-template\", 16);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.footerTemplate == null ? null : ctx_r1.footerTemplate.templateRef));\n }\n}\nfunction DropDownTreeComponent_ng_template_14_div_4_ng_template_1_Template(rf, ctx) {}\nfunction DropDownTreeComponent_ng_template_14_div_4_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.messageFor(\"noDataText\"));\n }\n}\nfunction DropDownTreeComponent_ng_template_14_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 30);\n i0.ɵɵtemplate(1, DropDownTreeComponent_ng_template_14_div_4_ng_template_1_Template, 0, 0, \"ng-template\", 31)(2, DropDownTreeComponent_ng_template_14_div_4_ng_template_2_Template, 2, 1, \"ng-template\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.noDataTemplate)(\"templateContext\", i0.ɵɵpureFunction1(3, _c12, ctx_r1.noDataTemplate == null ? null : ctx_r1.noDataTemplate.templateRef));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.noDataTemplate);\n }\n}\nfunction DropDownTreeComponent_ng_template_14_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DropDownTreeComponent_ng_template_14_span_0_Template, 6, 9, \"span\", 21)(1, DropDownTreeComponent_ng_template_14_1_Template, 1, 3, null, 8)(2, DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template, 2, 17, \"kendo-treeview\", 22)(3, DropDownTreeComponent_ng_template_14_3_Template, 1, 3, null, 8)(4, DropDownTreeComponent_ng_template_14_div_4_Template, 3, 5, \"div\", 23);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.filterable && !ctx_r1.isActionSheetExpanded);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.data.length !== 0 && !ctx_r1.allNodesHidden);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.data.length === 0 || ctx_r1.allNodesHidden);\n }\n}\nfunction DropDownTreeComponent_kendo_resize_sensor_16_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 32);\n i0.ɵɵlistener(\"resize\", function DropDownTreeComponent_kendo_resize_sensor_16_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nconst _c24 = [\"checkAllInput\"];\nconst _c25 = a0 => ({\n focusout: a0\n});\nfunction MultiSelectTreeComponent_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 14);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.placeholder, \" \");\n }\n}\nfunction MultiSelectTreeComponent_span_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 15);\n i0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_span_4_Template_span_click_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearAll($event));\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵattribute(\"title\", ctx_r1.messageFor(\"clearTitle\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.xIcon);\n }\n}\nfunction MultiSelectTreeComponent_span_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 17);\n }\n}\nfunction MultiSelectTreeComponent_ng_template_6_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction MultiSelectTreeComponent_ng_template_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_6_ng_container_0_Template, 1, 0, \"ng-container\", 18);\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(12);\n i0.ɵɵproperty(\"ngTemplateOutlet\", sharedPopupActionSheetTemplate_r4);\n }\n}\nfunction MultiSelectTreeComponent_ng_template_11_div_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 24)(1, \"span\", 25)(2, \"span\", 26);\n i0.ɵɵelement(3, \"kendo-icon-wrapper\", 27);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"input\", 28, 4);\n i0.ɵɵlistener(\"input\", function MultiSelectTreeComponent_ng_template_11_div_0_Template_input_input_4_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleFilterInputChange($event.target));\n })(\"keydown\", function MultiSelectTreeComponent_ng_template_11_div_0_Template_input_keydown_4_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const filterInput_r7 = i0.ɵɵreference(5);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleKeydown($event, filterInput_r7));\n });\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx_r1.filterInputClasses);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.searchIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"filterInput\", ctx_r1.filterable && !ctx_r1.touchEnabled)(\"value\", ctx_r1.filter)(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(7, _c23, ctx_r1.handleBlur))(\"scope\", ctx_r1);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.messageFor(\"filterInputLabel\"));\n }\n}\nfunction MultiSelectTreeComponent_ng_template_11_1_ng_template_0_Template(rf, ctx) {}\nfunction MultiSelectTreeComponent_ng_template_11_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_11_1_ng_template_0_Template, 0, 0, \"ng-template\", 29);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.headerTemplate == null ? null : ctx_r1.headerTemplate.templateRef));\n }\n}\nfunction MultiSelectTreeComponent_ng_template_11_div_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 30)(1, \"span\", 31)(2, \"input\", 32, 5);\n i0.ɵɵlistener(\"checkedItemsChange\", function MultiSelectTreeComponent_ng_template_11_div_2_Template_input_checkedItemsChange_2_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleCheckedItemsChange($event));\n })(\"keydown\", function MultiSelectTreeComponent_ng_template_11_div_2_Template_input_keydown_2_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.handleKeydown($event));\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(4, \"span\", 33);\n i0.ɵɵlistener(\"click\", function MultiSelectTreeComponent_ng_template_11_div_2_Template_span_click_4_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.toggleCheckAll());\n })(\"mousedown\", function MultiSelectTreeComponent_ng_template_11_div_2_Template_span_mousedown_4_listener($event) {\n i0.ɵɵrestoreView(_r8);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵtext(5);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵnextContext();\n const treeview_r9 = i0.ɵɵreference(4);\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"checkAll\", !ctx_r1.filterable && !ctx_r1.touchEnabled)(\"ngClass\", ctx_r1.checkAllCheckboxClasses)(\"treeview\", treeview_r9)(\"checkedItems\", ctx_r1.checkedItems)(\"valueField\", ctx_r1.valueField)(\"lastAction\", ctx_r1.lastAction)(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(9, _c23, ctx_r1.handleBlur))(\"scope\", ctx_r1);\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.messageFor(\"checkAllText\"), \" \");\n }\n}\nfunction MultiSelectTreeComponent_ng_template_11_5_ng_template_0_Template(rf, ctx) {}\nfunction MultiSelectTreeComponent_ng_template_11_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_11_5_ng_template_0_Template, 0, 0, \"ng-template\", 29);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c12, ctx_r1.footerTemplate == null ? null : ctx_r1.footerTemplate.templateRef));\n }\n}\nfunction MultiSelectTreeComponent_ng_template_11_div_6_ng_template_1_Template(rf, ctx) {}\nfunction MultiSelectTreeComponent_ng_template_11_div_6_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.messageFor(\"noDataText\"));\n }\n}\nfunction MultiSelectTreeComponent_ng_template_11_div_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtemplate(1, MultiSelectTreeComponent_ng_template_11_div_6_ng_template_1_Template, 0, 0, \"ng-template\", 35)(2, MultiSelectTreeComponent_ng_template_11_div_6_ng_template_2_Template, 2, 1, \"ng-template\", 36);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.noDataTemplate)(\"templateContext\", i0.ɵɵpureFunction1(3, _c12, ctx_r1.noDataTemplate == null ? null : ctx_r1.noDataTemplate.templateRef));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.noDataTemplate);\n }\n}\nfunction MultiSelectTreeComponent_ng_template_11_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, MultiSelectTreeComponent_ng_template_11_div_0_Template, 6, 9, \"div\", 19)(1, MultiSelectTreeComponent_ng_template_11_1_Template, 1, 3, null, 20)(2, MultiSelectTreeComponent_ng_template_11_div_2_Template, 6, 11, \"div\", 21);\n i0.ɵɵelementStart(3, \"kendo-treeview\", 22, 3);\n i0.ɵɵlistener(\"keydown\", function MultiSelectTreeComponent_ng_template_11_Template_kendo_treeview_keydown_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.handleKeydown($event));\n })(\"nodeClick\", function MultiSelectTreeComponent_ng_template_11_Template_kendo_treeview_nodeClick_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.handleNodeClick($event));\n })(\"expand\", function MultiSelectTreeComponent_ng_template_11_Template_kendo_treeview_expand_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.nodeExpand.emit($event));\n })(\"collapse\", function MultiSelectTreeComponent_ng_template_11_Template_kendo_treeview_collapse_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.nodeCollapse.emit($event));\n })(\"checkedItemsChange\", function MultiSelectTreeComponent_ng_template_11_Template_kendo_treeview_checkedItemsChange_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.handleCheckedItemsChange($event));\n })(\"childrenLoaded\", function MultiSelectTreeComponent_ng_template_11_Template_kendo_treeview_childrenLoaded_3_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onChildrenLoaded());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, MultiSelectTreeComponent_ng_template_11_5_Template, 1, 3, null, 20)(6, MultiSelectTreeComponent_ng_template_11_div_6_Template, 3, 5, \"div\", 23);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.filterable && !ctx_r1.isActionSheetExpanded);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.checkAll);\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"max-height\", ctx_r1.listHeight, \"px\");\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"nodes\", ctx_r1.data)(\"animate\", false)(\"isHeterogeneous\", ctx_r1.isHeterogeneous)(\"checkable\", ctx_r1.checkableSettings)(\"checkedItems\", ctx_r1.checkedItems)(\"valueField\", ctx_r1.valueField)(\"textField\", ctx_r1.textField)(\"children\", ctx_r1.children)(\"hasChildren\", ctx_r1.hasChildren)(\"isExpanded\", ctx_r1.isNodeExpanded)(\"isDisabled\", ctx_r1.itemDisabled)(\"nodeTemplate\", ctx_r1.nodeTemplate)(\"loadOnDemand\", ctx_r1.loadOnDemand)(\"filter\", ctx_r1.filter)(\"isVisible\", ctx_r1.isNodeVisible)(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(26, _c25, ctx_r1.handleBlur))(\"scope\", ctx_r1);\n i0.ɵɵattribute(\"id\", ctx_r1.treeViewId);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.data || (ctx_r1.data == null ? null : ctx_r1.data.length) === 0 || ctx_r1.allNodesHidden);\n }\n}\nfunction MultiSelectTreeComponent_kendo_resize_sensor_13_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 37);\n i0.ɵɵlistener(\"resize\", function MultiSelectTreeComponent_kendo_resize_sensor_13_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r10);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nexport { PrefixTemplateDirective, SeparatorComponent, SuffixTemplateDirective, ToggleButtonTabStopDirective } from '@progress/kendo-angular-common';\nimport * as i7 from '@angular/forms';\nimport { NgControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { getter as getter$1, touchEnabled, pointers } from '@progress/kendo-common';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { Subscription, merge, fromEvent, Subject, of, interval } from 'rxjs';\nimport * as i2 from '@progress/kendo-angular-popup';\nimport { PopupService, PopupModule } from '@progress/kendo-angular-popup';\nimport { map, switchMap, take, auditTime, tap, filter, partition, throttleTime, catchError, skipWhile, concatMap, takeUntil, debounceTime } from 'rxjs/operators';\nimport { NgIf, NgStyle, NgFor, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { xIcon, caretAltDownIcon, searchIcon, xCircleIcon, plusIcon } from '@progress/kendo-svg-icons';\nimport { IconComponent, IconWrapperComponent, IconsService, IconsModule } from '@progress/kendo-angular-icons';\nimport { ActionSheetComponent, ActionSheetTemplateDirective, ActionSheetModule } from '@progress/kendo-angular-navigation';\nimport { TextBoxComponent, TextBoxPrefixTemplateDirective, TextBoxModule } from '@progress/kendo-angular-inputs';\nimport { ButtonComponent, ButtonModule } from '@progress/kendo-angular-buttons';\nimport * as i1$1 from '@progress/kendo-angular-treeview';\nimport { DataBoundComponent, ExpandableComponent, TreeViewComponent, SelectDirective, FlatDataBindingDirective, HierarchyBindingDirective, ExpandDirective } from '@progress/kendo-angular-treeview';\nimport { DialogContainerService, DialogService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-dropdowns',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621804,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst isPresent = value => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isNumber = value => !isNaN(value);\n/**\n * @hidden\n */\nconst guid = () => {\n let id = \"\";\n let i;\n let random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n id += (i === 12 ? 4 : i === 16 ? random & 3 | 8 : random).toString(16);\n }\n return id;\n};\n/**\n * @hidden\n */\nconst combineStr = (begin, end) => {\n return begin.concat(end.substr(end.toLowerCase().indexOf(begin.toLowerCase()) + begin.length));\n};\n/**\n * @hidden\n */\nconst isWindowAvailable = () => typeof window !== 'undefined';\n/**\n * @hidden\n */\nconst isArray = value => Array.isArray(value);\n/**\n * @hidden\n */\nconst isObject = value => isPresent(value) && typeof value === 'object';\n/**\n * @hidden\n */\nconst isEmptyString = value => typeof value === 'string' && value.length === 0;\n/**\n * @hidden\n */\nconst resolveValuesInArray = (values, data = [], valueField) => values.map(value => {\n return data.find(item => getter(item, valueField) === value);\n}).filter(value => value !== undefined);\n/**\n * @hidden\n */\nconst validateComplexValues = (values, valueField) => isArray(values) && values.filter(item => {\n return isObject(item) && getter(item, valueField) !== undefined;\n});\n/**\n * @hidden\n */\nconst resolveAllValues = (value, data, valueField) => {\n const customValues = validateComplexValues(value, valueField) || [];\n const resolvedValues = resolveValuesInArray(value, data, valueField) || [];\n return resolvedValues.concat(customValues);\n};\n/**\n * @hidden\n */\nconst isObjectArray = values => {\n return isArray(values) && values.every(item => isObject(item));\n};\n/**\n * @hidden\n */\nconst selectedIndices = (values, data, valueField) => {\n const extractedValues = data.map(item => {\n return isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n });\n return values.reduce((arr, item) => {\n const value = isPresent(item) && isPresent(getter(item, valueField)) ? getter(item, valueField) : item;\n const index = extractedValues.indexOf(value);\n if (index !== -1) {\n arr.push(index);\n }\n return arr;\n }, []);\n};\n/**\n * @hidden\n */\nconst getter = (dataItem, field) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n if (!isPresent(field) || !isObject(dataItem)) {\n return dataItem;\n }\n // creates a field accessor supporting nested fields processing\n const valueFrom = getter$1(field);\n return valueFrom(dataItem);\n};\n/**\n * @hidden\n */\nconst resolveValue = args => {\n let dataItem;\n if (isPresent(args.value)) {\n const data = [args.defaultItem, ...args.data];\n dataItem = data.find(element => getter(element, args.valueField) === args.value);\n return {\n dataItem: dataItem,\n focused: args.data.indexOf(dataItem),\n selected: args.data.indexOf(dataItem)\n };\n } else if (args.index) {\n dataItem = args.data[args.index];\n return {\n dataItem: args.data[args.index],\n focused: args.index,\n selected: args.index\n };\n }\n return {\n dataItem: args.defaultItem,\n focused: -1,\n selected: -1\n };\n};\n/**\n * @hidden\n */\nconst sameCharsOnly = (word, character) => {\n for (let idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nconst shuffleData = (data, splitIndex, defaultItem) => {\n let result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nconst matchText = (text, word, ignoreCase) => {\n if (!isPresent(text)) {\n return false;\n }\n let temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nconst elementFromPoint = (x, y) => {\n if (!isDocumentAvailable()) {\n return;\n }\n return document.elementFromPoint(x, y);\n};\n/**\n * @hidden\n *\n * Checks whether the passed object has all of the listed properties.\n */\nconst hasProps = (obj, props) => {\n if (!isPresent(obj)) {\n return false;\n }\n return props.every(prop => obj.hasOwnProperty(prop));\n};\n/**\n * @hidden\n *\n * Checks whether an element is untouched by looking for the ng-untouched css class\n */\nconst isUntouched = element => element.className.includes('ng-untouched');\n/**\n * @hidden\n */\nconst noop = _ => {};\n/**\n * IE element `matches` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\n */\nconst matches = (element, selector) => {\n const matcher = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (!matcher) {\n return false;\n }\n return matcher.call(element, selector);\n};\n/**\n * @hidden\n *\n * IE element `closest` polyfill.\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n */\nconst closest = (element, selector) => {\n let parent = element;\n while (parent !== null && parent.nodeType === 1) {\n if (matches(parent, selector)) {\n return parent;\n }\n parent = parent.parentElement || parent.parentNode;\n }\n return null;\n};\n/**\n * @hidden\n *\n * Parses a provided value to its type 'number' representation.\n * If the parsed value (via Number(value)) is NaN, the provided default value is returned.\n * Uses 0 as default value if a second param is not provided.\n */\nconst parseNumber = (num, defaultValue = 0) => {\n const normalizedValue = Number(num);\n return isNaN(normalizedValue) ? defaultValue : normalizedValue;\n};\n/**\n * @hidden\n *\n * Checks whether the passed target element is inside the provided host or popupRef.\n */\nconst inDropDown = (host, target, popupRef) => {\n return host.nativeElement.contains(target) || popupRef && popupRef.popupElement.contains(target);\n};\n/**\n * @hidden\n *\n * Calculates the hierarchical level of an item, based on the provided index.\n * The result level is zero-based (starts from 0).\n */\nconst getHierarchicalItemLevel = index => {\n return (index || '').split('_').length - 1;\n};\n/**\n * @hidden\n *\n * Retrieves all descendant nodes' lookups which are currently registered in the provided lookup item as a flat array.\n */\nconst fetchDescendentNodes = (lookup, filterExpression) => {\n if (!isPresent(lookup) || lookup.children.length === 0) {\n return [];\n }\n let descendants = lookup.children;\n if (isPresent(filterExpression)) {\n descendants = descendants.filter(descendent => filterExpression(descendent.item));\n }\n descendants.forEach(child => descendants = descendants.concat(fetchDescendentNodes(child, filterExpression)));\n return descendants;\n};\n/**\n * @hidden\n *\n * Retrieves the correct value based on the item's level and the provided value field/s.\n * Used in the MultiSelectTree component.\n */\nconst valueFrom = ({\n dataItem,\n index,\n level\n}, valueField) => {\n const fields = Array.isArray(valueField) ? valueField : [valueField];\n // either use the explicitly provided value level, or infer it from the item index\n const valueLevel = isPresent(level) ? level : getHierarchicalItemLevel(index);\n // fall-back to the last available one, if the current node is in a deeper level\n const normalizedLevel = Math.min(valueLevel, fields.length - 1);\n const field = fields[normalizedLevel];\n return getter$1(field)(dataItem);\n};\n/**\n * @hidden\n * Returns the size class based on the component and size input.\n */\nconst getSizeClass = (component, size) => {\n const SIZE_CLASSES = {\n 'small': `k-${component}-sm`,\n 'medium': `k-${component}-md`,\n 'large': `k-${component}-lg`\n };\n return SIZE_CLASSES[size];\n};\n/**\n * @hidden\n * Returns the rounded class based on the rounded input.\n */\nconst getRoundedClass = rounded => {\n const ROUNDED_CLASSES = {\n 'small': 'k-rounded-sm',\n 'medium': 'k-rounded-md',\n 'large': 'k-rounded-lg',\n 'full': 'k-rounded-full'\n };\n return ROUNDED_CLASSES[rounded];\n};\n/**\n * @hidden\n * Return the fillMode class based on the component and fillMode input.\n */\nconst getFillModeClass = (component, fillMode) => {\n const FILLMODE_CLASSES = {\n 'solid': `k-${component}-solid`,\n 'flat': `k-${component}-flat`,\n 'outline': `k-${component}-outline`\n };\n return FILLMODE_CLASSES[fillMode];\n};\n/**\n * @hidden\n */\nconst filterAndMap = (arr, predicate, mapper) => arr.reduce((acc, curr) => predicate(curr) ? [...acc, mapper(curr)] : acc, []);\n/**\n * @hidden\n *\n * Checks if input is Japanese IME\n */\nconst isJapanese = input => {\n const japaneseRegex = /[\\u3000-\\u303F]|[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\uFF00-\\uFFEF]|[\\u4E00-\\u9FAF]|[\\u2605-\\u2606]|[\\u2190-\\u2195]|\\u203B/g;\n return japaneseRegex.test(input);\n};\n/**\n * @hidden\n */\nconst isLetter = text => {\n const isLetter = /[a-zA-Z]/;\n return isLetter.test(text) && text?.length === 1;\n};\n/**\n * @hidden\n */\nconst getTextField = (field, level) => {\n if (isArray(field)) {\n return field[level];\n }\n return field;\n};\n/**\n * @hidden\n */\nconst getSearchableItems = (treeViewId, element) => {\n const nodeSeletor = `kendo-treeview[id='${treeViewId}'] li.k-treeview-item`;\n const liElements = Array.from(element.querySelectorAll(nodeSeletor));\n return liElements.map(liElement => {\n return {\n text: liElement.innerText,\n index: liElement.getAttribute('data-treeindex')\n };\n });\n};\n/**\n * @hidden\n */\nconst windowSize = () => {\n if (typeof window !== 'undefined') {\n if (window.innerWidth > 768) {\n return 'large';\n } else if (window.innerWidth > 500) {\n return 'medium';\n } else {\n return 'small';\n }\n }\n};\n/**\n * @hidden\n */\nconst isTruthy = value => !!value;\n/**\n * @hidden\n */\nconst updateActionSheetAdaptiveAppearance = (actionSheet, windowSize, renderer) => {\n const element = actionSheet['element'].nativeElement.querySelector('.k-actionsheet');\n const animationContainer = actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');\n if (windowSize === 'medium') {\n renderer.removeClass(element, 'k-actionsheet-fullscreen');\n renderer.addClass(element, 'k-actionsheet-bottom');\n renderer.addClass(element, 'k-adaptive-actionsheet');\n renderer.removeStyle(animationContainer, 'top');\n renderer.removeStyle(animationContainer, 'height');\n renderer.setStyle(animationContainer, 'bottom', '0px');\n } else if (windowSize === 'small') {\n renderer.removeClass(element, 'k-actionsheet-bottom');\n renderer.addClass(element, 'k-actionsheet-fullscreen');\n renderer.addClass(element, 'k-adaptive-actionsheet');\n renderer.setStyle(animationContainer, 'bottom', '0px');\n renderer.setStyle(animationContainer, 'height', '100%');\n }\n};\n/**\n * @hidden\n */\nconst setListBoxAriaLabelledBy = (optionsList, element, renderer) => {\n const listBox = optionsList.wrapper.nativeElement.querySelector('kendo-list ul');\n const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');\n if (ariaLabel) {\n renderer.setAttribute(listBox, 'aria-labelledby', ariaLabel);\n }\n};\n/**\n * @hidden\n */\nconst setActionSheetTitle = (element, actionSheetTitle) => {\n const ariaLabel = element.nativeElement.getAttribute('aria-labelledby') || element.nativeElement.getAttribute('data-kendo-label-id');\n if (!actionSheetTitle && ariaLabel) {\n return document.getElementById(ariaLabel).innerText;\n }\n return actionSheetTitle;\n};\n/**\n * @hidden\n */\nconst animationDuration = 300;\n\n/**\n * @hidden\n */\nlet SearchBarComponent = /*#__PURE__*/(() => {\n class SearchBarComponent {\n constructor(localization, renderer, injector, input, ngZone) {\n this.localization = localization;\n this.injector = injector;\n this.input = input;\n this.ngZone = ngZone;\n this.ariaExpanded = null;\n this.role = 'combobox';\n this.valueChange = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.onClick = new EventEmitter();\n this.onNavigate = new EventEmitter();\n this._userInput = \"\";\n this._previousValue = \"\";\n this._placeholder = \"\";\n this._isSuggestable = false;\n this._isFilterable = false;\n this.subs = new Subscription();\n this.parsedAttributes = {};\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.renderer = renderer;\n this.renderer.addClass(this.input.nativeElement, 'k-input-inner');\n this.renderer.setAttribute(this.input.nativeElement, 'aria-haspopup', 'listbox');\n this.renderer.setAttribute(this.input.nativeElement, 'autocomplete', 'off');\n }\n set readonly(readonly) {\n this._readonly = readonly;\n if (this._readonly) {\n this.renderer.setAttribute(this.input.nativeElement, 'readonly', '');\n } else {\n this.renderer.removeAttribute(this.input.nativeElement, 'readonly');\n }\n }\n get readonly() {\n return this._readonly;\n }\n set disabled(disabled) {\n this._disabled = disabled;\n if (this._disabled) {\n this.renderer.setAttribute(this.input.nativeElement, 'disabled', '');\n } else {\n this.renderer.removeAttribute(this.input.nativeElement, 'disabled');\n }\n }\n get disabled() {\n return this._disabled;\n }\n set isRequired(isRequired) {\n this._isRequired = isRequired;\n if (this._isRequired) {\n this.renderer.setAttribute(this.input.nativeElement, 'required', '');\n } else {\n this.renderer.removeAttribute(this.input.nativeElement, 'required');\n }\n }\n get isRequired() {\n return this._isRequired;\n }\n set isSuggestable(isSuggestable) {\n this._isSuggestable = isSuggestable;\n this.setAriaAutocomplete();\n }\n get isSuggestable() {\n return this._isSuggestable;\n }\n set isFilterable(isFilterable) {\n this._isFilterable = isFilterable;\n this.setAriaAutocomplete();\n }\n get isFilterable() {\n return this._isFilterable;\n }\n get userInput() {\n return this._userInput;\n }\n set userInput(userInput) {\n this._userInput = userInput || \"\";\n }\n /**\n * @hidden\n */\n get formControl() {\n const ngControl = this.injector.get(NgControl, null);\n return ngControl?.control || null;\n }\n /**\n * @hidden\n */\n set inputAttributes(attributes) {\n if (isObjectPresent(this.parsedAttributes)) {\n removeHTMLAttributes(this.parsedAttributes, this.renderer, this.input.nativeElement);\n }\n this._inputAttributes = attributes;\n this.parsedAttributes = this.inputAttributes ? parseAttributes(this.inputAttributes, this.defaultAttributes) : this.inputAttributes;\n this.setInputAttributes();\n }\n get inputAttributes() {\n return this._inputAttributes;\n }\n get attrAriaInvalid() {\n return this.formControl?.invalid;\n }\n set placeholder(text) {\n this._placeholder = text || '';\n this.setInputSize();\n }\n get placeholder() {\n return this._placeholder;\n }\n get dir() {\n return this.direction;\n }\n get value() {\n return this.input.nativeElement.value;\n }\n get defaultAttributes() {\n return {\n id: this.id,\n disabled: this.disabled ? '' : null,\n readonly: this.readonly ? '' : null,\n placeholder: this.placeholder,\n tabIndex: this.tabIndex,\n tabindex: this.tabIndex,\n dir: this.direction,\n required: this.isRequired ? '' : null,\n 'aria-haspopup': 'listbox',\n 'aria-expanded': this.ariaExpanded,\n 'aria-controls': this.ariaControls,\n 'aria-activedescendant': this.activeDescendant,\n 'aria-busy': this.isLoading,\n 'aria-invalid': this.formControl?.invalid\n };\n }\n get mutableAttributes() {\n return {\n autocomplete: 'off',\n role: this.role,\n 'aria-describedby': this.tagListId\n };\n }\n ngOnInit() {\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => this.direction = rtl ? 'rtl' : 'ltr'));\n }\n ngOnChanges(changes) {\n if (!isDocumentAvailable()) {\n return;\n }\n let previousUserInput;\n if (this.input && (changes.userInput || changes.suggestedText)) {\n if (changes.userInput && changes.userInput.previousValue) {\n if (this._previousValue === changes.userInput.previousValue) {\n previousUserInput = this._previousValue;\n } else {\n previousUserInput = changes.userInput.currentValue || \"\";\n }\n } else {\n previousUserInput = this._previousValue;\n }\n const caretStart = this.input.nativeElement.selectionStart;\n const caretAtEnd = previousUserInput.length === caretStart;\n this.writeInputValue(this.suggestedText ? combineStr(this.userInput, this.suggestedText) : this.userInput);\n if (this.suggestedText) {\n this.setInputSelection(this.userInput.length, this.suggestedText.length);\n } else if (isSafari(navigator.userAgent) && !caretAtEnd) {\n this.setInputSelection(caretStart, this.userInput.length);\n } else if (caretAtEnd) {\n this.setInputSelection(this.userInput.length, this.userInput.length);\n } else {\n this.setInputSelection(caretStart, caretStart);\n }\n this._previousValue = this.userInput;\n }\n }\n ngAfterViewInit() {\n this.subs.add(this.input.nativeElement.addEventListener('input', event => this.handleInput(event)));\n this.subs.add(this.input.nativeElement.addEventListener('focus', event => this.handleFocus(event)));\n this.subs.add(this.input.nativeElement.addEventListener('blur', event => this.handleBlur(event)));\n this.subs.add(this.input.nativeElement.addEventListener('keydown', event => this.handleKeydown(event)));\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n writeInputValue(text) {\n if (isDocumentAvailable()) {\n this.renderer.setProperty(this.input.nativeElement, 'value', text);\n }\n }\n setInputSelection(start, end) {\n if (isDocumentAvailable() && this.input.nativeElement === document.activeElement) {\n try {\n this.input.nativeElement.setSelectionRange(start, end);\n } catch (e) {\n //Make sure that the element is in the DOM before you invoke its methods\n }\n }\n }\n setAriaAutocomplete() {\n if (this.isFilterable) {\n this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'list');\n }\n if (this.isSuggestable) {\n this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'inline');\n }\n if (this.isFilterable && this.isSuggestable) {\n this.renderer.setAttribute(this.input.nativeElement, 'aria-autocomplete', 'both');\n }\n if (!this.isFilterable && !this.isSuggestable) {\n this.renderer.removeAttribute(this.input.nativeElement, 'aria-autocomplete');\n }\n }\n handleInput(event) {\n const target = event.target;\n const isBrowserSafari = isSafari(navigator.userAgent);\n const value = isBrowserSafari && isJapanese(target.value) ? event.data : target.value;\n if (value !== this.userInput) {\n this._previousValue = value;\n this.valueChange.emit(value);\n }\n }\n handleFocus(event) {\n this.onFocus.emit(event);\n }\n handleBlur(event) {\n this.onBlur.emit(event);\n }\n handleKeydown(event) {\n const keyCode = event.keyCode;\n const keys = [Keys.ArrowUp, Keys.ArrowDown, Keys.ArrowLeft, Keys.ArrowRight, Keys.Enter, Keys.Escape, Keys.Delete, Keys.Backspace, Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp];\n if (keys.indexOf(keyCode) > -1) {\n this.onNavigate.emit(event);\n }\n }\n focus() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.focus();\n }\n }\n blur() {\n if (isDocumentAvailable()) {\n this.input.nativeElement.blur();\n }\n }\n setInputSize() {\n const lengthOf = x => x ? x.length : 0;\n const input = this.input.nativeElement;\n const placeholderLength = lengthOf(this.placeholder);\n const textLength = lengthOf(this.value);\n const size = Math.max(placeholderLength, textLength, 1);\n this.renderer.setAttribute(input, 'size', size.toString());\n }\n setInputAttributes() {\n const attributesToRender = Object.assign({}, this.mutableAttributes, this.parsedAttributes);\n setHTMLAttributes(attributesToRender, this.renderer, this.input.nativeElement, this.ngZone);\n }\n }\n SearchBarComponent.ɵfac = function SearchBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SearchBarComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n SearchBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SearchBarComponent,\n selectors: [[\"input\", \"kendoSearchbar\", \"\"]],\n hostVars: 10,\n hostBindings: function SearchBarComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.id)(\"aria-activedescendant\", ctx.activeDescendant)(\"tabindex\", ctx.tabIndex)(\"aria-busy\", ctx.isLoading)(\"aria-controls\", ctx.ariaControls)(\"aria-expanded\", ctx.ariaExpanded)(\"aria-invalid\", ctx.attrAriaInvalid)(\"placeholder\", ctx.placeholder)(\"role\", ctx.role)(\"dir\", ctx.dir);\n }\n },\n inputs: {\n tagListId: \"tagListId\",\n readonly: \"readonly\",\n disabled: \"disabled\",\n isRequired: \"isRequired\",\n isSuggestable: \"isSuggestable\",\n isFilterable: \"isFilterable\",\n userInput: \"userInput\",\n suggestedText: \"suggestedText\",\n inputAttributes: \"inputAttributes\",\n id: \"id\",\n activeDescendant: \"activeDescendant\",\n tabIndex: \"tabIndex\",\n isLoading: \"isLoading\",\n ariaControls: \"ariaControls\",\n ariaExpanded: \"ariaExpanded\",\n placeholder: \"placeholder\"\n },\n outputs: {\n valueChange: \"valueChange\",\n onBlur: \"onBlur\",\n onFocus: \"onFocus\",\n onClick: \"onClick\",\n onNavigate: \"onNavigate\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n decls: 0,\n vars: 0,\n template: function SearchBarComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return SearchBarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the list item content. To define the item template, nest an `` tag\n * with the `kendoItemTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * - [Using `ItemTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-item-template)\n * - [Using `ItemTemplate` with the ComboBox]({% slug templates_combobox %}#toc-item-template)\n * - [Using `ItemTemplate` with the DropDownList]({% slug templates_ddl %}#toc-item-template)\n * - [Using `ItemTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-item-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet ItemTemplateDirective = /*#__PURE__*/(() => {\n class ItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n ItemTemplateDirective.ɵfac = function ItemTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ItemTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n ItemTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ItemTemplateDirective,\n selectors: [[\"\", \"kendoDropDownListItemTemplate\", \"\"], [\"\", \"kendoComboBoxItemTemplate\", \"\"], [\"\", \"kendoAutoCompleteItemTemplate\", \"\"], [\"\", \"kendoMultiSelectItemTemplate\", \"\"]],\n standalone: true\n });\n return ItemTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the header content of the list. To define the header template, nest an `` tag\n * with the `kendoHeaderTemplate` directive inside the component tag.\n *\n * - [Using `HeaderTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-header-template)\n * - [Using `HeaderTemplate` with the ComboBox]({% slug templates_combobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownList]({% slug templates_ddl %}#toc-header-template)\n * - [Using `HeaderTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-header-template)\n * - [Using `HeaderTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-header-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Header template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet HeaderTemplateDirective = /*#__PURE__*/(() => {\n class HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n HeaderTemplateDirective.ɵfac = function HeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n HeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: HeaderTemplateDirective,\n selectors: [[\"\", \"kendoDropDownListHeaderTemplate\", \"\"], [\"\", \"kendoComboBoxHeaderTemplate\", \"\"], [\"\", \"kendoDropDownTreeHeaderTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxHeaderTemplate\", \"\"], [\"\", \"kendoAutoCompleteHeaderTemplate\", \"\"], [\"\", \"kendoMultiSelectHeaderTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeHeaderTemplate\", \"\"]],\n standalone: true\n });\n return HeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the footer content of the list. To define the footer template, nest an `` tag\n * with the `kendoFooterTemplate` directive inside the component tag.\n *\n * - [Using `FooterTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-footer-template)\n * - [Using `FooterTemplate` with the ComboBox]({% slug templates_combobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownList]({% slug templates_ddl %}#toc-footer-template)\n * - [Using `FooterTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-footer-template)\n * - [Using `FooterTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-footer-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

Footer template

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet FooterTemplateDirective = /*#__PURE__*/(() => {\n class FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n FooterTemplateDirective.ɵfac = function FooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n FooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FooterTemplateDirective,\n selectors: [[\"\", \"kendoDropDownListFooterTemplate\", \"\"], [\"\", \"kendoComboBoxFooterTemplate\", \"\"], [\"\", \"kendoDropDownTreeFooterTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxFooterTemplate\", \"\"], [\"\", \"kendoAutoCompleteFooterTemplate\", \"\"], [\"\", \"kendoMultiSelectFooterTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeFooterTemplate\", \"\"]],\n standalone: true\n });\n return FooterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the group header content. To define the group template, nest an `` tag\n * with the `kendoGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `GroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-group-header-template)\n * - [Using `GroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-group-header-template)\n * - [Using `GroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-group-header-template)\n * - [Using `GroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-group-header-template)\n * - [Using `GroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-group-header-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nlet GroupTemplateDirective = /*#__PURE__*/(() => {\n class GroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupTemplateDirective.ɵfac = function GroupTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n GroupTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupTemplateDirective,\n selectors: [[\"\", \"kendoDropDownListGroupTemplate\", \"\"], [\"\", \"kendoComboBoxGroupTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxGroupTemplate\", \"\"], [\"\", \"kendoAutoCompleteGroupTemplate\", \"\"], [\"\", \"kendoMultiSelectGroupTemplate\", \"\"]],\n standalone: true\n });\n return GroupTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the fixed group header content. To define the fixed group template, nest an `` tag\n * with the `kendoFixedGroupTemplate` directive inside the component tag. The template context is\n * set to the current component. To get a reference to the current data item, use the `let-groupName` directive.\n *\n * - [Using `FixedGroupTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-fixed-group-header-template)\n * - [Using `FixedGroupTemplate` with the ComboBox]({% slug templates_combobox %}#toc-fixed-group-header-template)\n * - [Using `FixedGroupTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-fixed-group-header-template)\n * - [Using `FixedGroupTemplate` with the DropDownList]({% slug templates_ddl %}#toc-fixed-group-header-template)\n * - [Using `FixedGroupTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-fixed-group-header-template)\n *\n * @example\n * ```ts\n * import { groupBy } from '@progress/kendo-data-query';\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * Food type: {{groupName}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n * public groupedData = groupBy(this.data, [{field: \"subcategory\"}]);\n * }\n * ```\n */\nlet FixedGroupTemplateDirective = /*#__PURE__*/(() => {\n class FixedGroupTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n FixedGroupTemplateDirective.ɵfac = function FixedGroupTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FixedGroupTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n FixedGroupTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FixedGroupTemplateDirective,\n selectors: [[\"\", \"kendoDropDownListFixedGroupTemplate\", \"\"], [\"\", \"kendoComboBoxFixedGroupTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxFixedGroupTemplate\", \"\"], [\"\", \"kendoAutoCompleteFixedGroupTemplate\", \"\"], [\"\", \"kendoMultiSelectFixedGroupTemplate\", \"\"]],\n standalone: true\n });\n return FixedGroupTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DataService = /*#__PURE__*/(() => {\n class DataService {\n constructor() {\n this.grouped = false;\n this.groupIndices = [];\n }\n set data(data) {\n this._data = data;\n this.grouped = this.isGrouped(data);\n if (this.grouped) {\n this.groupIndices = this.getGroupIndices(data);\n this._flatData = this.flatten(data);\n }\n }\n get data() {\n if (this.grouped) {\n return this._flatData;\n }\n return this._data;\n }\n /**\n * @hidden\n * Used to get the actual items count, i.e. excluding the header items in case of grouping.\n */\n get itemsCount() {\n if (!isPresent(this.data) || this.data.length === 0) {\n return 0;\n }\n const items = this.grouped ? this._flatData.filter(item => !item.header) : this.data;\n return items.length;\n }\n /**\n * @hidden\n * Used to determine if the component received grouped data.\n */\n isGrouped(data) {\n // GroupResult { aggregates: AggregateResult, field: string, items: object[], value: any }\n // https://www.telerik.com/kendo-angular-ui/components/dataquery/api/GroupResult/\n return isPresent(data) && data.length !== 0 && isPresent(data[0]) && hasProps(data[0], ['aggregates', 'field', 'items', 'value']);\n }\n /**\n * @hidden\n * Used to calculate the last item index of each group.\n */\n getGroupIndices(data) {\n const groupIndices = [];\n for (let i = 0; i <= data.length - 1; i++) {\n groupIndices[i] = (groupIndices[i - 1] || 0) + data[i].items.length;\n }\n return groupIndices;\n }\n /**\n * @hidden\n * Used to get a flat array containing all items matching certain criteria.\n */\n filter(predicate) {\n let result = [];\n if (this.isGrouped(this.data)) {\n for (let i = 0; i <= this.groupIndices.length - 1; i++) {\n const matches = this.data[i].items.filter(predicate);\n if (matches) {\n result = result.concat(matches);\n }\n }\n } else {\n result = this.data.filter(predicate);\n }\n return result;\n }\n /**\n * @hidden\n * Used to get the index of a given data item.\n */\n indexOf(item, startFrom = 0) {\n let predicate = element => {\n return element === item;\n };\n if (this.grouped) {\n predicate = element => {\n return element.value === item;\n };\n }\n return this.findIndex(predicate, startFrom);\n }\n /**\n * @hidden\n * Used to get the index of a data item based on an expression.\n */\n findIndex(predicate, startFrom = 0) {\n let index = -1;\n if (this.grouped) {\n const data = this._flatData.filter(item => !item.header && item.offsetIndex >= startFrom);\n index = data.findIndex(predicate);\n index = data[index] ? data[index].offsetIndex : -1;\n } else {\n const data = this.data.slice(startFrom);\n const itemIndex = data.findIndex(predicate);\n index = itemIndex !== -1 ? itemIndex + startFrom : -1;\n }\n return index;\n }\n /**\n * @hidden\n * Used to get the closest group header prior to an item index.\n */\n closestGroup(index) {\n for (let i = index; i >= 0; i--) {\n if (this._flatData[i].header) {\n return this._flatData[i];\n }\n }\n }\n /**\n * @hidden\n * Used to get the first item matching the criteria.\n */\n find(predicate) {\n const index = this.findIndex(predicate);\n return this.itemAt(index);\n }\n /**\n * @hidden\n * Used to get the true index in a flattened data array.\n */\n flatIndex(index) {\n if (this.itemsCount === 0) {\n return -1;\n }\n if (this.grouped) {\n const match = this._flatData.find(item => !item.header && item.offsetIndex === index);\n if (match) {\n return match.index;\n }\n } else {\n return index;\n }\n return -1;\n }\n /**\n * @hidden\n * Used to get the item at the provided index.\n */\n itemAt(index) {\n let dataItem;\n if (this.itemsCount === 0) {\n return dataItem;\n }\n if (this.grouped) {\n const match = this._flatData.find(item => !item.header && item.offsetIndex === index);\n if (match) {\n dataItem = match.value;\n }\n } else {\n dataItem = this.data[index];\n }\n return dataItem;\n }\n /**\n * @hidden\n * Used to get the group at the provided index.\n */\n groupAt(index) {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n return this._flatData.find(item => item.header && item.index === index);\n }\n /**\n * @hidden\n * Used to get all group items indices.\n */\n groupItemsIndices() {\n if (this.isGrouped) {\n return filterAndMap(this.data, item => item.header, mappedItem => mappedItem.index);\n }\n return [];\n }\n /**\n * @hidden\n * Used to get the field by which the data is grouped.\n */\n groupField() {\n if (this.itemsCount === 0 || !this.isGrouped) {\n return null;\n }\n return this._data[0].field;\n }\n /**\n * @hidden\n * Used to get the group to which a dataItem belongs.\n */\n itemGroup(item) {\n if (!item || this.itemsCount === 0 || !this.isGrouped) {\n return;\n }\n const fieldName = this.groupField();\n if (fieldName) {\n return getter(item, fieldName);\n }\n }\n flatten(data, group = undefined, offset = 0, groupIndex = 0) {\n let flat = [];\n if (isPresent(group)) {\n flat.push({\n header: true,\n index: groupIndex + offset,\n offsetIndex: groupIndex,\n value: group\n });\n }\n for (let i = 0; i < data.length; i++) {\n let result = [];\n if (data[i].items) {\n result = this.flatten(data[i].items, data[i].value, offset, i);\n offset = offset + data[i].items.length;\n } else {\n result.push({\n header: false,\n index: groupIndex + offset + i + 1,\n offsetIndex: offset + i,\n value: data[i]\n });\n }\n flat = flat.concat(result);\n }\n return flat;\n }\n }\n DataService.ɵfac = function DataService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataService)();\n };\n DataService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DataService,\n factory: DataService.ɵfac\n });\n return DataService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DisabledItemsService = /*#__PURE__*/(() => {\n class DisabledItemsService {\n constructor(dataService) {\n this.dataService = dataService;\n this.itemDisabled = null;\n }\n isIndexDisabled(index) {\n if (this.itemDisabled) {\n const item = this.dataService.itemAt(index);\n if (isPresent(item)) {\n return this.itemDisabled({\n dataItem: item,\n index\n });\n } else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({\n dataItem: this.defaultItem,\n index: -1\n });\n }\n }\n }\n isItemDisabled(item) {\n if (this.itemDisabled) {\n const index = this.dataService.indexOf(item);\n if (index !== -1) {\n return this.itemDisabled({\n dataItem: item,\n index\n });\n } else if (isPresent(this.defaultItem)) {\n return this.itemDisabled({\n dataItem: this.defaultItem,\n index: -1\n });\n }\n }\n }\n }\n DisabledItemsService.ɵfac = function DisabledItemsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DisabledItemsService)(i0.ɵɵinject(DataService));\n };\n DisabledItemsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DisabledItemsService,\n factory: DisabledItemsService.ɵfac\n });\n return DisabledItemsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet SelectionService = /*#__PURE__*/(() => {\n class SelectionService {\n constructor(disabledItemsService) {\n this.disabledItemsService = disabledItemsService;\n this.onSelect = new EventEmitter();\n this.onChange = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.total = 0;\n this.selectedIndices = [];\n this.indicesToBeRemoved = [];\n this.indicesToBeAdded = [];\n }\n getTotal() {\n return this.total;\n }\n isSelected(index) {\n return isPresent(this.selectedIndices.find(current => current === index));\n }\n isFocused(index) {\n return index === this.focused;\n }\n focus(index) {\n if (this.isFocused(index)) {\n return;\n }\n this.focused = index;\n this.onFocus.emit(index);\n }\n select(index) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices = [index];\n this.focused = index;\n this.onSelect.emit({\n indices: [index],\n newSelection: isPresent(index)\n });\n }\n add(index, preventClosingPopup) {\n if (this.isSelected(index)) {\n return;\n }\n this.selectedIndices.push(index);\n this.focused = index;\n this.onChange.emit({\n added: index,\n indices: this.selectedIndices.slice(),\n preventClosingPopup: preventClosingPopup\n });\n }\n emitMultipleAddedRemoved() {\n this.onChange.emit({\n added: this.indicesToBeAdded,\n removed: this.indicesToBeRemoved,\n indices: this.selectedIndices.slice(),\n preventClosingPopup: true,\n isMultipleSelection: true\n });\n this.indicesToBeAdded = [];\n this.indicesToBeRemoved = [];\n }\n addMultiple(indices) {\n this.indicesToBeAdded = indices.slice();\n this.selectedIndices.push(...indices);\n }\n deselect(index, preventClosingPopup) {\n if (!this.isSelected(index)) {\n return;\n }\n const position = this.selectedIndices.indexOf(index);\n this.selectedIndices.splice(position, 1);\n this.focused = index;\n if (this.selected.length === 0) {\n this.lastClickedIndex = null;\n }\n this.onChange.emit({\n indices: this.selectedIndices.slice(),\n removed: index,\n preventClosingPopup: preventClosingPopup\n });\n }\n unselectMultiple(indices) {\n indices.forEach(index => {\n const position = this.selectedIndices.indexOf(index);\n this.selectedIndices.splice(position, 1);\n });\n this.indicesToBeRemoved = indices.slice();\n }\n change(index) {\n const newSelection = isPresent(index) && !this.isSelected(index);\n this.selectedIndices = [index];\n this.focused = index;\n this.onChange.emit({\n indices: [index],\n newSelection: newSelection\n });\n }\n resetSelection(index) {\n this.selectedIndices = index instanceof Array ? index : [index];\n this.focused = this.selectedIndices[this.selectedIndices.length - 1];\n }\n get selected() {\n return this.selectedIndices.slice();\n }\n get focused() {\n return this.focusedIndex;\n }\n set focused(index) {\n if (this.focusedIndex !== index) {\n this.focusedIndex = index;\n this.onFocus.emit(index);\n }\n }\n selectFromTo(from, to) {\n const addedIndices = [];\n for (let i = from; i <= to; i++) {\n if (!this.isSelected(i) && !this.disabledItemsService.isIndexDisabled(i)) {\n addedIndices.push(i);\n }\n }\n this.addMultiple(addedIndices);\n }\n unselectFromTo(from, to) {\n const indicesToBeUnselected = [];\n for (let i = from; i >= to; i--) {\n if (this.isSelected(i) && !this.disabledItemsService.isIndexDisabled(i)) {\n indicesToBeUnselected.push(i);\n }\n }\n this.unselectMultiple(indicesToBeUnselected);\n }\n unselectNotNeededIndices(startOfSelection, endOfSelection, totalItems) {\n const indicesToBeUnselected = [];\n for (let i = 0; i < startOfSelection; i++) {\n if (this.isSelected(i)) {\n indicesToBeUnselected.push(i);\n }\n }\n for (let i = endOfSelection + 1; i < totalItems; i++) {\n if (this.isSelected(i)) {\n indicesToBeUnselected.push(i);\n }\n }\n this.unselectMultiple(indicesToBeUnselected);\n }\n }\n SelectionService.ɵfac = function SelectionService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectionService)(i0.ɵɵinject(DisabledItemsService));\n };\n SelectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SelectionService,\n factory: SelectionService.ɵfac\n });\n return SelectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nvar NavigationAction = /*#__PURE__*/function (NavigationAction) {\n // eslint-disable-next-line id-denylist\n NavigationAction[NavigationAction[\"Undefined\"] = 0] = \"Undefined\";\n NavigationAction[NavigationAction[\"Open\"] = 1] = \"Open\";\n NavigationAction[NavigationAction[\"Close\"] = 2] = \"Close\";\n NavigationAction[NavigationAction[\"Enter\"] = 3] = \"Enter\";\n NavigationAction[NavigationAction[\"Tab\"] = 4] = \"Tab\";\n NavigationAction[NavigationAction[\"Esc\"] = 5] = \"Esc\";\n NavigationAction[NavigationAction[\"Delete\"] = 6] = \"Delete\";\n NavigationAction[NavigationAction[\"Backspace\"] = 7] = \"Backspace\";\n NavigationAction[NavigationAction[\"Home\"] = 8] = \"Home\";\n NavigationAction[NavigationAction[\"End\"] = 9] = \"End\";\n NavigationAction[NavigationAction[\"Up\"] = 10] = \"Up\";\n NavigationAction[NavigationAction[\"Down\"] = 11] = \"Down\";\n NavigationAction[NavigationAction[\"Left\"] = 12] = \"Left\";\n NavigationAction[NavigationAction[\"Right\"] = 13] = \"Right\";\n NavigationAction[NavigationAction[\"PageDown\"] = 14] = \"PageDown\";\n NavigationAction[NavigationAction[\"PageUp\"] = 15] = \"PageUp\";\n NavigationAction[NavigationAction[\"SelectPrevious\"] = 16] = \"SelectPrevious\";\n NavigationAction[NavigationAction[\"SelectNext\"] = 17] = \"SelectNext\";\n NavigationAction[NavigationAction[\"SelectAll\"] = 18] = \"SelectAll\";\n NavigationAction[NavigationAction[\"SelectAllToBeginning\"] = 19] = \"SelectAllToBeginning\";\n NavigationAction[NavigationAction[\"SelectAllToEnd\"] = 20] = \"SelectAllToEnd\";\n return NavigationAction;\n}(NavigationAction || {});\nconst MIN_INDEX = 0;\n/**\n * @hidden\n */\nclass NavigationEvent {\n /**\n * The index of the item to which the user navigated.\n */\n constructor(index, originalEvent) {\n this.index = index;\n this.originalEvent = originalEvent;\n }\n}\n/**\n * @hidden\n */\nlet NavigationService = /*#__PURE__*/(() => {\n class NavigationService {\n constructor(disabledItemsService, selectionService) {\n this.disabledItemsService = disabledItemsService;\n this.selectionService = selectionService;\n this.open = new EventEmitter();\n this.close = new EventEmitter();\n this.enter = new EventEmitter();\n this.tab = new EventEmitter();\n this.esc = new EventEmitter();\n this.up = new EventEmitter();\n this.right = new EventEmitter();\n this.down = new EventEmitter();\n this.left = new EventEmitter();\n this.delete = new EventEmitter();\n this.backspace = new EventEmitter();\n this.home = new EventEmitter();\n this.end = new EventEmitter();\n this.pagedown = new EventEmitter();\n this.pageup = new EventEmitter();\n this.selectnext = new EventEmitter();\n this.selectprevious = new EventEmitter();\n this.selectall = new EventEmitter();\n this.selectalltobeginning = new EventEmitter();\n this.selectalltoend = new EventEmitter();\n }\n process(args) {\n const keyCode = args.originalEvent.keyCode;\n const altKey = args.originalEvent.altKey;\n const shiftKey = args.originalEvent.shiftKey;\n const ctrlKey = args.originalEvent.ctrlKey || args.originalEvent.metaKey;\n const openOnSpace = args.openOnSpace;\n const closeOnSpace = args.closeOnSpace;\n let index;\n let action = NavigationAction.Undefined;\n if (altKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.Open;\n } else if (openOnSpace && keyCode === Keys.Space) {\n action = NavigationAction.Open;\n } else if (altKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.Close;\n } else if (closeOnSpace && keyCode === Keys.Space) {\n action = NavigationAction.Close;\n } else if (shiftKey && keyCode === Keys.ArrowUp) {\n action = NavigationAction.SelectPrevious;\n } else if (shiftKey && keyCode === Keys.ArrowDown) {\n action = NavigationAction.SelectNext;\n } else if (ctrlKey && keyCode === Keys.KeyA) {\n action = NavigationAction.SelectAll;\n } else if (ctrlKey && shiftKey && keyCode === Keys.Home) {\n action = NavigationAction.SelectAllToBeginning;\n } else if (ctrlKey && shiftKey && keyCode === Keys.End) {\n action = NavigationAction.SelectAllToEnd;\n } else if (keyCode === Keys.Enter) {\n action = NavigationAction.Enter;\n } else if (keyCode === Keys.Escape) {\n action = NavigationAction.Esc;\n } else if (keyCode === Keys.Tab) {\n action = NavigationAction.Tab;\n } else if (keyCode === Keys.ArrowUp) {\n index = this.next({\n current: args.current,\n start: args.min,\n end: args.max,\n step: -1\n });\n action = NavigationAction.Up;\n } else if (keyCode === Keys.ArrowLeft) {\n index = this.next({\n current: args.current,\n start: args.min,\n end: args.max,\n step: -1\n });\n action = NavigationAction.Left;\n } else if (keyCode === Keys.ArrowDown) {\n index = this.next({\n current: args.current,\n start: args.min,\n end: args.max,\n step: 1\n });\n action = NavigationAction.Down;\n } else if (keyCode === Keys.ArrowRight) {\n index = this.next({\n current: args.current,\n start: args.min,\n end: args.max,\n step: 1\n });\n action = NavigationAction.Right;\n } else if (keyCode === Keys.Home) {\n index = this.isDisabled(MIN_INDEX) ? args.current : MIN_INDEX;\n action = NavigationAction.Home;\n } else if (keyCode === Keys.End) {\n index = this.isDisabled(args.max) ? args.current : args.max;\n action = NavigationAction.End;\n } else if (keyCode === Keys.Delete) {\n action = NavigationAction.Delete;\n } else if (keyCode === Keys.Backspace) {\n action = NavigationAction.Backspace;\n } else if (keyCode === Keys.PageDown) {\n action = NavigationAction.PageDown;\n } else if (keyCode === Keys.PageUp) {\n action = NavigationAction.PageUp;\n }\n const eventData = new NavigationEvent(index, args.originalEvent);\n if (action !== NavigationAction.Undefined) {\n this[NavigationAction[action].toLowerCase()].emit(eventData);\n }\n return action;\n }\n next(args) {\n const {\n current,\n start,\n end,\n step\n } = args;\n const nextIndex = !isPresent(current) ? start : this.clampIndex(current + step, start, end);\n const firstFocusableIndex = this.firstFocusableIndex(nextIndex, start, end, step);\n if (isPresent(firstFocusableIndex)) {\n return firstFocusableIndex;\n }\n if (this.selectionService.isSelected(current) && current >= start) {\n return current;\n }\n const inversedStep = -1 * step;\n return this.firstFocusableIndex(nextIndex, start, end, inversedStep);\n }\n clampIndex(index, min, max) {\n if (!isPresent(index) || index < min) {\n return min;\n }\n if (index > max) {\n return max;\n }\n return index;\n }\n firstFocusableIndex(startIndex, min, max, step) {\n while (min <= startIndex && startIndex <= max) {\n if (!this.isDisabled(startIndex)) {\n return startIndex;\n }\n startIndex += step;\n }\n return undefined;\n }\n isDisabled(index) {\n if (this.disabledItemsService) {\n return this.disabledItemsService.isIndexDisabled(index);\n }\n }\n }\n NavigationService.ɵfac = function NavigationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NavigationService)(i0.ɵɵinject(DisabledItemsService), i0.ɵɵinject(SelectionService));\n };\n NavigationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NavigationService,\n factory: NavigationService.ɵfac\n });\n return NavigationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders content when no data is available. To define the no-data template, nest a `` tag\n * with the `kendoNoDataTemplate` directive inside the component tag.\n *\n * - [Using `NoDataTemplate` with the AutoComplete]({% slug templates_autocomplete %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the ComboBox]({% slug templates_combobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiColumnComboBox]({% slug templates_multicolumncombobox %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownList]({% slug templates_ddl %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-no-data-template)\n * - [Using `NoDataTemplate` with the MultiSelect]({% slug templates_multiselect %}#toc-no-data-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n *

No data!

\n *
\n *
\n * `\n * })\n * class AppComponent {\n * public listItems: Array = [];\n * }\n * ```\n */\nlet NoDataTemplateDirective = /*#__PURE__*/(() => {\n class NoDataTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n NoDataTemplateDirective.ɵfac = function NoDataTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NoDataTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n NoDataTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NoDataTemplateDirective,\n selectors: [[\"\", \"kendoDropDownListNoDataTemplate\", \"\"], [\"\", \"kendoDropDownTreeNoDataTemplate\", \"\"], [\"\", \"kendoComboBoxNoDataTemplate\", \"\"], [\"\", \"kendoMultiColumnComboBoxNoDataTemplate\", \"\"], [\"\", \"kendoAutoCompleteNoDataTemplate\", \"\"], [\"\", \"kendoMultiSelectNoDataTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeNoDataTemplate\", \"\"]],\n standalone: true\n });\n return NoDataTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * If the event is prevented by any of its subscribers, returns `true`.\n *\n * @returns `true` if the default action was prevented. Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Defines the mandatory properties of the `kendoDropDownFilter` directive\n * so that `kendoDropDownFilter` can be used with any of the DropDowns components\n * which implement the `FilterableDropDownComponentBase` class.\n *\n * @hidden\n */\nclass FilterableComponent {}\n\n/**\n * @hidden\n */\nlet ListItemDirective = /*#__PURE__*/(() => {\n class ListItemDirective {\n constructor(element) {\n this.element = element;\n }\n }\n ListItemDirective.ɵfac = function ListItemDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ListItemDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n ListItemDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ListItemDirective,\n selectors: [[\"li\", \"role\", \"option\"], [\"li\", \"role\", \"group\"]],\n standalone: true\n });\n return ListItemDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet SelectableDirective = /*#__PURE__*/(() => {\n class SelectableDirective {\n constructor(selectionService) {\n this.checkboxes = {\n enabled: false\n };\n this.multipleSelection = false;\n this.selectionService = selectionService;\n }\n get focusedClassName() {\n return this.selectionService.isFocused(this.index);\n }\n get selectedClassName() {\n return !this.checkboxes.enabled && this.selectionService.isSelected(this.index);\n }\n onClick(event) {\n event.stopPropagation();\n this.selectionService.lastClickedIndex = this.index;\n if (this.checkboxes.enabled && !this.checkboxes.checkOnClick) {\n return;\n }\n if (this.multipleSelection) {\n if (this.selectionService.isSelected(this.index)) {\n this.selectionService.deselect(this.index);\n } else {\n this.selectionService.add(this.index);\n }\n } else {\n this.selectionService.change(this.index);\n }\n }\n }\n SelectableDirective.ɵfac = function SelectableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectableDirective)(i0.ɵɵdirectiveInject(SelectionService));\n };\n SelectableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectableDirective,\n selectors: [[\"\", \"kendoDropDownsSelectable\", \"\"]],\n hostVars: 9,\n hostBindings: function SelectableDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function SelectableDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"index\", ctx.index);\n i0.ɵɵstyleProp(\"height\", ctx.height, \"px\")(\"min-height\", ctx.height, \"px\");\n i0.ɵɵclassProp(\"k-focus\", ctx.focusedClassName)(\"k-selected\", ctx.selectedClassName);\n }\n },\n inputs: {\n index: \"index\",\n checkboxes: \"checkboxes\",\n height: \"height\",\n isMultiselect: \"isMultiselect\",\n multipleSelection: \"multipleSelection\"\n },\n standalone: true\n });\n return SelectableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ListComponent = /*#__PURE__*/(() => {\n class ListComponent {\n /* tslint:disable:member-ordering */\n constructor(dataService, wrapper, selectionService, disabledItemsService, cdr, zone, renderer) {\n this.dataService = dataService;\n this.wrapper = wrapper;\n this.selectionService = selectionService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.zone = zone;\n this.renderer = renderer;\n this.selected = [];\n this.focused = -1;\n this.show = true;\n this.multipleSelection = false;\n this.type = 'list';\n this.checkboxes = {\n enabled: false\n };\n this.rounded = 'medium';\n this.onClick = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.listResize = new EventEmitter();\n this.popupListScroll = new EventEmitter();\n this.startFrom = 0;\n this.lastLoaded = 0;\n this.lastScrollTop = 0;\n this.scrollToFocused = false;\n this._size = 'medium';\n this.selectSubscription = merge(this.selectionService.onSelect.pipe(map(args => args.indices[0])), this.selectionService.onFocus).pipe(\n // handle only the very last onSelect/onFocus emission\n switchMap(event => this.zone.onStable.pipe(take(1), map(() => event)))).subscribe(this.scrollToItem.bind(this));\n this.prepareClasses();\n }\n set data(data) {\n this._data = data[0] && data[0].header ? data.slice(0) : data;\n }\n get data() {\n return this._data;\n }\n set size(size) {\n if (this.type === 'list') {\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n if (size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', size));\n }\n this._size = size;\n }\n }\n get size() {\n return this._size;\n }\n get pageSize() {\n if (this.virtual.pageSize) {\n return this.virtual.pageSize;\n }\n const size = Math.round(this.height / this.virtual.itemHeight);\n return size;\n }\n get scrollHeight() {\n return this.virtual.total * this.virtual.itemHeight;\n }\n get overflowY() {\n if (isPresent(this.virtual)) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n return overflow;\n }\n }\n /**\n * @hidden\n */\n get checkboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n ngOnChanges(changes) {\n if (isChanged('data', changes, false)) {\n if (this.lastLoaded <= 0) {\n this.lastLoaded = this.data.length - 1;\n this.scrollToFocused = !changes['data'].isFirstChange();\n }\n this.setOverflow();\n }\n if (isChanged('virtual', changes, false)) {\n this.setOverflow();\n }\n if (isChanged('type', changes, false)) {\n this.prepareClasses();\n }\n }\n ngAfterViewInit() {\n this.setComponentClasses();\n this.zone.runOutsideAngular(() => {\n this.scrollSubscription = fromEvent(this.content.nativeElement, \"scroll\").pipe(auditTime(100), tap(this.prefetchData.bind(this)), tap(this.findCurrentGroup.bind(this))).subscribe(() => {\n this.lastScrollTop = this.content.nativeElement.scrollTop;\n });\n });\n this.setGroupAttributes();\n this.setOverflow();\n }\n setGroupAttributes() {\n const liItems = document.querySelectorAll('li');\n let isGroup;\n let childrenliItemsIds = [];\n let firstGroupReached = false;\n let previousGroup;\n liItems.forEach((li, idx) => {\n isGroup = li.getAttribute('role') === 'group';\n if (!isGroup && firstGroupReached) {\n this.renderer.setAttribute(li, 'aria-describedby', previousGroup.getAttribute('id'));\n childrenliItemsIds.push(li.getAttribute('id'));\n if (idx + 1 >= liItems.length || liItems[idx + 1]?.getAttribute('role') === 'group') {\n this.renderer.setAttribute(previousGroup, 'aria-owns', childrenliItemsIds.join(' '));\n childrenliItemsIds = [];\n }\n }\n if (isGroup) {\n firstGroupReached = true;\n previousGroup = li;\n }\n });\n }\n ngAfterViewChecked() {\n if (this.virtual) {\n this.positionItems();\n }\n if (this.items && this.scrollToFocused) {\n this.scrollToFocused = false;\n const scrollTarget = this.items.length && this.selectionService.focused === -1 ? 0 : this.selectionService.focused;\n this.scrollToItem(scrollTarget);\n }\n if (this.dataService.grouped) {\n this.findCurrentGroup();\n }\n }\n ngOnDestroy() {\n this.selectSubscription.unsubscribe();\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n onCheckedChange(e, index) {\n const isChecked = e.target['checked'];\n if (isChecked && !this.selectionService.isSelected(index)) {\n this.selectionService.add(index);\n }\n if (!isChecked && this.selectionService.isSelected(index)) {\n this.selectionService.deselect(index);\n }\n }\n prepareClasses() {\n if (this.type === 'list') {\n this.listContentClass = 'k-list-content';\n this.listClass = 'k-list-ul';\n this.listItemClass = 'k-list-item';\n this.listVirtualClass = 'k-virtual-list';\n this.listGroupStickyHeaderClass = 'k-list-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-list-header-text';\n this.listGroupItemClass = 'k-list-group-item';\n this.listGroupItemTextClass = 'k-list-item-text';\n } else {\n this.listContentClass = 'k-table-body k-table-scroller';\n this.listClass = 'k-table k-table-list';\n this.listItemClass = 'k-table-row';\n this.listVirtualClass = 'k-virtual-table';\n this.listGroupStickyHeaderClass = 'k-table-group-sticky-header';\n this.listGroupStickyHeaderTextClass = 'k-table-th';\n this.listGroupItemClass = 'k-table-group-row';\n this.listGroupItemTextClass = 'k-table-th';\n }\n }\n isChecked(index) {\n const normalizedIndex = this.virtual ? index + this.virtual.skip : index;\n return this.selectionService.isSelected(normalizedIndex);\n }\n firstVisibleItem() {\n const content = this.content.nativeElement;\n const rect = content.getBoundingClientRect();\n // IE9 hack\n const disabled = Array.prototype.slice.call(content.querySelectorAll(\".k-disabled\"));\n // This is a workaround for finding elements with pointer-events: none;\n disabled.forEach(el => this.renderer.setStyle(el, \"pointer-events\", \"auto\"));\n const item = document.elementFromPoint(rect.left + 1, rect.top + 1);\n disabled.forEach(el => this.renderer.setStyle(el, \"pointer-events\", \"none\"));\n // return the closest `li` item to cover the custom template scenario\n return closest(item, 'li');\n }\n findCurrentGroup() {\n if (!this.dataService.grouped) {\n this.currentGroup = undefined;\n return;\n }\n const item = this.firstVisibleItem();\n if (item) {\n let index;\n if (item.getAttribute(\"role\") === \"group\") {\n index = parseInt(item.getAttribute(\"group-index\"), 10);\n this.currentGroup = this.dataService.groupAt(index).value;\n } else {\n index = parseInt(item.getAttribute(\"index\"), 10);\n this.currentGroup = this.dataService.itemGroup(this.dataService.itemAt(index));\n }\n } else {\n this.currentGroup = undefined;\n }\n this.cdr.detectChanges();\n }\n prefetchData() {\n if (!this.virtual) {\n return;\n }\n const visibleItems = Math.trunc(this.content.nativeElement.clientHeight / this.virtual.itemHeight);\n const offsetY = this.content.nativeElement.scrollTop;\n const start = Math.trunc(offsetY / this.virtual.itemHeight);\n const down = offsetY > this.lastScrollTop;\n const nextPage = start + visibleItems >= this.lastLoaded && this.lastLoaded < this.virtual.total - 1;\n const leftOver = this.pageSize - (this.lastLoaded - this.startFrom);\n const prevPage = this.lastLoaded - this.pageSize + visibleItems >= start - leftOver;\n if (down && nextPage) {\n this.changePage(start);\n }\n if (!down && prevPage) {\n this.changePage(start - this.pageSize + visibleItems + 1);\n }\n }\n changePage(start) {\n this.zone.run(() => {\n let end = this.pageSize + start;\n if (end > this.virtual.total) {\n start--;\n end = this.virtual.total;\n }\n if (start < 0) {\n start = 0;\n }\n this.startFrom = start;\n this.lastLoaded = end;\n this.pageChange.emit({\n skip: start,\n take: this.pageSize\n });\n });\n this.setGroupAttributes();\n }\n index(groupIndex, itemIndex) {\n return groupIndex > 0 ? this.dataService.groupIndices[groupIndex - 1] + itemIndex : itemIndex;\n }\n getText(dataItem) {\n return getter(dataItem, this.textField);\n }\n getValue(dataItem) {\n return getter(dataItem, this.valueField);\n }\n isDisabled(index) {\n if (isPresent(this.virtual) && !this.dataService.grouped) {\n index += this.virtual.skip;\n }\n return this.disabledItemsService.isIndexDisabled(index);\n }\n isAltRow(index) {\n return this.type === 'dropdowngrid' && index % 2 !== 0;\n }\n scrollToItem(index) {\n let flatIndex = index;\n if (this.dataService.grouped) {\n // takes into account the group header items\n flatIndex = this.dataService.flatIndex(index);\n }\n if (this.virtual && flatIndex > -1) {\n this.scrollToIndex(flatIndex);\n return;\n }\n const items = this.items.toArray();\n if (isPresent(items[flatIndex]) && flatIndex !== -1) {\n this.scroll(items[flatIndex].element);\n }\n }\n scrollWithOnePage(action) {\n const content = this.content.nativeElement;\n const contentOffsetHeight = content.clientHeight;\n if (action === NavigationAction.PageDown) {\n content.scrollTop += contentOffsetHeight;\n } else if (action === NavigationAction.PageUp) {\n content.scrollTop -= contentOffsetHeight;\n }\n }\n scrollToIndex(index) {\n const content = this.content.nativeElement;\n let contentScrollTop = content.scrollTop;\n const itemOffsetTop = index * this.virtual.itemHeight;\n const itemOffsetHeight = this.virtual.itemHeight;\n const contentOffsetHeight = content.clientHeight;\n const bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > contentScrollTop + contentOffsetHeight) {\n contentScrollTop = bottomDistance - contentOffsetHeight;\n }\n content.scrollTop = contentScrollTop;\n }\n scroll(item) {\n if (!item) {\n return;\n }\n const nativeElement = item.nativeElement;\n const content = this.content.nativeElement;\n const itemOffsetTop = nativeElement.offsetTop;\n const itemOffsetHeight = nativeElement.offsetHeight;\n let contentScrollTop = content.scrollTop;\n const contentOffsetHeight = content.clientHeight;\n const bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > contentScrollTop + contentOffsetHeight) {\n contentScrollTop = bottomDistance - contentOffsetHeight;\n }\n content.scrollTop = contentScrollTop;\n }\n /**\n * Indicates whether a scrollbar is currently rendered in the list.\n */\n hasScrollbar() {\n if (!(isPresent(this.items) && this.items.length && isPresent(this.list) && isPresent(this.content))) {\n return false;\n }\n const hasVirtualScroll = isPresent(this.virtual) && this.hasVirtualScrollbar();\n return hasVirtualScroll || this.list.nativeElement.scrollHeight > this.content.nativeElement.offsetHeight;\n }\n isItemSelected(index) {\n return this.selectionService.isSelected(index) || null;\n }\n /**\n * Sets the list's content overflow (hides/shows scrollbar)\n */\n setOverflow() {\n if (this.virtual) {\n const overflow = this.hasVirtualScrollbar() ? 'scroll' : 'hidden';\n this.renderer.setStyle(this.content.nativeElement, 'overflow-y', overflow);\n }\n }\n /**\n * Indicates whether the scrollbar should be visible in virtual mode.\n */\n hasVirtualScrollbar() {\n const contentOffsetHeight = this.content.nativeElement.offsetHeight;\n const virtualOffsetHeight = this.virtualContainer && this.virtualContainer.nativeElement.offsetHeight;\n return this.virtualContainer && virtualOffsetHeight > contentOffsetHeight;\n }\n positionItems() {\n this.items.forEach((item, index) => {\n const offsetY = (index + this.startFrom) * this.virtual.itemHeight;\n this.renderer.setStyle(item.element.nativeElement, \"transform\", `translateY(${offsetY}px`);\n });\n }\n /**\n * Indicates whether the first group header from the data set is in the targeted virtual page.\n */\n firstGroupHeaderInTargetedPage(itemIndex) {\n if (!isPresent(this.virtual)) {\n return true;\n }\n return this.virtual.skip === 0 && this.virtual.pageSize > itemIndex;\n }\n setComponentClasses() {\n if (this.type === 'list') {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-list');\n if (this.size) {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('list', this.size));\n }\n }\n if (this.type === 'dropdowngrid') {\n this.renderer.setStyle(this.wrapper.nativeElement, 'overflow-y', 'scroll');\n }\n if (isPresent(this.virtual)) {\n this.renderer.addClass(this.wrapper.nativeElement, this.listVirtualClass);\n }\n }\n }\n ListComponent.ɵfac = function ListComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ListComponent)(i0.ɵɵdirectiveInject(DataService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(DisabledItemsService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n ListComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ListComponent,\n selectors: [[\"kendo-list\"]],\n viewQuery: function ListComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c1, 7);\n i0.ɵɵviewQuery(_c2, 7);\n i0.ɵɵviewQuery(_c3, 5);\n i0.ɵɵviewQuery(ListItemDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.content = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.list = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.virtualContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n inputs: {\n selected: \"selected\",\n focused: \"focused\",\n textField: \"textField\",\n valueField: \"valueField\",\n height: \"height\",\n template: \"template\",\n groupTemplate: \"groupTemplate\",\n fixedGroupTemplate: \"fixedGroupTemplate\",\n show: \"show\",\n id: \"id\",\n optionPrefix: \"optionPrefix\",\n multipleSelection: \"multipleSelection\",\n virtual: \"virtual\",\n type: \"type\",\n checkboxes: \"checkboxes\",\n ariaLive: \"ariaLive\",\n isMultiselect: \"isMultiselect\",\n isActionSheetExpanded: \"isActionSheetExpanded\",\n showStickyHeader: \"showStickyHeader\",\n data: \"data\",\n size: \"size\",\n rounded: \"rounded\"\n },\n outputs: {\n onClick: \"onClick\",\n pageChange: \"pageChange\",\n listResize: \"listResize\",\n popupListScroll: \"popupListScroll\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 9,\n vars: 17,\n consts: [[\"content\", \"\"], [\"list\", \"\"], [\"li\", \"\"], [\"virtualContainer\", \"\"], [3, \"class\", \"ngStyle\", 4, \"ngIf\"], [\"unselectable\", \"on\", 3, \"scroll\"], [\"role\", \"listbox\"], [4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [\"class\", \"k-height-container\", \"role\", \"presentation\", 4, \"ngIf\"], [3, \"ngStyle\"], [3, \"ngIf\"], [3, \"templateContext\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", 3, \"checkboxes\", \"height\", \"index\", \"multipleSelection\", \"ngClass\"], [\"type\", \"checkbox\", \"class\", \"k-checkbox\", \"role\", \"presentation\", \"tabindex\", \"-1\", \"aria-hidden\", \"true\", 3, \"ngClass\", \"checked\", \"change\", 4, \"ngIf\"], [\"type\", \"checkbox\", \"role\", \"presentation\", \"tabindex\", \"-1\", \"aria-hidden\", \"true\", 1, \"k-checkbox\", 3, \"change\", \"ngClass\", \"checked\"], [1, \"k-list-item-text\"], [\"role\", \"group\", 3, \"class\", \"k-table-alt-row\", \"ngStyle\", 4, \"ngIf\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", 3, \"height\", \"index\", \"multipleSelection\", \"class\", \"ngClass\", 4, \"ngIf\"], [\"role\", \"group\", 3, \"ngStyle\"], [\"role\", \"option\", \"kendoDropDownsSelectable\", \"\", 3, \"height\", \"index\", \"multipleSelection\", \"ngClass\"], [3, \"resize\"], [\"role\", \"presentation\", 1, \"k-height-container\"]],\n template: function ListComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, ListComponent_div_0_Template, 3, 9, \"div\", 4);\n i0.ɵɵelementStart(1, \"div\", 5, 0);\n i0.ɵɵlistener(\"scroll\", function ListComponent_Template_div_scroll_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.popupListScroll.emit($event));\n });\n i0.ɵɵelementStart(3, \"ul\", 6, 1);\n i0.ɵɵtemplate(5, ListComponent_5_Template, 1, 1, null, 7)(6, ListComponent_6_Template, 1, 1, null, 7)(7, ListComponent_kendo_resize_sensor_7_Template, 1, 0, \"kendo-resize-sensor\", 8);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(8, ListComponent_div_8_Template, 4, 2, \"div\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.dataService.grouped && ctx.showStickyHeader);\n i0.ɵɵadvance();\n i0.ɵɵclassMap(ctx.listContentClass);\n i0.ɵɵstyleProp(\"overscroll-behavior\", \"none\")(\"max-height\", ctx.height, \"px\");\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.listClass);\n i0.ɵɵattribute(\"id\", ctx.id)(\"aria-live\", ctx.ariaLive)(\"aria-multiselectable\", ctx.isMultiselect)(\"aria-hidden\", !ctx.show);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx.dataService.grouped && ctx.show);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.dataService.grouped);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.virtual);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.virtual);\n }\n },\n dependencies: [NgIf, NgStyle, TemplateContextDirective, NgFor, ListItemDirective, SelectableDirective, NgClass, ResizeSensorComponent],\n encapsulation: 2\n });\n return ListComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n pageSize: 50,\n itemHeight: 28\n};\n/**\n * @hidden\n */\nconst normalizeVirtualizationSettings = (settings, defaultOverrides) => {\n const defaults = Object.assign({}, DEFAULTS, defaultOverrides);\n if (settings === true) {\n return defaults;\n }\n if (!settings) {\n return null;\n }\n return {\n pageSize: DEFAULTS.pageSize,\n ...settings\n };\n};\n\n/**\n * @hidden\n */\nlet ResponsiveRendererComponent = /*#__PURE__*/(() => {\n class ResponsiveRendererComponent {\n constructor(localization) {\n this.localization = localization;\n this.closePopup = new EventEmitter();\n this.textInputChange = new EventEmitter();\n this.navigate = new EventEmitter();\n this.onExpand = new EventEmitter();\n this.onCollapse = new EventEmitter();\n this.onApply = new EventEmitter();\n this.onCancel = new EventEmitter();\n this.searchBarValue = '';\n this.animationDuration = animationDuration;\n this.xIcon = xIcon;\n }\n messageFor(key) {\n return this.localization.get(key);\n }\n onValueChange(value) {\n this.searchBarValue = value;\n this.textInputChange.emit(value);\n }\n }\n ResponsiveRendererComponent.ɵfac = function ResponsiveRendererComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResponsiveRendererComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n ResponsiveRendererComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ResponsiveRendererComponent,\n selectors: [[\"responsive-renderer\"]],\n viewQuery: function ResponsiveRendererComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ActionSheetComponent, 5);\n i0.ɵɵviewQuery(_c7, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionSheet = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionSheetSearchBar = _t.first);\n }\n },\n inputs: {\n title: \"title\",\n showActionButtons: \"showActionButtons\",\n subtitle: \"subtitle\",\n size: \"size\",\n showTextInput: \"showTextInput\",\n sharedPopupActionSheetTemplate: \"sharedPopupActionSheetTemplate\",\n isActionSheetExpanded: \"isActionSheetExpanded\",\n text: \"text\",\n placeholder: \"placeholder\"\n },\n outputs: {\n closePopup: \"closePopup\",\n textInputChange: \"textInputChange\",\n navigate: \"navigate\",\n onExpand: \"onExpand\",\n onCollapse: \"onCollapse\",\n onApply: \"onApply\",\n onCancel: \"onCancel\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 4,\n consts: [[\"actionSheet\", \"\"], [\"actionSheetSearchBar\", \"\"], [3, \"overlayClick\", \"keydown\", \"expand\", \"collapse\", \"animation\", \"expanded\"], [\"kendoActionSheetTemplate\", \"\"], [1, \"k-text-center\", \"k-actionsheet-titlebar\"], [1, \"k-actionsheet-titlebar-group\", \"k-hbox\"], [1, \"k-actionsheet-title\"], [1, \"k-text-center\"], [1, \"k-actionsheet-subtitle\", \"k-text-center\"], [1, \"k-actionsheet-actions\"], [\"kendoButton\", \"\", \"icon\", \"x\", \"type\", \"button\", \"fillMode\", \"flat\", \"aria-hidden\", \"true\", \"innerCssClass\", \"k-button-icon\", 3, \"click\", \"svgIcon\", \"size\", \"tabIndex\"], [1, \"k-actionsheet-titlebar-group\", \"k-actionsheet-filter\"], [\"placeholder\", \"Filter\", \"class\", \"k-searchbox\", \"autocomplete\", \"off\", 3, \"value\", \"size\", \"valueChange\", 4, \"ngIf\"], [1, \"k-actionsheet-content\", \"!k-overflow-hidden\"], [1, \"k-list-container\"], [4, \"ngTemplateOutlet\"], [\"class\", \"k-actionsheet-footer k-actions k-actions-stretched\", 4, \"ngIf\"], [\"placeholder\", \"Filter\", \"autocomplete\", \"off\", 1, \"k-searchbox\", 3, \"valueChange\", \"value\", \"size\"], [\"kendoTextBoxPrefixTemplate\", \"\"], [\"name\", \"search\"], [1, \"k-actionsheet-footer\", \"k-actions\", \"k-actions-stretched\"], [\"kendoButton\", \"\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"type\", \"button\", \"themeColor\", \"base\", 3, \"click\", \"keydown.enter\", \"size\"], [\"kendoButton\", \"\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"type\", \"button\", \"themeColor\", \"primary\", 3, \"click\", \"keydown.enter\", \"size\"]],\n template: function ResponsiveRendererComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-actionsheet\", 2, 0);\n i0.ɵɵlistener(\"overlayClick\", function ResponsiveRendererComponent_Template_kendo_actionsheet_overlayClick_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.closePopup.emit());\n })(\"keydown\", function ResponsiveRendererComponent_Template_kendo_actionsheet_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.navigate.emit($event));\n })(\"expand\", function ResponsiveRendererComponent_Template_kendo_actionsheet_expand_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onExpand.emit());\n })(\"collapse\", function ResponsiveRendererComponent_Template_kendo_actionsheet_collapse_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onCollapse.emit());\n });\n i0.ɵɵtemplate(2, ResponsiveRendererComponent_ng_template_2_Template, 15, 9, \"ng-template\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"animation\", i0.ɵɵpureFunction1(2, _c8, ctx.animationDuration))(\"expanded\", ctx.isActionSheetExpanded);\n }\n },\n dependencies: [ActionSheetComponent, ActionSheetTemplateDirective, ButtonComponent, NgIf, TextBoxComponent, TextBoxPrefixTemplateDirective, IconComponent, NgTemplateOutlet],\n encapsulation: 2\n });\n return ResponsiveRendererComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet SharedDropDownEventsDirective = /*#__PURE__*/(() => {\n class SharedDropDownEventsDirective {\n constructor(ngZone, renderer, cdr) {\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.isFocusedChange = new EventEmitter();\n this.onFocus = new EventEmitter();\n this.handleBlur = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngAfterViewInit() {\n const hostElement = this.hostElement.nativeElement;\n let cursorInsideWrapper = false;\n let tabbing = false;\n this.ngZone.runOutsideAngular(() => {\n // focusIn and focusOut are relative to the host element\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusin', () => {\n this.cdr.detectChanges();\n if (!this.isFocused) {\n this.ngZone.run(() => {\n this.onFocus.emit();\n this.isFocused = true;\n this.isFocusedChange.emit(this.isFocused);\n });\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'focusout', args => {\n if (!this.isFocused) {\n return;\n }\n if (tabbing) {\n const closestTextbox = closest$1(args.relatedTarget, element => element === hostElement);\n if (!closestTextbox) {\n this.handleBlur.emit();\n }\n tabbing = false;\n } else {\n if (!cursorInsideWrapper) {\n this.handleBlur.emit();\n }\n }\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseenter', () => {\n cursorInsideWrapper = true;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'mouseleave', () => {\n cursorInsideWrapper = false;\n }));\n this.subscriptions.add(this.renderer.listen(hostElement, 'keydown', args => {\n if (args.keyCode === Keys.Tab) {\n tabbing = true;\n } else {\n tabbing = false;\n }\n }));\n });\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n }\n SharedDropDownEventsDirective.ɵfac = function SharedDropDownEventsDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SharedDropDownEventsDirective)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n SharedDropDownEventsDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SharedDropDownEventsDirective,\n selectors: [[\"\", \"kendoDropDownSharedEvents\", \"\"]],\n inputs: {\n hostElement: \"hostElement\",\n clearButtonClicked: \"clearButtonClicked\",\n isFocused: \"isFocused\"\n },\n outputs: {\n isFocusedChange: \"isFocusedChange\",\n onFocus: \"onFocus\",\n handleBlur: \"handleBlur\"\n },\n standalone: true\n });\n return SharedDropDownEventsDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet Messages = /*#__PURE__*/(() => {\n class Messages extends ComponentMessages {}\n Messages.ɵfac = /* @__PURE__ */(() => {\n let ɵMessages_BaseFactory;\n return function Messages_Factory(__ngFactoryType__) {\n return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = i0.ɵɵgetInheritedFactory(Messages)))(__ngFactoryType__ || Messages);\n };\n })();\n Messages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: Messages,\n inputs: {\n noDataText: \"noDataText\",\n clearTitle: \"clearTitle\",\n checkAllText: \"checkAllText\",\n selectButtonText: \"selectButtonText\",\n filterInputLabel: \"filterInputLabel\",\n popupLabel: \"popupLabel\",\n applyButton: \"applyButton\",\n cancelButton: \"cancelButton\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return Messages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedMessagesDirective)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n LocalizedMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedMessagesDirective,\n selectors: [[\"\", \"kendoDropDownListLocalizedMessages\", \"\"], [\"\", \"kendoDropDownTreeLocalizedMessages\", \"\"], [\"\", \"kendoComboBoxLocalizedMessages\", \"\"], [\"\", \"kendoMultiColumnComboBoxLocalizedMessages\", \"\"], [\"\", \"kendoAutoCompleteLocalizedMessages\", \"\"], [\"\", \"kendoMultiSelectLocalizedMessages\", \"\"], [\"\", \"kendoMultiSelectTreeLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: Messages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NO_VALUE = \"\";\nconst DEFAULT_SIZE$5 = 'medium';\nconst DEFAULT_ROUNDED$5 = 'medium';\nconst DEFAULT_FILL_MODE$5 = 'solid';\n/**\n * @hidden\n */\nconst AUTOCOMPLETE_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutoCompleteComponent)\n};\n/**\n * Represents the [Kendo UI AutoComplete component for Angular]({% slug overview_autocomplete %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public placeholder: string = 'Type \"it\" for suggestions';\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet AutoCompleteComponent = /*#__PURE__*/(() => {\n class AutoCompleteComponent {\n constructor(localization, dataService, popupService, selectionService, navigationService, disabledItemsService, _zone, cdr, renderer, hostElement, injector) {\n this.localization = localization;\n this.dataService = dataService;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this._zone = _zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.injector = injector;\n /**\n * @hidden\n */\n this.animationDuration = animationDuration;\n /**\n * @hidden\n */\n this.xIcon = xIcon;\n /**\n * Defines whether the first match from the suggestions list will be automatically focused.\n * By default, `highlightFirst` is set to `true`.\n */\n this.highlightFirst = true;\n /**\n * Shows or hides the current group sticky header when using grouped data.\n * By default the sticky header is displayed ([see example]({% slug grouping_autocomplete %}#toc-sticky-header)).\n */\n this.showStickyHeader = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n /**\n * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.\n */\n this.adaptiveMode = 'none';\n /**\n * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet title uses the text provided for the label of the AutoComplete.\n */\n this.title = '';\n this._listHeight = 200;\n /**\n * @hidden\n *\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_autocomplete#toc-managing-the-autocomplete-disabled-state-in-reactive-forms).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_autocomplete %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example](slug:events_autocomplete)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example](slug:events_autocomplete)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the AutoComplete.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the AutoComplete gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.inputBlur = new EventEmitter();\n this.widgetClasses = true;\n this.listBoxId = `k-${guid()}`;\n this.optionPrefix = `k-${guid()}`;\n /**\n * @hidden\n */\n this.windowSize = 'large';\n this.onChangeCallback = noop;\n this.onTouchedCallback = noop;\n this.popupMouseDownHandler = event => event.preventDefault();\n this._popupSettings = {\n animate: true\n };\n this._open = false;\n this._value = \"\";\n this.subs = new Subscription();\n this.valueChangeSubject = new Subject();\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.wrapper = this.hostElement.nativeElement;\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.selectionService.resetSelection([-1]);\n }\n /**\n * @hidden\n */\n get actionSheet() {\n return this.responsiveRendererComponent?.actionSheet;\n }\n /**\n * @hidden\n */\n get actionSheetSearchBar() {\n return this.responsiveRendererComponent?.actionSheetSearchBar;\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return {\n min: minWidth,\n max: maxWidth\n };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-autocomplete-popup'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n get suggestion() {\n if (!this.text || !this.suggestedText) {\n this.suggestedText = undefined;\n return;\n }\n const hasMatch = this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase());\n const shouldSuggest = this.suggest && !this.backspacePressed;\n if (shouldSuggest && hasMatch) {\n return this.suggestedText;\n }\n }\n get appendTo() {\n const {\n appendTo\n } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n get clearButtonVisiblity() {\n if (touchEnabled) {\n return 'visible';\n }\n }\n get ariaControls() {\n return this.isOpen ? this.listBoxId : undefined;\n }\n /**\n * @hidden\n */\n get isControlRequired() {\n return isControlRequired(this.formControl);\n }\n /**\n * Toggles the visibility of the popup or actionSheet.\n * If you use the `toggle` method to open or close the popup or actionSheet, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n /**\n * Returns the current open state. Returns `true` if the popup or actionSheet is open.\n */\n get isOpen() {\n return isTruthy(this._open || this.isActionSheetExpanded);\n }\n /**\n * @hidden\n */\n handleClick() {\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.togglePopup(true);\n }\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n return this.optionPrefix + \"-\" + this.selectionService.focused;\n }\n /**\n * Sets the data of the AutoComplete.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.filterable) {\n this.selectionService.focused = this.isOpen && this.data.length && this.highlightFirst ? this.firstFocusableIndex(0) : -1;\n }\n if (this.suggest && this.dataService.itemsCount > 0) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.valueField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the AutoComplete.\n */\n set value(newValue) {\n this.verifySettings(newValue);\n this._value = newValue || NO_VALUE;\n this.text = this.value;\n this.cdr.markForCheck();\n }\n get value() {\n return this._value || NO_VALUE;\n }\n /**\n * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.\n */\n set subtitle(_subtitle) {\n this._subtitle = _subtitle;\n }\n get subtitle() {\n return this._subtitle || this.placeholder;\n }\n /**\n * @hidden\n */\n get isAdaptiveModeEnabled() {\n return this.adaptiveMode === 'auto';\n }\n /**\n * Configures the popup of the AutoComplete.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({\n animate: true\n }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the height of the options list in the popup. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n *\n * > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.\n */\n set listHeight(_listHeight) {\n this._listHeight = _listHeight;\n }\n get listHeight() {\n if (this.isAdaptive) {\n return;\n }\n return this._listHeight;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_autocomplete %})).\n * Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_autocomplete %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$5;\n this.renderer.removeClass(this.wrapper, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$5;\n this.renderer.removeClass(this.wrapper, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$5;\n this.renderer.removeClass(this.wrapper, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper, \"k-focus\");\n this._isFocused = isFocused;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n /**\n * @hidden\n */\n get isActionSheetExpanded() {\n return this.actionSheet?.expanded;\n }\n /**\n * @hidden\n */\n get isAdaptive() {\n return this.isAdaptiveModeEnabled && this.windowSize !== 'large';\n }\n /**\n * @hidden\n */\n get formControl() {\n const ngControl = this.injector.get(NgControl, null);\n return ngControl?.control || null;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper, \"tabindex\");\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n }));\n this.setComponentClasses();\n }\n ngAfterViewInit() {\n this.windowSize = windowSize();\n this.cdr.detectChanges();\n if (this.actionSheet && isDocumentAvailable()) {\n // The following syntax is used as it does not violate CSP compliance\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.subs.unsubscribe();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes['data'] && changes['data'].isFirstChange();\n if (requestInitialData) {\n this.pageChange({\n skip: 0,\n take: virtual.pageSize\n });\n }\n }\n /**\n * Resets the value of the AutoComplete.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = NO_VALUE;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n onAdaptiveTextBoxChange(text) {\n this.search(text);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.change(NO_VALUE);\n if (this.filterable) {\n this.filterChange.emit('');\n }\n this.selectionService.resetSelection([]);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * Focuses a specific item of the AutoComplete based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n } else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the AutoComplete.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the AutoComplete.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {\n if (this.isOpen) {\n this.togglePopup(false);\n }\n this.windowSize = windowSize();\n this.cdr.detectChanges();\n }\n if (this._open && !this.isActionSheetExpanded) {\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n verifySettings(newValue) {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(newValue) && typeof newValue !== \"string\") {\n throw new Error(\"Expected value of type string. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/autocomplete/value-binding/\");\n }\n }\n search(text, startFrom = 0) {\n const index = this.findIndex(text, startFrom);\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n } else {\n this.selectionService.focus(-1);\n }\n } else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.valueField);\n }\n }\n }\n navigate(index) {\n if (!this.isOpen) {\n return;\n }\n this.selectionService.focus(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n if (this.disabled || this.readonly || isNaN(focused)) {\n return;\n }\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined && action !== NavigationAction.Backspace && action !== NavigationAction.Delete && action !== NavigationAction.Home && action !== NavigationAction.End && action !== NavigationAction.Left && action !== NavigationAction.Right && action !== NavigationAction.PageDown && action !== NavigationAction.PageUp && (action === NavigationAction.Enter && this.isOpen || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n if (action === NavigationAction.Tab && this.isActionSheetExpanded) {\n event.stopImmediatePropagation();\n this.togglePopup(false);\n }\n }\n handleEnter(event) {\n const focused = this.selectionService.focused;\n let value;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focused >= 0) {\n value = getter(this.dataService.itemAt(focused), this.valueField);\n } else {\n const match = this.suggest && this.suggestedText && this.data.length && getter(this.dataService.itemAt(0), this.valueField).toLowerCase() === this.searchbar.value.toLowerCase();\n if (this.isOpen && match) {\n value = this.suggestedText;\n } else {\n value = this.searchbar.value;\n }\n }\n if (this.isActionSheetExpanded && focused >= 0) {\n this.togglePopup(false);\n }\n this.change(value);\n }\n handleEscape() {\n if (this.isOpen) {\n this.togglePopup(false);\n } else {\n this.value = '';\n }\n this.selectionService.focused = -1;\n this.suggestedText = null;\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = isPresent(this.text) ? this.text.length : 0;\n this.backspacePressed = text.length < currentTextLength ? true : false;\n this.text = text;\n this.togglePopup(text.length > 0);\n if (!this.highlightFirst) {\n this.selectionService.focused = -1;\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n } else if (this.highlightFirst) {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n onFilterChange(text) {\n if (this.filterable) {\n this.filterChange.emit(text);\n } else if (this.highlightFirst) {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleInputFocus() {\n this.handleFocus();\n if (hasObservers(this.inputFocus)) {\n this._zone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this._zone.run(() => {\n if (!this.isFocused && hasObservers(this.onFocus)) {\n this.onFocus.emit();\n }\n this.isFocused = true;\n });\n }\n /**\n * @hidden\n */\n handleBlur() {\n if (!this.isActionSheetExpanded) {\n this.isFocused = false;\n const valueHasChanged = this.value !== this.text;\n const runInZone = hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper) || valueHasChanged;\n if (runInZone) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.change(this.searchbar.value);\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n } else {\n this.togglePopup(false);\n }\n }\n }\n /**\n * @hidden\n */\n handleInputBlur() {\n if (!this.isActionSheetExpanded) {\n const focused = this.filterable ? this.selectionService.focused : -1;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n let dataItem;\n let text;\n if (focused !== -1) {\n dataItem = this.dataService.itemAt(focused);\n text = getter(dataItem, this.valueField) || \"\";\n } else {\n text = this.searchbar.value;\n }\n const exactMatch = text === this.searchbar.value;\n const insensitiveMatch = text.toLowerCase() === this.searchbar.value.toLowerCase();\n if (!exactMatch && insensitiveMatch) {\n this.selectionService.resetSelection([]);\n }\n const valueHasChanged = this.value !== this.text;\n const runInZone = hasObservers(this.inputBlur) || hasObservers(this.close) || isUntouched(this.wrapper) || valueHasChanged || this.formControl?.updateOn === 'blur';\n if (runInZone) {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.change(this.searchbar.value);\n }\n this.inputBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n } else {\n this.togglePopup(false);\n }\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(value) {\n this.togglePopup(false);\n this.valueChangeSubject.next(value);\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.valueChangeSubject.subscribe(value => {\n const hasChange = this.value !== value;\n const index = this.findIndex(value);\n this.selectionService.focused = index;\n this.value = value;\n this.text = value;\n // emit change after assigning `this.value` => allows the user to modify the component value on `valueChange`\n if (hasChange) {\n this.emitChange(value);\n }\n }));\n this.subs.add(this.selectionService.onChange.subscribe(this.handleItemChange.bind(this)));\n this.subs.add(this.selectionService.onFocus.subscribe(this.handleItemFocus.bind(this)));\n this.subs.add(merge(this.navigationService.up, this.navigationService.down).subscribe(event => this.navigate(event.index)));\n this.subs.add(this.navigationService.close.subscribe(() => this.togglePopup(false)));\n this.subs.add(this.navigationService.open.subscribe(() => this.togglePopup(true)));\n this.subs.add(this.navigationService.enter.subscribe(this.handleEnter.bind(this)));\n this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));\n this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe(event => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);\n }\n }));\n }\n findIndex(value, startFrom = 0) {\n let index;\n if (value && value.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(value), startFrom);\n } else {\n index = -1;\n }\n return index;\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() =>\n // Roll up AutoComplete on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', e => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.hostElement, target, this.popupRef)) {\n this._zone.run(() => this.blur());\n }\n }));\n }\n handleItemChange(event) {\n const index = event.indices.length ? event.indices[0] : undefined;\n this.selectionService.resetSelection([-1]);\n if (!isPresent(index)) {\n return;\n }\n const text = getter(this.dataService.itemAt(index), this.valueField);\n this.change(text);\n if (this.isActionSheetExpanded) {\n this.togglePopup(false);\n }\n }\n handleItemFocus(_event) {\n const focused = this.selectionService.focused;\n const shouldSuggest = Boolean(this.suggest && this.data && this.data.length && focused >= 0);\n if (shouldSuggest) {\n this.suggestedText = getter(this.dataService.itemAt(focused), this.valueField);\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.openActionSheet();\n return;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = {\n horizontal: horizontalAlign,\n vertical: \"bottom\"\n };\n const popupPosition = {\n horizontal: horizontalAlign,\n vertical: \"top\"\n };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n popupAlign: popupPosition,\n anchorAlign: anchorPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute('dir', this.direction);\n if (!this.appendTo) {\n this.renderer.setAttribute(popupWrapper, 'role', 'region');\n this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));\n }\n this.subs.add(this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n this.opened.emit();\n }));\n this.subs.add(this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n }));\n this.subs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false)));\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement.removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this.isActionSheetExpanded) {\n this.closeActionSheet();\n }\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n } else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return index < maxIndex ? this.firstFocusableIndex(index + 1) : undefined;\n } else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return item => {\n let itemText = getter(item.value, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n } else {\n return item => {\n let itemText = getter(item, this.valueField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper, getFillModeClass('input', this.fillMode));\n }\n }\n closeActionSheet() {\n this.actionSheet.toggle(false);\n this.actionSheetSearchBar.value = '';\n this.filterable && this.filterChange.emit('');\n this.searchbar.input.nativeElement.focus();\n this.closed.emit();\n }\n openActionSheet() {\n this.actionSheet.toggle(true);\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);\n this.title = setActionSheetTitle(this.searchbar.input, this.title);\n updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);\n this.cdr.detectChanges();\n this.opened.emit();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n this.actionSheetSearchBar.focus();\n }\n }\n AutoCompleteComponent.ɵfac = function AutoCompleteComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AutoCompleteComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(DataService), i0.ɵɵdirectiveInject(i2.PopupService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(DisabledItemsService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Injector));\n };\n AutoCompleteComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AutoCompleteComponent,\n selectors: [[\"kendo-autocomplete\"]],\n contentQueries: function AutoCompleteComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, SuffixTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, PrefixTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.suffixTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.prefixTemplate = _t.first);\n }\n },\n viewQuery: function AutoCompleteComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ResponsiveRendererComponent, 5);\n i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);\n i0.ɵɵviewQuery(_c10, 7);\n i0.ɵɵviewQuery(SearchBarComponent, 7);\n i0.ɵɵviewQuery(_c11, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.responsiveRendererComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n }\n },\n hostVars: 11,\n hostBindings: function AutoCompleteComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-readonly\", ctx.readonly)(\"k-autocomplete\", ctx.widgetClasses)(\"k-input\", ctx.widgetClasses)(\"k-disabled\", ctx.isDisabled)(\"k-loading\", ctx.isLoading);\n }\n },\n inputs: {\n highlightFirst: \"highlightFirst\",\n showStickyHeader: \"showStickyHeader\",\n focusableId: \"focusableId\",\n data: \"data\",\n value: \"value\",\n valueField: \"valueField\",\n placeholder: \"placeholder\",\n adaptiveMode: \"adaptiveMode\",\n title: \"title\",\n subtitle: \"subtitle\",\n popupSettings: \"popupSettings\",\n listHeight: \"listHeight\",\n loading: \"loading\",\n clearButton: \"clearButton\",\n suggest: \"suggest\",\n disabled: \"disabled\",\n itemDisabled: \"itemDisabled\",\n readonly: \"readonly\",\n tabindex: \"tabindex\",\n tabIndex: \"tabIndex\",\n filterable: \"filterable\",\n virtual: \"virtual\",\n size: \"size\",\n rounded: \"rounded\",\n fillMode: \"fillMode\",\n inputAttributes: \"inputAttributes\"\n },\n outputs: {\n valueChange: \"valueChange\",\n filterChange: \"filterChange\",\n open: \"open\",\n opened: \"opened\",\n close: \"close\",\n closed: \"closed\",\n onFocus: \"focus\",\n onBlur: \"blur\",\n inputFocus: \"inputFocus\",\n inputBlur: \"inputBlur\"\n },\n exportAs: [\"kendoAutoComplete\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([AUTOCOMPLETE_VALUE_ACCESSOR, DataService, SelectionService, NavigationService, DisabledItemsService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.autocomplete'\n }, {\n provide: FilterableComponent,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 17,\n vars: 30,\n consts: () => {\n let i18n_0;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.autocomplete.noDataText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_0 = goog.getMsg(\"NO DATA FOUND\");\n i18n_0 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_0;\n } else {\n i18n_0 = $localize`:kendo.autocomplete.noDataText|The text displayed in the popup when there are no items:NO DATA FOUND`;\n }\n let i18n_1;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.autocomplete.clearTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_1 = goog.getMsg(\"clear\");\n i18n_1 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_1;\n } else {\n i18n_1 = $localize`:kendo.autocomplete.clearTitle|The title of the clear button:clear`;\n }\n let i18n_2;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the popup element that contains the list of options when its role is 'region'\n * @meaning kendo.autocomplete.popupLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_2 = goog.getMsg(\"Options list\");\n i18n_2 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_2;\n } else {\n i18n_2 = $localize`:kendo.autocomplete.popupLabel|The label of the popup element that contains the list of options when its role is 'region':Options list`;\n }\n return [[\"popupTemplate\", \"\"], [\"container\", \"\"], [\"sharedPopupActionSheetTemplate\", \"\"], [\"optionsList\", \"\"], [\"kendoAutoCompleteLocalizedMessages\", \"\", \"noDataText\", i18n_0, \"clearTitle\", i18n_1, \"popupLabel\", i18n_2], [\"kendoDropDownSharedEvents\", \"\", 3, \"isFocusedChange\", \"handleBlur\", \"onFocus\", \"hostElement\", \"isFocused\"], [\"class\", \"k-input-prefix k-input-prefix-horizontal\", 4, \"ngIf\"], [4, \"ngIf\"], [\"kendoSearchbar\", \"\", 3, \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\", \"click\", \"ariaExpanded\", \"isSuggestable\", \"isFilterable\", \"isLoading\", \"ariaControls\", \"id\", \"activeDescendant\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"isRequired\", \"placeholder\", \"inputAttributes\"], [\"class\", \"k-clear-value\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"visibility\", \"click\", \"mousedown\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading k-input-loading-icon\", 4, \"ngIf\"], [\"class\", \"k-input-suffix k-input-suffix-horizontal\", 4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [3, \"closePopup\", \"textInputChange\", \"navigate\", \"sharedPopupActionSheetTemplate\", \"isActionSheetExpanded\", \"title\", \"showTextInput\", \"subtitle\", \"placeholder\"], [1, \"k-input-prefix\", \"k-input-prefix-horizontal\"], [3, \"ngTemplateOutlet\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-clear-value\", 3, \"click\", \"mousedown\"], [\"name\", \"x\", 3, \"svgIcon\"], [1, \"k-icon\", \"k-i-loading\", \"k-input-loading-icon\"], [1, \"k-input-suffix\", \"k-input-suffix-horizontal\"], [4, \"ngTemplateOutlet\"], [3, \"resize\"], [3, \"pageChange\", \"size\", \"rounded\", \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"showStickyHeader\"], [\"class\", \"k-no-data\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-no-data\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"]];\n },\n template: function AutoCompleteComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 4);\n i0.ɵɵelementContainerStart(1, 5);\n i0.ɵɵtwoWayListener(\"isFocusedChange\", function AutoCompleteComponent_Template_ng_container_isFocusedChange_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n i0.ɵɵtwoWayBindingSet(ctx.isFocused, $event) || (ctx.isFocused = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"handleBlur\", function AutoCompleteComponent_Template_ng_container_handleBlur_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleBlur());\n })(\"onFocus\", function AutoCompleteComponent_Template_ng_container_onFocus_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleFocus());\n });\n i0.ɵɵtemplate(2, AutoCompleteComponent_span_2_Template, 2, 1, \"span\", 6)(3, AutoCompleteComponent_kendo_separator_3_Template, 1, 0, \"kendo-separator\", 7);\n i0.ɵɵelementStart(4, \"input\", 8);\n i0.ɵɵlistener(\"onNavigate\", function AutoCompleteComponent_Template_input_onNavigate_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n })(\"valueChange\", function AutoCompleteComponent_Template_input_valueChange_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.searchBarChange($event));\n })(\"onBlur\", function AutoCompleteComponent_Template_input_onBlur_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputBlur());\n })(\"onFocus\", function AutoCompleteComponent_Template_input_onFocus_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputFocus());\n })(\"click\", function AutoCompleteComponent_Template_input_click_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleClick());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, AutoCompleteComponent_span_5_Template, 2, 4, \"span\", 9)(6, AutoCompleteComponent_span_6_Template, 1, 0, \"span\", 10)(7, AutoCompleteComponent_kendo_separator_7_Template, 1, 0, \"kendo-separator\", 7)(8, AutoCompleteComponent_span_8_Template, 2, 1, \"span\", 11);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(9, AutoCompleteComponent_ng_template_9_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementContainer(11, null, 1);\n i0.ɵɵtemplate(13, AutoCompleteComponent_kendo_resize_sensor_13_Template, 1, 0, \"kendo-resize-sensor\", 12);\n i0.ɵɵelementStart(14, \"responsive-renderer\", 13);\n i0.ɵɵlistener(\"closePopup\", function AutoCompleteComponent_Template_responsive_renderer_closePopup_14_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.togglePopup(false));\n })(\"textInputChange\", function AutoCompleteComponent_Template_responsive_renderer_textInputChange_14_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onFilterChange($event));\n })(\"navigate\", function AutoCompleteComponent_Template_responsive_renderer_navigate_14_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(15, AutoCompleteComponent_ng_template_15_Template, 5, 17, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(16);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"hostElement\", ctx.hostElement);\n i0.ɵɵtwoWayProperty(\"isFocused\", ctx.isFocused);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate && ctx.prefixTemplate.showSeparator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ariaExpanded\", ctx.isOpen)(\"isSuggestable\", ctx.suggest)(\"isFilterable\", ctx.filterable)(\"isLoading\", ctx.isLoading)(\"ariaControls\", ctx.ariaControls)(\"id\", ctx.focusableId)(\"activeDescendant\", ctx.activeDescendant)(\"userInput\", ctx.text)(\"suggestedText\", ctx.suggestion)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly || ctx.isAdaptive)(\"tabIndex\", ctx.tabIndex)(\"isRequired\", ctx.isControlRequired)(\"placeholder\", ctx.placeholder)(\"inputAttributes\", ctx.inputAttributes);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && ctx.clearButton && (ctx.text == null ? null : ctx.text.length));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate && ctx.suffixTemplate.showSeparator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"ngIf\", ctx.isOpen || ctx.isAdaptiveModeEnabled);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"sharedPopupActionSheetTemplate\", sharedPopupActionSheetTemplate_r4)(\"isActionSheetExpanded\", ctx.isActionSheetExpanded)(\"title\", ctx.title)(\"showTextInput\", true)(\"subtitle\", ctx.subtitle)(\"placeholder\", ctx.placeholder);\n }\n },\n dependencies: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgIf, NgTemplateOutlet, SeparatorComponent, SearchBarComponent, IconWrapperComponent, ResizeSensorComponent, ResponsiveRendererComponent, TemplateContextDirective, ListComponent],\n encapsulation: 2\n });\n return AutoCompleteComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst MultiselectMessages = {\n 'array': 'Expected values of array type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/value-binding',\n 'object': 'Expected values of Object type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/value-binding/#toc-object-values',\n 'primitive': 'Expected values of primitive type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/value-binding/#toc-primitive-values',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselect/data-binding/#toc-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst MultiSelectTreeMessages = {\n 'array': 'Expected values of array type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding',\n 'primitive': 'Expected values of primitive type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-primitive-values',\n 'object': 'Expected values of type Object. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding/#toc-object-values',\n 'dataItems': 'Expected dataItems of type Object[] to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'dataItemsLength': 'Expected dataItems length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/MultiSelectTreeComponent/#toc-dataitems',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multiselecttree/value-binding',\n 'valueDepth': 'Expected valueDepth of type number[] to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth',\n 'valueDepthLength': 'Expected valueDepth length to match the number of provided values. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/MultiSelectTreeComponent/#toc-valuedepth'\n};\n/**\n * @hidden\n */\nconst ComboBoxMessages = {\n 'object': 'Expected value of type Object. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/value-binding/#toc-object-values',\n 'primitive': 'Expected value of primitive type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/value-binding/#toc-primitive-values',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/combobox/data-binding/#toc-arrays-of-complex-data',\n 'noItemHeight': 'Expected virtual.itemHeight of type number.'\n};\n/**\n * @hidden\n */\nconst MultiColumnComboBoxMessages = {\n 'data': 'Provided data must consist only of objects. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/multicolumncombobox/data-binding/#toc-fields-configuration'\n};\n/**\n * @hidden\n */\nconst DropDownListMessages = {\n 'defaultItem': 'defaultItem and data items must be of same type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownListComponent/#toc-defaultitem',\n 'object': 'Expected value of type Object. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/value-binding/#toc-object-values',\n 'primitive': 'Expected value of primitive type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/value-binding/#toc-primitive-values',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdownlist/data-binding/#toc-arrays-of-complex-data'\n};\n/**\n * @hidden\n */\nconst DropDownTreeMessages = {\n 'primitive': 'Expected value of primitive type. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-primitive-values',\n 'object': 'Expected value of type Object. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding/#toc-object-values',\n 'dataItem': 'Expected dataItem of type Object to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/api/DropDownTreeComponent/#toc-dataitem',\n 'textAndValue': 'Expected textField and valueField options to be set. See https://www.telerik.com/kendo-angular-ui/components/dropdowns/dropdowntree/value-binding',\n 'valueDepth': 'Expected valueDepth to be set. See https://www.telerik.com/kendo-angular-ui-develop/components/dropdowns/api/DropDownTreeComponent/#toc-valuedepth'\n};\n\n/**\n * @hidden\n */\nconst COMBOBOX_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ComboBoxComponent)\n};\nconst DEFAULT_SIZE$4 = 'medium';\nconst DEFAULT_ROUNDED$4 = 'medium';\nconst DEFAULT_FILL_MODE$4 = 'solid';\n/**\n * Represents the [Kendo UI ComboBox component for Angular]({% slug overview_combobox %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet ComboBoxComponent = /*#__PURE__*/(() => {\n class ComboBoxComponent extends MultiTabStop {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, cdr, renderer, injector, hostElement) {\n super();\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.animationDuration = animationDuration;\n /**\n * @hidden\n */\n this.xIcon = xIcon;\n /**\n * @hidden\n */\n this.caretAltDownIcon = caretAltDownIcon;\n this.selected = [];\n /**\n * Shows or hides the current group sticky header when using grouped data.\n * By default the sticky header is displayed ([see example]({% slug grouping_autocomplete %}#toc-sticky-header)).\n */\n this.showStickyHeader = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Specifies whether the ComboBox allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_combobox %})).\n * Defaults to `false`.\n *\n * The feature is not available when using adaptive mode.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n * @param { Any } value - The custom value defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return { ProductID: null, ProductName: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = text => text.pipe(map(userInput => userInput));\n /**\n * The hint that is displayed when the component is empty.\n *\n */\n this.placeholder = \"\";\n /**\n * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.\n */\n this.adaptiveMode = 'none';\n /**\n * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet title uses the text provided for the label of the AutoComplete.\n */\n this.title = '';\n this._listHeight = 200;\n /**\n * Enables the auto-completion of the text based on the first data item.\n */\n this.suggest = false;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the articles on [ComboBox Forms Support](slug:formssupport_combobox#toc-managing-the-combobox-disabled-state-in-reactive-forms) and [MultiColumnComboBox Forms Support](slug:formssupport_multicolumncombobox#toc-managing-the-multicolumncombobox-disabled-state-in-reactive-forms).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables the [filtering]({% slug filtering_combobox %}) functionality.\n * If set to `true`, the component emits the `filterChange` event.\n */\n this.filterable = false;\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example](slug:events_combobox)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time an item selection is changed\n * ([see example](slug:events_combobox)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value\n * ([see example](slug:events_combobox)).\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open.\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close.\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the ComboBox.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the ComboBox gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.inputBlur = new EventEmitter();\n /**\n * @hidden\n */\n this.escape = new EventEmitter();\n this.widgetClasses = true;\n this._isFocused = false;\n /**\n * @hidden\n */\n this.windowSize = 'large';\n this.listBoxId = `k-${guid()}`;\n this.optionPrefix = `k-${guid()}`;\n this.onChangeCallback = _ => {};\n this.onTouchedCallback = _ => {};\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualItemHeight = 28;\n /**\n * Used for the default virtualization settings config.\n */\n this.defaultVirtualPageSize = 50;\n this._filtering = false;\n this._text = '';\n this.filterText = '';\n this._open = false;\n this._popupSettings = {\n animate: true\n };\n this.popupMouseDownHandler = event => event.preventDefault();\n this.customValueSubject = new Subject();\n this.valueSubject = new Subject();\n this.clearValueSubject = new Subject();\n this.subs = new Subscription();\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n }\n /**\n * @hidden\n */\n get actionSheet() {\n return this.responsiveRendererComponent?.actionSheet;\n }\n /**\n * @hidden\n */\n get actionSheetSearchBar() {\n return this.responsiveRendererComponent?.actionSheetSearchBar;\n }\n set text(text) {\n this._text = isPresent(text) ? text.toString() : \"\";\n }\n get text() {\n return this._text;\n }\n /**\n * @hidden\n */\n get ariaControls() {\n return this.isOpen ? this.listBoxId : undefined;\n }\n /**\n * @hidden\n */\n get isControlRequired() {\n return isControlRequired(this.formControl);\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n get activeDescendant() {\n if (!this.isOpen || !isPresent(this.selectionService.focused) || this.selectionService.focused === -1) {\n return null;\n }\n return this.optionPrefix + \"-\" + this.selectionService.focused;\n }\n get appendTo() {\n const {\n appendTo\n } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the ComboBox.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n if (this._filtering) {\n const queryAndDataPresent = this.text.length > 0 && this.dataService.itemsCount > 0;\n const index = queryAndDataPresent ? this.firstFocusableIndex(0) : -1;\n this.selectionService.focused = index;\n }\n if (this.suggest && this.dataService.itemsCount && this.text) {\n this.suggestedText = getter(this.dataService.itemAt(0), this.textField);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the ComboBox.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the dataset are considered custom values.\n * > When the `Enter` key is pressed or the component loses focus, custom values get dismissed unless `allowCustom` is set to `true`.\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_combobox %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.\n */\n set subtitle(_subtitle) {\n this._subtitle = _subtitle;\n }\n get subtitle() {\n return this._subtitle || this.placeholder;\n }\n /**\n * @hidden\n */\n get isAdaptiveModeEnabled() {\n return this.adaptiveMode === 'auto';\n }\n /**\n * Configures the popup of the ComboBox.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({\n animate: true\n }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the height of the options list in the popup. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n *\n * > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.\n */\n set listHeight(_listHeight) {\n this._listHeight = _listHeight;\n }\n get listHeight() {\n if (this.isAdaptive) {\n return;\n }\n return this._listHeight;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_combobox %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_combobox %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings, {\n itemHeight: this.defaultVirtualItemHeight,\n pageSize: this.defaultVirtualPageSize\n });\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$4;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get isFocused() {\n return this._isFocused;\n }\n set isFocused(value) {\n this.renderer[value ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, \"k-focus\");\n this._isFocused = value;\n }\n get clearButtonVisiblity() {\n if (touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n */\n get formControl() {\n const ngControl = this.injector.get(NgControl, null);\n return ngControl?.control || null;\n }\n /**\n * @hidden\n */\n get isActionSheetExpanded() {\n return this.actionSheet?.expanded;\n }\n /**\n * @hidden\n */\n get isAdaptive() {\n return this.isAdaptiveModeEnabled && this.windowSize !== 'large';\n }\n get popupWidth() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return {\n min: minWidth,\n max: maxWidth\n };\n }\n get popupHeight() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.attachStreams();\n this.createValueStream();\n this.subscribeTouchEvents();\n this.attachSelectClickHandler();\n this.setComponentClasses();\n }\n ngAfterViewInit() {\n this.windowSize = windowSize();\n this.cdr.detectChanges();\n if (this.actionSheet && isDocumentAvailable()) {\n // The following syntax is used as it does not violate CSP compliance\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n }\n createValueStream() {\n const valueStream = this.valueSubject.pipe(filter(candidate => {\n const current = getter(this.value, this.valueField);\n const newValue = getter(candidate, this.valueField);\n let newText = getter(candidate, this.textField);\n if (!isPresent(this.value) && !isPresent(newValue)) {\n return false;\n }\n if (isPresent(newText)) {\n newText = newText.toString();\n }\n if (current === newValue && this.text === newText) {\n this.clearFilter();\n return false;\n } else {\n return true;\n }\n }), map(candidate => {\n const newValue = getter(candidate, this.valueField);\n const newText = getter(candidate, this.textField);\n return {\n dataItem: candidate,\n text: newText,\n value: this.valuePrimitive ? newValue : candidate\n };\n }));\n const customValueStreams = partition(() => this.allowCustom)(this.customValueSubject.pipe(throttleTime(300)));\n const allowCustomValueStream = customValueStreams[0].pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), filter(() => {\n const hasChange = this.text !== getter(this.value, this.valueField);\n this.loading = hasChange;\n this.disabled = hasChange;\n if (!hasChange) {\n this.clearFilter();\n }\n return hasChange;\n }), this.valueNormalizer, map(normalizedValue => {\n return {\n custom: true,\n dataItem: normalizedValue,\n text: this.text,\n value: normalizedValue\n };\n }));\n const disableCustomValueStream = customValueStreams[1].pipe(map(() => {\n return {\n custom: true,\n dataItem: undefined,\n text: undefined,\n value: undefined\n };\n }));\n const clearValueStream = this.clearValueSubject.pipe(map(() => ({\n dataItem: undefined,\n text: undefined,\n value: undefined\n })));\n if (this.valueSubscription) {\n this.valueSubscription.unsubscribe();\n }\n const merged = merge(valueStream, allowCustomValueStream, disableCustomValueStream, clearValueStream);\n this.valueSubscription = merged.pipe(catchError(() => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== undefined;\n this.dataItem = undefined;\n this.value = undefined;\n this.text = undefined;\n this.loading = false;\n this.disabled = false;\n if (selectionChanged) {\n this.selectionChange.emit(undefined);\n }\n this.emitValueChange();\n this.createValueStream();\n return of(null);\n })).subscribe(state => {\n const selectionChanged = getter(this.dataItem, this.valueField) !== getter(state.dataItem, this.valueField);\n this.dataItem = state.dataItem;\n this.value = state.value;\n this.text = state.text;\n this.loading = false;\n this.disabled = false;\n this.clearFilter();\n if (state.custom) {\n this.selectionService.focused = -1;\n }\n if (selectionChanged) {\n const selectionArgs = state.custom ? undefined : this.dataItem;\n this.selectionChange.emit(selectionArgs);\n }\n this.emitValueChange();\n });\n }\n attachStreams() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n }));\n this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.home, this.navigationService.end).pipe(filter(event => isPresent(event.index))).subscribe(event => this.navigate(event.index)));\n this.subs.add(this.navigationService.open.subscribe(this.handleNavigationOpen.bind(this)));\n this.subs.add(this.navigationService.close.subscribe(() => this.togglePopup(false)));\n this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe(event => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);\n }\n }));\n this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));\n this.subs.add(this.navigationService.enter.pipe(tap(event => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n })).subscribe(this.handleEnter.bind(this)));\n this.subs.add(merge(this.selectionService.onChange, this.selectionService.onSelect.pipe(filter(_ => !this.isOpen))).pipe(tap(_ => {\n this._filtering = false;\n this.togglePopup(false);\n }), map(event => this.dataService.itemAt(event.indices[0]))).subscribe(dataItem => {\n this.change(dataItem);\n }));\n this.subs.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), tap(_ => this._filtering = false), map(event => this.dataService.itemAt(event.indices[0]))).subscribe(dataItem => {\n const selectionChanged = getter(dataItem, this.valueField) !== getter(this.dataItem, this.valueField);\n this.updateState({\n dataItem\n });\n if (selectionChanged) {\n this.selectionChange.emit(dataItem);\n }\n }));\n }\n ngOnDestroy() {\n this.destroyPopup();\n this.subs.unsubscribe();\n if (isPresent(this.valueSubscription)) {\n this.valueSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n if (this.selectClickDisposeHandler) {\n this.selectClickDisposeHandler();\n }\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes['data'] && changes['data'].isFirstChange();\n if (requestInitialData) {\n this.pageChange({\n skip: 0,\n take: virtual.pageSize\n });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * Focuses a specific item of the ComboBox based on a provided index.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const isInRange = index >= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n } else {\n this.selectionService.focus(-1);\n }\n }\n /**\n * Focuses the ComboBox.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * Blurs the ComboBox.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * Toggles the visibility of the popup or actionSheet. If you use the `toggle` method to open or close the popup or actionSheet,\n * the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state. Returns `true` if the popup or actionSheet is open.\n */\n get isOpen() {\n return isTruthy(this._open || this.isActionSheetExpanded);\n }\n /**\n * @hidden\n */\n handleClick() {\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.togglePopup(true);\n }\n }\n /**\n * Resets the value of the ComboBox.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n this.clearState();\n this.resetSelection();\n }\n /**\n * @hidden\n *\n * Used by the TextBoxContainer to determine if the floating label\n * should be rendered in the input when the component is not focused.\n */\n isEmpty() {\n const textEmpty = !isPresent(this.text) || isEmptyString(this.text);\n const valueEmpty = !isPresent(this.value) || isEmptyString(this.value);\n return textEmpty && valueEmpty;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event?.stopImmediatePropagation();\n if (event) {\n this.focus();\n }\n this._previousDataItem = undefined;\n this.selectionService.resetSelection([]);\n this.clearValueSubject.next();\n this._filtering = false;\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}\n `;\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {\n if (this.isOpen) {\n this.togglePopup(false);\n }\n this.windowSize = windowSize();\n this.cdr.detectChanges();\n }\n if (this.isOpen && !this.isActionSheetExpanded) {\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.popupWidth;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(ComboBoxMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(ComboBoxMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(ComboBoxMessages.textAndValue);\n }\n if (this.virtual && isNaN(this.virtual.itemHeight)) {\n throw new Error(ComboBoxMessages.noItemHeight);\n }\n }\n setState() {\n // Filtering in process, do nothing.\n if (this._filtering) {\n return;\n }\n const value = this.value;\n const valueField = this.valueField;\n const resolved = this.findDataItem({\n valueField,\n value\n });\n if (isPresent(resolved.index) && resolved.index !== -1) {\n this.updateState({\n dataItem: resolved.dataItem,\n confirm: true\n });\n this.resetSelection(resolved.index);\n } else if (isPresent(value) && this.allowCustom) {\n this.updateState({\n dataItem: value\n });\n this.resetSelection(-1);\n } else if (this._previousDataItem && this.value) {\n this.updateState({\n dataItem: this._previousDataItem\n });\n this.resetSelection();\n } else {\n this.clearState();\n this.resetSelection(-1);\n }\n }\n updateState({\n dataItem,\n confirm = false\n }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index) || index < 0;\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = index;\n }\n firstFocusableIndex(index) {\n const maxIndex = this.data.length - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return index < maxIndex ? this.firstFocusableIndex(index + 1) : undefined;\n } else {\n return index;\n }\n }\n findIndexPredicate(text) {\n if (this.dataService.grouped) {\n return item => {\n let itemText = getter(item.value, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n } else {\n return item => {\n let itemText = getter(item, this.textField);\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return itemText.startsWith(text.toLowerCase());\n };\n }\n }\n findDataItem({\n valueField,\n value\n }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const comparer = element => {\n const dataItem = this.dataService.grouped ? element.value : element;\n return getter(dataItem, valueField) === getter(value, valueField);\n };\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n search(text, startFrom = 0) {\n const index = this.findIndex(text, startFrom);\n if (this.disabledItemsService.isIndexDisabled(index)) {\n if (index + 1 < this.dataService.itemsCount) {\n this.search(text, index + 1);\n } else {\n this.selectionService.focus(-1);\n }\n } else {\n this.selectionService.focus(index);\n if (this.suggest) {\n this.suggestedText = getter(this.dataService.itemAt(index), this.textField);\n }\n }\n }\n /**\n * @hidden\n */\n onAdaptiveTextBoxChange(text) {\n if (this.filterable && this.filterText !== text) {\n this.filterText = text;\n this.filterChange.emit(text);\n } else {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n getSuggestion() {\n const hasSelected = !!this.selectionService.selected.length;\n const shouldSuggest = this.suggest && !this.backspacePressed && this.suggestedText && this.text;\n if (!hasSelected && shouldSuggest && this.suggestedText.toLowerCase().startsWith(this.text.toLowerCase())) {\n return this.suggestedText;\n } else {\n this.suggestedText = undefined;\n }\n }\n navigate(index) {\n if (this.dataService.itemsCount === 0) {\n return;\n }\n this.text = getter(this.dataService.itemAt(index), this.textField);\n this.selectionService.select(index);\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(0) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n if (event.keyCode === Keys.Home || event.keyCode === Keys.End) {\n return;\n }\n if (!hasSelected) {\n if (event.keyCode === Keys.ArrowDown) {\n offset = -1;\n } else if (event.keyCode === Keys.ArrowUp) {\n offset = 1;\n }\n }\n const action = this.navigationService.process({\n current: offset + focused,\n max: this.dataService.itemsCount - 1,\n min: 0,\n originalEvent: event\n });\n if (action !== NavigationAction.Undefined && action !== NavigationAction.Left && action !== NavigationAction.Right && action !== NavigationAction.Backspace && action !== NavigationAction.Delete && action !== NavigationAction.PageDown && action !== NavigationAction.PageUp && (action === NavigationAction.Enter && this.isOpen || action !== NavigationAction.Enter)) {\n event.preventDefault();\n }\n if (action === NavigationAction.Tab && this.isActionSheetExpanded) {\n event.stopImmediatePropagation();\n this.togglePopup(false);\n }\n }\n handleEnter() {\n const text = this.text;\n const focused = this.selectionService.focused;\n const hasFocused = isPresent(focused) && focused !== -1;\n const previousText = getter(this._previousDataItem, this.textField) || \"\";\n const focusedItemText = getter(this.dataService.itemAt(focused), this.textField);\n const textHasChanged = text !== previousText;\n this.togglePopup(false);\n this._filtering = false;\n if (this.allowCustom && textHasChanged) {\n if (text === focusedItemText || this.useSuggestion()) {\n this.selectionService.change(focused);\n } else {\n this.change(text, true);\n }\n }\n if (!this.allowCustom) {\n if (hasFocused) {\n this.selectionService.change(focused);\n } else if (textHasChanged) {\n this.change(text, true);\n }\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this.zone.run(() => {\n if (!this.isFocused && hasObservers(this.onFocus)) {\n this.onFocus.emit();\n }\n this.isFocused = true;\n });\n }\n /**\n * @hidden\n */\n handleBlur() {\n if (!this.isActionSheetExpanded) {\n this._filtering = false;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n this.isFocused = false;\n const unresolvedSelection = getter(this.dataItem, this.valueField) !== getter(this.value, this.valueField);\n const currentText = this.searchbar.value;\n const textHasChanged = currentText !== (getter(this.dataItem, this.textField) || '');\n const valueHasChanged = unresolvedSelection || textHasChanged;\n const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement);\n if (runInZone) {\n this.zone.run(() => {\n if (valueHasChanged) {\n const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();\n if (lowerCaseMatch || unresolvedSelection) {\n this.selectionService.change(this.selectionService.focused);\n } else {\n this.change(currentText, true);\n }\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n } else {\n this.togglePopup(false);\n }\n }\n }\n /**\n * @hidden\n */\n handleInputBlur() {\n if (!this.isActionSheetExpanded) {\n this._filtering = false;\n this.searchbar.input.nativeElement.scrollLeft = 0; // Firefox doesn't auto-scroll to the left on blur like other browsers\n const unresolvedSelection = getter(this.dataItem, this.valueField) !== getter(this.value, this.valueField);\n const currentText = this.searchbar.value;\n const textHasChanged = currentText !== (getter(this.dataItem, this.textField) || '');\n const valueHasChanged = unresolvedSelection || textHasChanged;\n const runInZone = valueHasChanged || hasObservers(this.onBlur) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement) || this.formControl?.updateOn === 'blur';\n if (runInZone) {\n this.zone.run(() => {\n if (valueHasChanged) {\n const lowerCaseMatch = isPresent(this.focusedItemText) && this.focusedItemText.toLowerCase() === currentText.toLowerCase();\n if (lowerCaseMatch || unresolvedSelection) {\n this.selectionService.change(this.selectionService.focused);\n } else {\n this.change(currentText, true);\n }\n }\n this.inputBlur.emit();\n this.onTouchedCallback();\n this.togglePopup(false);\n });\n } else {\n this.togglePopup(false);\n }\n }\n }\n /**\n * @hidden\n */\n handleEscape() {\n this.isOpen ? this.togglePopup(false) : this.clearValue();\n // clear the focus only if the focused item is not selected\n const hasSelected = this.selectionService.selected.length > 0;\n if (!hasSelected) {\n this.suggestedText = null;\n this.selectionService.focused = -1;\n }\n hasObservers(this.escape) && this.escape.emit();\n }\n /**\n * @hidden\n */\n handleNavigationOpen() {\n this.restoreItemFocus();\n this.togglePopup(true);\n }\n /**\n * @hidden\n */\n searchBarChange(text) {\n const currentTextLength = this.text ? this.text.length : 0;\n this.backspacePressed = text.length < currentTextLength ? true : false;\n this.text = text;\n // Reset the selection prior to filter. If a match is present, it will be resolved. If a match is not present, it is not needed.\n this.selectionService.resetSelection([]);\n this.togglePopup(true);\n this._filtering = true;\n if (this.filterable && this.filterText !== text) {\n this.filterText = text;\n this.filterChange.emit(text);\n } else {\n this.search(text);\n }\n }\n /**\n * @hidden\n */\n handleInputFocus() {\n this.handleFocus();\n if (hasObservers(this.inputFocus)) {\n this.zone.run(() => this.inputFocus.emit());\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n change(candidate, isCustom = false) {\n if (isCustom) {\n this.customValueSubject.next(candidate);\n } else {\n this.valueSubject.next(candidate);\n if (this.isActionSheetExpanded) {\n this.togglePopup(false);\n }\n }\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n this._previousDataItem = this.dataItem;\n }\n /**\n * @hidden\n */\n selectClick() {\n if (!touchEnabled) {\n this.searchbar.focus();\n this.isFocused = true;\n }\n if (!this.isOpen) {\n this.restoreItemFocus();\n }\n this.togglePopup(!this.isOpen);\n }\n get listContainerClasses() {\n return ['k-list-container', 'k-combobox-popup'].concat(this.popupSettings.popupClass || []);\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n get focusedItemText() {\n const focused = this.selectionService.focused;\n if (!isPresent(focused) || focused === -1) {\n return null;\n }\n const itemText = getter(this.dataService.itemAt(focused), this.textField);\n return !isPresent(itemText) ? \"\" : itemText.toString();\n }\n /**\n * Focuses the first match when there's text in the input field, but no focused item.\n */\n restoreItemFocus() {\n const hasFocus = isPresent(this.selectionService.focused) && this.selectionService.focused > -1;\n if (!hasFocus && this.text && this.dataService.itemsCount) {\n if (this.filterable) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n } else {\n this.search(this.text);\n }\n }\n }\n useSuggestion() {\n if (!(this.suggest && isPresent(this.searchbar.value))) {\n return false;\n }\n const focusedDataItem = this.dataService.itemAt(this.selectionService.focused);\n const focusedItemText = getter(focusedDataItem, this.textField);\n if (!isPresent(focusedItemText)) {\n return false;\n }\n return this.searchbar.value.toLowerCase() === focusedItemText.toLowerCase();\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement.removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.openActionSheet();\n return;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = {\n horizontal: horizontalAlign,\n vertical: \"bottom\"\n };\n const popupPosition = {\n horizontal: horizontalAlign,\n vertical: \"top\"\n };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute',\n anchorAlign: anchorPosition,\n popupAlign: popupPosition\n });\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.popupWidth;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.popupHeight;\n popupWrapper.setAttribute('dir', this.direction);\n if (!this.appendTo) {\n this.renderer.setAttribute(popupWrapper, 'role', 'region');\n this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));\n }\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false));\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this.isActionSheetExpanded) {\n this.closeActionSheet();\n }\n if (this._open) {\n this.windowSize = windowSize();\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n } else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = '';\n this.filterChange.emit(this.filterText);\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !touchEnabled) {\n return;\n }\n this.zone.runOutsideAngular(() =>\n // Roll up ComboBox on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', e => {\n const target = e.target;\n const isInDropDown = inDropDown(this.wrapper, target, this.popupRef);\n if (this.isFocused && !isInDropDown) {\n // Close popup and mobile keyboard if searchbar is focused\n this.zone.run(() => this.blur());\n } else if (this.isOpen && !isInDropDown) {\n // Close popup if the popup is opened via the select click\n this.zone.run(() => this.togglePopup(false));\n }\n }));\n }\n attachSelectClickHandler() {\n const selectElement = this.select.nativeElement;\n const event = pointers ? 'pointerdown' : 'click';\n this.selectClickDisposeHandler = this.renderer.listen(selectElement, event, this.selectClick.bind(this));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n findIndex(value, startFrom = 0) {\n let index;\n if (value && value.length && this.dataService.itemsCount) {\n index = this.dataService.findIndex(this.findIndexPredicate(value), startFrom);\n } else {\n index = -1;\n }\n return index;\n }\n closeActionSheet() {\n this.actionSheet.toggle(false);\n this.actionSheetSearchBar.value = '';\n this.filterable && this.filterChange.emit('');\n this.searchbar.input.nativeElement.focus();\n this.closed.emit();\n }\n openActionSheet() {\n this.windowSize = windowSize();\n this.actionSheet.toggle(true);\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);\n this.title = setActionSheetTitle(this.searchbar.input, this.title);\n updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);\n this.cdr.detectChanges();\n this.opened.emit();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n this.actionSheetSearchBar.focus();\n }\n }\n ComboBoxComponent.ɵfac = function ComboBoxComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ComboBoxComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i2.PopupService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(DisabledItemsService), i0.ɵɵdirectiveInject(DataService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n ComboBoxComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ComboBoxComponent,\n selectors: [[\"kendo-combobox\"]],\n contentQueries: function ComboBoxComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, SuffixTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, PrefixTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.suffixTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.prefixTemplate = _t.first);\n }\n },\n viewQuery: function ComboBoxComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ResponsiveRendererComponent, 5);\n i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);\n i0.ɵɵviewQuery(_c10, 7);\n i0.ɵɵviewQuery(SearchBarComponent, 7);\n i0.ɵɵviewQuery(_c11, 5);\n i0.ɵɵviewQuery(_c13, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.responsiveRendererComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.select = _t.first);\n }\n },\n hostVars: 11,\n hostBindings: function ComboBoxComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-readonly\", ctx.readonly)(\"k-combobox\", ctx.widgetClasses)(\"k-input\", ctx.widgetClasses)(\"k-disabled\", ctx.isDisabled)(\"k-loading\", ctx.isLoading);\n }\n },\n inputs: {\n icon: \"icon\",\n svgIcon: \"svgIcon\",\n inputAttributes: \"inputAttributes\",\n showStickyHeader: \"showStickyHeader\",\n focusableId: \"focusableId\",\n allowCustom: \"allowCustom\",\n data: \"data\",\n value: \"value\",\n textField: \"textField\",\n valueField: \"valueField\",\n valuePrimitive: \"valuePrimitive\",\n valueNormalizer: \"valueNormalizer\",\n placeholder: \"placeholder\",\n adaptiveMode: \"adaptiveMode\",\n title: \"title\",\n subtitle: \"subtitle\",\n popupSettings: \"popupSettings\",\n listHeight: \"listHeight\",\n loading: \"loading\",\n suggest: \"suggest\",\n clearButton: \"clearButton\",\n disabled: \"disabled\",\n itemDisabled: \"itemDisabled\",\n readonly: \"readonly\",\n tabindex: \"tabindex\",\n tabIndex: \"tabIndex\",\n filterable: \"filterable\",\n virtual: \"virtual\",\n size: \"size\",\n rounded: \"rounded\",\n fillMode: \"fillMode\"\n },\n outputs: {\n valueChange: \"valueChange\",\n selectionChange: \"selectionChange\",\n filterChange: \"filterChange\",\n open: \"open\",\n opened: \"opened\",\n close: \"close\",\n closed: \"closed\",\n onFocus: \"focus\",\n onBlur: \"blur\",\n inputFocus: \"inputFocus\",\n inputBlur: \"inputBlur\",\n escape: \"escape\"\n },\n exportAs: [\"kendoComboBox\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([COMBOBOX_VALUE_ACCESSOR, DataService, SelectionService, NavigationService, DisabledItemsService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.combobox'\n }, {\n provide: FilterableComponent,\n useExisting: forwardRef(() => ComboBoxComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => ComboBoxComponent)\n }, {\n provide: MultiTabStop,\n useExisting: forwardRef(() => ComboBoxComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 20,\n vars: 37,\n consts: () => {\n let i18n_3;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.combobox.noDataText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_3 = goog.getMsg(\"NO DATA FOUND\");\n i18n_3 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_3;\n } else {\n i18n_3 = $localize`:kendo.combobox.noDataText|The text displayed in the popup when there are no items:NO DATA FOUND`;\n }\n let i18n_4;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.combobox.clearTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_4 = goog.getMsg(\"clear\");\n i18n_4 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_4;\n } else {\n i18n_4 = $localize`:kendo.combobox.clearTitle|The title of the clear button:clear`;\n }\n let i18n_5;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text set as aria-label on the select button\n * @meaning kendo.combobox.selectButtonText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_5 = goog.getMsg(\"Select\");\n i18n_5 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_5;\n } else {\n i18n_5 = $localize`:kendo.combobox.selectButtonText|The text set as aria-label on the select button:Select`;\n }\n let i18n_6;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the popup element that contains the list of options when its role is 'region'\n * @meaning kendo.combobox.popupLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_6 = goog.getMsg(\"Options list\");\n i18n_6 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_6;\n } else {\n i18n_6 = $localize`:kendo.combobox.popupLabel|The label of the popup element that contains the list of options when its role is 'region':Options list`;\n }\n return [[\"select\", \"\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [\"sharedPopupActionSheetTemplate\", \"\"], [\"optionsList\", \"\"], [\"kendoComboBoxLocalizedMessages\", \"\", \"noDataText\", i18n_3, \"clearTitle\", i18n_4, \"selectButtonText\", i18n_5, \"popupLabel\", i18n_6], [\"kendoDropDownSharedEvents\", \"\", 3, \"isFocusedChange\", \"handleBlur\", \"onFocus\", \"hostElement\", \"isFocused\"], [\"class\", \"k-input-prefix k-input-prefix-horizontal\", 4, \"ngIf\"], [4, \"ngIf\"], [\"kendoSearchbar\", \"\", 3, \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\", \"click\", \"ariaExpanded\", \"ariaControls\", \"id\", \"isLoading\", \"isSuggestable\", \"isFilterable\", \"activeDescendant\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"isRequired\", \"placeholder\", \"inputAttributes\"], [\"class\", \"k-clear-value\", \"aria-hidden\", \"true\", 3, \"visibility\", \"kendoEventsOutsideAngular\", \"click\", 4, \"ngIf\"], [\"class\", \"k-i-loading k-input-loading-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-input-suffix k-input-suffix-horizontal\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"unselectable\", \"on\", \"type\", \"button\", 1, \"k-input-button\", \"k-button\", \"k-icon-button\", 3, \"keydown.enter\", \"ngClass\", \"kendoEventsOutsideAngular\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [3, \"resize\", 4, \"ngIf\"], [3, \"closePopup\", \"textInputChange\", \"navigate\", \"sharedPopupActionSheetTemplate\", \"isActionSheetExpanded\", \"title\", \"showTextInput\", \"subtitle\", \"placeholder\"], [1, \"k-input-prefix\", \"k-input-prefix-horizontal\"], [3, \"ngTemplateOutlet\"], [\"aria-hidden\", \"true\", 1, \"k-clear-value\", 3, \"click\", \"kendoEventsOutsideAngular\"], [\"name\", \"x\", 3, \"svgIcon\"], [1, \"k-i-loading\", \"k-input-loading-icon\", \"k-icon\"], [1, \"k-input-suffix\", \"k-input-suffix-horizontal\"], [4, \"ngTemplateOutlet\"], [3, \"resize\"], [3, \"pageChange\", \"size\", \"rounded\", \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"showStickyHeader\"], [\"class\", \"k-no-data\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-no-data\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"]];\n },\n template: function ComboBoxComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 5);\n i0.ɵɵelementContainerStart(1, 6);\n i0.ɵɵtwoWayListener(\"isFocusedChange\", function ComboBoxComponent_Template_ng_container_isFocusedChange_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n i0.ɵɵtwoWayBindingSet(ctx.isFocused, $event) || (ctx.isFocused = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"handleBlur\", function ComboBoxComponent_Template_ng_container_handleBlur_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleBlur());\n })(\"onFocus\", function ComboBoxComponent_Template_ng_container_onFocus_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleFocus());\n });\n i0.ɵɵtemplate(2, ComboBoxComponent_span_2_Template, 2, 1, \"span\", 7)(3, ComboBoxComponent_kendo_separator_3_Template, 1, 0, \"kendo-separator\", 8);\n i0.ɵɵelementStart(4, \"input\", 9);\n i0.ɵɵlistener(\"onNavigate\", function ComboBoxComponent_Template_input_onNavigate_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n })(\"valueChange\", function ComboBoxComponent_Template_input_valueChange_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.searchBarChange($event));\n })(\"onBlur\", function ComboBoxComponent_Template_input_onBlur_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputBlur());\n })(\"onFocus\", function ComboBoxComponent_Template_input_onFocus_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputFocus());\n })(\"click\", function ComboBoxComponent_Template_input_click_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleClick());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, ComboBoxComponent_span_5_Template, 2, 7, \"span\", 10)(6, ComboBoxComponent_span_6_Template, 1, 0, \"span\", 11)(7, ComboBoxComponent_kendo_separator_7_Template, 1, 0, \"kendo-separator\", 8)(8, ComboBoxComponent_span_8_Template, 2, 1, \"span\", 12);\n i0.ɵɵelementStart(9, \"button\", 13, 0);\n i0.ɵɵlistener(\"keydown.enter\", function ComboBoxComponent_Template_button_keydown_enter_9_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵelement(11, \"kendo-icon-wrapper\", 14);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(12, ComboBoxComponent_ng_template_12_Template, 1, 1, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(14, ComboBoxComponent_kendo_resize_sensor_14_Template, 1, 0, \"kendo-resize-sensor\", 15);\n i0.ɵɵelementContainer(15, null, 2);\n i0.ɵɵelementStart(17, \"responsive-renderer\", 16);\n i0.ɵɵlistener(\"closePopup\", function ComboBoxComponent_Template_responsive_renderer_closePopup_17_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.togglePopup(false));\n })(\"textInputChange\", function ComboBoxComponent_Template_responsive_renderer_textInputChange_17_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onAdaptiveTextBoxChange($event));\n })(\"navigate\", function ComboBoxComponent_Template_responsive_renderer_navigate_17_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(18, ComboBoxComponent_ng_template_18_Template, 5, 17, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(19);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"hostElement\", ctx.hostElement);\n i0.ɵɵtwoWayProperty(\"isFocused\", ctx.isFocused);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate && ctx.prefixTemplate.showSeparator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ariaExpanded\", ctx.isOpen)(\"ariaControls\", ctx.ariaControls)(\"id\", ctx.focusableId)(\"isLoading\", ctx.loading)(\"isSuggestable\", ctx.suggest)(\"isFilterable\", ctx.filterable)(\"activeDescendant\", ctx.activeDescendant)(\"userInput\", ctx.text)(\"suggestedText\", ctx.getSuggestion())(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly || ctx.isAdaptive)(\"tabIndex\", ctx.tabIndex)(\"isRequired\", ctx.isControlRequired)(\"placeholder\", ctx.placeholder)(\"inputAttributes\", ctx.inputAttributes);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.clearButton && !ctx.loading && !ctx.disabled && !ctx.readonly && (ctx.text == null ? null : ctx.text.length));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate && ctx.suffixTemplate.showSeparator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx.selectButtonClasses)(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(35, _c14, ctx.preventEventDefault));\n i0.ɵɵattribute(\"aria-label\", ctx.messageFor(\"selectButtonText\"));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"name\", ctx.icon || \"caret-alt-down\")(\"svgIcon\", ctx.svgIcon || ctx.caretAltDownIcon);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.isOpen || ctx.isAdaptiveModeEnabled);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"sharedPopupActionSheetTemplate\", sharedPopupActionSheetTemplate_r4)(\"isActionSheetExpanded\", ctx.isActionSheetExpanded)(\"title\", ctx.title)(\"showTextInput\", true)(\"subtitle\", ctx.subtitle)(\"placeholder\", ctx.placeholder);\n }\n },\n dependencies: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgIf, NgTemplateOutlet, SeparatorComponent, SearchBarComponent, EventsOutsideAngularDirective, IconWrapperComponent, NgClass, ResizeSensorComponent, ResponsiveRendererComponent, TemplateContextDirective, ListComponent],\n encapsulation: 2\n });\n return ComboBoxComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the selected value of the dropdown. To define the header template, nest an `` tag\n * with the `kendoValueTemplate` directive inside the component tag.\n *\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `ValueTemplate` directive can only be used with the DropDownList and DropDownTree components.\n *\n * - [Using `ValueTemplate` with the DropDownList]({% slug templates_ddl %}#toc-value-template)\n * - [Using `ValueTemplate` with the DropDownTree]({% slug templates_ddt %}#toc-value-template)\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet ValueTemplateDirective = /*#__PURE__*/(() => {\n class ValueTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n ValueTemplateDirective.ɵfac = function ValueTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ValueTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n ValueTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ValueTemplateDirective,\n selectors: [[\"\", \"kendoDropDownListValueTemplate\", \"\"], [\"\", \"kendoDropDownTreeValueTemplate\", \"\"]],\n standalone: true\n });\n return ValueTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FilterInputDirective = /*#__PURE__*/(() => {\n class FilterInputDirective {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n }\n ngOnChanges() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n }\n FilterInputDirective.ɵfac = function FilterInputDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterInputDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n FilterInputDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterInputDirective,\n selectors: [[\"\", \"filterInput\", \"\"]],\n inputs: {\n focused: [0, \"filterInput\", \"focused\"]\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return FilterInputDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst DROPDOWNLIST_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownListComponent)\n};\nconst DEFAULT_SIZE$3 = 'medium';\nconst DEFAULT_ROUNDED$3 = 'medium';\nconst DEFAULT_FILL_MODE$3 = 'solid';\n/**\n * Represents the [Kendo UI DropDownList component for Angular]({% slug overview_ddl %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet DropDownListComponent = /*#__PURE__*/(() => {\n class DropDownListComponent {\n constructor(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, _zone, renderer, cdr, injector) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.dataService = dataService;\n this._zone = _zone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.injector = injector;\n /**\n * @hidden\n */\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.animationDuration = animationDuration;\n /**\n * @hidden\n */\n this.xIcon = xIcon;\n /**\n * @hidden\n */\n this.searchIcon = searchIcon;\n /**\n * @hidden\n */\n this.caretAltDownSVGIcon = caretAltDownIcon;\n /**\n * Shows or hides the current group sticky header when using grouped data.\n * By default the sticky header is displayed ([see example]({% slug grouping_autocomplete %}#toc-sticky-header)).\n */\n this.showStickyHeader = true;\n /**\n * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.\n */\n this.adaptiveMode = 'none';\n /**\n * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet title uses the text provided for the label of the AutoComplete.\n */\n this.title = '';\n /**\n * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.\n */\n this.subtitle = '';\n /**\n * @hidden\n */\n this.windowSize = 'large';\n this._listHeight = 200;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_ddl %}) functionality of the DropDownList.\n */\n this.filterable = false;\n /**\n * Enables a case-insensitive search. When filtration is disabled, use this option.\n */\n this.ignoreCase = true;\n /**\n * Sets the delay before an item search is performed. When filtration is disabled, use this option.\n */\n this.delay = 500;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Toggles the left and right arrow keys navigation functionality.\n * @hidden\n */\n this.leftRightArrowsNavigation = true;\n /**\n * Fires each time the value is changed ([see example](slug:events_ddl)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the user types in the input field\n * ([see example](slug:events_ddl)).\n * You can filter the source based on the passed filtration value.\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the item selection is changed\n * ([see example](slug:events_ddl)).\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddl %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownList.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownList gets blurred.\n */\n this.onBlur = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n this.role = 'combobox';\n this.haspopup = 'listbox';\n this.groupIndices = [];\n this.optionPrefix = `k-${guid()}`;\n this.filterText = '';\n this.listBoxId = `k-${guid()}`;\n this.subs = new Subscription();\n this._isFocused = false;\n this.onTouchedCallback = _ => {};\n this.onChangeCallback = _ => {};\n this.word = \"\";\n this.last = \"\";\n this.filterFocused = new EventEmitter();\n this.filterBlurred = new EventEmitter();\n this.hostElementFocused = new EventEmitter();\n this.hostElementBlurred = new EventEmitter();\n this._open = false;\n this._popupSettings = {\n animate: true\n };\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n validatePackage(packageMetadata);\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.data = [];\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n }\n /**\n * @hidden\n */\n get actionSheet() {\n return this.responsiveRendererComponent?.actionSheet;\n }\n /**\n * @hidden\n */\n get actionSheetSearchBar() {\n return this.responsiveRendererComponent?.actionSheetSearchBar;\n }\n get width() {\n const wrapperWidth = isDocumentAvailable() ? this.wrapper.nativeElement.offsetWidth : 0;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return {\n min: minWidth,\n max: maxWidth\n };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get widgetTabIndex() {\n if (this.disabled) {\n return undefined;\n }\n const providedTabIndex = Number(this.tabIndex);\n const defaultTabIndex = 0;\n return !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get ariaActivedescendant() {\n if (!isPresent(this.dataItem) || !this.isOpen) {\n return;\n }\n return this.optionPrefix + \"-\" + this.selectionService.focused;\n }\n get appendTo() {\n const {\n appendTo\n } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n onFilterChange(text) {\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n }\n /**\n * @hidden\n */\n get ariaLive() {\n return this.filterable ? 'polite' : 'off';\n }\n /**\n * Sets the data of the DropDownList.\n *\n * > The data has to be provided in an array-like list.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.setState();\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n // Use length instead of itemsCount because of the grouping.\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the DropDownList.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(newValue) {\n if (!isPresent(newValue)) {\n this._previousDataItem = undefined;\n }\n this._value = newValue;\n this.setState();\n this.cdr.markForCheck();\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n get isAdaptiveModeEnabled() {\n return this.adaptiveMode === 'auto';\n }\n /**\n * @hidden\n */\n get isActionSheetExpanded() {\n return this.actionSheet?.expanded;\n }\n /**\n * @hidden\n */\n get isAdaptive() {\n return this.isAdaptiveModeEnabled && this.windowSize !== 'large';\n }\n /**\n * Configures the popup of the DropDownList.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({\n animate: true\n }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the height of the options list in the popup. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n *\n * > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.\n */\n set listHeight(_listHeight) {\n this._listHeight = _listHeight;\n }\n get listHeight() {\n if (this.isAdaptive) {\n return;\n }\n return this._listHeight;\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_ddl %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_ddl %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddl %}#toc-primitive-values-from-object-fields)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = rounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$3;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * @hidden\n */\n blurComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementBlurred.emit();\n }\n /**\n * @hidden\n */\n blurFilterInput() {\n this.filterBlurred.emit();\n }\n /**\n * @hidden\n */\n focusComponent(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.hostElementFocused.emit();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {\n if (this.isOpen) {\n this.togglePopup(false);\n }\n this.windowSize = windowSize();\n }\n if (this.isOpen && !this.isActionSheetExpanded) {\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get isDisabledClass() {\n return this.disabled;\n }\n get isDisabledAttribute() {\n return this.disabled ? '' : null;\n }\n get isLoading() {\n return this.loading;\n }\n get dir() {\n return this.direction;\n }\n get hostTabIndex() {\n return this.widgetTabIndex;\n }\n get readonlyClass() {\n return this.readonly;\n }\n get readonlyAttr() {\n return this.readonly ? '' : null;\n }\n get isBusy() {\n return this.isLoading;\n }\n get hostAriaInvalid() {\n return this.formControl ? this.formControl?.invalid.toString() : null;\n }\n /**\n * @hidden\n */\n keydown(event, input) {\n if (input) {\n event.stopPropagation();\n }\n const firstIndex = isPresent(this.defaultItem) ? -1 : 0;\n const focused = isNaN(this.selectionService.focused) ? this.firstFocusableIndex(firstIndex) : this.selectionService.focused;\n let offset = 0;\n if (this.disabled || this.readonly) {\n return;\n }\n const isHomeEnd = event.keyCode === Keys.Home || event.keyCode === Keys.End;\n const isFilterFocused = this.filterable && this.isFocused && this.isOpen;\n if (isFilterFocused && isHomeEnd) {\n return;\n }\n const hasSelected = isPresent(this.selectionService.selected[0]);\n const focusedItemNotSelected = isPresent(this.selectionService.focused) && !this.selectionService.isSelected(this.selectionService.focused);\n if (!hasSelected || focusedItemNotSelected) {\n if (event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowRight && this.leftRightArrowsNavigation) {\n offset = -1;\n } else if (event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowLeft && this.leftRightArrowsNavigation) {\n offset = 1;\n }\n }\n const eventData = event;\n const action = this.navigationService.process({\n current: focused + offset,\n max: this.dataService.itemsCount - 1,\n min: this.defaultItem ? -1 : 0,\n originalEvent: eventData,\n openOnSpace: !this.isOpen,\n closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)\n });\n const leftRightKeys = action === NavigationAction.Left || action === NavigationAction.Right && this.leftRightArrowsNavigation;\n if (action !== NavigationAction.Undefined && action !== NavigationAction.Tab && action !== NavigationAction.Backspace && action !== NavigationAction.Delete && action !== NavigationAction.PageDown && action !== NavigationAction.PageUp && action !== NavigationAction.SelectAll && !(leftRightKeys && this.filterable) && action !== NavigationAction.Enter //enter when popup is opened is handled before `handleEnter`\n ) {\n eventData.preventDefault();\n }\n if (action === NavigationAction.Tab && this.isActionSheetExpanded) {\n this.togglePopup(false);\n }\n }\n /**\n * @hidden\n */\n keypress(event) {\n if (this.disabled || this.readonly || this.filterable) {\n return;\n }\n this.onKeyPress(event);\n }\n /**\n * @hidden\n */\n click() {\n if (!this.isActionSheetExpanded) {\n this.focus();\n this.togglePopup(!this.isOpen);\n }\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');\n if (this.ariaActivedescendant) {\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-activedescendant', this.ariaActivedescendant);\n }\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.detectChanges();\n }));\n this.assignAriaDescribedBy();\n this.setComponentClasses();\n }\n ngAfterViewInit() {\n this.windowSize = windowSize();\n if (this.actionSheet && isDocumentAvailable()) {\n // The following syntax is used as it does not violate CSP compliance\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n }\n /**\n * @hidden\n * Used by the TextBoxContainer to determine if the component is empty.\n */\n isEmpty() {\n const value = this.value;\n return !(value === 0 || value === false || value || this.defaultItem);\n }\n /**\n * @hidden\n */\n onFilterFocus() {\n this.filterFocused.emit();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.subs.unsubscribe();\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes['data'] && changes['data'].isFirstChange();\n if (requestInitialData) {\n this.pageChange({\n skip: 0,\n take: virtual.pageSize\n });\n }\n if (isChanged('defaultItem', changes, false)) {\n this.disabledItemsService.defaultItem = this.defaultItem;\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive', 'defaultItem', 'itemDisabled'], changes, false)) {\n this.setState();\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n }\n /**\n * @hidden\n */\n get formControl() {\n const ngControl = this.injector.get(NgControl, null);\n return ngControl?.control || null;\n }\n /**\n * Focuses a specific item of the DropDownList based on a provided index.\n * If there is a default item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = isPresent(this.defaultItem) ? -1 : 0;\n const isInRange = minIndex <= index && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n } else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the DropDownList.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownList.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n this.cdr.detectChanges();\n }\n }\n /**\n * Toggles the visibility of the popup or actionSheet\n * ([see example]({% slug openstate_ddl %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n });\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this.isActionSheetExpanded) {\n this.closeActionSheet();\n }\n if (this._open) {\n this.createPopup();\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n } else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n if (!open && this.filterable && this.isFocused) {\n this.focus();\n }\n this._toggle(open);\n }\n }\n /**\n * Returns the current open state. Returns `true` if the popup or actionSheet is open.\n */\n get isOpen() {\n return isTruthy(this._open || this.isActionSheetExpanded);\n }\n /**\n * Resets the value of the DropDownList.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.value = undefined;\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get optionLabelSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-dropdownlist-popup'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get isDisabledDefaultItem() {\n return this.disabledItemsService.isItemDisabled(this.defaultItem);\n }\n /**\n * @hidden\n */\n getText() {\n return this.text;\n }\n /**\n * @hidden\n */\n getDefaultItemText() {\n return getter(this.defaultItem, this.textField);\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.openActionSheet();\n return;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = {\n horizontal: horizontalAlign,\n vertical: \"bottom\"\n };\n const popupPosition = {\n horizontal: horizontalAlign,\n vertical: \"top\"\n };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.listBoxId);\n this.setAriaactivedescendant();\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute('dir', this.direction);\n if (!this.appendTo) {\n this.renderer.setAttribute(popupWrapper, 'role', 'region');\n this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));\n }\n const listBox = popupWrapper.querySelector('ul.k-list-ul');\n const ariaLabel = this.wrapper.nativeElement.getAttribute('aria-labelledby');\n if (ariaLabel) {\n listBox.setAttribute('aria-labelledby', ariaLabel);\n }\n this.subs.add(this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n this.opened.emit();\n }));\n this.subs.add(this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n }));\n if (!this.filterable) {\n this.subs.add(this.popupRef.popupAnchorViewportLeave.subscribe(() => this.togglePopup(false)));\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-activedescendant');\n this.popupRef.popupElement.removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n updateState({\n dataItem,\n confirm = false\n }) {\n this.dataItem = dataItem;\n this.text = getter(dataItem, this.textField);\n if (confirm) {\n this._previousDataItem = dataItem;\n }\n }\n clearState() {\n this.text = undefined;\n this.dataItem = undefined;\n }\n resetSelection(index) {\n const clear = !isPresent(index);\n this.selectionService.resetSelection(clear ? [] : [index]);\n this.selectionService.focused = clear ? this.firstFocusableIndex(0) : index;\n }\n onSelectionChange({\n dataItem\n }) {\n this.updateState({\n dataItem\n });\n this.selectionChange.emit(dataItem);\n // reassigning the value label ID as aria-deascibedby forces firefox/nvda, forefox/jaws to read\n // the new value when the popup is closed and the value is changed with the arrow keys (up/down)\n this.assignAriaDescribedBy();\n this.setAriaactivedescendant();\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n // Item selection when the popup is open.\n this.subs.add(this.selectionService.onSelect.pipe(filter(_ => this.isOpen), map(this.itemFromEvent.bind(this))).subscribe(this.onSelectionChange.bind(this)));\n // Item selection when the popup is closed | clicked | enter, and so on.\n this.subs.add(merge(this.selectionService.onSelect.pipe(filter(_ => !this.isOpen)), this.selectionService.onChange).pipe(map(this.itemFromEvent.bind(this)), tap(_ => this.togglePopup(false))).subscribe(({\n dataItem,\n value: newValue,\n newSelection\n }) => {\n if (newSelection) {\n this.onSelectionChange({\n dataItem\n });\n }\n const shouldUsePrevious = !isPresent(dataItem) && this._previousDataItem;\n const shouldUseNewValue = newValue !== getter(this.value, this.valueField);\n if (shouldUsePrevious) {\n this.updateState({\n dataItem: this._previousDataItem\n });\n this.resetSelection();\n } else if (shouldUseNewValue) {\n this.value = this.valuePrimitive ? newValue : dataItem;\n this._previousDataItem = dataItem;\n this.emitChange(this.value);\n }\n this.clearFilter();\n }));\n this.subs.add(merge(this.navigationService.up, this.navigationService.down, this.navigationService.left.pipe(filter(() => this.leftRightArrowsNavigation), skipWhile(() => this.filterable)), this.navigationService.right.pipe(filter(() => this.leftRightArrowsNavigation), skipWhile(() => this.filterable)), this.navigationService.home, this.navigationService.end).pipe(filter(event => !isNaN(event.index))).subscribe(event => this.selectionService.select(event.index)));\n this.subs.add(merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe(event => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);\n }\n }));\n this.subs.add(this.navigationService.open.subscribe(() => this.togglePopup(true)));\n this.subs.add(this.navigationService.close.subscribe(() => {\n this.togglePopup(false);\n this.focus();\n }));\n this.subs.add(this.navigationService.enter.pipe(tap(event => event.originalEvent.preventDefault())).subscribe(this.handleEnter.bind(this)));\n this.subs.add(this.navigationService.esc.subscribe(this.handleEscape.bind(this)));\n this.subs.add(this.filterBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.hostElementFocused)))).subscribe(() => {\n this.hostElementBlurred.emit();\n }));\n this._zone.runOutsideAngular(() => {\n this.subs.add(merge(this.hostElementBlurred.pipe(concatMap(() => interval(10).pipe(take(1), takeUntil(this.filterFocused)))), this.navigationService.tab).pipe(tap(event => event instanceof NavigationEvent && this.focus()), filter(() => this.isFocused)).subscribe(() => this.componentBlur()));\n });\n }\n setAriaactivedescendant() {\n if (this.ariaActivedescendant) {\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-activedescendant', this.ariaActivedescendant);\n const searchInput = this.popupRef.popupElement.querySelector('input[role=\"searchbox\"]');\n if (searchInput) {\n this.renderer.setAttribute(searchInput, 'aria-activedescendant', this.ariaActivedescendant);\n }\n }\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() =>\n // Roll up DropDownList on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', e => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.filterFocused) {\n // Close popup if filter is focused\n this.togglePopup(false);\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.focusComponent = this.focusComponent.bind(this);\n this.blurComponent = this.blurComponent.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.focusComponent, useCapture);\n document.addEventListener('blur', this.blurComponent, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.focusComponent, useCapture);\n document.removeEventListener('blur', this.blurComponent, useCapture);\n }\n }\n itemFromEvent(event) {\n const index = event.indices[0];\n let dataItem = this.dataService.itemAt(index);\n dataItem = isPresent(dataItem) ? dataItem : this.currentOrDefault(index);\n const value = getter(dataItem, this.valueField);\n const newSelection = event.newSelection;\n return {\n dataItem,\n index,\n newSelection,\n value\n };\n }\n currentOrDefault(selectedIndex) {\n const defaultItemIndex = -1;\n if (isPresent(this.dataItem) && selectedIndex !== defaultItemIndex) {\n return this.dataItem;\n } else {\n return this.defaultItem;\n }\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount - 1;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return index < maxIndex ? this.firstFocusableIndex(index + 1) : undefined;\n } else {\n return index;\n }\n }\n handleEnter() {\n if (this.isOpen) {\n this.selectionService.change(this.selectionService.focused);\n this.focus();\n } else {\n this.togglePopup(true);\n }\n }\n handleEscape() {\n if (isPresent(this.selectionService.selected[0])) {\n this.selectionService.change(this.selectionService.selected[0]);\n } else {\n this.togglePopup(false);\n this.clearFilter();\n }\n this.focus();\n }\n clearFilter() {\n if (!(this.filterable && this.filterText)) {\n return;\n }\n this.filterText = \"\";\n this.cdr.markForCheck();\n this.filterChange.emit(this.filterText);\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.defaultItem && this.valueField && typeof this.defaultItem !== \"object\") {\n throw new Error(DropDownListMessages.defaultItem);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownListMessages.primitive);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownListMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(DropDownListMessages.textAndValue);\n }\n }\n componentBlur() {\n if (!this.isActionSheetExpanded) {\n this.isFocused = false;\n const selectionPresent = isPresent(this.selectionService.selected[0]);\n const valueHasChanged = selectionPresent && getter(this.value, this.valueField) !== getter(this.dataService.itemAt(this.selectionService.selected[0]), this.valueField);\n if (valueHasChanged || hasObservers(this.close) || hasObservers(this.onBlur) || hasObservers(this.filterChange) || isUntouched(this.wrapper.nativeElement) || this.formControl?.updateOn === 'blur') {\n this._zone.run(() => {\n if (valueHasChanged) {\n this.selectionService.change(this.selectionService.selected[0]);\n }\n this.togglePopup(false);\n this.clearFilter();\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n } else {\n this.togglePopup(false);\n //this is needed for Ang 18 not to throw ng0100 error when closing the popup\n //the component could be refactored using kendoDropDownSharedEvents directive\n //once we are able to debug against Angular 18\n this.cdr.markForCheck();\n }\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n const tagName = event.target.tagName.toLowerCase();\n if (tagName !== \"input\") {\n event.preventDefault();\n }\n }\n onKeyPress(event) {\n if (event.which === 0 || event.keyCode === Keys.Enter) {\n return;\n }\n let character = String.fromCharCode(event.charCode || event.keyCode);\n if (this.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === \" \") {\n event.preventDefault();\n }\n this.word += character;\n this.last = character;\n this.search();\n }\n search() {\n clearTimeout(this.typingTimeout);\n if (!this.filterable) {\n this.typingTimeout = setTimeout(() => {\n this.word = \"\";\n }, this.delay);\n this.selectNext();\n }\n }\n selectNext() {\n let data = this.dataService.filter(item => isPresent(item) && !item.header && !this.disabledItemsService.isItemDisabled(item)).map(item => {\n if (this.dataService.grouped) {\n return {\n item: item.value,\n itemIndex: item.offsetIndex\n };\n }\n return {\n item: item,\n itemIndex: this.dataService.indexOf(item)\n };\n });\n const isInLoop = sameCharsOnly(this.word, this.last);\n let dataLength = data.length;\n const hasSelected = !isNaN(this.selectionService.selected[0]);\n let startIndex = !hasSelected ? 0 : this.selectionService.selected[0];\n let text, index, defaultItem;\n if (this.defaultItem && !this.disabledItemsService.isItemDisabled(this.defaultItem)) {\n defaultItem = {\n item: this.defaultItem,\n itemIndex: -1\n };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop && hasSelected ? 1 : 0;\n data = shuffleData(data, startIndex, defaultItem);\n index = 0;\n for (; index < dataLength; index++) {\n text = getter(data[index].item, this.textField);\n const loopMatch = Boolean(isInLoop && matchText(text, this.last, this.ignoreCase));\n const nextMatch = Boolean(matchText(text, this.word, this.ignoreCase));\n if (loopMatch || nextMatch) {\n index = data[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n this.navigate(index);\n }\n }\n emitChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n navigate(index) {\n this.selectionService.select(index);\n }\n findDataItem({\n valueField,\n value\n }) {\n const result = {\n dataItem: null,\n index: -1\n };\n const prop = dataItem => getter(dataItem, valueField);\n let comparer;\n if (this.dataService.grouped) {\n comparer = element => {\n return prop(element.value) === prop(value);\n };\n } else {\n comparer = element => {\n return prop(element) === prop(value);\n };\n }\n const index = this.dataService.findIndex(comparer);\n result.dataItem = this.dataService.itemAt(index);\n result.index = index;\n return result;\n }\n setState() {\n const value = this.value;\n const valueField = this.valueField;\n const textField = this.textField;\n const primitive = this.valuePrimitive;\n if (this.defaultItem) {\n const defaultValue = getter(this.defaultItem, valueField);\n const currentValue = getter(value, valueField);\n if (!isPresent(value) || currentValue === defaultValue) {\n this.updateState({\n dataItem: this.defaultItem,\n confirm: true\n });\n this.resetSelection(-1);\n if (this.filterable && this.filterText && this.dataService.itemsCount) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n return;\n }\n }\n const resolved = this.findDataItem({\n valueField,\n value\n });\n // The data and value are of same shape,\n // for example, value: 'foo', data: ['foo', 'bar']\n // or value: { value: 1, text: 'foo' }, data: [{ value: 1, text: 'foo' }].\n const ofSameType = !(primitive && textField);\n if (resolved.dataItem) {\n this.updateState({\n dataItem: resolved.dataItem,\n confirm: true\n });\n this.resetSelection(resolved.index);\n } else if (isPresent(value) && ofSameType) {\n this.updateState({\n dataItem: value\n });\n this.resetSelection();\n } else if (this._previousDataItem) {\n this.updateState({\n dataItem: this._previousDataItem\n });\n this.resetSelection();\n } else {\n this.clearState();\n this.resetSelection();\n }\n }\n /**\n * @hidden\n */\n handleFilter(event) {\n this.filterChange.emit(event.target.value);\n }\n /**\n * @hidden\n */\n handleClick() {\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.togglePopup(true);\n }\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n const trimmed = currentValue.replace(this.valueLabelId, '').trim();\n // reset the value label ID to force readers to read the new value\n this.valueLabelId = `k-${guid()}`;\n // add to the current value - don't replace it\n const newValue = `${this.valueLabelId} ${trimmed}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n closeActionSheet() {\n this.actionSheet.toggle(false);\n if (this.filterable) {\n this.actionSheetSearchBar.value = '';\n this.filterChange.emit('');\n }\n this.closed.emit();\n }\n openActionSheet() {\n this.windowSize = windowSize();\n this.actionSheet.toggle(true);\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.wrapper, this.renderer);\n this.title = setActionSheetTitle(this.wrapper, this.title);\n updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);\n this.cdr.detectChanges();\n this.opened.emit();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n if (this.filterable) {\n this.actionSheetSearchBar.focus();\n }\n }\n }\n DropDownListComponent.ɵfac = function DropDownListComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownListComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i2.PopupService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(DisabledItemsService), i0.ɵɵdirectiveInject(DataService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Injector));\n };\n DropDownListComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DropDownListComponent,\n selectors: [[\"kendo-dropdownlist\"]],\n contentQueries: function DropDownListComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, ValueTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.valueTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n }\n },\n viewQuery: function DropDownListComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ResponsiveRendererComponent, 5);\n i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);\n i0.ɵɵviewQuery(_c10, 7);\n i0.ɵɵviewQuery(_c11, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.responsiveRendererComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n }\n },\n hostVars: 19,\n hostBindings: function DropDownListComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function DropDownListComponent_keydown_HostBindingHandler($event) {\n return ctx.keydown($event);\n })(\"keypress\", function DropDownListComponent_keypress_HostBindingHandler($event) {\n return ctx.keypress($event);\n })(\"click\", function DropDownListComponent_click_HostBindingHandler() {\n return ctx.click();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"disabled\", ctx.isDisabledAttribute)(\"id\", ctx.focusableId)(\"dir\", ctx.dir)(\"tabindex\", ctx.hostTabIndex)(\"readonly\", ctx.readonlyAttr)(\"aria-busy\", ctx.isBusy)(\"role\", ctx.role)(\"aria-haspopup\", ctx.haspopup)(\"aria-invalid\", ctx.hostAriaInvalid);\n i0.ɵɵclassProp(\"k-readonly\", ctx.readonly)(\"k-dropdownlist\", ctx.hostClasses)(\"k-picker\", ctx.hostClasses)(\"k-disabled\", ctx.isDisabledClass)(\"k-loading\", ctx.isLoading);\n }\n },\n inputs: {\n customIconClass: \"customIconClass\",\n showStickyHeader: \"showStickyHeader\",\n icon: \"icon\",\n svgIcon: \"svgIcon\",\n loading: \"loading\",\n data: \"data\",\n value: \"value\",\n textField: \"textField\",\n valueField: \"valueField\",\n adaptiveMode: \"adaptiveMode\",\n title: \"title\",\n subtitle: \"subtitle\",\n popupSettings: \"popupSettings\",\n listHeight: \"listHeight\",\n defaultItem: \"defaultItem\",\n disabled: \"disabled\",\n itemDisabled: \"itemDisabled\",\n readonly: \"readonly\",\n filterable: \"filterable\",\n virtual: \"virtual\",\n ignoreCase: \"ignoreCase\",\n delay: \"delay\",\n valuePrimitive: \"valuePrimitive\",\n tabindex: \"tabindex\",\n tabIndex: \"tabIndex\",\n size: \"size\",\n rounded: \"rounded\",\n fillMode: \"fillMode\",\n leftRightArrowsNavigation: \"leftRightArrowsNavigation\",\n focusableId: [0, \"id\", \"focusableId\"]\n },\n outputs: {\n valueChange: \"valueChange\",\n filterChange: \"filterChange\",\n selectionChange: \"selectionChange\",\n open: \"open\",\n opened: \"opened\",\n close: \"close\",\n closed: \"closed\",\n onFocus: \"focus\",\n onBlur: \"blur\"\n },\n exportAs: [\"kendoDropDownList\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([DROPDOWNLIST_VALUE_ACCESSOR, DataService, SelectionService, NavigationService, DisabledItemsService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdownlist'\n }, {\n provide: FilterableComponent,\n useExisting: forwardRef(() => DropDownListComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownListComponent)\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 16,\n vars: 18,\n consts: () => {\n let i18n_7;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.dropdownlist.noDataText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_7 = goog.getMsg(\"NO DATA FOUND\");\n i18n_7 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_7;\n } else {\n i18n_7 = $localize`:kendo.dropdownlist.noDataText|The text displayed in the popup when there are no items:NO DATA FOUND`;\n }\n let i18n_8;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text set as aria-label on the select button\n * @meaning kendo.dropdownlist.selectButtonText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_8 = goog.getMsg(\"Select\");\n i18n_8 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_8;\n } else {\n i18n_8 = $localize`:kendo.dropdownlist.selectButtonText|The text set as aria-label on the select button:Select`;\n }\n let i18n_9;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text set as aria-label on the filter input\n * @meaning kendo.dropdownlist.filterInputLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_9 = goog.getMsg(\"Filter\");\n i18n_9 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_9;\n } else {\n i18n_9 = $localize`:kendo.dropdownlist.filterInputLabel|The text set as aria-label on the filter input:Filter`;\n }\n let i18n_10;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the popup element that contains the list of options when its role is 'region'\n * @meaning kendo.dropdownlist.popupLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_10 = goog.getMsg(\"Options list\");\n i18n_10 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_10;\n } else {\n i18n_10 = $localize`:kendo.dropdownlist.popupLabel|The label of the popup element that contains the list of options when its role is 'region':Options list`;\n }\n return [[\"popupTemplate\", \"\"], [\"container\", \"\"], [\"sharedPopupActionSheetTemplate\", \"\"], [\"optionsList\", \"\"], [\"searchInput\", \"\"], [\"kendoDropDownListLocalizedMessages\", \"\", \"noDataText\", i18n_7, \"selectButtonText\", i18n_8, \"filterInputLabel\", i18n_9, \"popupLabel\", i18n_10], [\"unselectable\", \"on\", 1, \"k-input-inner\", 3, \"click\", \"id\"], [1, \"k-input-value-text\"], [4, \"ngIf\"], [3, \"ngIf\"], [\"class\", \"k-i-loading k-input-loading-icon k-icon\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"unselectable\", \"on\", \"type\", \"button\", 1, \"k-input-button\", \"k-button\", \"k-icon-button\", 3, \"ngClass\", \"kendoEventsOutsideAngular\"], [\"unselectable\", \"on\", \"innerCssClass\", \"k-button-icon\", 3, \"name\", \"customFontClass\", \"svgIcon\"], [3, \"resize\", 4, \"ngIf\"], [3, \"closePopup\", \"textInputChange\", \"sharedPopupActionSheetTemplate\", \"isActionSheetExpanded\", \"title\", \"showTextInput\", \"subtitle\"], [3, \"templateContext\"], [1, \"k-i-loading\", \"k-input-loading-icon\", \"k-icon\"], [4, \"ngTemplateOutlet\"], [3, \"resize\"], [3, \"pageChange\", \"id\", \"size\", \"rounded\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"virtual\", \"ariaLive\", \"showStickyHeader\"], [\"class\", \"k-no-data\", 4, \"ngIf\"], [1, \"k-list-filter\", 3, \"click\"], [1, \"k-searchbox\", \"k-input\", 3, \"ngClass\"], [\"innerCssClass\", \"k-input-icon\", \"name\", \"search\", 1, \"k-icon\", 3, \"svgIcon\"], [\"role\", \"searchbox\", \"aria-autocomplete\", \"list\", \"aria-haspopup\", \"listbox\", \"tabindex\", \"-1\", 1, \"k-input-inner\", 3, \"ngModelChange\", \"keydown\", \"input\", \"focus\", \"blur\", \"click\", \"filterInput\", \"dir\", \"ngModel\"], [1, \"k-list\", 3, \"ngClass\"], [\"kendoDropDownsSelectable\", \"\", 1, \"k-list-optionlabel\", 3, \"ngClass\", \"index\"], [1, \"k-no-data\"], [3, \"ngIf\", \"templateContext\"]];\n },\n template: function DropDownListComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 5);\n i0.ɵɵelementStart(1, \"span\", 6);\n i0.ɵɵlistener(\"click\", function DropDownListComponent_Template_span_click_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵelementStart(2, \"span\", 7);\n i0.ɵɵtemplate(3, DropDownListComponent_3_Template, 1, 4, null, 8)(4, DropDownListComponent_ng_template_4_Template, 1, 1, \"ng-template\", 9);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(5, DropDownListComponent_span_5_Template, 1, 0, \"span\", 10);\n i0.ɵɵelementStart(6, \"button\", 11);\n i0.ɵɵelement(7, \"kendo-icon-wrapper\", 12);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(8, DropDownListComponent_ng_template_8_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(10, DropDownListComponent_kendo_resize_sensor_10_Template, 1, 0, \"kendo-resize-sensor\", 13);\n i0.ɵɵelementContainer(11, null, 1);\n i0.ɵɵelementStart(13, \"responsive-renderer\", 14);\n i0.ɵɵlistener(\"closePopup\", function DropDownListComponent_Template_responsive_renderer_closePopup_13_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.togglePopup(false));\n })(\"textInputChange\", function DropDownListComponent_Template_responsive_renderer_textInputChange_13_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onFilterChange($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(14, DropDownListComponent_ng_template_14_Template, 8, 21, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const sharedPopupActionSheetTemplate_r3 = i0.ɵɵreference(15);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"id\", ctx.valueLabelId);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.valueTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.valueTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx.selectButtonClasses)(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(16, _c14, ctx.onMouseDown));\n i0.ɵɵattribute(\"aria-label\", ctx.messageFor(\"selectButtonText\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx.icon || \"caret-alt-down\")(\"customFontClass\", ctx.customIconClass)(\"svgIcon\", ctx.svgIcon || ctx.caretAltDownSVGIcon);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.isOpen || ctx.isAdaptiveModeEnabled);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"sharedPopupActionSheetTemplate\", sharedPopupActionSheetTemplate_r3)(\"isActionSheetExpanded\", ctx.isActionSheetExpanded)(\"title\", ctx.title)(\"showTextInput\", ctx.filterable)(\"subtitle\", ctx.subtitle);\n }\n },\n dependencies: [LocalizedMessagesDirective, NgIf, TemplateContextDirective, NgClass, EventsOutsideAngularDirective, IconWrapperComponent, NgTemplateOutlet, ResizeSensorComponent, ResponsiveRendererComponent, ReactiveFormsModule, i7.DefaultValueAccessor, i7.NgControlStatus, FilterInputDirective, FormsModule, i7.NgModel, SelectableDirective, ListComponent],\n encapsulation: 2\n });\n return DropDownListComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the content of the custom list item in the MultiSelect\n * ([see example](slug:templates_multiselect#toc-rendering-custom-item-content)).\n * The template context is set to the current component.\n * To get a reference to the current text that is typed by the\n * user, use the `let-customItem` directive.\n *\n * > The `CustomItemTemplate` directive can only be used with the MultiSelect component.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * New Item: {{customItem}}\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n *\n */\nlet CustomItemTemplateDirective = /*#__PURE__*/(() => {\n class CustomItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n CustomItemTemplateDirective.ɵfac = function CustomItemTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CustomItemTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n CustomItemTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CustomItemTemplateDirective,\n selectors: [[\"\", \"kendoMultiSelectCustomItemTemplate\", \"\"]],\n standalone: true\n });\n return CustomItemTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the selected tag value of the MultiSelect\n * ([see example]({% slug templates_multiselect %}#toc-tag-template)).\n * The template context is set to the current component.\n * To get a reference to the current data item, use the `let-dataItem` directive.\n *\n * > The `TagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItem}} option\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet TagTemplateDirective = /*#__PURE__*/(() => {\n class TagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n TagTemplateDirective.ɵfac = function TagTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TagTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n TagTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TagTemplateDirective,\n selectors: [[\"\", \"kendoMultiSelectTagTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeTagTemplate\", \"\"]],\n standalone: true\n });\n return TagTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the grouped tag values in the MultiSelect\n * ([see example]({% slug summarytagmode_multiselect %})).\n * The template context is set to the current component.\n * To get a reference to the current grouped\n * data items collection, use the `let-dataItems` directive.\n *\n * > The `GroupTagTemplate` directive can only be used with the MultiSelect and MultiSelectTree components.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * {{dataItems.length}} item(s) selected\n * \n * \n * `\n * })\n * class AppComponent {\n * public items: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet GroupTagTemplateDirective = /*#__PURE__*/(() => {\n class GroupTagTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupTagTemplateDirective.ɵfac = function GroupTagTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupTagTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n GroupTagTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupTagTemplateDirective,\n selectors: [[\"\", \"kendoMultiSelectGroupTagTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeGroupTagTemplate\", \"\"]],\n standalone: true\n });\n return GroupTagTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the `removeTag` event. The `removeTag` event fires when a tag is about\n * to the removed. If you cancel the event, the removal is prevented.\n */\nclass RemoveTagEvent extends PreventableEvent {\n /**\n * Constructs the event arguments for the `remove` event.\n * @param dataItem - The data item or an array of data items that will be removed.\n */\n constructor(dataItem) {\n super();\n this.dataItem = dataItem;\n }\n}\n\n/**\n * @hidden\n */\nconst normalizeCheckboxesSettings = settings => {\n if (isObject(settings)) {\n const defaultSettings = {\n enabled: true,\n checkOnClick: true\n };\n return Object.assign({}, defaultSettings, settings);\n }\n return {\n enabled: Boolean(settings),\n checkOnClick: true\n };\n};\n\n/**\n * @hidden\n */\nlet TagListComponent = /*#__PURE__*/(() => {\n class TagListComponent {\n constructor(renderer, hostElement) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.xCircleIcon = xCircleIcon;\n this.rounded = 'medium';\n this.fillMode = 'solid';\n /**\n * A collection with the disabled tags' indices.\n */\n this.disabledIndices = new Set();\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n this.taglistRole = 'listbox';\n this.multiselectable = true;\n this._size = 'medium';\n }\n set size(size) {\n this.renderer.removeClass(this.hostElement.nativeElement, getSizeClass('chip-list', this.size));\n if (size) {\n this.renderer.addClass(this.hostElement.nativeElement, getSizeClass('chip-list', size));\n }\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get hostId() {\n return this.id;\n }\n tagProp(tag, prop, index) {\n const propField = prop && this.getPropField(tag, prop, index);\n return getter(tag, propField);\n }\n isTagDisabled(tag, positionIndex) {\n if (this.isGroupTag(tag)) {\n /** The `positionIndex` is used to determine after how many single tags is the group tag displayed =>\n * => it is used to increment the indices inside the group tag so that we determine the actual position index\n * of each group tag item as they appear in the `value` (important to check against `disabledIndices`)\n * e.g. `disabledIndices = [0, 1]` && `tags = ['Small', ['Medium', 'Large']]` => without the incrementation with\n * `positionIndex`, the group tag would yield [0, 1] as indices, while it should yield [1, 2]\n */\n return tag.every((_tag, index) => this.disabledIndices.has(index + positionIndex));\n }\n return this.disabledIndices.has(positionIndex);\n }\n deleteTag(event, tag, index) {\n event.preventDefault();\n event.stopImmediatePropagation();\n if (!this.disabled && event.which === 1) {\n this.removeTag.emit({\n tag,\n index\n });\n }\n }\n itemId(tag, index) {\n if (tag) {\n //because of custom values\n return this.tagPrefix + \"-\" + index;\n }\n }\n isGroupTag(tag) {\n return tag instanceof Array;\n }\n tagAriaHidden(index) {\n return isPresent(this.focused) && this.focused !== index;\n }\n getPropField(tag, prop, index) {\n // Needed for MultiSelectTree value binding (Heterogeneous Data)\n const fieldsCount = prop.length - 1;\n if (typeof prop === 'string') {\n return prop;\n } else if (this.valueDepth) {\n const depth = this.valueDepth[index];\n return fieldsCount < depth ? prop[fieldsCount] : prop[depth];\n } else {\n return prop.find(item => item in tag);\n }\n }\n }\n TagListComponent.ɵfac = function TagListComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TagListComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n TagListComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TagListComponent,\n selectors: [[\"kendo-taglist\"]],\n hostVars: 7,\n hostBindings: function TagListComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.hostId)(\"role\", ctx.taglistRole)(\"aria-multiselectable\", ctx.multiselectable);\n i0.ɵɵclassProp(\"k-chip-list\", ctx.hostClasses)(\"k-selection-multiple\", ctx.hostClasses);\n }\n },\n inputs: {\n tags: \"tags\",\n textField: \"textField\",\n valueField: \"valueField\",\n valueDepth: \"valueDepth\",\n focused: \"focused\",\n template: \"template\",\n groupTemplate: \"groupTemplate\",\n disabled: \"disabled\",\n tagPrefix: \"tagPrefix\",\n id: \"id\",\n size: \"size\",\n rounded: \"rounded\",\n fillMode: \"fillMode\",\n disabledIndices: \"disabledIndices\"\n },\n outputs: {\n removeTag: \"removeTag\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c16,\n decls: 2,\n vars: 1,\n consts: [[\"groupTag\", \"\"], [\"singleTag\", \"\"], [\"class\", \"k-chip\", 3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-chip\", 3, \"ngClass\"], [1, \"k-chip-content\"], [4, \"ngIf\", \"ngIfThen\", \"ngIfElse\"], [1, \"k-chip-actions\"], [\"aria-label\", \"delete\", 1, \"k-chip-action\", \"k-chip-remove-action\"], [\"name\", \"x-circle\", 3, \"mousedown\", \"svgIcon\"], [1, \"k-chip-label\", \"k-text-ellipsis\"], [4, \"ngIf\"], [3, \"ngIf\"], [3, \"templateContext\"]],\n template: function TagListComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, TagListComponent_div_0_Template, 10, 22, \"div\", 2);\n i0.ɵɵprojection(1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.tags);\n }\n },\n dependencies: [NgFor, NgClass, NgIf, TemplateContextDirective, IconWrapperComponent],\n encapsulation: 2\n });\n return TagListComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst MULTISELECT_VALUE_ACCESSOR = {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent)\n};\nconst DEFAULT_SIZE$2 = 'medium';\nconst DEFAULT_ROUNDED$2 = 'medium';\nconst DEFAULT_FILL_MODE$2 = 'solid';\n/**\n * Represents the [Kendo UI MultiSelect component for Angular]({% slug overview_multiselect %}).\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public listItems: Array = [\"Item 1\", \"Item 2\", \"Item 3\", \"Item 4\"];\n * }\n * ```\n */\nlet MultiSelectComponent = /*#__PURE__*/(() => {\n class MultiSelectComponent {\n constructor(wrapper, localization, popupService, dataService, selectionService, navigationService, disabledItemsService, cdr, differs, renderer, _zone, injector, hostElement) {\n this.wrapper = wrapper;\n this.localization = localization;\n this.popupService = popupService;\n this.dataService = dataService;\n this.selectionService = selectionService;\n this.navigationService = navigationService;\n this.disabledItemsService = disabledItemsService;\n this.cdr = cdr;\n this.differs = differs;\n this.renderer = renderer;\n this._zone = _zone;\n this.injector = injector;\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.animationDuration = animationDuration;\n /**\n * @hidden\n */\n this.xIcon = xIcon;\n /**\n * @hidden\n */\n this.plusIcon = plusIcon;\n this.listBoxId = `k-${guid()}`;\n this.tagListId = `k-${guid()}`;\n this.tagPrefix = \"tag-\" + guid();\n this.optionPrefix = \"option-\" + guid();\n this.focusedTagIndex = undefined;\n /**\n * Shows or hides the current group sticky header when using grouped data.\n * By default the sticky header is displayed ([see example]({% slug grouping_autocomplete %}#toc-sticky-header)).\n */\n this.showStickyHeader = true;\n /**\n * @hidden\n */\n this.focusableId = `k-${guid()}`;\n /**\n * Determines whether to close the options list of the MultiSelect after the item selection is finished\n * ([see example]({% slug openstate_multiselect %}#toc-keeping-the-options-list-open-while-on-focus)).\n * @default true\n */\n this.autoClose = true;\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n this.tabindex = 0;\n /**\n * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.\n */\n this.adaptiveMode = 'none';\n /**\n * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet title uses the text provided for the label of the AutoComplete.\n */\n this.title = '';\n /**\n * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_multiselect#toc-managing-the-multiselect-disabled-state-in-reactive-forms).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Enables the [filtering]({% slug filtering_multiselect %}) functionality of the MultiSelect.\n */\n this.filterable = false;\n this._listHeight = 200;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to an empty array and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags\n * ([see examples]({% slug summarytagmode_multiselect %}#toc-rendering-of-tags)).\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = tags => tags || [];\n /**\n * Specifies whether the MultiSelect allows user-defined values that are not present in the dataset\n * ([more information and examples]({% slug custom_values_multiselect %})).\n * Defaults to `false`.\n *\n * The feature is not available when using adaptive mode.\n */\n this.allowCustom = false;\n /**\n * A user-defined callback function which returns normalized custom values.\n * Typically used when the data items are different from type `string`.\n *\n * @param { Any } value - The custom value that is defined by the user.\n * @returns { Any }\n *\n * @example\n * ```ts\n * import { map } from 'rxjs/operators';\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n *\n * class AppComponent {\n * public listItems: Array<{ text: string, value: number }> = [\n * { text: \"Small\", value: 1 },\n * { text: \"Medium\", value: 2 },\n * { text: \"Large\", value: 3 }\n * ];\n *\n * public onValueChange(value) {\n * console.log(\"valueChange : \", value);\n * }\n *\n * public valueNormalizer = (text$: Observable) => text$.pipe(map((text: string) => {\n * return {\n * value: Math.floor(Math.random() * (1000 - 100) + 1000), //generate unique valueField\n * text: text };\n * }));\n *\n * }\n * ```\n */\n this.valueNormalizer = text => text.pipe(map(userInput => {\n const comparer = item => typeof item === 'string' && userInput.toLowerCase() === item.toLowerCase();\n const matchingValue = this.value.find(comparer);\n if (matchingValue) {\n return matchingValue;\n }\n const matchingItem = this.dataService.find(comparer);\n return matchingItem ? matchingItem : userInput;\n }));\n /**\n * Fires each time the user types in the input field.\n * You can filter the source based on the passed filtration value.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires each time the value is changed—\n * when the component is blurred or the value is cleared through the **Clear** button\n * ([see example](slug:events_multiselect)).\n * When the value of the component is programmatically changed to `ngModel` or `formControl`\n * through its API or form binding, the `valueChange` event is not triggered because it\n * might cause a mix-up with the built-in `valueChange` mechanisms of the `ngModel` or `formControl` bindings.\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselect %}#toc-preventing-opening-and-closing)).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires each time the user focuses the MultiSelect.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelect gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the user focuses the `input` element.\n */\n this.inputFocus = new EventEmitter();\n /**\n * Fires each time the `input` element gets blurred.\n */\n this.inputBlur = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselecttree %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n this.hostClasses = true;\n /**\n * @hidden\n */\n this.windowSize = 'large';\n this.initialized = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this._valueHolder = [];\n this.onChangeCallback = _ => {};\n this.onTouchedCallback = _ => {};\n this._placeholder = '';\n this._open = false;\n this._value = [];\n this._popupSettings = {\n animate: true\n };\n this._checkboxes = {\n enabled: false\n };\n this._isFocused = false;\n this.selectedDataItems = [];\n this.customValueSubject = new Subject();\n this.subs = new Subscription();\n validatePackage(packageMetadata);\n this.popupMouseDownHandler = this.onMouseDown.bind(this);\n this.data = [];\n this.direction = this.localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n }\n /**\n * @hidden\n */\n get actionSheet() {\n return this.responsiveRendererComponent?.actionSheet;\n }\n /**\n * @hidden\n */\n get actionSheetSearchBar() {\n return this.responsiveRendererComponent?.actionSheetSearchBar;\n }\n /**\n * @hidden\n */\n get ariaControls() {\n return this.isOpen ? this.listBoxId : undefined;\n }\n /**\n * @hidden\n */\n get isControlRequired() {\n return isControlRequired(this.formControl);\n }\n /**\n * @hidden\n */\n get formControl() {\n const ngControl = this.injector.get(NgControl, null);\n return ngControl?.control || null;\n }\n /**\n * Focuses a specific item of the MultiSelect based on a provided index.\n * If there is a custom item it is positioned at index -1.\n * If null or invalid index is provided the focus will be removed.\n */\n focusItemAt(index) {\n const minIndex = this.allowCustom ? -1 : 0;\n const isInRange = minIndex <= 0 && index < this.data.length;\n if (isPresent(index) && isInRange && !this.disabledItemsService.isIndexDisabled(index)) {\n this.selectionService.focus(index);\n } else {\n this.selectionService.focus(null);\n }\n }\n /**\n * Focuses the MultiSelect.\n */\n focus() {\n if (!this.disabled) {\n this.searchbar.focus();\n }\n }\n /**\n * @hidden\n */\n handleInputFocus() {\n this.handleFocus();\n if (hasObservers(this.inputFocus)) {\n this._zone.run(() => {\n this.inputFocus.emit();\n });\n }\n }\n /**\n * @hidden\n */\n onAdaptiveTextBoxChange(text) {\n if (this.filterable) {\n this.filterChange.emit(text);\n return;\n }\n this.searchTextAndFocus(text);\n }\n /**\n * Blurs the MultiSelect.\n */\n blur() {\n if (!this.disabled) {\n this.searchbar.blur();\n }\n }\n /**\n * @hidden\n */\n handleFocus() {\n this._zone.run(() => {\n if (!this.isFocused && hasObservers(this.onFocus)) {\n this.onFocus.emit();\n }\n this.isFocused = true;\n });\n }\n /**\n * @hidden\n */\n handleBlur() {\n if (!this.isActionSheetExpanded) {\n if (!this.isFocused) {\n return;\n }\n this.isFocused = false;\n if (hasObservers(this.onBlur) || hasObservers(this.filterChange) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement)) {\n this._zone.run(() => {\n this.closePopup();\n if (!(this.isOpen && this.allowCustom)) {\n this.clearFilter();\n }\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n } else {\n if (!this.allowCustom) {\n this.clearFilter();\n }\n this.closePopup();\n }\n }\n }\n /**\n * @hidden\n */\n handleInputBlur() {\n if (!this.isActionSheetExpanded) {\n if (!this.isFocused) {\n return;\n }\n if (hasObservers(this.inputBlur) || hasObservers(this.filterChange) || hasObservers(this.close) || isUntouched(this.wrapper.nativeElement) || this.formControl?.updateOn === 'blur') {\n this._zone.run(() => {\n this.closePopup();\n if (!(this.isOpen && this.allowCustom)) {\n this.clearFilter();\n }\n this.inputBlur.emit();\n this.onTouchedCallback();\n });\n } else {\n if (!this.allowCustom) {\n this.clearFilter();\n }\n this.closePopup();\n }\n }\n }\n /**\n * @hidden\n */\n onMouseDown(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {\n if (this.isOpen) {\n this.togglePopup(false);\n }\n this.windowSize = windowSize();\n this.cdr.detectChanges();\n }\n if (this.isOpen && !this.isActionSheetExpanded) {\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n get appendTo() {\n const {\n appendTo\n } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * Sets the data of the MultiSelect.\n *\n * > The data has to be provided in an array-like list of items.\n */\n set data(data) {\n this.dataService.data = data || [];\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get data() {\n const virtual = this.virtual;\n if (virtual) {\n const start = virtual.skip || 0;\n const end = start + virtual.pageSize;\n //Use length instead of itemsCount because of grouping\n virtual.total = this.dataService.data.length;\n return this.dataService.data.slice(start, end);\n }\n return this.dataService.data;\n }\n /**\n * Sets the value of the MultiSelect. It can be either of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n * > All selected values which are not present in the source are ignored.\n */\n set value(values) {\n this._value = values ? values : [];\n if (!this.differ && this.value) {\n this.differ = this.differs.find(this.value).create();\n }\n this.valueChangeDetected = true;\n if (this.initialized) {\n this.setState(this.value);\n }\n }\n get value() {\n return this._value;\n }\n /**\n * @hidden\n */\n set tabIndex(tabIndex) {\n this.tabindex = tabIndex;\n }\n get tabIndex() {\n return this.tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$2;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * The hint which is displayed when the component is empty.\n * When the values are selected, it disappears.\n */\n set placeholder(text) {\n this._placeholder = text || '';\n }\n get placeholder() {\n return this.selectedDataItems.length ? '' : this._placeholder;\n }\n /**\n * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.\n */\n set subtitle(_subtitle) {\n this._subtitle = _subtitle;\n }\n get subtitle() {\n return this._subtitle || this.placeholder;\n }\n /**\n * @hidden\n */\n get isAdaptiveModeEnabled() {\n return this.adaptiveMode === 'auto';\n }\n /**\n * Defines a Boolean function that is executed for each data item in the component\n * ([see examples]({% slug disableditems_multiselect %})). Determines whether the item will be disabled.\n */\n set itemDisabled(fn) {\n if (typeof fn !== 'function') {\n throw new Error(`itemDisabled must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.disabledItemsService.itemDisabled = fn;\n }\n /**\n * Specifies whether checkboxes will be rendered before each item in the popup list.\n */\n set checkboxes(settings) {\n this._checkboxes = normalizeCheckboxesSettings(settings);\n }\n get checkboxes() {\n return this._checkboxes;\n }\n /**\n * Enables the [virtualization]({% slug virtualization_multiselect %}) functionality.\n */\n set virtual(settings) {\n this._virtualSettings = normalizeVirtualizationSettings(settings);\n }\n get virtual() {\n return this._virtualSettings;\n }\n /**\n * Configures the popup of the MultiSelect.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped. The `auto` mode is not supported when virtual scrolling is enabled.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({\n animate: true\n }, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Sets the height of the options list in the popup. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n *\n * > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.\n */\n set listHeight(_listHeight) {\n this._listHeight = _listHeight;\n }\n get listHeight() {\n if (this.isAdaptive) {\n return;\n }\n return this._listHeight;\n }\n /**\n * Specifies the type of the selected value.\n * If set to `true`, the selected value has to be of the primitive type\n * ([more information and example]({% slug valuebinding_multiselect %}#toc-primitive-values-from-object-fields)).\n */\n set valuePrimitive(isPrimitive) {\n this._valuePrimitive = isPrimitive;\n }\n get valuePrimitive() {\n if (!isPresent(this._valuePrimitive)) {\n return !isPresent(this.valueField);\n }\n return this._valuePrimitive;\n }\n get dir() {\n return this.direction;\n }\n get disabledClass() {\n return this.disabled;\n }\n get isLoading() {\n return this.loading;\n }\n /**\n * @hidden\n */\n get isActionSheetExpanded() {\n return this.actionSheet?.expanded;\n }\n /**\n * @hidden\n */\n get isAdaptive() {\n return this.isAdaptiveModeEnabled && this.windowSize !== 'large';\n }\n get listContainerClasses() {\n const containerClasses = ['k-list-container', 'k-multiselect-popup'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n get customItemSizeClass() {\n return `${this.size ? getSizeClass('list', this.size) : ''}`;\n }\n get width() {\n let wrapperOffsetWidth = 0;\n if (isDocumentAvailable()) {\n wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n }\n const width = this.popupSettings.width || wrapperOffsetWidth;\n const minWidth = isNaN(wrapperOffsetWidth) ? wrapperOffsetWidth : `${wrapperOffsetWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return {\n min: minWidth,\n max: maxWidth\n };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get activeDescendant() {\n const focusedTagIndex = this.focusedTagIndex;\n const focusedListIndex = this.selectionService.focused;\n let prefix;\n let focusedIndex;\n if (isPresent(focusedTagIndex) && !this.isOpen) {\n focusedIndex = focusedTagIndex;\n prefix = this.tagPrefix;\n } else if (isPresent(focusedListIndex) && focusedListIndex !== -1 && this.isOpen) {\n focusedIndex = focusedListIndex;\n prefix = this.optionPrefix;\n } else {\n return null;\n }\n return prefix + \"-\" + focusedIndex;\n }\n get clearButtonVisiblity() {\n if (touchEnabled) {\n return 'visible';\n }\n }\n /**\n * @hidden\n */\n applyValue() {\n this.value = this._valueHolder;\n this._valueHolder = [];\n this.emitValueChange();\n this.togglePopup(false);\n }\n /**\n * @hidden\n */\n cancelValue() {\n this._valueHolder = [];\n this.togglePopup(false);\n }\n /**\n * @hidden\n */\n verifySettings() {\n if (!isDevMode() || this.value.length === 0) {\n return;\n }\n if (!isArray(this.value)) {\n throw new Error(MultiselectMessages.array);\n }\n if (this.valuePrimitive === true && isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.primitive);\n }\n if (this.valuePrimitive === false && !isObjectArray(this.value)) {\n throw new Error(MultiselectMessages.object);\n }\n const valueOrText = !isPresent(this.valueField) !== !isPresent(this.textField);\n if (valueOrText) {\n throw new Error(MultiselectMessages.textAndValue);\n }\n }\n /**\n * @hidden\n */\n change(event) {\n if (event.isMultipleSelection) {\n // Existing items.\n if (isPresent(event.added) && event.added.length > 0) {\n event.added.forEach(itemIndex => {\n const dataItem = this.dataService.itemAt(itemIndex);\n const newItem = this.valuePrimitive && isPresent(dataItem) && isPresent(getter(dataItem, this.valueField)) ? getter(dataItem, this.valueField) : dataItem;\n if (newItem) {\n if (!this.isAdaptive || !this.isActionSheetExpanded) {\n this.value = [...this.value, newItem];\n } else {\n this._valueHolder = [...this._valueHolder, newItem];\n }\n }\n });\n }\n if (isPresent(event.removed) && event.removed.length > 0) {\n event.removed.forEach(itemIndex => {\n const dataItem = this.dataService.itemAt(itemIndex);\n const filter = item => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n if (!this.isAdaptive || !this.isActionSheetExpanded) {\n this.value = this.value.filter(filter);\n } else {\n this._valueHolder = this._valueHolder.filter(filter);\n }\n });\n this.cdr.detectChanges();\n }\n } else {\n const isCustomItem = (isPresent(event.added) || isPresent(event.removed)) && (event.added === -1 || event.removed === -1);\n if (isCustomItem) {\n this.addCustomValue(this.text);\n return; // The change is emited asynchronosly.\n }\n // Existing items.\n if (isPresent(event.added)) {\n const dataItem = this.dataService.itemAt(event.added);\n const newItem = this.valuePrimitive && isPresent(dataItem) && isPresent(getter(dataItem, this.valueField)) ? getter(dataItem, this.valueField) : dataItem;\n if (!this.isAdaptive || !this.isActionSheetExpanded) {\n this.value = [...this.value, newItem];\n } else {\n this._valueHolder = [...this._valueHolder, newItem];\n }\n }\n if (isPresent(event.removed)) {\n const dataItem = this.dataService.itemAt(event.removed);\n const filter = item => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n if (!this.isAdaptive || !this.isActionSheetExpanded) {\n this.value = this.value.filter(filter);\n } else {\n this._valueHolder = this._valueHolder.filter(filter);\n }\n this.selectionService.focused = event.removed;\n this.cdr.detectChanges();\n }\n }\n if (!this.isAdaptive || !this.isActionSheetExpanded) {\n this.emitValueChange();\n }\n }\n /**\n * @hidden\n */\n setState(value) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const selection = selectedIndices(this.value, data, this.valueField);\n this.selectionService.resetSelection(selection);\n if (this.disabledItemsService.isIndexDisabled(this.selectionService.focused)) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n }\n if (this.isOpen && this.selectionService.focused === undefined) {\n if (this.dataService.itemsCount > 0) {\n this.selectionService.focused = this.firstFocusableIndex(0);\n } else if (this.allowCustom) {\n this.selectionService.focused = -1;\n }\n }\n if (this.valuePrimitive && !this.valueField) {\n this.selectedDataItems = value.slice();\n }\n if (isObjectArray(value) || this.valuePrimitive && this.valueField) {\n this.selectedDataItems = resolveAllValues(value, data, this.valueField);\n }\n if (this.selectedDataItems.length < value.length) {\n this.selectedDataItems = value.map(current => {\n const dataItem = this.selectedDataItems.find(item => getter(item, this.valueField) === getter(current, this.valueField));\n return isPresent(dataItem) ? dataItem : this.resolveDataItemFromTags(current);\n }).filter(dataItem => isPresent(dataItem));\n }\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.disabledIndices = this.disabledItemsMapper();\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilter(text) {\n this.text = text;\n if (text && !this.isOpen) {\n this.openPopup();\n }\n if (this.filterable) {\n this.filterChange.emit(text);\n } else {\n this.searchTextAndFocus(text);\n }\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n pageChange(event) {\n const virtual = this.virtual;\n virtual.skip = event.skip;\n }\n /**\n * @hidden\n */\n clearFilter() {\n if (this.filterable && this.text) {\n this.filterChange.emit(\"\");\n }\n this.text = \"\";\n /* Clearing the value from the input as the setInputSize calculation will be incorrect otherwise.\n Calling cdr.detectChanges to clear the input value as a result of property binding\n causes JAWS to read outdated tag values in IE upon tag selection for some reason. */\n this.searchbar.input.nativeElement.value = \"\";\n this.searchbar.setInputSize();\n }\n /**\n * @hidden\n */\n handleNavigate(event) {\n const navigateInput = this.text && event.keyCode !== Keys.ArrowDown && event.keyCode !== Keys.ArrowUp;\n const selectValue = this.text && event.keyCode === Keys.Enter || event.keyCode === Keys.Escape;\n const deleteTag = !this.text && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (event.keyCode === Keys.Backspace && this.isActionSheetExpanded) {\n return;\n }\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || navigateInput && !selectValue) {\n return;\n }\n const eventData = event;\n const focused = isNaN(this.selectionService.focused) ? -1 : this.selectionService.focused;\n const action = this.navigationService.process({\n current: focused,\n max: this.dataService.itemsCount - 1,\n min: this.allowCustom && this.text ? -1 : 0,\n open: this.isOpen,\n originalEvent: eventData\n });\n if (action !== NavigationAction.Undefined && (action === NavigationAction.Enter && this.isOpen || action !== NavigationAction.Enter) && !this.isActionSheetExpanded && action === NavigationAction.Tab) {\n event.preventDefault();\n }\n }\n /**\n * @hidden\n */\n handleRemoveTag({\n tag\n }) {\n const eventArgs = new RemoveTagEvent(tag);\n if (this.disabled || this.readonly) {\n return;\n }\n this.focus();\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n if (tag instanceof Array) {\n this.removeGroupTag(tag);\n } else {\n this.removeSingleTag(tag);\n }\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event?.stopImmediatePropagation();\n event?.preventDefault();\n this.focus();\n this.clearFilter();\n this.selectionService.lastClickedIndex = null;\n const selected = this.selectionService.selected;\n this.value = this.value.filter((_item, index) => this.disabledItemsService.isIndexDisabled(selected[index]));\n this.emitValueChange();\n }\n /**\n * @hidden\n */\n addCustomValue(text) {\n this.customValueSubject.next(text);\n }\n ngAfterContentChecked() {\n this.verifySettings();\n }\n ngDoCheck() {\n const valueChanges = this.differ && this.differ.diff(this.value);\n if (valueChanges && !this.valueChangeDetected) {\n this.setState(this.value);\n }\n this.valueChangeDetected = false;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.wrapper.nativeElement, \"tabindex\");\n this.createCustomValueStream();\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setState(this.value);\n this.setComponentClasses();\n this.initialized = true;\n }\n ngOnChanges(changes) {\n const virtual = this.virtual;\n const requestInitialData = virtual && changes.data && changes.data.isFirstChange();\n if (requestInitialData) {\n this.pageChange({\n skip: 0,\n take: virtual.pageSize\n });\n }\n if (isChanged('valueNormalizer', changes)) {\n this.createCustomValueStream();\n }\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes)) {\n this.setState(this.value);\n }\n }\n ngAfterViewInit() {\n this.windowSize = windowSize();\n this.cdr.detectChanges();\n this.searchbar.setInputSize();\n this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'mousedown', this.handleMousedown.bind(this)));\n this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));\n if (this.actionSheet && isDocumentAvailable()) {\n // The following syntax is used as it does not violate CSP compliance\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n this._zone.onStable.pipe(take(1)).subscribe(() => {\n const ariaLabel = this.searchbar.input.nativeElement.getAttribute('aria-labelledby') || this.searchbar.input.nativeElement.getAttribute('data-kendo-label-id');\n if (ariaLabel) {\n this.renderer.setAttribute(this.tagList.hostElement.nativeElement, 'aria-labelledby', ariaLabel);\n }\n });\n }\n ngOnDestroy() {\n this._toggle(false);\n this.unsubscribeEvents();\n }\n /**\n * Toggles the visibility of the popup or actionSheet\n * ([see example]({% slug openstate_multiselect %}#toc-setting-the-initially-opened-component)).\n * If you use the `toggle` method to open or close the popup or actionSheet, the respective `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required for opening the popup on load.\n // Otherwise, the \"Expression has changed...\" type error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !this._open;\n this._toggle(shouldOpen);\n this.cdr.markForCheck();\n });\n }\n /**\n * Returns the current open state. Returns `true` if the popup or actionSheet is open.\n */\n get isOpen() {\n return isTruthy(this._open || this.isActionSheetExpanded);\n }\n /**\n * Resets the value of the MultiSelect.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `selectionChange` and `valueChange` events will not be fired.\n */\n reset() {\n this.text = \"\";\n this.value = [];\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n // NG MODEL BINDINGS\n /**\n * @hidden\n */\n writeValue(value) {\n this.value = value || [];\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.cdr.markForCheck();\n this.disabled = isDisabled;\n }\n /**\n * @hidden\n */\n onTagMapperChange() {\n this.tags = this.tagMapper(this.selectedDataItems.slice(0));\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleClick() {\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.togglePopup(true);\n }\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n subscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n const isOpen = () => this.isOpen;\n const isClosed = () => !this.isOpen;\n const isTagFocused = () => !this.isOpen && this.focusedTagIndex !== undefined;\n [this.selectionService.onChange.subscribe(this.handleItemChange.bind(this)), this.navigationService.esc.subscribe(this.closePopup.bind(this)), this.navigationService.enter.pipe(filter(isOpen)).subscribe(this.handleEnter.bind(this)), this.navigationService.open.subscribe(this.openPopup.bind(this)), this.navigationService.close.subscribe(this.handleClose.bind(this)), this.navigationService.up.pipe(filter(isOpen)).subscribe(event => this.handleUp(event.index)), this.navigationService.home.pipe(filter(() => isClosed)).subscribe(this.handleHome.bind(this)), this.navigationService.end.pipe(filter(() => isClosed)).subscribe(this.handleEnd.bind(this)), this.navigationService.backspace.pipe(filter(isTagFocused)).subscribe(this.handleBackspace.bind(this)), this.navigationService.delete.pipe(filter(isTagFocused)).subscribe(this.handleDelete.bind(this)), this.navigationService.left.subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)), this.navigationService.right.subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)), this.navigationService.down.subscribe(event => this.handleDownKey(event.index)), this.navigationService.selectprevious.pipe(filter(isOpen)).subscribe(event => this.handleSelectUpDown(event)), this.navigationService.selectnext.pipe(filter(isOpen)).subscribe(event => this.handleSelectUpDown(event)), this.navigationService.selectalltobeginning.pipe(filter(isOpen)).subscribe(() => this.handleSelectAllToBeginning()), this.navigationService.selectalltoend.pipe(filter(isOpen)).subscribe(() => this.handleSelectAllToEnd()), merge(this.navigationService.pagedown, this.navigationService.pageup).subscribe(event => {\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n this.optionsList.scrollWithOnePage(NavigationAction[event.originalEvent.code]);\n }\n })].forEach(s => this.subs.add(s));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() =>\n // Roll up MultiSelect on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', e => {\n const target = e.target;\n if ((this.isFocused || this.isOpen) && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n this.blur();\n if (this.isOpen) {\n this.togglePopup(false);\n }\n });\n }\n }));\n }\n unsubscribeEvents() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subs.unsubscribe();\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n removeGroupTag(dataItems) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const dataItemValues = new Set(dataItems.map(item => getter(item, this.valueField)));\n this.value = this.value.filter(value => {\n const index = selectedIndices([value], data, this.valueField)[0];\n const isDataItemDisabled = this.disabledItemsService.isIndexDisabled(index);\n return !dataItemValues.has(getter(value, this.valueField)) || isDataItemDisabled;\n });\n this.emitValueChange();\n }\n removeSingleTag(dataItem) {\n let data = this.dataService.data;\n if (this.dataService.grouped) {\n data = data.filter(item => !item.header).map(item => item.value);\n }\n const index = selectedIndices([dataItem], data, this.valueField)[0];\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return;\n }\n if (isNumber(index)) {\n this.selectionService.deselect(index);\n this.selectionService.focused = index;\n this.togglePopup(false);\n } else {\n // the deleted item is not present in the source\n const filter = item => getter(item, this.valueField) !== getter(dataItem, this.valueField);\n this.value = this.value.filter(filter);\n this.emitValueChange();\n }\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n const {\n selected\n } = this.selectionService;\n return new Set(this.selectedDataItems.reduce((indices, _item, index) => {\n if (this.disabledItemsService.isIndexDisabled(selected[index])) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n createCustomValueStream() {\n if (this.customValueSubscription) {\n this.customValueSubscription.unsubscribe();\n }\n this.customValueSubscription = this.customValueSubject.pipe(tap(() => {\n this.loading = true;\n this.disabled = true;\n this.cdr.detectChanges();\n }), this.valueNormalizer, catchError(() => {\n this.loading = false;\n this.disabled = false;\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n this.createCustomValueStream();\n return of(null);\n })).subscribe(normalizedValue => {\n this.loading = false;\n this.disabled = false;\n if (isPresent(normalizedValue)) {\n // if valueNormalizer returns `null` or `undefined` custom value is discarded\n const newValue = this.valuePrimitive ? getter(normalizedValue, this.valueField) : normalizedValue;\n const itemIndex = this.dataService.indexOf(newValue);\n const customItem = itemIndex === -1;\n if (this.value.indexOf(newValue) === -1) {\n this.tags = this.tagMapper([...this.selectedDataItems, normalizedValue]);\n if (!customItem) {\n this.selectionService.add(itemIndex);\n } else {\n this.value = [...this.value, newValue];\n }\n } else {\n if (!customItem && this.selectionService.isSelected(itemIndex)) {\n this.selectionService.deselect(itemIndex);\n this.selectionService.focused = itemIndex;\n } else {\n this.value = this.value.filter(item => getter(item, this.valueField) !== newValue);\n }\n }\n this.emitValueChange();\n }\n if (this.autoClose) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n this.nextTick(() => {\n this.searchbar.focus();\n });\n });\n }\n handleItemChange(event) {\n this.change(event);\n if (this.autoClose && !event.preventClosingPopup && !this.isActionSheetExpanded) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleMousedown(event) {\n if (event.target.closest('.k-input-prefix') || event.target.closest('.k-input-suffix')) {\n return;\n }\n if (!this.isActionSheetExpanded) {\n const inputElement = this.searchbar.input.nativeElement;\n if (event.button === 0) {\n if (this.isFocused && this.isOpen && event.target === inputElement) {\n return;\n }\n if (!touchEnabled || touchEnabled && event.target.tagName !== 'SPAN') {\n this.searchbar.focus();\n }\n // The check is needed otherwise when appended to the component, the popup reopens on click\n // https://github.com/telerik/kendo-angular/issues/3738\n if (this.popupRef && this.popupRef.popupElement.contains(event.target)) {\n return;\n }\n event.preventDefault();\n this.togglePopup(!this.isOpen);\n }\n }\n }\n handleKeydown(event) {\n if (this.isFocused && this.isOpen && (event.ctrlKey || event.metaKey) && event.keyCode === Keys.KeyA) {\n event.preventDefault();\n this.handleSelectAll();\n }\n }\n handleEnter(event) {\n const service = this.selectionService;\n const focusedIndex = this.selectionService.focused;\n this.selectionService.lastClickedIndex = focusedIndex;\n if (this.isOpen) {\n event.originalEvent.preventDefault();\n }\n if (focusedIndex === -1) {\n if (this.allowCustom && this.text) {\n this.addCustomValue(this.text);\n }\n return; // Clear filter & close are done at customValueSubscription due to race conditions.\n }\n if (service.isSelected(focusedIndex)) {\n service.deselect(focusedIndex);\n service.focused = focusedIndex;\n } else {\n service.add(focusedIndex);\n }\n if (this.autoClose && !this.isActionSheetExpanded) {\n this.togglePopup(false);\n }\n if (this.autoClose || !this.filterable) {\n this.clearFilter();\n }\n }\n handleClose() {\n this.closePopup();\n this.searchbar.focus();\n }\n handleEnd() {\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome() {\n this.focusedTagIndex = 0;\n }\n sortSelectionAscending() {\n return this.selectionService.selected.sort((a, b) => a - b);\n }\n handleSelectAll() {\n const selectedItemsCount = this.selectionService.selected.length;\n const dataItemsCount = this.dataService.data.length;\n const dataItemsWithoutHeadersCount = this.dataService.data.filter(i => !i.header).length;\n if (!this.dataService.grouped && selectedItemsCount === dataItemsCount || this.dataService.grouped && selectedItemsCount === dataItemsWithoutHeadersCount) {\n this.clearAll();\n } else {\n this.selectionService.selectFromTo(0, dataItemsCount - 1);\n this.selectionService.emitMultipleAddedRemoved();\n }\n }\n handleSelectAllToBeginning() {\n const selectedItemsCount = this.selectionService.selected.length;\n const dataItemsCount = this.dataService.data.length;\n const focusedItem = this.selectionService.focused;\n const largestIndex = this.sortSelectionAscending()[selectedItemsCount - 1];\n if (selectedItemsCount !== dataItemsCount) {\n this.selectionService.unselectFromTo(largestIndex, focusedItem + 1);\n this.selectionService.selectFromTo(0, focusedItem);\n }\n this.nextTick(() => this.selectionService.focus(0));\n this.selectionService.emitMultipleAddedRemoved();\n }\n handleSelectAllToEnd() {\n const selectedItemsCount = this.selectionService.selected.length;\n const dataItemsCount = this.dataService.data.length;\n const focusedItem = this.selectionService.focused;\n if (selectedItemsCount !== dataItemsCount) {\n this.selectionService.unselectFromTo(focusedItem - 1, 0);\n this.selectionService.selectFromTo(focusedItem, dataItemsCount - 1);\n }\n if (this.dataService.grouped) {\n const lastItemIndex = this.dataService.groupIndices[this.dataService.groupIndices.length - 1] - 1;\n this.nextTick(() => this.selectionService.focus(lastItemIndex));\n } else {\n this.nextTick(() => this.selectionService.focus(dataItemsCount - 1));\n }\n this.selectionService.emitMultipleAddedRemoved();\n }\n handleSelectUpDown(event) {\n const focusedIndex = this.selectionService.focused;\n if (!isPresent(focusedIndex)) {\n return;\n }\n let indexToSelect;\n if (event.originalEvent.key === 'ArrowUp') {\n indexToSelect = focusedIndex > 0 ? focusedIndex - 1 : focusedIndex;\n } else {\n indexToSelect = focusedIndex < this.dataService.data.length - 1 ? focusedIndex + 1 : focusedIndex;\n }\n if (!isPresent(this.selectionService.lastClickedIndex)) {\n this.selectionService.lastClickedIndex = focusedIndex;\n }\n this.selectRangeFromTo(indexToSelect);\n }\n /**\n * Selects all items between the focused item and the last clicked item (index). Also removes all other selected items.\n */\n selectRangeFromTo(indexToSelect) {\n const lastClickedIndex = this.selectionService.lastClickedIndex;\n if (lastClickedIndex > indexToSelect) {\n this.selectionService.unselectNotNeededIndices(indexToSelect, lastClickedIndex, this.dataService.data.length);\n this.selectionService.selectFromTo(indexToSelect, this.selectionService.lastClickedIndex);\n this.selectionService.emitMultipleAddedRemoved();\n } else {\n this.selectionService.unselectNotNeededIndices(lastClickedIndex, indexToSelect, this.dataService.data.length);\n this.selectionService.selectFromTo(lastClickedIndex, indexToSelect);\n this.selectionService.emitMultipleAddedRemoved();\n }\n this.nextTick(() => this.selectionService.focus(indexToSelect));\n }\n handleUp(index) {\n this.selectionService.focused = index;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n } else {\n this.handleRemoveTag({\n tag: this.tags[this.tags.length - 1]\n });\n this.searchbar.focus();\n }\n }\n handleDelete() {\n this.handleRemoveTag({\n tag: this.tags[this.focusedTagIndex]\n });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n handleLeftKey() {\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n } else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleDownKey(index) {\n if (this.isOpen) {\n this.selectionService.focused = index || this.firstFocusableIndex(0);\n } else {\n this.openPopup();\n }\n }\n handleRightKey() {\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n } else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n }\n }\n findIndex(text, startsFrom = 0) {\n let itemText;\n text = text.toLowerCase();\n const index = this.dataService.findIndex(item => {\n if (this.dataService.grouped) {\n itemText = getter(item.value, this.textField);\n } else {\n itemText = getter(item, this.textField);\n }\n itemText = !isPresent(itemText) ? \"\" : itemText.toString().toLowerCase();\n return text && itemText.startsWith(text);\n }, startsFrom);\n if (this.disabledItemsService.isIndexDisabled(index)) {\n return index + 1 > this.dataService.itemsCount ? -1 : this.findIndex(text, index + 1);\n } else {\n return index;\n }\n }\n searchTextAndFocus(text) {\n const index = this.findIndex(text);\n this.selectionService.focused = index;\n }\n closePopup() {\n this.togglePopup(false);\n this.focusedTagIndex = undefined;\n }\n openPopup() {\n this.togglePopup(true);\n this.focusedTagIndex = undefined;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const isDefaultPrevented = this.triggerPopupEvents(open);\n if (!isDefaultPrevented) {\n this._toggle(open);\n }\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n } else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n _toggle(open) {\n this._open = open;\n this.destroyPopup();\n if (this.isActionSheetExpanded) {\n this.closeActionSheet();\n this.focus();\n }\n if (this._open) {\n this.createPopup();\n }\n }\n destroyPopup() {\n if (this.popupRef) {\n this.popupRef.popupElement.removeEventListener('mousedown', this.popupMouseDownHandler);\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n createPopup() {\n if (this.virtual) {\n this.virtual.skip = 0;\n }\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.openActionSheet();\n return;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = {\n horizontal: horizontalAlign,\n vertical: \"bottom\"\n };\n const popupPosition = {\n horizontal: horizontalAlign,\n vertical: \"top\"\n };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n anchorAlign: anchorPosition,\n animate: this.popupSettings.animate,\n appendTo: this.appendTo,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n popupClass: this.listContainerClasses,\n positionMode: 'absolute'\n });\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n if (!this.appendTo) {\n this.renderer.setAttribute(popupWrapper, 'role', 'region');\n this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));\n }\n popupWrapper.addEventListener('mousedown', this.popupMouseDownHandler);\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n popupWrapper.setAttribute(\"dir\", this.direction);\n const listBox = popupWrapper.querySelector('ul.k-list-ul');\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n this.opened.emit();\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.togglePopup(false);\n });\n }\n emitValueChange() {\n this.onChangeCallback(this.value);\n this.valueChange.emit(this.value);\n }\n resolveDataItemFromTags(value) {\n if (!(this.tags && this.tags.length && isPresent(value))) {\n return undefined;\n }\n // Flattening the tags array in case of a summary tag occurrence.\n const tags = this.tags.reduce((acc, tag) => {\n const items = isArray(tag) ? tag : [tag];\n acc.push(...items);\n return acc;\n }, []);\n return tags.find(tag => getter(tag, this.valueField) === getter(value, this.valueField));\n }\n firstFocusableIndex(index) {\n const maxIndex = this.dataService.itemsCount;\n if (this.disabledItemsService.isIndexDisabled(index)) {\n const nextIndex = index + 1;\n return nextIndex < maxIndex ? this.firstFocusableIndex(nextIndex) : undefined;\n } else {\n return index;\n }\n }\n nextTick(f) {\n this._zone.runOutsideAngular(() => {\n // Use `setTimeout` instead of a resolved promise\n // because the latter does not wait long enough.\n setTimeout(() => this._zone.run(f));\n });\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n closeActionSheet() {\n this.actionSheet.toggle(false);\n this.actionSheetSearchBar.value = '';\n this.filterable && this.filterChange.emit('');\n this.closed.emit();\n }\n openActionSheet() {\n this.windowSize = windowSize();\n this.actionSheet.toggle(true);\n // Stores the current value state until the user either accepts or cancels it\n this._valueHolder = [...this.value];\n this.cdr.detectChanges();\n setListBoxAriaLabelledBy(this.optionsList, this.searchbar.input, this.renderer);\n this.title = setActionSheetTitle(this.searchbar.input, this.title);\n updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);\n this.cdr.detectChanges();\n this.opened.emit();\n this.optionsList.scrollToItem(this.selectionService.focused);\n this.selectionService.focus(this.selectionService.focused);\n this.actionSheetSearchBar.focus();\n }\n }\n MultiSelectComponent.ɵfac = function MultiSelectComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiSelectComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i2.PopupService), i0.ɵɵdirectiveInject(DataService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(DisabledItemsService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n MultiSelectComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MultiSelectComponent,\n selectors: [[\"kendo-multiselect\"]],\n contentQueries: function MultiSelectComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ItemTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, CustomItemTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FixedGroupTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, TagTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupTagTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, SuffixTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, PrefixTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customItemTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fixedGroupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTagTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.suffixTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.prefixTemplate = _t.first);\n }\n },\n viewQuery: function MultiSelectComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ResponsiveRendererComponent, 5);\n i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);\n i0.ɵɵviewQuery(SearchBarComponent, 7);\n i0.ɵɵviewQuery(TagListComponent, 7);\n i0.ɵɵviewQuery(_c10, 7);\n i0.ɵɵviewQuery(_c11, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.responsiveRendererComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchbar = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tagList = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionsList = _t.first);\n }\n },\n hostVars: 11,\n hostBindings: function MultiSelectComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-readonly\", ctx.readonly)(\"k-multiselect\", ctx.hostClasses)(\"k-input\", ctx.hostClasses)(\"k-disabled\", ctx.disabledClass)(\"k-loading\", ctx.isLoading);\n }\n },\n inputs: {\n showStickyHeader: \"showStickyHeader\",\n focusableId: \"focusableId\",\n autoClose: \"autoClose\",\n loading: \"loading\",\n data: \"data\",\n value: \"value\",\n valueField: \"valueField\",\n textField: \"textField\",\n tabindex: \"tabindex\",\n tabIndex: \"tabIndex\",\n size: \"size\",\n rounded: \"rounded\",\n fillMode: \"fillMode\",\n placeholder: \"placeholder\",\n adaptiveMode: \"adaptiveMode\",\n title: \"title\",\n subtitle: \"subtitle\",\n disabled: \"disabled\",\n itemDisabled: \"itemDisabled\",\n checkboxes: \"checkboxes\",\n readonly: \"readonly\",\n filterable: \"filterable\",\n virtual: \"virtual\",\n popupSettings: \"popupSettings\",\n listHeight: \"listHeight\",\n valuePrimitive: \"valuePrimitive\",\n clearButton: \"clearButton\",\n tagMapper: \"tagMapper\",\n allowCustom: \"allowCustom\",\n valueNormalizer: \"valueNormalizer\",\n inputAttributes: \"inputAttributes\"\n },\n outputs: {\n filterChange: \"filterChange\",\n valueChange: \"valueChange\",\n open: \"open\",\n opened: \"opened\",\n close: \"close\",\n closed: \"closed\",\n onFocus: \"focus\",\n onBlur: \"blur\",\n inputFocus: \"inputFocus\",\n inputBlur: \"inputBlur\",\n removeTag: \"removeTag\"\n },\n exportAs: [\"kendoMultiSelect\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([MULTISELECT_VALUE_ACCESSOR, DataService, SelectionService, NavigationService, DisabledItemsService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselect'\n }, {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiSelectComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectComponent)\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 19,\n vars: 43,\n consts: () => {\n let i18n_11;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multiselect.noDataText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_11 = goog.getMsg(\"NO DATA FOUND\");\n i18n_11 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_11;\n } else {\n i18n_11 = $localize`:kendo.multiselect.noDataText|The text displayed in the popup when there are no items:NO DATA FOUND`;\n }\n let i18n_12;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.multiselect.clearTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_12 = goog.getMsg(\"clear\");\n i18n_12 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_12;\n } else {\n i18n_12 = $localize`:kendo.multiselect.clearTitle|The title of the clear button:clear`;\n }\n let i18n_13;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the popup element that contains the list of options when its role is 'region'\n * @meaning kendo.multiselect.popupLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_13 = goog.getMsg(\"Options list\");\n i18n_13 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_13;\n } else {\n i18n_13 = $localize`:kendo.multiselect.popupLabel|The label of the popup element that contains the list of options when its role is 'region':Options list`;\n }\n let i18n_14;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Apply button in the action sheet\n * @meaning kendo.multiselect.applyButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_14 = goog.getMsg(\"Apply\");\n i18n_14 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_14;\n } else {\n i18n_14 = $localize`:kendo.multiselect.applyButton|The text of the Apply button in the action sheet:Apply`;\n }\n let i18n_15;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Cancel button in the action sheet\n * @meaning kendo.multiselect.cancelButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_15 = goog.getMsg(\"Cancel\");\n i18n_15 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_15;\n } else {\n i18n_15 = $localize`:kendo.multiselect.cancelButton|The text of the Cancel button in the action sheet:Cancel`;\n }\n return [[\"popupTemplate\", \"\"], [\"container\", \"\"], [\"sharedPopupActionSheetTemplate\", \"\"], [\"optionsList\", \"\"], [\"default_custom_item_template\", \"\"], [\"kendoMultiSelectLocalizedMessages\", \"\", \"noDataText\", i18n_11, \"clearTitle\", i18n_12, \"popupLabel\", i18n_13, \"applyButton\", i18n_14, \"cancelButton\", i18n_15], [\"kendoDropDownSharedEvents\", \"\", 3, \"isFocusedChange\", \"handleBlur\", \"onFocus\", \"hostElement\", \"isFocused\"], [\"class\", \"k-input-prefix k-input-prefix-horizontal\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"k-input-values\"], [3, \"removeTag\", \"size\", \"rounded\", \"fillMode\", \"id\", \"tags\", \"textField\", \"valueField\", \"focused\", \"disabled\", \"template\", \"groupTemplate\", \"tagPrefix\", \"disabledIndices\"], [\"kendoSearchbar\", \"\", 3, \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\", \"click\", \"ariaControls\", \"ariaExpanded\", \"id\", \"tagListId\", \"isLoading\", \"isFilterable\", \"activeDescendant\", \"userInput\", \"disabled\", \"readonly\", \"tabIndex\", \"isRequired\", \"placeholder\", \"inputAttributes\"], [\"class\", \"k-clear-value\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"visibility\", \"mousedown\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading k-input-loading-icon\", 4, \"ngIf\"], [\"class\", \"k-input-suffix k-input-suffix-horizontal\", 4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [3, \"closePopup\", \"textInputChange\", \"navigate\", \"onApply\", \"onCancel\", \"sharedPopupActionSheetTemplate\", \"isActionSheetExpanded\", \"title\", \"showTextInput\", \"showActionButtons\", \"subtitle\", \"placeholder\"], [1, \"k-input-prefix\", \"k-input-prefix-horizontal\"], [3, \"ngTemplateOutlet\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-clear-value\", 3, \"mousedown\"], [\"name\", \"x\", 1, \"k-icon\", 3, \"svgIcon\"], [1, \"k-icon\", \"k-i-loading\", \"k-input-loading-icon\"], [1, \"k-input-suffix\", \"k-input-suffix-horizontal\"], [4, \"ngTemplateOutlet\"], [3, \"resize\"], [\"class\", \"k-list\", 3, \"ngClass\", 4, \"ngIf\"], [3, \"pageChange\", \"size\", \"rounded\", \"id\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"multipleSelection\", \"virtual\", \"checkboxes\", \"isMultiselect\", \"isActionSheetExpanded\", \"showStickyHeader\"], [\"class\", \"k-no-data\", 4, \"ngIf\"], [3, \"templateContext\"], [1, \"k-list\", 3, \"ngClass\"], [\"kendoDropDownsSelectable\", \"\", 1, \"k-list-item\", \"k-custom-item\", 3, \"multipleSelection\", \"index\"], [4, \"ngIf\", \"ngIfElse\"], [\"name\", \"plus\", 1, \"k-icon\", 3, \"svgIcon\"], [1, \"k-no-data\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"]];\n },\n template: function MultiSelectComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 5);\n i0.ɵɵelementContainerStart(1, 6);\n i0.ɵɵtwoWayListener(\"isFocusedChange\", function MultiSelectComponent_Template_ng_container_isFocusedChange_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n i0.ɵɵtwoWayBindingSet(ctx.isFocused, $event) || (ctx.isFocused = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"handleBlur\", function MultiSelectComponent_Template_ng_container_handleBlur_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleBlur());\n })(\"onFocus\", function MultiSelectComponent_Template_ng_container_onFocus_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleFocus());\n });\n i0.ɵɵtemplate(2, MultiSelectComponent_span_2_Template, 2, 1, \"span\", 7)(3, MultiSelectComponent_kendo_separator_3_Template, 1, 0, \"kendo-separator\", 8);\n i0.ɵɵelementStart(4, \"div\", 9)(5, \"kendo-taglist\", 10);\n i0.ɵɵlistener(\"removeTag\", function MultiSelectComponent_Template_kendo_taglist_removeTag_5_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleRemoveTag($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"input\", 11);\n i0.ɵɵlistener(\"onNavigate\", function MultiSelectComponent_Template_input_onNavigate_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n })(\"valueChange\", function MultiSelectComponent_Template_input_valueChange_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleFilter($event));\n })(\"onBlur\", function MultiSelectComponent_Template_input_onBlur_6_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputBlur());\n })(\"onFocus\", function MultiSelectComponent_Template_input_onFocus_6_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputFocus());\n })(\"click\", function MultiSelectComponent_Template_input_click_6_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleClick());\n });\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(7, MultiSelectComponent_span_7_Template, 2, 4, \"span\", 12)(8, MultiSelectComponent_span_8_Template, 1, 0, \"span\", 13)(9, MultiSelectComponent_kendo_separator_9_Template, 1, 0, \"kendo-separator\", 8)(10, MultiSelectComponent_span_10_Template, 2, 1, \"span\", 14);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(11, MultiSelectComponent_ng_template_11_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(13, MultiSelectComponent_kendo_resize_sensor_13_Template, 1, 0, \"kendo-resize-sensor\", 15);\n i0.ɵɵelementContainer(14, null, 1);\n i0.ɵɵelementStart(16, \"responsive-renderer\", 16);\n i0.ɵɵlistener(\"closePopup\", function MultiSelectComponent_Template_responsive_renderer_closePopup_16_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.togglePopup(false));\n })(\"textInputChange\", function MultiSelectComponent_Template_responsive_renderer_textInputChange_16_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onAdaptiveTextBoxChange($event));\n })(\"navigate\", function MultiSelectComponent_Template_responsive_renderer_navigate_16_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n })(\"onApply\", function MultiSelectComponent_Template_responsive_renderer_onApply_16_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.applyValue());\n })(\"onCancel\", function MultiSelectComponent_Template_responsive_renderer_onCancel_16_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.cancelValue());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(17, MultiSelectComponent_ng_template_17_Template, 6, 22, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(18);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"hostElement\", ctx.hostElement);\n i0.ɵɵtwoWayProperty(\"isFocused\", ctx.isFocused);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate && ctx.prefixTemplate.showSeparator);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"size\", ctx.size)(\"rounded\", ctx.rounded)(\"fillMode\", ctx.fillMode)(\"id\", ctx.tagListId)(\"tags\", ctx.tags)(\"textField\", ctx.textField)(\"valueField\", ctx.valueField)(\"focused\", ctx.focusedTagIndex)(\"disabled\", ctx.disabled)(\"template\", ctx.tagTemplate)(\"groupTemplate\", ctx.groupTagTemplate)(\"tagPrefix\", ctx.tagPrefix)(\"disabledIndices\", ctx.disabledIndices);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ariaControls\", ctx.ariaControls)(\"ariaExpanded\", ctx.isOpen)(\"id\", ctx.focusableId)(\"tagListId\", ctx.tagListId)(\"isLoading\", ctx.loading)(\"isFilterable\", ctx.filterable)(\"activeDescendant\", ctx.activeDescendant)(\"userInput\", ctx.text)(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly || ctx.isAdaptive)(\"tabIndex\", ctx.tabIndex)(\"isRequired\", ctx.isControlRequired)(\"placeholder\", ctx.placeholder)(\"inputAttributes\", ctx.inputAttributes);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && ctx.clearButton && ((ctx.tags == null ? null : ctx.tags.length) || (ctx.text == null ? null : ctx.text.length)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate && ctx.suffixTemplate.showSeparator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.isOpen || ctx.isAdaptiveModeEnabled);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"sharedPopupActionSheetTemplate\", sharedPopupActionSheetTemplate_r4)(\"isActionSheetExpanded\", ctx.isActionSheetExpanded)(\"title\", ctx.title)(\"showTextInput\", true)(\"showActionButtons\", true)(\"subtitle\", ctx.subtitle)(\"placeholder\", ctx.placeholder);\n }\n },\n dependencies: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgIf, NgTemplateOutlet, SeparatorComponent, TagListComponent, SearchBarComponent, IconWrapperComponent, ResizeSensorComponent, ResponsiveRendererComponent, TemplateContextDirective, NgClass, SelectableDirective, ListComponent],\n encapsulation: 2\n });\n return MultiSelectComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the column cell content of the MultiColumnComboBox. To define a column cell template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnCellTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) and data item are available as context variables:\n *\n * - `let-dataItem=\"dataItem\"` (`any`) - The current data item. Also available as implicit context variable.\n * - `let-column=\"column\"` ([`ColumnComponent`]({% slug api_dropdowns_comboboxcolumncomponent %})) - The current column configuration obejct.\n */\nlet ColumnCellTemplateDirective = /*#__PURE__*/(() => {\n class ColumnCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n ColumnCellTemplateDirective.ɵfac = function ColumnCellTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnCellTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n ColumnCellTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColumnCellTemplateDirective,\n selectors: [[\"\", \"kendoMultiColumnComboBoxColumnCellTemplate\", \"\"]],\n standalone: true\n });\n return ColumnCellTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the column header content of the MultiColumnComboBox. To define a column header template, nest an `` tag\n * with the `kendoMultiColumnComboBoxColumnHeaderTemplate` directive inside the [``]({% slug api_dropdowns_comboboxcolumncomponent %}) tag\n * ([see example]({% slug templates_multicolumncombobox %})).\n *\n * The current [`column`]({% slug api_dropdowns_comboboxcolumncomponent %}) is available as implicit context variable.\n */\nlet ColumnHeaderTemplateDirective = /*#__PURE__*/(() => {\n class ColumnHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n ColumnHeaderTemplateDirective.ɵfac = function ColumnHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n ColumnHeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColumnHeaderTemplateDirective,\n selectors: [[\"\", \"kendoMultiColumnComboBoxColumnHeaderTemplate\", \"\"]],\n standalone: true\n });\n return ColumnHeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column definition of the [MultiColumnComboBox]({% slug overview_multicolumncombobox %})\n * ([see example]({% slug columns_multicolumncombobox %})).\n */\nlet ComboBoxColumnComponent = /*#__PURE__*/(() => {\n class ComboBoxColumnComponent {\n constructor() {\n /**\n * Sets the visibility of the column.\n *\n * @default false\n */\n this.hidden = false;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n }\n }\n ComboBoxColumnComponent.ɵfac = function ComboBoxColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ComboBoxColumnComponent)();\n };\n ComboBoxColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ComboBoxColumnComponent,\n selectors: [[\"kendo-combobox-column\"]],\n contentQueries: function ComboBoxColumnComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnCellTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, ColumnHeaderTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n }\n },\n inputs: {\n field: \"field\",\n title: \"title\",\n width: \"width\",\n hidden: \"hidden\",\n style: \"style\",\n headerStyle: \"headerStyle\",\n class: \"class\",\n headerClass: \"headerClass\",\n media: \"media\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ComboBoxColumnComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ComboBoxColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Persists the intially resolved scrollbar width value.\n */\nlet SCROLLBAR_WIDTH;\n/**\n * @hidden\n *\n * Gets the default scrollbar width accoring to the current environment.\n */\nconst scrollbarWidth = () => {\n // calculate scrollbar width only once, then return the memoized value\n if (isNaN(SCROLLBAR_WIDTH)) {\n const div = document.createElement('div');\n div.style.cssText = 'overflow: scroll; overflow-x: hidden; zoom: 1; clear: both; display: block;';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n SCROLLBAR_WIDTH = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return SCROLLBAR_WIDTH;\n};\n/**\n * Checks if all columns have a valid user-defined width.\n */\nconst allColumnsWidthsSet = columns => {\n if (!isPresent(columns) || columns.length === 0) {\n return false;\n }\n return columns.toArray().every(column => !isNaN(column.width) && column.width > 0);\n};\n/**\n * @hidden\n *\n * Calculates the row width according to the passed columns width configuration.\n * Hidden columns and such that don't match the provided media query are ignored.\n * If some of the columns don't have a preset width or have an invalid width value, the function returns `null`.\n */\nconst getRowWidthFromColumnsMeta = columns => {\n if (!allColumnsWidthsSet(columns)) {\n return null;\n }\n const bordersWidth = 2;\n const initialRowWidht = scrollbarWidth() + bordersWidth;\n return columns.reduce((totalWidth, column) => {\n if (!column.hidden && column.matchesMedia) {\n totalWidth += parseInt(column.width, 10);\n }\n return totalWidth;\n }, initialRowWidht);\n};\n\n/**\n * Represents the [Kendo UI MultiColumnComboBox component for Angular]({% slug overview_multicolumncombobox %}).\n */\nlet MultiColumnComboBoxComponent = /*#__PURE__*/(() => {\n class MultiColumnComboBoxComponent extends ComboBoxComponent {\n constructor(localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, wrapper, injector, hostElement) {\n super(wrapper, localization, popupService, selectionService, navigationService, disabledItemsService, dataService, zone, changeDetector, renderer, injector, hostElement);\n this.hostElement = hostElement;\n /**\n * @hidden\n */\n this.animationDuration = animationDuration;\n /**\n * @hidden\n */\n this.hostClasses = true;\n this.removeWindowResizeListener = noop;\n // the row height in @progress/kendo-theme-default\n this.defaultVirtualItemHeight = 36;\n // use a smaller virtual page size as columns with multiple cells can cause poor performance\n this.defaultVirtualPageSize = 30;\n }\n /**\n * @hidden\n */\n get isDisabled() {\n return this.disabled;\n }\n /**\n * @hidden\n */\n set header(header) {\n // updates the header padding on initial render as the resize senzor doesn't kick in as early\n this.updateHeaderPadding(header && header.nativeElement);\n }\n get popupWidth() {\n const wrapperOffsetWidth = this.wrapper.nativeElement.offsetWidth;\n const min = `${wrapperOffsetWidth}px`;\n const width = this.popupSettings.width || getRowWidthFromColumnsMeta(this.columns) || wrapperOffsetWidth;\n const max = isNaN(width) ? width : `${width}px`;\n return {\n min,\n max\n };\n }\n /**\n * @hidden\n */\n get tableSizeClass() {\n return `${this.size ? getSizeClass('table', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n get listContainerClasses() {\n return ['k-popup', 'k-dropdowngrid-popup'].concat(this.popupSettings.popupClass || []);\n }\n ngAfterViewInit() {\n this.updateColumnsMediaState();\n this.addWindowResizeListener();\n this.windowSize = windowSize();\n this.cdr.detectChanges();\n if (this.actionSheet && isDocumentAvailable()) {\n // The following syntax is used as it does not violate CSP compliance\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.removeWindowResizeListener();\n }\n /**\n * @hidden\n */\n textFrom(dataItem, field) {\n return getter(dataItem, field);\n }\n /**\n * @hidden\n *\n * Adds or removes a padding value at the end of the header container equal to the size of the scrollbar.\n * As when the items container has a scrollbar, the column headers and the cells are misaligned.\n * When the container has a scrollbar, the padding style is added, and when there is none - it is removed.\n */\n updateHeaderPadding(header) {\n if (!isPresent(header)) {\n return;\n }\n // the scrollbar is rendered on the left in rtl\n const headerPaddingPosition = this.localization.rtl ? 'padding-left' : 'padding-right';\n if (this.optionsList.hasScrollbar() && scrollbarWidth() > 0) {\n this.renderer.setStyle(header, headerPaddingPosition, `${scrollbarWidth()}px`);\n } else {\n this.renderer.removeStyle(header, headerPaddingPosition);\n }\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (isPresent(this.data) && this.data.length > 0 && this.data.some(item => !isObject(item))) {\n throw new Error(MultiColumnComboBoxMessages.data);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiColumnComboBoxMessages.textAndValue);\n }\n super.verifySettings();\n }\n addWindowResizeListener() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.zone.runOutsideAngular(() => this.removeWindowResizeListener = this.renderer.listen(window, 'resize', this.updateColumnsMediaState.bind(this)));\n }\n updateColumnsMediaState() {\n if (!(isPresent(this.columns) && isDocumentAvailable()) || this.isActionSheetExpanded) {\n return;\n }\n this.columns.forEach(column => {\n const matchesMedia = !column.media || window.matchMedia(column.media).matches;\n if (column.matchesMedia !== matchesMedia) {\n column.matchesMedia = matchesMedia;\n if (this.isOpen) {\n // enter the zone only if the popup is actually open\n // update its width in case it's dependent on the columns' width\n this.zone.run(() => this.popupRef.popupElement.style.width = this.popupWidth.max);\n }\n }\n });\n }\n }\n MultiColumnComboBoxComponent.ɵfac = function MultiColumnComboBoxComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiColumnComboBoxComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i2.PopupService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(DisabledItemsService), i0.ɵɵdirectiveInject(DataService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n MultiColumnComboBoxComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MultiColumnComboBoxComponent,\n selectors: [[\"kendo-multicolumncombobox\"]],\n contentQueries: function MultiColumnComboBoxComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ComboBoxColumnComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columns = _t);\n }\n },\n viewQuery: function MultiColumnComboBoxComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c18, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.header = _t.first);\n }\n },\n hostVars: 4,\n hostBindings: function MultiColumnComboBoxComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-dropdowngrid\", ctx.hostClasses)(\"k-disabled\", ctx.isDisabled);\n }\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([SelectionService, DataService, NavigationService, DisabledItemsService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.multicolumncombobox'\n }, {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }, {\n provide: FilterableComponent,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }, {\n provide: MultiTabStop,\n useExisting: forwardRef(() => MultiColumnComboBoxComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 20,\n vars: 37,\n consts: () => {\n let i18n_16;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multicolumncombobox.noDataText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_16 = goog.getMsg(\"NO DATA FOUND\");\n i18n_16 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_16;\n } else {\n i18n_16 = $localize`:kendo.multicolumncombobox.noDataText|The text displayed in the popup when there are no items:NO DATA FOUND`;\n }\n let i18n_17;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.multicolumncombobox.clearTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_17 = goog.getMsg(\"clear\");\n i18n_17 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_17;\n } else {\n i18n_17 = $localize`:kendo.multicolumncombobox.clearTitle|The title of the clear button:clear`;\n }\n let i18n_18;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the select button\n * @meaning kendo.multicolumncombobox.selectButtonText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_18 = goog.getMsg(\"Select\");\n i18n_18 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_18;\n } else {\n i18n_18 = $localize`:kendo.multicolumncombobox.selectButtonText|The title of the select button:Select`;\n }\n let i18n_19;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the popup element that contains the list of options\n * when its role is 'region'\n * @meaning kendo.multicolumncombobox.popupLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_19 = goog.getMsg(\"Options list\");\n i18n_19 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_19;\n } else {\n i18n_19 = $localize`:kendo.multicolumncombobox.popupLabel|The label of the popup element that contains the list of options\n when its role is 'region':Options list`;\n }\n return [[\"select\", \"\"], [\"popupTemplate\", \"\"], [\"container\", \"\"], [\"sharedPopupActionSheetTemplate\", \"\"], [\"header\", \"\"], [\"headerWrap\", \"\"], [\"rowTemplate\", \"\"], [\"optionsList\", \"\"], [\"kendoMultiColumnComboBoxLocalizedMessages\", \"\", \"noDataText\", i18n_16, \"clearTitle\", i18n_17, \"selectButtonText\", i18n_18, \"popupLabel\", i18n_19], [\"kendoDropDownSharedEvents\", \"\", 3, \"isFocusedChange\", \"handleBlur\", \"onFocus\", \"hostElement\", \"isFocused\"], [\"class\", \"k-input-prefix k-input-prefix-horizontal\", 4, \"ngIf\"], [4, \"ngIf\"], [\"kendoSearchbar\", \"\", 3, \"onNavigate\", \"valueChange\", \"onBlur\", \"onFocus\", \"click\", \"ariaControls\", \"ariaExpanded\", \"id\", \"isLoading\", \"isSuggestable\", \"isFilterable\", \"activeDescendant\", \"userInput\", \"suggestedText\", \"disabled\", \"readonly\", \"tabIndex\", \"isRequired\", \"placeholder\", \"inputAttributes\"], [\"class\", \"k-clear-value\", \"aria-hidden\", \"true\", 3, \"visibility\", \"kendoEventsOutsideAngular\", \"click\", 4, \"ngIf\"], [\"class\", \"k-i-loading k-input-loading-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-input-suffix k-input-suffix-horizontal\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"aria-hidden\", \"true\", \"unselectable\", \"on\", \"type\", \"button\", 1, \"k-input-button\", \"k-button\", \"k-icon-button\", 3, \"ngClass\", \"kendoEventsOutsideAngular\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [3, \"resize\", 4, \"ngIf\"], [3, \"closePopup\", \"textInputChange\", \"navigate\", \"sharedPopupActionSheetTemplate\", \"isActionSheetExpanded\", \"title\", \"showTextInput\", \"subtitle\", \"placeholder\"], [1, \"k-input-prefix\", \"k-input-prefix-horizontal\"], [3, \"ngTemplateOutlet\"], [\"aria-hidden\", \"true\", 1, \"k-clear-value\", 3, \"click\", \"kendoEventsOutsideAngular\"], [\"name\", \"x\", 3, \"svgIcon\"], [1, \"k-i-loading\", \"k-input-loading-icon\", \"k-icon\"], [1, \"k-input-suffix\", \"k-input-suffix-horizontal\"], [4, \"ngTemplateOutlet\"], [3, \"resize\"], [1, \"k-data-table\", 3, \"ngClass\"], [1, \"k-table-header\"], [1, \"k-table-header-wrap\"], [\"role\", \"presentation\", 1, \"k-table\"], [4, \"ngFor\", \"ngForOf\"], [1, \"k-table-thead\"], [1, \"k-table-row\"], [3, \"pageChange\", \"listResize\", \"popupListScroll\", \"optionPrefix\", \"data\", \"textField\", \"valueField\", \"template\", \"groupTemplate\", \"fixedGroupTemplate\", \"height\", \"show\", \"id\", \"virtual\", \"type\", \"showStickyHeader\"], [\"class\", \"k-no-data\", 4, \"ngIf\"], [3, \"templateContext\"], [3, \"width\", 4, \"ngIf\"], [\"class\", \"k-table-th\", 3, \"ngStyle\", \"ngClass\", 4, \"ngIf\"], [1, \"k-table-th\", 3, \"ngStyle\", \"ngClass\"], [\"class\", \"k-table-td\", 3, \"ngClass\", \"width\", \"ngStyle\", 4, \"ngIf\"], [1, \"k-table-td\", 3, \"ngClass\", \"ngStyle\"], [1, \"k-no-data\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"], [1, \"k-table-footer\"], [1, \"k-table\"], [1, \"k-table-tfoot\"], [1, \"k-table-td\"]];\n },\n template: function MultiColumnComboBoxComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 8);\n i0.ɵɵelementContainerStart(1, 9);\n i0.ɵɵtwoWayListener(\"isFocusedChange\", function MultiColumnComboBoxComponent_Template_ng_container_isFocusedChange_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n i0.ɵɵtwoWayBindingSet(ctx.isFocused, $event) || (ctx.isFocused = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"handleBlur\", function MultiColumnComboBoxComponent_Template_ng_container_handleBlur_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleBlur());\n })(\"onFocus\", function MultiColumnComboBoxComponent_Template_ng_container_onFocus_1_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleFocus());\n });\n i0.ɵɵtemplate(2, MultiColumnComboBoxComponent_span_2_Template, 2, 1, \"span\", 10)(3, MultiColumnComboBoxComponent_kendo_separator_3_Template, 1, 0, \"kendo-separator\", 11);\n i0.ɵɵelementStart(4, \"input\", 12);\n i0.ɵɵlistener(\"onNavigate\", function MultiColumnComboBoxComponent_Template_input_onNavigate_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n })(\"valueChange\", function MultiColumnComboBoxComponent_Template_input_valueChange_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.searchBarChange($event));\n })(\"onBlur\", function MultiColumnComboBoxComponent_Template_input_onBlur_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputBlur());\n })(\"onFocus\", function MultiColumnComboBoxComponent_Template_input_onFocus_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleInputFocus());\n })(\"click\", function MultiColumnComboBoxComponent_Template_input_click_4_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleClick());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, MultiColumnComboBoxComponent_span_5_Template, 2, 7, \"span\", 13)(6, MultiColumnComboBoxComponent_span_6_Template, 1, 0, \"span\", 14)(7, MultiColumnComboBoxComponent_kendo_separator_7_Template, 1, 0, \"kendo-separator\", 11)(8, MultiColumnComboBoxComponent_span_8_Template, 2, 1, \"span\", 15);\n i0.ɵɵelementStart(9, \"button\", 16, 0);\n i0.ɵɵelement(11, \"kendo-icon-wrapper\", 17);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(12, MultiColumnComboBoxComponent_ng_template_12_Template, 1, 1, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(14, MultiColumnComboBoxComponent_kendo_resize_sensor_14_Template, 1, 0, \"kendo-resize-sensor\", 18);\n i0.ɵɵelementContainer(15, null, 2);\n i0.ɵɵelementStart(17, \"responsive-renderer\", 19);\n i0.ɵɵlistener(\"closePopup\", function MultiColumnComboBoxComponent_Template_responsive_renderer_closePopup_17_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.togglePopup(false));\n })(\"textInputChange\", function MultiColumnComboBoxComponent_Template_responsive_renderer_textInputChange_17_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onAdaptiveTextBoxChange($event));\n })(\"navigate\", function MultiColumnComboBoxComponent_Template_responsive_renderer_navigate_17_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleNavigate($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(18, MultiColumnComboBoxComponent_ng_template_18_Template, 18, 21, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(19);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"hostElement\", ctx.hostElement);\n i0.ɵɵtwoWayProperty(\"isFocused\", ctx.isFocused);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.prefixTemplate && ctx.prefixTemplate.showSeparator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ariaControls\", ctx.ariaControls)(\"ariaExpanded\", ctx.isOpen)(\"id\", ctx.focusableId)(\"isLoading\", ctx.loading)(\"isSuggestable\", ctx.suggest)(\"isFilterable\", ctx.filterable)(\"activeDescendant\", ctx.activeDescendant)(\"userInput\", ctx.text)(\"suggestedText\", ctx.getSuggestion())(\"disabled\", ctx.disabled)(\"readonly\", ctx.readonly)(\"tabIndex\", ctx.tabIndex)(\"isRequired\", ctx.isControlRequired)(\"placeholder\", ctx.placeholder)(\"inputAttributes\", ctx.inputAttributes);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.clearButton && !ctx.loading && !ctx.disabled && (!ctx.readonly || ctx.readonly && ctx.isAdaptiveModeEnabled && ctx.windowSize !== \"large\") && (ctx.text == null ? null : ctx.text.length));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate && ctx.suffixTemplate.showSeparator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.suffixTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx.selectButtonClasses)(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction1(35, _c14, ctx.preventEventDefault));\n i0.ɵɵattribute(\"aria-label\", ctx.messageFor(\"selectButtonText\"));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"name\", ctx.icon || \"caret-alt-down\")(\"svgIcon\", ctx.svgIcon || ctx.caretAltDownIcon);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.isOpen || ctx.isAdaptiveModeEnabled);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"sharedPopupActionSheetTemplate\", sharedPopupActionSheetTemplate_r4)(\"isActionSheetExpanded\", ctx.isActionSheetExpanded)(\"title\", ctx.title)(\"showTextInput\", true)(\"subtitle\", ctx.subtitle)(\"placeholder\", ctx.placeholder);\n }\n },\n dependencies: [LocalizedMessagesDirective, SharedDropDownEventsDirective, NgIf, NgTemplateOutlet, SeparatorComponent, SearchBarComponent, EventsOutsideAngularDirective, IconWrapperComponent, NgClass, ResizeSensorComponent, ResponsiveRendererComponent, TemplateContextDirective, NgFor, NgStyle, ListComponent],\n encapsulation: 2\n });\n return MultiColumnComboBoxComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Renders the content of each node in the DropDownTree. To define a node template, nest an `` tag\n * with the `kendoDropDownTreeNodeTemplate` directive inside the `` tag.\n *\n * The current data item and hierarchical index are available as context variables:\n *\n * - `let-dataItem` (`any`) - The current data item. Available as implicit context variable.\n * - `let-index=\"index\"` (`string`) - The current item hierarchical index.\n */\nlet NodeTemplateDirective = /*#__PURE__*/(() => {\n class NodeTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n NodeTemplateDirective.ɵfac = function NodeTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NodeTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n NodeTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NodeTemplateDirective,\n selectors: [[\"\", \"kendoDropDownTreeNodeTemplate\", \"\"], [\"\", \"kendoMultiSelectTreeNodeTemplate\", \"\"]],\n standalone: true\n });\n return NodeTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_POPUP_SETTINGS$1 = {\n animate: true\n};\nconst hasChildren$1 = () => false;\nconst fetchChildren$1 = () => of([]);\nconst itemDisabled$1 = () => false;\nconst isNodeVisible$1 = () => true;\nconst DEFAULT_SIZE$1 = 'medium';\nconst DEFAULT_ROUNDED$1 = 'medium';\nconst DEFAULT_FILL_MODE$1 = 'solid';\nconst stopPropagation = event => event.stopImmediatePropagation();\n/**\n * Represents the [Kendo UI DropDownTree component for Angular]({% slug overview_ddt %}).\n */\nlet DropDownTreeComponent = /*#__PURE__*/(() => {\n class DropDownTreeComponent {\n constructor(injector, wrapper, popupService, navigationService, renderer, _zone, cdr, localization) {\n this.injector = injector;\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this._zone = _zone;\n this.cdr = cdr;\n this.localization = localization;\n /**\n * @hidden\n */\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.animationDuration = animationDuration;\n /**\n * @hidden\n */\n this.searchIcon = searchIcon;\n /**\n * @hidden\n */\n this.caretAltDownIcon = caretAltDownIcon;\n /**\n * @hidden\n */\n this.xIcon = xIcon;\n this.hostClasses = true;\n this.role = 'combobox';\n this.ariaHasPopup = 'tree';\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_ddt %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the user focuses the DropDownTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the DropDownTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example](slug:events_ddt)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n */\n this.clearButton = true;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren$1;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren$1;\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = \"\";\n this._listHeight = 200;\n /**\n * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_ddt#toc-managing-the-dropdowntree-disabled-state-in-reactive-forms).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_ddt %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be of a primitive value.\n */\n this.valuePrimitive = false;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled$1;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible$1;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default true\n */\n this.loadOnDemand = true;\n /**\n * Renders the built-in input element for filtering the DropDownTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the DropDownTree manually]({% slug filtering_ddt %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoDropDownTreeHierarchyBinding`]({% slug api_dropdowns_dropdowntreehierarchybindingdirective %}) and [`kendoDropDownTreeFlatBinding`]({% slug api_dropdowns_dropdowntreeflatbindingdirective %}) directives.\n */\n this.filterable = false;\n /**\n * @hidden\n */\n this.filter = '';\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * @hidden\n */\n this.selectedKeys = [];\n /**\n * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.\n */\n this.adaptiveMode = 'none';\n /**\n * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet title uses the text provided for the label of the AutoComplete.\n */\n this.title = '';\n /**\n * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.\n */\n this.subtitle = '';\n /**\n * @hidden\n */\n this.windowSize = 'large';\n /**\n * @hidden\n */\n this.isActionSheetExpanded = false;\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n /**\n * @hidden\n *\n * Used to associate the value label with the wrapper via aria-describedby.\n */\n this.valueLabelId = `k-${guid$1()}`;\n this.treeViewId = `k-${guid$1()}`;\n this._popupSettings = DEFAULT_POPUP_SETTINGS$1;\n this._tabindex = 0;\n this._isFocused = false;\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this._searchableNodes = [];\n this._typedValue = '';\n this.printableCharacters = new Subject();\n this.subs = new Subscription();\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeTouchEvents();\n this.subscribeFocusEvents();\n }\n /**\n * @hidden\n */\n get actionSheet() {\n return this.responsiveRendererComponent?.actionSheet;\n }\n /**\n * @hidden\n */\n get actionSheetSearchBar() {\n return this.responsiveRendererComponent?.actionSheetSearchBar;\n }\n get isReadonly() {\n return this.readonly ? '' : null;\n }\n get hostAriaInvalid() {\n return this.formControl ? this.formControl.invalid.toString() : null;\n }\n get isDisabled() {\n return this.disabled;\n }\n get isDisabledAttribute() {\n return this.disabled ? '' : null;\n }\n get isLoading() {\n return this.loading;\n }\n get isBusy() {\n return this.loading ? 'true' : null;\n }\n get hostAriaControls() {\n return this.isOpen ? this.treeViewId : undefined;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isAriaExpanded() {\n return this.isOpen;\n }\n get hostAriaAutocomplete() {\n return this.filterable ? 'list' : null;\n }\n set treeview(treeview) {\n if (treeview) {\n if (this.isFocused && !this.filterable || this.touchEnabled) {\n treeview.focus();\n }\n // the treeview animations are initially disabled (we don't want expand animations during popup opening)\n // re-enables the animations for user interaction\n treeview.animate = true;\n this._treeview = treeview;\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Sets the data of the DropDownTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the DropDownTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(newValue) {\n this._value = newValue;\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Configures the popup of the DropDownTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS$1, settings);\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Keeps the current `dataItem` object in order to resolve selection.\n * Needs to be provided when `value` is bound in and `valuePrimitive` is set to true.\n */\n set dataItem(item) {\n this._dataItem = item;\n this.setState();\n }\n get dataItem() {\n return this._dataItem ? this._dataItem : this.value;\n }\n /**\n * Sets the height of the options list in the popup. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n *\n * > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.\n */\n set listHeight(_listHeight) {\n this._listHeight = _listHeight;\n }\n get listHeight() {\n if (this.isAdaptive) {\n return;\n }\n return this._listHeight;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = Number(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE$1;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return {\n min: minWidth,\n max: maxWidth\n };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n /**\n * Returns the current open state. Returns `true` if the popup or actionSheet is open.\n */\n get isOpen() {\n return isTruthy(isPresent(this.popupRef) || this.isActionSheetExpanded);\n }\n get clearButtonVisiblity() {\n if (this.touchEnabled) {\n return 'visible';\n }\n }\n get isFilterActive() {\n return this.filterInput && document.activeElement === this.filterInput.nativeElement;\n }\n /**\n * @hidden\n */\n onFilterChange(text) {\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n }\n /**\n * @hidden\n */\n get isAdaptiveModeEnabled() {\n return this.adaptiveMode === 'auto';\n }\n /**\n * @hidden\n */\n get isAdaptive() {\n return this.isAdaptiveModeEnabled && this.windowSize !== 'large';\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n /**\n * @hidden\n */\n get formControl() {\n const ngControl = this.injector.get(NgControl, null);\n return ngControl?.control || null;\n }\n ngOnInit() {\n this.subs.add(this.printableCharacters.pipe(tap(char => {\n this._typedValue += char;\n const itemToFocus = this._searchableNodes.find(node => {\n return node.text.toLowerCase().indexOf(this._typedValue) === 0;\n });\n this.treeview.focus(itemToFocus?.index);\n }), debounceTime(1000)).subscribe(() => {\n this._typedValue = '';\n }));\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.assignAriaDescribedBy();\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.setState();\n }\n if (isChanged('value', changes, false)) {\n if (changes['value'] && !changes['dataItem'] && !this.valuePrimitive) {\n // Update the dataItem if the value is updated programmatically (non-primitive values only)\n this.dataItem = this.value;\n }\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n if (this.data?.length > 0 && this.popupRef) {\n this.allNodesHidden = this.areNodesHidden(this.data);\n }\n }\n ngAfterViewInit() {\n this.windowSize = windowSize();\n this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));\n this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));\n if (this.actionSheet && isDocumentAvailable()) {\n // The following syntax is used as it does not violate CSP compliance\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {\n if (this.isOpen) {\n this.togglePopup(false);\n }\n this.windowSize = windowSize();\n }\n if (this.isOpen && !this.isActionSheetExpanded) {\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !this.text && !this.placeholder;\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n } else {\n this.destroyPopup();\n }\n }\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n if (!this.isActionSheetExpanded) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) || this.isOpen && this.popupRef.popupElement.contains(relatedTarget)) {\n return;\n }\n this.isFocused = false;\n this.togglePopup(false);\n if (hasObservers(this.onBlur) || isUntouched(this.wrapper.nativeElement) || this.formControl?.updateOn === 'blur') {\n this._zone.run(() => {\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n }\n }\n /**\n * @hidden\n */\n handleKeydown(event, input) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (event.keyCode === Keys.Tab && this.isActionSheetExpanded) {\n this.togglePopup(false);\n return;\n }\n if (!this.isFilterActive && isLetter(event.key) && !this.actionSheetSearchBar?.onFocus) {\n this.printableCharacters.next(event.key);\n }\n const eventData = event;\n this.navigationService.process({\n originalEvent: eventData,\n openOnSpace: !this.isOpen,\n closeOnSpace: this.isOpen && !input && !(event.target instanceof HTMLInputElement)\n });\n }\n /**\n * Focuses a specific item of the DropDownTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n const isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Focuses the DropDownTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the DropDownTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Resets the value of the DropDownTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = undefined;\n this.dataItem = undefined;\n }\n /**\n * Toggles the visibility of the popup or actionSheet.\n * ([see example]({% slug openstate_ddt %})).\n * If you use the `toggle` method to open or close the popup or actionSheet, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-dropdowntree-popup'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n */\n onSelectionChange({\n dataItem,\n index\n }) {\n this.valueDepth = index.split('_').length - 1;\n const valueField = this.getField(this.valueField, dataItem);\n const newValue = this.valuePrimitive ? getter$1(valueField)(dataItem) : dataItem;\n const shouldUpdateValue = newValue !== this.value;\n if (shouldUpdateValue) {\n this.value = newValue;\n this.dataItem = dataItem;\n this.emitValueChange(this.value);\n }\n this.togglePopup(false);\n this.focus();\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n clearValue(event) {\n event.stopImmediatePropagation();\n this.focus();\n this.value = undefined;\n this.dataItem = undefined;\n this.clearState();\n this.valueChange.emit(undefined);\n this.emitValueChange();\n }\n get appendTo() {\n const {\n appendTo\n } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n preventEventDefault(event) {\n event.preventDefault();\n }\n /**\n * @hidden\n */\n writeValue(value) {\n // If the user resets the value by providing null/undefined we need to reset the `dataItem`\n // Because upon initialization of the component the `writeValue` is being called twice -\n // first time with `null` value regardless of sync/async value - an extra check is added to\n // distinguish between client reset and initial phantom 'null' value\n if (!isPresent(value) && isPresent(this.value)) {\n this.dataItem = null;\n }\n this.value = value === null ? undefined : value;\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n const value = typeof input === 'string' ? input : input.value;\n this.filter = value;\n this.filterChange.next(value);\n this.allNodesHidden = this.areNodesHidden(this.nodes);\n this._zone.onStable.pipe(take(1)).subscribe(() => {\n if (this.data.length === 0 || this.allNodesHidden || this.filter === '') {\n this.filterInput?.nativeElement.focus();\n }\n });\n }\n /**\n * @hidden\n */\n get selectButtonClasses() {\n return `${this.size ? getSizeClass('button', this.size) : ''} ${this.fillMode ? 'k-button-' + this.fillMode : ''} ${this.fillMode ? 'k-button-' + this.fillMode + '-base' : ''}`;\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.value === \"object\") {\n throw new Error(DropDownTreeMessages.primitive);\n }\n if (this.valuePrimitive === true && isPresent(this.value) && typeof this.dataItem !== \"object\") {\n throw new Error(DropDownTreeMessages.dataItem);\n }\n if (this.valuePrimitive === false && isPresent(this.value) && typeof this.value !== \"object\") {\n throw new Error(DropDownTreeMessages.object);\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(DropDownTreeMessages.textAndValue);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && isPresent(this.value) && !isPresent(this.valueDepth)) {\n throw new Error(DropDownTreeMessages.valueDepth);\n }\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n getText(textField, dataItem) {\n if (isPresent(dataItem) && isPresent(textField)) {\n const field = this.getField(textField, dataItem);\n return getter$1(field)(dataItem);\n }\n return null;\n }\n /**\n * @hidden\n */\n onChildrenLoaded() {\n setTimeout(() => {\n if (this.popupRef) {\n this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);\n }\n if (this.isActionSheetExpanded) {\n this._searchableNodes = getSearchableItems(this.treeViewId, this.actionSheet.element.nativeElement);\n }\n });\n }\n /**\n * @hidden\n */\n onExpand() {\n this._searchableNodes = getSearchableItems(this.treeViewId, this.actionSheet.element.nativeElement);\n this.isActionSheetExpanded = true;\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.isActionSheetExpanded = false;\n }\n /**\n * @hidden\n *\n * Determines the `valueField` and `textField` for a specific level in the data set\n * @param field - the field value (string | string[])\n * @param value - current value\n */\n getField(field, value) {\n const fieldsCount = field.length - 1;\n if (typeof field === 'string') {\n // If the `valueField` | `textField` is the same for all levels\n return field;\n } else if (isPresent(this.valueDepth)) {\n // When `valueDepth` can be defined from the index on selectionChange or provided by the user\n return fieldsCount < this.valueDepth ? field[fieldsCount] : field[this.valueDepth];\n } else {\n // Fallback: Look to find a match of each field in the current data item\n // Side effect may occur if all of the listed fields are present in the data item\n return field.find(item => item in value);\n }\n }\n areNodesHidden(nodes) {\n return nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (open) {\n this.open.emit(eventArgs);\n } else {\n this.close.emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.openActionSheet();\n this.cdr.detectChanges();\n return;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = {\n horizontal: horizontalAlign,\n vertical: 'bottom'\n };\n const popupPosition = {\n horizontal: horizontalAlign,\n vertical: 'top'\n };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n this.renderer.setStyle(popupWrapper, 'minWidth', min);\n this.renderer.setStyle(popupWrapper, 'width', max);\n this.renderer.setStyle(popupWrapper, 'height', this.height);\n this.renderer.setAttribute(popupWrapper, 'dir', this.direction);\n if (!this.appendTo) {\n this.renderer.setAttribute(popupWrapper, 'role', 'region');\n this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));\n }\n this.popupRef.popupOpen.subscribe(() => {\n this.allNodesHidden = this.areNodesHidden(this.data);\n this.popupRef.popupElement.addEventListener('click', event => stopPropagation(event));\n this.cdr.detectChanges();\n this.opened.emit();\n this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);\n });\n this.popupRef.popupClose.subscribe(() => {\n this.closed.emit();\n });\n }\n destroyPopup() {\n if (this.isActionSheetExpanded) {\n this.closeActionSheet();\n }\n if (this.popupRef) {\n this.popupRef.popupElement.removeEventListener('click', event => stopPropagation(event));\n this.popupRef.close();\n this.popupRef = null;\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n handleClick(e) {\n // The check is needed otherwise when appended to the component, the popup reopens on click\n // https://github.com/telerik/kendo-angular/issues/3738\n this.windowSize = windowSize();\n if (!this.isActionSheetExpanded) {\n if (this.popupRef && !this.popupRef.popupElement.contains(e.target) || !this.popupRef && !e.target.className.includes('k-treeview-leaf')) {\n this.togglePopup(!this.isOpen);\n }\n }\n }\n handleEscape() {\n this.togglePopup(false);\n this.focus();\n }\n setState() {\n if (isPresent(this.value) && isPresent(this.dataItem) && isPresent(this.valueField)) {\n this.text = this.getText(this.textField, this.dataItem);\n const valueField = this.getField(this.valueField, this.dataItem);\n this.selectBy = valueField;\n this.selectedKeys = [getter$1(valueField)(this.dataItem)];\n } else {\n this.clearState();\n }\n this.cdr.markForCheck();\n }\n clearState() {\n this.text = undefined;\n this.selectedKeys = [];\n }\n subscribeEvents() {\n [this.navigationService.open.subscribe(event => {\n event.originalEvent.preventDefault();\n this.togglePopup(true);\n }), this.navigationService.close.subscribe(event => {\n event.originalEvent.preventDefault();\n this.togglePopup(false);\n this.focus();\n }), this.navigationService.enter.pipe(tap(event => event.originalEvent.preventDefault())).subscribe(e => {\n // The check is needed otherwise when appended to the component, the popup reopens on click\n // https://github.com/telerik/kendo-angular/issues/3738\n if (e.originalEvent.target === this.wrapper.nativeElement) {\n this.togglePopup(true);\n }\n if (!this.isOpen) {\n this.focus();\n }\n }), this.navigationService.esc.subscribe(() => this.handleEscape()), this.navigationService.tab.subscribe(() => {\n this.focus();\n if (this.isOpen) {\n this.treeview.blur();\n this.removeTreeViewFromTabOrder();\n }\n }), this.navigationService.down.subscribe(event => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n }), this.navigationService.up.subscribe(event => {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n if (this.filterable && this.treeview['navigationService']['activeIndex'] === '0') {\n if (this.isActionSheetExpanded) {\n this.actionSheetSearchBar.focus();\n } else {\n this.filterInput.nativeElement.focus();\n }\n }\n })].forEach(sub => this.subs.add(sub));\n }\n subscribeTouchEvents() {\n if (!isDocumentAvailable() || !this.touchEnabled) {\n return;\n }\n this._zone.runOutsideAngular(() =>\n // Roll up DropDownTree on iOS when tapped outside\n this.touchstartDisposeHandler = this.renderer.listen(document, 'touchstart', e => {\n const target = e.target;\n if (this.isFocused && !inDropDown(this.wrapper, target, this.popupRef)) {\n this._zone.run(() => {\n if (this.isOpen) {\n this.treeview.blur();\n }\n this.blur();\n });\n }\n }));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n unsubscribeEvents() {\n this.subs.unsubscribe();\n this.unSubscribeFocusEvents();\n if (this.touchstartDisposeHandler) {\n this.touchstartDisposeHandler();\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n assignAriaDescribedBy() {\n const currentValue = this.wrapper.nativeElement.getAttribute('aria-describedby') || '';\n // add to the current value - don't replace it (the aria-describedby is used by the FormField component as well)\n const newValue = `${this.valueLabelId} ${currentValue.trim()}`.trim();\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-describedby', newValue);\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('picker', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('picker', this.fillMode));\n }\n }\n /**\n * Remove the `TreeView` from the tab order, otherwise a focus loop between the page elements will occur\n * and the user will not be able to tab to the rest of the browser elements\n */\n removeTreeViewFromTabOrder() {\n const nodes = this.treeview.element.nativeElement.querySelectorAll('li');\n nodes.forEach(item => {\n if (item.getAttribute('tabindex') === '0') {\n this.lastNodeOnFocus = item;\n this.lastNodeOnFocus.setAttribute('tabindex', '-1');\n }\n });\n }\n closeActionSheet() {\n this.actionSheet.toggle(false);\n if (this.filterable) {\n this.actionSheetSearchBar.value = '';\n this.filterChange.emit('');\n }\n this.wrapper.nativeElement.focus();\n this.closed.emit();\n }\n openActionSheet() {\n this.windowSize = windowSize();\n this.isActionSheetExpanded = true;\n this.actionSheet.toggle(true);\n this.title = setActionSheetTitle(this.wrapper, this.title);\n this.cdr.detectChanges();\n updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);\n this.cdr.detectChanges();\n this.opened.emit();\n this.removeTreeViewFromTabOrder();\n this.filterable && this.actionSheetSearchBar.focus();\n }\n }\n DropDownTreeComponent.ɵfac = function DropDownTreeComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownTreeComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.PopupService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n DropDownTreeComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DropDownTreeComponent,\n selectors: [[\"kendo-dropdowntree\"]],\n contentQueries: function DropDownTreeComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, ValueTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nodeTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.valueTemplate = _t.first);\n }\n },\n viewQuery: function DropDownTreeComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ResponsiveRendererComponent, 5);\n i0.ɵɵviewQuery(_c10, 7);\n i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);\n i0.ɵɵviewQuery(_c21, 5);\n i0.ɵɵviewQuery(_c22, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.responsiveRendererComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.treeview = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterInput = _t.first);\n }\n },\n hostVars: 22,\n hostBindings: function DropDownTreeComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"readonly\", ctx.isReadonly)(\"aria-invalid\", ctx.hostAriaInvalid)(\"disabled\", ctx.isDisabledAttribute)(\"aria-busy\", ctx.isBusy)(\"aria-controls\", ctx.hostAriaControls)(\"id\", ctx.id)(\"dir\", ctx.direction)(\"tabindex\", ctx.hostTabIndex)(\"role\", ctx.role)(\"aria-haspopup\", ctx.ariaHasPopup)(\"aria-expanded\", ctx.isAriaExpanded)(\"aria-autocomplete\", ctx.hostAriaAutocomplete);\n i0.ɵɵclassProp(\"k-dropdowntree\", ctx.hostClasses)(\"k-picker\", ctx.hostClasses)(\"k-disabled\", ctx.isDisabled)(\"k-loading\", ctx.isLoading)(\"k-readonly\", ctx.readonly);\n }\n },\n inputs: {\n icon: \"icon\",\n svgIcon: \"svgIcon\",\n loading: \"loading\",\n clearButton: \"clearButton\",\n data: \"data\",\n value: \"value\",\n textField: \"textField\",\n valueField: \"valueField\",\n valueDepth: \"valueDepth\",\n hasChildren: \"hasChildren\",\n fetchChildren: \"fetchChildren\",\n placeholder: \"placeholder\",\n popupSettings: \"popupSettings\",\n dataItem: \"dataItem\",\n listHeight: \"listHeight\",\n disabled: \"disabled\",\n readonly: \"readonly\",\n valuePrimitive: \"valuePrimitive\",\n tabindex: \"tabindex\",\n size: \"size\",\n rounded: \"rounded\",\n fillMode: \"fillMode\",\n itemDisabled: \"itemDisabled\",\n isNodeExpanded: \"isNodeExpanded\",\n isNodeVisible: \"isNodeVisible\",\n loadOnDemand: \"loadOnDemand\",\n filterable: \"filterable\",\n filter: \"filter\",\n focusableId: \"focusableId\",\n adaptiveMode: \"adaptiveMode\",\n title: \"title\",\n subtitle: \"subtitle\"\n },\n outputs: {\n open: \"open\",\n opened: \"opened\",\n close: \"close\",\n closed: \"closed\",\n nodeExpand: \"nodeExpand\",\n nodeCollapse: \"nodeCollapse\",\n onFocus: \"focus\",\n onBlur: \"blur\",\n valueChange: \"valueChange\",\n filterChange: \"filterChange\"\n },\n exportAs: [\"kendoDropDownTree\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([DataService, SelectionService, NavigationService, DisabledItemsService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.dropdowntree'\n }, {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }, {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }, {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => DropDownTreeComponent)\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 17,\n vars: 15,\n consts: () => {\n let i18n_20;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.dropdowntree.noDataText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_20 = goog.getMsg(\"NO DATA FOUND\");\n i18n_20 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_20;\n } else {\n i18n_20 = $localize`:kendo.dropdowntree.noDataText|The text displayed in the popup when there are no items:NO DATA FOUND`;\n }\n let i18n_21;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.dropdowntree.clearTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_21 = goog.getMsg(\"clear\");\n i18n_21 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_21;\n } else {\n i18n_21 = $localize`:kendo.dropdowntree.clearTitle|The title of the clear button:clear`;\n }\n let i18n_22;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text set as aria-label on the select button\n * @meaning kendo.dropdowntree.selectButtonText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_22 = goog.getMsg(\"Select\");\n i18n_22 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_22;\n } else {\n i18n_22 = $localize`:kendo.dropdowntree.selectButtonText|The text set as aria-label on the select button:Select`;\n }\n let i18n_23;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text set as aria-label on the filter input\n * @meaning kendo.dropdowntree.filterInputLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_23 = goog.getMsg(\"Filter\");\n i18n_23 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_23;\n } else {\n i18n_23 = $localize`:kendo.dropdowntree.filterInputLabel|The text set as aria-label on the filter input:Filter`;\n }\n let i18n_24;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the popup element that contains the list of options when its role is 'region'\n * @meaning kendo.dropdowntree.popupLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_24 = goog.getMsg(\"Options list\");\n i18n_24 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_24;\n } else {\n i18n_24 = $localize`:kendo.dropdowntree.popupLabel|The label of the popup element that contains the list of options when its role is 'region':Options list`;\n }\n return [[\"popupTemplate\", \"\"], [\"container\", \"\"], [\"sharedPopupActionSheetTemplate\", \"\"], [\"filterInput\", \"\"], [\"treeview\", \"\"], [\"kendoDropDownTreeLocalizedMessages\", \"\", \"noDataText\", i18n_20, \"clearTitle\", i18n_21, \"selectButtonText\", i18n_22, \"filterInputLabel\", i18n_23, \"popupLabel\", i18n_24], [1, \"k-input-inner\", 3, \"click\"], [1, \"k-input-value-text\"], [4, \"ngIf\"], [3, \"ngIf\"], [\"class\", \"k-clear-value\", \"aria-hidden\", \"true\", 3, \"visibility\", \"click\", 4, \"ngIf\"], [\"class\", \"k-i-loading k-input-loading-icon k-icon\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"aria-hidden\", \"true\", 1, \"k-input-button\", \"k-button\", \"k-icon-button\", 3, \"ngClass\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [3, \"closePopup\", \"onExpand\", \"onCollapse\", \"textInputChange\", \"sharedPopupActionSheetTemplate\", \"isActionSheetExpanded\", \"title\", \"showTextInput\", \"subtitle\"], [3, \"resize\", 4, \"ngIf\"], [3, \"templateContext\"], [\"aria-hidden\", \"true\", 1, \"k-clear-value\", 3, \"click\"], [\"name\", \"x\", 3, \"svgIcon\"], [1, \"k-i-loading\", \"k-input-loading-icon\", \"k-icon\"], [4, \"ngTemplateOutlet\"], [\"class\", \"k-list-filter\", 4, \"ngIf\"], [\"kendoTreeViewSelectable\", \"\", 3, \"size\", \"nodes\", \"maxHeight\", \"animate\", \"selectedKeys\", \"selectBy\", \"textField\", \"children\", \"hasChildren\", \"loadOnDemand\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"filter\", \"isVisible\", \"selectedKeysChange\", \"focusout\", \"keydown\", \"selectionChange\", \"expand\", \"collapse\", \"childrenLoaded\", 4, \"ngIf\"], [\"class\", \"k-no-data\", 4, \"ngIf\"], [1, \"k-list-filter\"], [1, \"k-textbox\", \"k-input\", 3, \"ngClass\"], [1, \"k-input-prefix\"], [\"name\", \"search\", 1, \"k-icon\", 3, \"svgIcon\"], [\"role\", \"textbox\", 1, \"k-input-inner\", 3, \"input\", \"keydown.arrowdown\", \"keydown.alt.arrowup\", \"keydown.escape\", \"filterInput\", \"value\", \"kendoEventsOutsideAngular\", \"scope\"], [\"kendoTreeViewSelectable\", \"\", 3, \"selectedKeysChange\", \"focusout\", \"keydown\", \"selectionChange\", \"expand\", \"collapse\", \"childrenLoaded\", \"size\", \"nodes\", \"animate\", \"selectedKeys\", \"selectBy\", \"textField\", \"children\", \"hasChildren\", \"loadOnDemand\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"filter\", \"isVisible\"], [1, \"k-no-data\"], [3, \"ngIf\", \"templateContext\"], [3, \"resize\"]];\n },\n template: function DropDownTreeComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 5);\n i0.ɵɵelementStart(1, \"span\", 6);\n i0.ɵɵlistener(\"click\", function DropDownTreeComponent_Template_span_click_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵelementStart(2, \"span\", 7);\n i0.ɵɵtemplate(3, DropDownTreeComponent_3_Template, 1, 4, null, 8)(4, DropDownTreeComponent_ng_template_4_Template, 1, 1, \"ng-template\", 9);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(5, DropDownTreeComponent_span_5_Template, 2, 4, \"span\", 10)(6, DropDownTreeComponent_span_6_Template, 1, 0, \"span\", 11);\n i0.ɵɵelementStart(7, \"button\", 12);\n i0.ɵɵelement(8, \"kendo-icon-wrapper\", 13);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, DropDownTreeComponent_ng_template_9_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementContainer(11, null, 1);\n i0.ɵɵelementStart(13, \"responsive-renderer\", 14);\n i0.ɵɵlistener(\"closePopup\", function DropDownTreeComponent_Template_responsive_renderer_closePopup_13_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.togglePopup(false));\n })(\"onExpand\", function DropDownTreeComponent_Template_responsive_renderer_onExpand_13_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onExpand());\n })(\"onCollapse\", function DropDownTreeComponent_Template_responsive_renderer_onCollapse_13_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onCollapse());\n })(\"textInputChange\", function DropDownTreeComponent_Template_responsive_renderer_textInputChange_13_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleFilterInputChange($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(14, DropDownTreeComponent_ng_template_14_Template, 5, 5, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor)(16, DropDownTreeComponent_kendo_resize_sensor_16_Template, 1, 0, \"kendo-resize-sensor\", 15);\n }\n if (rf & 2) {\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(15);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"id\", ctx.valueLabelId);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.valueTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.valueTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.loading && !ctx.readonly && ctx.clearButton && (ctx.text == null ? null : ctx.text.length) && !ctx.disabled);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx.selectButtonClasses);\n i0.ɵɵattribute(\"aria-label\", ctx.messageFor(\"selectButtonText\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx.icon || \"caret-alt-down\")(\"svgIcon\", ctx.svgIcon || ctx.caretAltDownIcon);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"sharedPopupActionSheetTemplate\", sharedPopupActionSheetTemplate_r4)(\"isActionSheetExpanded\", ctx.isActionSheetExpanded)(\"title\", ctx.title)(\"showTextInput\", ctx.filterable)(\"subtitle\", ctx.subtitle);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.isOpen || ctx.isAdaptiveModeEnabled);\n }\n },\n dependencies: [LocalizedMessagesDirective, NgIf, TemplateContextDirective, IconWrapperComponent, NgClass, NgTemplateOutlet, ResponsiveRendererComponent, FilterInputDirective, EventsOutsideAngularDirective, TreeViewComponent, SelectDirective, ResizeSensorComponent],\n encapsulation: 2,\n changeDetection: 0\n });\n return DropDownTreeComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst nodeIndex$1 = item => (item || {}).key;\n/**\n * @hidden\n */\nconst buildTreeIndex = (parentIndex, itemIndex) => {\n return [parentIndex, itemIndex].filter(part => isPresent(part)).join('_');\n};\n/**\n * @hidden\n */\nconst buildTreeItem = (dataItem, valueField, currentLevelIndex) => {\n if (!isPresent(dataItem)) {\n return null;\n }\n return {\n dataItem,\n key: valueFrom({\n dataItem,\n level: currentLevelIndex\n }, valueField) + '_' + currentLevelIndex\n };\n};\n/**\n * @hidden\n */\nlet MultiSelectTreeLookupService = /*#__PURE__*/(() => {\n class MultiSelectTreeLookupService {\n constructor() {\n this.map = new Map();\n }\n reset() {\n this.map.clear();\n }\n registerChildren(index, children) {\n const item = this.item(index);\n if (!item) {\n return;\n }\n item.children = children;\n }\n item(index) {\n return this.map.get(index) || null;\n }\n registerItem(item, parent) {\n const currentLookup = {\n children: [],\n item,\n parent: this.item(nodeIndex$1(parent))\n };\n this.map.set(item.key, currentLookup);\n }\n itemLookup(index) {\n const item = this.item(index);\n if (!item) {\n return null;\n }\n return {\n children: this.mapChildren(item.children),\n item: item.item,\n parent: item.parent\n };\n }\n mapChildren(children = []) {\n return children.map(c => {\n const {\n item,\n parent,\n children\n } = this.item(c.key);\n return {\n children: this.mapChildren(children),\n item,\n parent\n };\n });\n }\n }\n MultiSelectTreeLookupService.ɵfac = function MultiSelectTreeLookupService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiSelectTreeLookupService)();\n };\n MultiSelectTreeLookupService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MultiSelectTreeLookupService,\n factory: MultiSelectTreeLookupService.ɵfac\n });\n return MultiSelectTreeLookupService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nlet BaseCheckDirective = /*#__PURE__*/(() => {\n class BaseCheckDirective {\n addItem(item) {\n if (this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const key = this.getKey(item, level);\n const candidate = {\n ...item,\n level,\n key\n };\n this.checkedItems.push(candidate);\n this.checkedKeys.add(key);\n }\n removeItem(item) {\n if (!this.isItemChecked(item)) {\n return;\n }\n const level = getHierarchicalItemLevel(item.index);\n const key = this.getKey(item, level);\n const candidate = {\n ...item,\n level,\n key\n };\n this.checkedItems = this.checkedItems.filter(item => valueFrom(item, this.valueField) !== valueFrom(candidate, this.valueField));\n this.checkedKeys.delete(key);\n }\n isItemChecked(item) {\n const level = item.index.split('_').length - 1;\n item.level = level;\n const key = this.getKey(item, level);\n return this.checkedKeys.has(key);\n }\n updateItems() {\n this.checkedItems = this.checkedItems || [];\n this.checkedKeys = new Set(this.checkedItems.map(item => item.key));\n }\n /**\n * Adds the item's depth to the item's value to allow duplicate values on different levels.\n *\n * @param item - The checked key.\n * @returns { string } - A string key consisting of the item's `valueField` value and its depth (depth is 0 if data is homogeneous).\n */\n getKey(item, level) {\n return valueFrom(item, this.valueField) + '_' + (this.isHeterogeneous ? level : 0);\n }\n }\n BaseCheckDirective.ɵfac = function BaseCheckDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BaseCheckDirective)();\n };\n BaseCheckDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BaseCheckDirective,\n inputs: {\n valueField: \"valueField\",\n checkedItems: \"checkedItems\",\n isHeterogeneous: \"isHeterogeneous\"\n }\n });\n return BaseCheckDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nlet CheckDirective = /*#__PURE__*/(() => {\n class CheckDirective extends BaseCheckDirective {\n constructor(treeView) {\n super();\n this.treeView = treeView;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.treeView.checkedChange.subscribe(this.handleCheckedChange.bind(this)));\n this.treeView.isChecked = this.getCheckedState.bind(this);\n }\n ngOnChanges(changes) {\n if (isPresent(changes['checkable'])) {\n this.toggleCheckOnClick();\n }\n if (isPresent(changes['checkedItems'])) {\n this.updateItems();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.unsubscribeClick();\n }\n getCheckedState(dataItem, index) {\n if (this.isItemChecked({\n dataItem,\n index\n })) {\n return 'checked';\n } else if (this.checkable.checkChildren && this.isItemIndeterminate(this.treeView.itemLookup(index))) {\n return 'indeterminate';\n } else {\n return 'none';\n }\n }\n handleCheckedChange(node) {\n this.checkNode(node);\n // parents should be checked if `checkChildren` is set to `true` (single config option for both)\n const checkParents = this.checkable.checkChildren;\n if (checkParents) {\n this.checkParents(node.parent);\n }\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n toggleCheckOnClick() {\n this.unsubscribeClick();\n if (this.checkable.checkOnClick) {\n this.clickSubscription = this.treeView.nodeClick.pipe(filter(event => event.type === 'click')).subscribe(event => {\n const lookup = this.treeView.itemLookup(event.item.index);\n this.handleCheckedChange(lookup);\n });\n }\n }\n unsubscribeClick() {\n if (this.clickSubscription) {\n this.clickSubscription.unsubscribe();\n this.clickSubscription = null;\n }\n }\n checkNode(lookup) {\n if (this.treeView.isDisabled(lookup.item.dataItem, lookup.item.index)) {\n return;\n }\n const target = lookup.item;\n const pendingCheck = [target];\n // TODO: extract in a separate `checkChildren` method?\n if (this.checkable.checkChildren) {\n const filter = item => this.treeView.isVisible(item.dataItem, item.index) && !this.treeView.isDisabled(item.dataItem, item.index);\n fetchDescendentNodes(lookup, filter).forEach(lookup => pendingCheck.push(lookup.item));\n }\n const shouldCheck = !this.isItemChecked(target);\n pendingCheck.forEach(item => {\n if (shouldCheck) {\n this.addItem(item);\n } else {\n this.removeItem(item);\n }\n });\n }\n checkParents(parent) {\n let currentParent = parent;\n while (currentParent) {\n const allChildrenSelected = currentParent.children.every(item => this.isItemChecked(item));\n if (allChildrenSelected) {\n this.addItem(currentParent.item);\n } else {\n this.removeItem(currentParent.item);\n }\n currentParent = currentParent.parent;\n }\n }\n isItemIndeterminate(lookup) {\n const children = lookup.children;\n if (!Array.isArray(children) || children.length === 0) {\n return false;\n }\n let index = 0;\n let child = children[index];\n while (isPresent(child)) {\n if (this.isItemChecked(child.item) || this.isItemIndeterminate(child)) {\n return true;\n }\n index += 1;\n child = children[index];\n }\n return false;\n }\n }\n CheckDirective.ɵfac = function CheckDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CheckDirective)(i0.ɵɵdirectiveInject(i1$1.TreeViewComponent));\n };\n CheckDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CheckDirective,\n selectors: [[\"\", \"kendoMultiSelectTreeCheckable\", \"\"]],\n inputs: {\n checkable: \"checkable\",\n valueField: \"valueField\",\n checkedItems: \"checkedItems\"\n },\n outputs: {\n checkedItemsChange: \"checkedItemsChange\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return CheckDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * A directive which manages the in-memory checked state of the MultiSelectTree nodes.\n */\nlet CheckAllDirective = /*#__PURE__*/(() => {\n class CheckAllDirective extends BaseCheckDirective {\n constructor(element, zone, cdr, renderer) {\n super();\n this.element = element;\n this.zone = zone;\n this.cdr = cdr;\n this.renderer = renderer;\n /**\n * Fires when the `checkedItems` collection was updated.\n */\n this.checkedItemsChange = new EventEmitter();\n /**\n * Holds a Set with just the checked item keys.\n *\n * Should be updated each time the `checkedItems` value or content is changed.\n * Can be used for efficient look-up of whether an item is checked or not (O(1) access time).\n */\n this.checkedKeys = new Set();\n }\n handleChange(event) {\n // Need to store the current checkbox state at the moment of click\n this.currentCheckedState = event.checked;\n this.currentIndeterminateState = this.isIndeterminate;\n this.treeview.nodes.map((_value, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n this.checkNode(itemLookup);\n });\n this.checkedItemsChange.emit(this.checkedItems.slice());\n }\n get isIndeterminate() {\n const isIndeterminate = this.treeview.nodes.some((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.someChecked(itemLookup);\n });\n return this.isChecked ? false : isIndeterminate;\n }\n get isChecked() {\n const isChecked = this.treeview.nodes.every((_node, index) => {\n const itemIndex = String(index);\n const itemLookup = this.treeview.itemLookup(itemIndex);\n return this.allChecked(itemLookup);\n });\n return isChecked;\n }\n ngOnChanges(changes) {\n if (isPresent(changes['checkedItems'])) {\n this.updateItems();\n this.renderer.setProperty(this.element.nativeElement, 'checked', this.isChecked);\n this.renderer.setProperty(this.element.nativeElement, 'indeterminate', this.isIndeterminate);\n }\n }\n ngOnInit() {\n if (this.focused) {\n this.nextTick(() => this.element.nativeElement.focus());\n }\n }\n nextTick(fn) {\n this.zone.runOutsideAngular(() => setTimeout(fn));\n }\n checkNode(itemLookup) {\n if (this.treeview.isDisabled(itemLookup.item.dataItem, itemLookup.item.index)) {\n return;\n }\n const pendingCheck = [];\n const filter = item => this.treeview.isVisible(item.dataItem, item.index) && !this.treeview.isDisabled(item.dataItem, item.index);\n pendingCheck.push(itemLookup.item);\n fetchDescendentNodes(itemLookup, filter).forEach(lookup => pendingCheck.push(lookup.item));\n pendingCheck.forEach(item => {\n if (this.currentIndeterminateState) {\n if (this.lastAction === 'check') {\n this.addItem(item);\n } else {\n this.removeItem(item);\n }\n return;\n }\n if (this.currentCheckedState) {\n this.addItem(item);\n } else {\n this.removeItem(item);\n }\n });\n }\n allChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.every(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) && this.allChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked && this.isItemChecked(lookup.item);\n }\n someChecked(lookup) {\n const children = lookup && lookup.children;\n if (!Array.isArray(children)) {\n return;\n }\n const childrenChecked = children.some(child => {\n if (child.children.length) {\n return this.isItemChecked(child.item) || this.someChecked(child);\n }\n return this.isItemChecked(child.item);\n });\n return childrenChecked || this.isItemChecked(lookup.item);\n }\n }\n CheckAllDirective.ɵfac = function CheckAllDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CheckAllDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n CheckAllDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CheckAllDirective,\n selectors: [[\"\", \"checkAll\", \"\"]],\n hostBindings: function CheckAllDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function CheckAllDirective_change_HostBindingHandler($event) {\n return ctx.handleChange($event.target);\n });\n }\n },\n inputs: {\n lastAction: \"lastAction\",\n treeview: \"treeview\",\n checkedItems: \"checkedItems\",\n valueField: \"valueField\",\n focused: [0, \"checkAll\", \"focused\"]\n },\n outputs: {\n checkedItemsChange: \"checkedItemsChange\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return CheckAllDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_POPUP_SETTINGS = {\n animate: true\n};\nconst DEFAULT_CHECKABLE_SETTINGS = {\n checkChildren: true,\n checkOnClick: true\n};\nconst hasChildren = () => false;\nconst fetchChildren = () => of([]);\nconst itemDisabled = () => false;\nconst isNodeVisible = () => true;\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_ROUNDED = 'medium';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Represents the [Kendo UI MultiSelectTree component for Angular]({% slug overview_multiselecttree %}).\n */\nlet MultiSelectTreeComponent = /*#__PURE__*/(() => {\n class MultiSelectTreeComponent {\n constructor(injector, wrapper, popupService, renderer, navigationService, _zone, localization, cdr, lookup) {\n this.injector = injector;\n this.wrapper = wrapper;\n this.popupService = popupService;\n this.renderer = renderer;\n this.navigationService = navigationService;\n this._zone = _zone;\n this.localization = localization;\n this.cdr = cdr;\n this.lookup = lookup;\n /**\n * @hidden\n */\n this.touchEnabled = touchEnabled;\n /**\n * @hidden\n */\n this.animationDuration = animationDuration;\n /**\n * @hidden\n */\n this.searchIcon = searchIcon;\n /**\n * @hidden\n */\n this.xIcon = xIcon;\n this.hostClasses = true;\n this.treeViewId = `k-${guid$1()}`;\n this.role = 'combobox';\n this.ariaHasPopup = 'tree';\n /**\n * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.\n */\n this.adaptiveMode = 'none';\n /**\n * Sets the title of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet title uses the text provided for the label of the AutoComplete.\n */\n this.title = '';\n /**\n * @hidden\n */\n this.windowSize = 'large';\n /**\n * @hidden\n */\n this.isActionSheetExpanded = false;\n /**\n * Sets the levels in the data set where the values can be found when `valueField` is an Array.\n * The field serves to correctly allocate a data item used when the MultiSelectTree is initialized with a value.\n */\n this.valueDepth = [];\n /**\n * The hint which is displayed when the component is empty.\n */\n this.placeholder = '';\n this._listHeight = 200;\n /**\n * Sets the disabled state of the component. To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_multiselecttree#toc-managing-the-multiselecttree-disabled-state-in-reactive-forms).\n */\n this.disabled = false;\n /**\n * Sets the read-only state of the component.\n *\n * @default false\n */\n this.readonly = false;\n /**\n * Specifies the type of the selected value\n * ([more information and example]({% slug valuebinding_multiselecttree %}#toc-primitive-values)).\n * If set to `true`, the selected value has to be a primitive one.\n */\n this.valuePrimitive = false;\n /**\n * Indicates whether the child nodes will be fetched on node expand or will be initially prefetched.\n * @default false\n */\n this.loadOnDemand = false;\n /**\n * @hidden\n *\n * Used by the kendo-label and kendo-floatinglabel to access and associate the focusable element with the provided label via aria-labelledby.\n */\n this.focusableId = `k-${guid$1()}`;\n /**\n * If set to `true`, renders a button on hovering over the component.\n * Clicking this button resets the value of the component to `undefined` and triggers the `change` event.\n * @default true\n */\n this.clearButton = true;\n /**\n * Renders the built-in input element for filtering the MultiSelectTree.\n * If set to `true`, the component emits the `filterChange` event, which can be used to [filter the MultiSelectTree manually]({% slug filtering_multiselecttree %}#toc-manual-filtering).\n * A built-in filtering implementation is available to use with the [`kendoMultiSelectTreeHierarchyBinding`]({% slug api_dropdowns_multiselecttreehierarchybindingdirective %}) and [`kendoMultiSelectTreeFlatBinding`]({% slug api_dropdowns_multiselecttreeflatbindingdirective %}) directives.\n * @default false\n */\n this.filterable = false;\n /**\n * If `checkАll` is set to `true` and the checkboxes are enabled, a tri-state checkbox appears above the embedded treeview.\n * Clicking the checkbox checks or unchecks all enabled items of the treeview that are loaded.\n * @default false\n */\n this.checkAll = false;\n /**\n * A function which determines if a specific node has child nodes.\n */\n this.hasChildren = hasChildren;\n /**\n * A function which provides the child nodes for a given parent node.\n */\n this.fetchChildren = fetchChildren;\n /**\n * A callback which determines whether a tree node should be rendered as hidden. The utility .k-hidden class is used to hide the nodes.\n * Useful for custom filtering implementations.\n */\n this.isNodeVisible = isNodeVisible;\n /**\n * A function that is executed for each data item and determines if a specific item is disabled.\n */\n this.itemDisabled = itemDisabled;\n /**\n * A user-defined callback function which receives an array of selected data items and maps them to an array of tags.\n *\n * @param { Any[] } dataItems - The selected data items from the list.\n * @returns { Any[] } - The tags that will be rendered by the component.\n */\n this.tagMapper = tags => tags || [];\n /**\n * Fires each time the user focuses the MultiSelectTree.\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the MultiSelectTree gets blurred.\n */\n this.onBlur = new EventEmitter();\n /**\n * Fires each time the popup is about to open\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain closed.\n */\n this.open = new EventEmitter();\n /**\n * Fires after the popup has been opened.\n */\n this.opened = new EventEmitter();\n /**\n * Fires each time the popup is about to close\n * ([see example]({% slug openstate_multiselecttree %})).\n * This event is preventable. If you cancel it, the popup will remain open.\n */\n this.close = new EventEmitter();\n /**\n * Fires after the popup has been closed.\n */\n this.closed = new EventEmitter();\n /**\n * Fires when the user expands a node in the popup TreeView.\n */\n this.nodeExpand = new EventEmitter();\n /**\n * Fires when the user collapses a node in the popup TreeView.\n */\n this.nodeCollapse = new EventEmitter();\n /**\n * Fires each time the value is changed\n * ([see example](slug:events_multiselecttree)).\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires each time a tag is about to be removed([see examples]({% slug summarytagmode_multiselect %}#toc-notifying-on-removing-group-tags)).\n * This event is preventable. If you cancel it, the tag will not be removed.\n */\n this.removeTag = new EventEmitter();\n /**\n * Fires when the value of the built-in filter input element changes.\n */\n this.filterChange = new EventEmitter();\n /**\n * @hidden\n */\n this.filterStateChange = new EventEmitter();\n /**\n * @hidden\n */\n this.filter = '';\n /**\n * @hidden\n */\n this.checkedItems = [];\n /**\n * @hidden\n */\n this.showAfter = 0;\n /**\n * @hidden\n */\n this.allNodesHidden = false;\n this.tagListId = `k-${guid$1()}`;\n this.tagPrefix = \"tag-\" + guid$1();\n this.focusedTagIndex = undefined;\n this._value = [];\n this._tabindex = 0;\n this._popupSettings = DEFAULT_POPUP_SETTINGS;\n this._checkableSettings = DEFAULT_CHECKABLE_SETTINGS;\n this._isFocused = false;\n this._initiallyCheckedItems = [];\n this._size = 'medium';\n this._rounded = 'medium';\n this._fillMode = 'solid';\n this._searchableNodes = [];\n this._typedValue = '';\n this.printableCharacters = new Subject();\n this.subs = new Subscription();\n this.lastAction = 'check';\n this.onTouchedCallback = noop;\n this.onChangeCallback = noop;\n this.direction = localization.rtl ? 'rtl' : 'ltr';\n this.subscribeEvents();\n this.subscribeFocusEvents();\n }\n get isDisabled() {\n return this.disabled;\n }\n get hostAriaAutocomplete() {\n return this.filterable ? 'list' : null;\n }\n get isLoading() {\n return this.loading;\n }\n get hostAriaInvalid() {\n return this.formControl ? this.formControl.invalid.toString() : null;\n }\n get isBusy() {\n return this.loading ? 'true' : null;\n }\n get id() {\n return this.focusableId;\n }\n get hostTabIndex() {\n return this.tabindex;\n }\n get isReadonly() {\n return this.readonly ? '' : null;\n }\n get ariaDescribedBy() {\n return this.tagListId;\n }\n get ariaActiveDescendant() {\n return this.focusedTagId;\n }\n /**\n * @hidden\n */\n get formControl() {\n const ngControl = this.injector.get(NgControl, null);\n return ngControl?.control || null;\n }\n /**\n * @hidden\n */\n onFilterChange(text) {\n if (this.filterable) {\n this.filterChange.emit(text);\n }\n }\n /**\n * @hidden\n */\n onExpand() {\n this._searchableNodes = getSearchableItems(this.treeViewId, this.actionSheet.element.nativeElement);\n this.isActionSheetExpanded = true;\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.isActionSheetExpanded = false;\n }\n /**\n * Sets the subtitle of the ActionSheet that is rendered instead of the Popup when using small screen devices.\n * By default the ActionSheet subtitle uses the text provided for the `placeholder` of the AutoComplete.\n */\n set subtitle(_subtitle) {\n this._subtitle = _subtitle;\n }\n get subtitle() {\n return this._subtitle || this.placeholder;\n }\n /**\n * @hidden\n */\n get isAdaptiveModeEnabled() {\n return this.adaptiveMode === 'auto';\n }\n /**\n * @hidden\n */\n handleKeydown(event, input) {\n if (event.target === this.filterInput?.nativeElement && (event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight)) {\n return;\n }\n if (input) {\n event.stopImmediatePropagation();\n }\n const deleteTag = this.isWrapperActive && event.keyCode === Keys.Backspace && this.tags.length > 0;\n if (deleteTag) {\n this.handleBackspace();\n return;\n }\n if (this.disabled || this.readonly) {\n return;\n }\n if (!this.isFilterActive && isLetter(event.key) && !this.actionSheetSearchBar?.onFocus) {\n this.printableCharacters.next(event.key);\n }\n const eventData = event;\n const action = this.navigationService.process({\n originalEvent: eventData,\n openOnSpace: !this.isOpen,\n closeOnSpace: false\n });\n if (action === NavigationAction.Open) {\n eventData.preventDefault();\n }\n if (this.isOpen && action === NavigationAction.Enter) {\n const spaceKeyDownEvent = new KeyboardEvent('keydown', {\n 'key': ' ',\n 'code': 'Space',\n 'keyCode': 32,\n 'which': 32\n });\n this.treeview?.element.nativeElement.dispatchEvent(spaceKeyDownEvent);\n }\n }\n /**\n * @hidden\n */\n get actionSheet() {\n return this.responsiveRendererComponent?.actionSheet;\n }\n /**\n * @hidden\n */\n get actionSheetSearchBar() {\n return this.responsiveRendererComponent?.actionSheetSearchBar;\n }\n /**\n * @hidden\n */\n get isAdaptive() {\n return this.isAdaptiveModeEnabled && this.windowSize !== 'large';\n }\n set treeview(treeview) {\n this._treeview = treeview;\n if (treeview) {\n // If filtering is enabled, focus the TreeView on mobile devices instead of the filter input\n if (this.isFocused && !this.filterable && !this.checkAll || this.touchEnabled) {\n treeview.focus();\n }\n /**\n * the treeview animations are initially disabled (we don't want expand animations during popup opening)\n * re-enables the animations for user interaction\n * The Promise is required to properly change the `animate` property when\n * the popup is appended to a container and opened upon initialization.\n * Otherwise, the \"Expression has changed...\" type error will be thrown.\n */\n Promise.resolve(null).then(() => this.treeview.animate = true);\n }\n }\n get treeview() {\n return this._treeview;\n }\n /**\n * Specifies the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.\n */\n set tabindex(value) {\n const providedTabIndex = parseNumber(value);\n const defaultTabIndex = 0;\n this._tabindex = !isNaN(providedTabIndex) ? providedTabIndex : defaultTabIndex;\n }\n get tabindex() {\n return this.disabled ? -1 : this._tabindex;\n }\n /**\n * Sets the size of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `none`\n *\n */\n set size(size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.renderer.removeClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n if (size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', newSize));\n }\n this._size = newSize;\n }\n get size() {\n return this._size;\n }\n /**\n * Sets the border radius of the component.\n *\n * The possible values are:\n * * `small`\n * * `medium` (default)\n * * `large`\n * * `full`\n * * `none`\n *\n */\n set rounded(rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.renderer.removeClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n if (rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(newRounded));\n }\n this._rounded = newRounded;\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Sets the fillMode of the component.\n *\n * The possible values are:\n * * `flat`\n * * `solid` (default)\n * * `outline`\n * * `none`\n *\n */\n set fillMode(fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this.renderer.removeClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n if (fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', newFillMode));\n }\n this._fillMode = newFillMode;\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Configures the popup of the MultiSelectTree.\n *\n * The available options are:\n * - `animate: Boolean`—Controls the popup animation. By default, the open and close animations are enabled.\n * - `width: Number | String`—Sets the width of the popup container. By default, the width of the host element is used. If set to `auto`, the component automatically adjusts the width of the popup and no item labels are wrapped.\n * - `height: Number`—Sets the height of the popup container.\n * - `popupClass: String`—Specifies a list of CSS classes that are used to style the popup.\n * - `appendTo: \"root\" | \"component\" | ViewContainerRef`—Specifies the component to which the popup will be appended.\n */\n set popupSettings(settings) {\n this._popupSettings = Object.assign({}, DEFAULT_POPUP_SETTINGS, settings);\n // `detectChanges` needed, otherwise upon value initialization and `appendTo` property\n // an error is thrown => ExpressionChangedAfterItHasBeenCheckedError\n this.cdr.detectChanges();\n }\n get popupSettings() {\n return this._popupSettings;\n }\n /**\n * Defines the checkable settings of the MultiSelecTree nodes.\n * If no value is provided, the default [`CheckableSettings`]({% slug api_dropdowns_multiselecttreecheckablesettings %}) are applied.\n */\n set checkableSettings(settings) {\n this._checkableSettings = Object.assign({}, DEFAULT_CHECKABLE_SETTINGS, settings);\n }\n get checkableSettings() {\n return this._checkableSettings;\n }\n /**\n * Sets the data of the MultiSelectTree.\n *\n * > The data has to be provided in an array-like list with objects.\n */\n set data(data) {\n this._nodes = data;\n this.setState();\n if (this.isContentInit) {\n // Needed for when the data is loaded later/asynchronously because it would not exist on ngContentInit\n this.registerLookupItems(data);\n }\n }\n get data() {\n return this._nodes;\n }\n /**\n * Sets the value of the MultiSelectTree.\n * It can either be of the primitive (string, numbers) or of the complex (objects) type.\n * To define the type, use the `valuePrimitive` option.\n *\n */\n set value(value) {\n this._value = value ? value : [];\n this.setState();\n }\n get value() {\n return this._value;\n }\n /**\n * Keeps the current `dataItems` object in order to resolve selection.\n * Needs to be provided when when programmatically setting a `value` and `valuePrimitive` is set to `true`.\n */\n set dataItems(items) {\n this._dataItems = (items || []).map((dataItem, index) => {\n if (hasProps(dataItem, ['dataItem', 'index', 'level'])) {\n return dataItem;\n }\n const level = this.valueDepth[index] || 0;\n const key = valueFrom({\n dataItem,\n level\n }, this.valueField) + '_' + (this.isHeterogeneous ? this.valueDepth[index] : 0);\n return {\n dataItem,\n index: null,\n level,\n key\n };\n });\n this.setState();\n }\n get dataItems() {\n return this._dataItems || this.value.map((value, index) => {\n const level = this.valueDepth[index] || 0;\n const key = valueFrom({\n dataItem: value,\n level\n }, this.valueField) + '_' + (this.isHeterogeneous ? this.valueDepth[index] : 0);\n return {\n dataItem: value,\n index: null,\n level,\n key\n };\n });\n }\n /**\n * Sets the height of the options list in the popup. By default, `listHeight` is 200px.\n *\n * > The `listHeight` property affects only the list of options and not the whole popup container.\n * > To set the height of the popup container, use `popupSettings.height`.\n *\n * > When using `adaptiveMode` and the screen size is `small` or `medium` the `listHeight` property is set to null.\n */\n set listHeight(_listHeight) {\n this._listHeight = _listHeight;\n }\n get listHeight() {\n if (this.isAdaptive) {\n return;\n }\n return this._listHeight;\n }\n /**\n * @hidden\n */\n get focusedTagId() {\n if (!isPresent(this.focusedTagIndex) || this.isOpen) {\n return null;\n }\n return this.tagPrefix + '-' + this.focusedTagIndex;\n }\n set isFocused(isFocused) {\n this.renderer[isFocused ? 'addClass' : 'removeClass'](this.wrapper.nativeElement, 'k-focus');\n this._isFocused = isFocused;\n }\n get isFocused() {\n return this._isFocused;\n }\n /**\n * Returns the current open state. Returns `true` if the popup or actionSheet is open.\n */\n get isOpen() {\n return isTruthy(isPresent(this.popupRef) || this.isActionSheetExpanded);\n }\n get width() {\n const wrapperWidth = this.wrapper.nativeElement.offsetWidth;\n const width = this.popupSettings.width || wrapperWidth;\n const minWidth = isNaN(wrapperWidth) ? wrapperWidth : `${wrapperWidth}px`;\n const maxWidth = isNaN(width) ? width : `${width}px`;\n return {\n min: minWidth,\n max: maxWidth\n };\n }\n get height() {\n const popupHeight = this.popupSettings.height;\n return isPresent(popupHeight) ? `${popupHeight}px` : 'auto';\n }\n get appendTo() {\n const {\n appendTo\n } = this.popupSettings;\n if (!appendTo || appendTo === 'root') {\n return undefined;\n }\n return appendTo === 'component' ? this.container : appendTo;\n }\n /**\n * @hidden\n */\n get popupContainerClasses() {\n const containerClasses = ['k-multiselecttree-popup'];\n if (this.popupSettings.popupClass) {\n containerClasses.push(this.popupSettings.popupClass);\n }\n return containerClasses;\n }\n /**\n * @hidden\n *\n * Alias for `data`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives.\n */\n set nodes(nodes) {\n this.data = nodes;\n }\n get nodes() {\n return this.data;\n }\n /**\n * @hidden\n *\n * Alias for `fetchChildren`. Used for compatibility with the `DataBoundComponent` interface.\n * Required for the data-binding directives\n */\n set children(callback) {\n this.fetchChildren = callback;\n }\n get children() {\n return this.fetchChildren;\n }\n /**\n * @hidden\n *\n * Alias for `nodeExpand`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get expand() {\n return this.nodeExpand;\n }\n /**\n * @hidden\n *\n * Alias for `nodeCollapse`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n get collapse() {\n return this.nodeCollapse;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeExpanded`. Used for compatibility with the `ExpandableComponent` interface.\n * Required for the expand-directive.\n */\n set isExpanded(callback) {\n this.isNodeExpanded = callback;\n }\n get isExpanded() {\n return this.isNodeExpanded;\n }\n /**\n * @hidden\n *\n * Alias for `isNodeVisible`. Used for compatibility with the `DataBoundComponent` interface.\n * The `DataBoundComponent` interface is used in the data-binding directives.\n */\n set isVisible(callback) {\n this.isNodeVisible = callback;\n }\n get isVisible() {\n return this.isNodeVisible;\n }\n get isTagFocused() {\n return !this.isOpen && this.focusedTagIndex !== undefined;\n }\n get isTreeViewActive() {\n return this.treeview && this.treeview.isActive;\n }\n get isWrapperActive() {\n return document.activeElement === this.wrapper.nativeElement;\n }\n get isFilterActive() {\n return this.filterInput && document.activeElement === this.filterInput.nativeElement;\n }\n get isCheckAllActive() {\n return this.checkAllInput && document.activeElement === this.checkAllInput.nativeElement;\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.isAdaptiveModeEnabled && this.windowSize !== windowSize()) {\n if (this.isOpen) {\n this.togglePopup(false);\n }\n this.windowSize = windowSize();\n }\n if (this.isOpen && !this.isActionSheetExpanded) {\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n }\n }\n ngOnInit() {\n this.subs.add(this.printableCharacters.pipe(tap(char => {\n this._typedValue += char;\n const itemToFocus = this._searchableNodes.find(node => {\n return node.text.toLowerCase().indexOf(this._typedValue) === 0;\n });\n this.treeview.focus(itemToFocus?.index);\n }), debounceTime(1000)).subscribe(() => {\n this._typedValue = '';\n }));\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'tabindex');\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', String(this.isOpen));\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n this.cdr.markForCheck();\n }));\n this.setComponentClasses();\n this._initiallyCheckedItems = [...this.checkedItems];\n }\n ngAfterViewInit() {\n this.windowSize = windowSize();\n this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'click', this.handleClick.bind(this)));\n this.subs.add(this.renderer.listen(this.wrapper.nativeElement, 'keydown', this.handleKeydown.bind(this)));\n if (this.actionSheet && isDocumentAvailable()) {\n // The following syntax is used as it does not violate CSP compliance\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-height', '60vh');\n this.actionSheet.element.nativeElement.style.setProperty('--kendo-actionsheet-max-height', 'none');\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.destroyPopup();\n this.unsubscribeEvents();\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged(['textField', 'valueField', 'valuePrimitive'], changes, false)) {\n this.isHeterogeneous = this.valueField && isArray(this.valueField);\n this.setState();\n }\n if (anyChanged(['valueDepth', 'value', 'dataItems'], changes, false)) {\n if (changes['value'] && !changes['dataItems'] && !this.valuePrimitive) {\n // Update the dataItems if the value is updated programmatically (non-primitive values only)\n // In the primitive case, the client should update the dataItems as well\n this.dataItems = this.value;\n } else {\n // Re-map the dataItems because `valueDepth` is not yet available when the check directive parses the items\n this.dataItems = this.dataItems.map((item, index) => ({\n ...item,\n key: valueFrom({\n dataItem: item.dataItem,\n index: null,\n level: this.valueDepth[index] || 0\n }, this.valueField) + '_' + (this.isHeterogeneous ? this.valueDepth[index] : 0),\n level: this.valueDepth[index] || 0\n }));\n }\n }\n if (anyChanged(['data', 'children', 'hasChildren', 'loadOnDemand', 'valueField'], changes, true) && !this.loadOnDemand) {\n this.lookup.reset();\n this.registerLookupItems(this.data);\n }\n }\n /**\n * @hidden\n */\n ngAfterContentChecked() {\n this.verifySettings();\n if (this.data?.length > 0 && this.popupRef) {\n this.allNodesHidden = this.areNodesHidden(this.data);\n }\n }\n /**\n * @hidden\n */\n applyValue() {\n this.value = this._tempValue;\n this._initiallyCheckedItems = [...this.checkedItems];\n this.emitValueChange(this.value);\n this.setTags();\n this.toggle(false);\n }\n /**\n * @hidden\n */\n cancelValue() {\n this.checkedItems = [...this._initiallyCheckedItems];\n this.togglePopup(false);\n }\n ngAfterContentInit() {\n this.isContentInit = true;\n // Still need to keep the call of 'registerLookupItems()' from ngAfterContentInit in the cases when the data is passed initially\n // The call is execute here because we have to make sure it happens after all input properties are loaded (not the case in the data setter initially)\n this.registerLookupItems(this.data);\n }\n /**\n * @hidden\n *\n * Used by the kendo-floatinglabel component to determine if the floating label\n * should be rendered inside the input when the component is not focused.\n */\n isEmpty() {\n return !this.placeholder && (!isPresent(this.value) || this.value.length === 0);\n }\n /**\n * Focuses the MultiSelectTree.\n */\n focus() {\n if (!this.disabled) {\n this.wrapper.nativeElement.focus();\n }\n }\n /**\n * Blurs the MultiSelectTree.\n */\n blur() {\n if (!this.disabled) {\n this.wrapper.nativeElement.blur();\n }\n }\n /**\n * Focuses a specific item of the MultiSelectTree based on a provided index in the format of `1_1`.\n * The targeted item should be expanded in order for it to be focused.\n * If null or invalid index is provided the focus will be set on the first item.\n */\n focusItemAt(index) {\n if (this.treeview) {\n const lookup = this.treeview.itemLookup(index);\n const isItemDisabled = !isPresent(lookup) || this.treeview.isDisabled(lookup.item.dataItem, lookup.item.index);\n if (!isItemDisabled) {\n this.treeview.focus(index);\n }\n }\n }\n /**\n * Resets the value of the MultiSelectTree.\n * If you use the `reset` method to clear the value of the component,\n * the model will not update automatically and the `valueChange` event will not be fired.\n */\n reset() {\n this.value = [];\n this.dataItems = [];\n this.valueDepth = [];\n }\n /**\n * Toggles the visibility of the popup or actionSheet\n * ([see example]({% slug openstate_multiselecttree %})).\n * If you use the `toggle` method to open or close the popup, the `open` and `close` events will not be fired.\n *\n * @param open - The state of the popup.\n */\n toggle(open) {\n // The Promise is required to open the popup on load.\n // Otherwise, the \"ViewContainerRef not found...\" error will be thrown.\n Promise.resolve(null).then(() => {\n const shouldOpen = isPresent(open) ? open : !isPresent(this.popupRef);\n this.destroyPopup();\n if (shouldOpen) {\n this.createPopup();\n }\n });\n }\n /**\n * @hidden\n */\n handleFocus(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n if (!this.isFocused) {\n this.isFocused = true;\n if (hasObservers(this.onFocus)) {\n this._zone.run(() => {\n this.onFocus.emit();\n });\n }\n // Re-focus the treeview if `close` is prevented\n if (this.isOpen && this.treeview) {\n if (this.lastNodeOnFocus) {\n this.lastNodeOnFocus.setAttribute('tabindex', '0');\n }\n this.treeview.focus();\n }\n }\n }\n /**\n * @hidden\n */\n handleBlur(e) {\n if (!this.isActionSheetExpanded) {\n const relatedTarget = e && e.relatedTarget;\n if (this.wrapper.nativeElement.contains(relatedTarget) || this.isOpen && this.popupRef.popupElement.contains(relatedTarget)) {\n return;\n }\n this.isFocused = false;\n this.togglePopup(false);\n //this is needed for Ang 18 not to throw ng0100 error when closing the popup\n //the component could be refactored using kendoDropDownSharedEvents directive\n //once we are able to debug against Angular 18\n this.cdr.markForCheck();\n if (hasObservers(this.onBlur) || isUntouched(this.wrapper.nativeElement) || this.formControl?.updateOn === 'blur') {\n this._zone.run(() => {\n this.onBlur.emit();\n this.onTouchedCallback();\n });\n }\n }\n }\n /**\n * @hidden\n */\n handleNodeClick(node) {\n if (!this.isFocused) {\n // Re-focus the MultiSelectTree when popup close is prevented and a node is clicked\n // On click the focus should be on the clicked element which is why we need to update the lastNodeOnFocus\n const parent = node.originalEvent.target.parentElement.parentElement;\n this.lastNodeOnFocus = parent;\n this.focus();\n }\n }\n /**\n * @hidden\n */\n togglePopup(open) {\n const isDisabled = this.disabled || this.readonly;\n const sameState = this.isOpen === open;\n this._zone.run(() => {\n this.focusedTagIndex = undefined;\n });\n if (isDisabled || sameState) {\n return;\n }\n const togglePrevented = this.triggerPopupEvents(open);\n if (!togglePrevented) {\n if (open) {\n this.createPopup();\n } else {\n this.destroyPopup();\n }\n } else {\n this.removeTreeViewFromTabOrder();\n }\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.localization.get(key);\n }\n /**\n * @hidden\n */\n handleCheckedItemsChange(items) {\n this.valueDepth = items.map(item => item.level);\n this.lastAction = items.length > this.dataItems.length ? 'check' : 'uncheck';\n this.dataItems = items.slice();\n this.updateValue(this.dataItems);\n }\n /**\n * @hidden\n */\n handleRemoveTag({\n tag,\n index\n }) {\n if (this.disabled || this.readonly) {\n return;\n }\n const eventArgs = new RemoveTagEvent(tag);\n this.removeTag.emit(eventArgs);\n if (eventArgs.isDefaultPrevented()) {\n return;\n }\n // Remove tags based on their position index\n if (tag instanceof Array) {\n // Remove group tag\n this.dataItems = this.dataItems.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i < this.showAfter || this.disabledIndices.has(i));\n } else if (this.loadOnDemand) {\n // Remove single tag when the child items are fetched on demand\n this.dataItems = this.dataItems.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n this.valueDepth = this.valueDepth.filter((_item, i) => i !== index || this.disabledIndices.has(i));\n } else {\n // Remove single tag when the child items are pre-fetched\n const dataItem = this.dataItems[index];\n const itemKey = dataItem.key;\n const lookup = this.lookup.itemLookup(itemKey);\n const pendingCheck = [lookup.item];\n if (this.checkableSettings.checkChildren) {\n fetchDescendentNodes(lookup).forEach(lookup => pendingCheck.push(lookup.item));\n pendingCheck.push(...this.removeParents(lookup.parent));\n }\n const keysToRemove = pendingCheck.map(item => item.key);\n this.dataItems = this.dataItems.filter((_item, i) => {\n return !keysToRemove.includes(_item.key) || this.disabledIndices.has(i);\n });\n this.valueDepth = this.dataItems.map(i => i.level);\n }\n this.updateValue(this.dataItems);\n if (!this.isFocused) {\n this.focus();\n }\n }\n /**\n * @hidden\n */\n handleTagMapperChange(showAfter) {\n this.showAfter = parseNumber(showAfter);\n this.setTags();\n }\n /**\n * @hidden\n */\n clearAll(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n this.focus();\n this.value = this.value.filter((_item, index) => this.disabledIndices.has(index));\n this.dataItems = this.dataItems.filter((_item, index) => this.disabledIndices.has(index));\n this.valueDepth = this.valueDepth.filter((_depth, index) => this.disabledIndices.has(index));\n this.emitValueChange(this.value);\n }\n /**\n * @hidden\n */\n writeValue(value) {\n if (!this.valuePrimitive && isPresent(value)) {\n this.dataItems = value;\n }\n if (!isPresent(value) && isPresent(this.value)) {\n this.dataItems = null;\n }\n this.value = value || [];\n }\n /**\n * @hidden\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * @hidden\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * @hidden\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n handleFilterInputChange(input) {\n this.filter = input.value;\n this.filterChange.next(input.value);\n }\n /**\n * @hidden\n */\n get filterInputClasses() {\n return `${this.size ? getSizeClass('input', this.size) : ''} ${this.fillMode ? 'k-input-' + this.fillMode : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''}`;\n }\n /**\n * @hidden\n */\n get checkAllCheckboxClasses() {\n return `${this.size ? getSizeClass('checkbox', this.size) : ''}`;\n }\n /**\n * @hidden\n */\n toggleCheckAll() {\n this.checkAllInput.nativeElement.focus();\n this.checkAllInput.nativeElement.click();\n }\n verifySettings() {\n if (!isDevMode()) {\n return;\n }\n if (!isPresent(this.valueField) || !isPresent(this.textField)) {\n throw new Error(MultiSelectTreeMessages.textAndValue);\n }\n if (!isArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.array);\n }\n if (this.value.length > 0) {\n if (this.valuePrimitive && this.value.some(item => isObject(item))) {\n throw new Error(MultiSelectTreeMessages.primitive);\n }\n const isEveryDataItemObject = this.dataItems.every(item => isObject(item.dataItem));\n if (this.valuePrimitive && !isArray(this.dataItems)) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && !isEveryDataItemObject) {\n throw new Error(MultiSelectTreeMessages.dataItems);\n }\n if (this.valuePrimitive && this.dataItems.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.dataItemsLength);\n }\n if (!this.valuePrimitive && !isObjectArray(this.value)) {\n throw new Error(MultiSelectTreeMessages.object);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && !isArray(this.valueDepth)) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length === 0) {\n throw new Error(MultiSelectTreeMessages.valueDepth);\n }\n if ((isArray(this.valueField) || isArray(this.textField)) && this.valueDepth.length !== this.value.length) {\n throw new Error(MultiSelectTreeMessages.valueDepthLength);\n }\n }\n }\n areNodesHidden(nodes) {\n return nodes.every((node, index) => !this.isVisible(node, String(index)));\n }\n emitValueChange(value) {\n this.onChangeCallback(value);\n this.valueChange.emit(value);\n }\n triggerPopupEvents(open) {\n const eventArgs = new PreventableEvent();\n if (hasObservers(this.open) || hasObservers(this.close)) {\n this._zone.run(() => {\n if (open) {\n this.open.emit(eventArgs);\n } else {\n this.close.emit(eventArgs);\n }\n });\n }\n return eventArgs.isDefaultPrevented();\n }\n createPopup() {\n this.windowSize = windowSize();\n if (this.isAdaptive) {\n this.openActionSheet();\n this.cdr.detectChanges();\n return;\n }\n const horizontalAlign = this.direction === \"rtl\" ? \"right\" : \"left\";\n const anchorPosition = {\n horizontal: horizontalAlign,\n vertical: 'bottom'\n };\n const popupPosition = {\n horizontal: horizontalAlign,\n vertical: 'top'\n };\n this.popupRef = this.popupService.open({\n anchor: this.wrapper,\n appendTo: this.appendTo,\n anchorAlign: anchorPosition,\n content: this.popupTemplate,\n popupAlign: popupPosition,\n positionMode: 'absolute',\n popupClass: this.popupContainerClasses\n });\n const popupWrapper = this.popupRef.popupElement;\n const {\n min,\n max\n } = this.width;\n if (!this.appendTo) {\n this.renderer.setAttribute(popupWrapper, 'role', 'region');\n this.renderer.setAttribute(popupWrapper, 'aria-label', this.messageFor('popupLabel'));\n }\n popupWrapper.style.minWidth = min;\n popupWrapper.style.width = max;\n popupWrapper.style.height = this.height;\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-controls', this.treeViewId);\n this.renderer.setAttribute(popupWrapper, 'dir', this.direction);\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'true');\n this.popupRef.popupOpen.subscribe(() => {\n this.cdr.detectChanges();\n this.opened.emit();\n this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);\n });\n this.popupRef.popupClose.subscribe(() => {\n if (hasObservers(this.closed)) {\n this._zone.run(() => {\n this.closed.emit();\n });\n }\n });\n }\n destroyPopup() {\n if (this.isActionSheetExpanded) {\n this.closeActionSheet();\n }\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.renderer.setAttribute(this.wrapper.nativeElement, 'aria-expanded', 'false');\n this.renderer.removeAttribute(this.wrapper.nativeElement, 'aria-controls');\n if (this.filter !== \"\") {\n this.filter = \"\";\n this.allNodesHidden = false;\n if (hasObservers(this.filterChange)) {\n this._zone.run(() => {\n this.filterChange.emit(\"\");\n });\n }\n }\n }\n }\n handleClick(e) {\n // The check is needed otherwise when appended to the component, the popup reopens on click\n // https://github.com/telerik/kendo-angular/issues/3738\n if (this.popupRef && this.popupRef.popupElement.contains(e.target) || this.isActionSheetExpanded) {\n return;\n }\n this.togglePopup(!this.isOpen);\n }\n subscribeEvents() {\n [this.navigationService.open.subscribe(event => {\n event.originalEvent.preventDefault();\n this.togglePopup(true);\n }), this.navigationService.enter.pipe(tap(event => event.originalEvent.preventDefault())).subscribe(() => this.togglePopup(true)), merge(this.navigationService.close, this.navigationService.esc).subscribe(event => {\n event.originalEvent.preventDefault();\n this.focus();\n this.togglePopup(false);\n }), this.navigationService.tab.subscribe(this.handleTabKey.bind(this)), this.navigationService.up.subscribe(this.handleUpKey.bind(this)), this.navigationService.down.subscribe(this.handleDownKey.bind(this)), this.navigationService.left.pipe(filter(() => !this.isTreeViewActive)).subscribe(this.direction === 'rtl' ? this.handleRightKey.bind(this) : this.handleLeftKey.bind(this)), this.navigationService.right.pipe(filter(() => !this.isTreeViewActive)).subscribe(this.direction === 'rtl' ? this.handleLeftKey.bind(this) : this.handleRightKey.bind(this)), this.navigationService.home.pipe(filter(() => !this.isOpen)).subscribe(this.handleHome.bind(this)), this.navigationService.end.pipe(filter(() => !this.isOpen)).subscribe(this.handleEnd.bind(this)), this.navigationService.backspace.pipe(filter(() => this.isTagFocused)).subscribe(this.handleBackspace.bind(this)), this.navigationService.delete.pipe(filter(() => this.isTagFocused)).subscribe(this.handleDelete.bind(this))].forEach(sub => this.subs.add(sub));\n }\n subscribeFocusEvents() {\n if (isDocumentAvailable()) {\n this.handleFocus = this.handleFocus.bind(this);\n this.handleDocumentBlur = this.handleDocumentBlur.bind(this);\n this._zone.runOutsideAngular(() => {\n const useCapture = true;\n document.addEventListener('focus', this.handleFocus, useCapture);\n document.addEventListener('blur', this.handleDocumentBlur, useCapture);\n });\n }\n }\n unSubscribeFocusEvents() {\n if (isDocumentAvailable()) {\n const useCapture = true;\n document.removeEventListener('focus', this.handleFocus, useCapture);\n document.removeEventListener('blur', this.handleDocumentBlur, useCapture);\n }\n }\n handleDocumentBlur(event) {\n if (event.target !== this.wrapper.nativeElement) {\n return;\n }\n event.stopImmediatePropagation();\n this.handleBlur(event);\n }\n handleTabKey() {\n if (!this.isActionSheetExpanded) {\n this.focus();\n }\n if (this.isOpen) {\n this.treeview.blur();\n this.removeTreeViewFromTabOrder();\n }\n }\n handleUpKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Prevent toggling the focus between the filterInput and the wrapper elements with `up` key\n if (this.isWrapperActive) {\n return;\n }\n const isFirstNodeActive = this.treeview['navigationService']['activeIndex'] === '0';\n // Current focus is on the filter input => should focus the wrapper\n if (this.filterable && this.isFilterActive) {\n this.focus();\n // Current focus is on the treeview first node => should focus the check all checkbox if enabled\n } else if (this.checkAll && !this.isCheckAllActive && isFirstNodeActive) {\n this.checkAllInput.nativeElement.focus();\n // Current focus is either on the check all checkbox or the treeview's first node\n // => should focus either the filter input (if enabled) or the wrapper\n } else if (this.isCheckAllActive || isFirstNodeActive) {\n if (this.filterable) {\n this.isActionSheetExpanded ? this.actionSheetSearchBar.focus() : this.filterInput.nativeElement.focus();\n } else {\n if (!this.isActionSheetExpanded) {\n this.focus();\n }\n }\n }\n }\n handleDownKey(event) {\n if (!this.treeview) {\n return;\n }\n event.originalEvent.preventDefault();\n // Current focus is on the wrapper => should focus the filter input\n if (this.filterable && this.isWrapperActive) {\n this.filterInput.nativeElement.focus();\n // Current focus is on the wrapper/filter input => should focus check all checkbox if enabled\n } else if (this.checkAll && (this.isWrapperActive || this.isFilterActive)) {\n this.checkAllInput.nativeElement.focus();\n // Should focus the treeview if filterable and check all are disabled\n } else if (!this.treeview.isActive) {\n this.treeview.focus();\n }\n this.focusedTagIndex = undefined;\n }\n handleRightKey(event) {\n event.originalEvent.preventDefault();\n const last = this.tags.length - 1;\n if (this.focusedTagIndex === last) {\n this.focusedTagIndex = undefined;\n } else if (this.focusedTagIndex < last) {\n this.focusedTagIndex++;\n } else if (!this.focusedTagIndex) {\n this.focusedTagIndex = 0;\n }\n }\n handleLeftKey(event) {\n event.originalEvent.preventDefault();\n if (this.focusedTagIndex === undefined || this.focusedTagIndex < 0) {\n this.focusedTagIndex = this.tags.length - 1;\n } else if (this.focusedTagIndex !== 0) {\n this.focusedTagIndex--;\n }\n }\n handleEnd(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = this.tags.length - 1;\n }\n handleHome(event) {\n event.originalEvent.preventDefault();\n this.focusedTagIndex = 0;\n }\n handleBackspace() {\n if (this.focusedTagIndex !== undefined) {\n this.handleDelete();\n } else {\n const tag = this.tags[this.tags.length - 1];\n const index = this.tags.length - 1;\n this.handleRemoveTag({\n tag,\n index\n });\n }\n }\n handleDelete() {\n const tag = this.tags[this.focusedTagIndex];\n const index = this.focusedTagIndex;\n this.handleRemoveTag({\n tag,\n index\n });\n if (this.focusedTagIndex === this.tags.length) {\n this.focusedTagIndex = undefined;\n }\n }\n unsubscribeEvents() {\n this.subs.unsubscribe();\n this.unSubscribeFocusEvents();\n }\n /**\n * Remove the `TreeView` from the tab order, otherwise a focus loop between the page elements will occur\n * and the user will not be able to tab to the rest of the browser elements\n */\n removeTreeViewFromTabOrder() {\n const nodes = this.treeview.element.nativeElement.querySelectorAll('li');\n nodes.forEach(item => {\n if (item.getAttribute('tabindex') === '0') {\n this.lastNodeOnFocus = item;\n this.lastNodeOnFocus.setAttribute('tabindex', '-1');\n }\n });\n }\n setState() {\n if (isPresent(this.dataItems) && isPresent(this.valueField)) {\n if (!this.isActionSheetExpanded) {\n this.setTags();\n }\n this.checkedItems = this.dataItems.slice();\n }\n this.cdr.markForCheck();\n }\n setTags() {\n const source = this.dataItems.map(item => item.dataItem);\n this.tags = this.tagMapper(source);\n this.disabledIndices = this.disabledItemsMapper();\n this.dataItems.sort((a, b) => this.tags.indexOf(a.dataItem) - this.tags.indexOf(b.dataItem));\n }\n updateValue(value) {\n const newValue = this.valuePrimitive ? value.map(item => valueFrom(item, this.valueField)) : value.map(item => item.dataItem);\n if (this.isActionSheetExpanded) {\n this._tempValue = newValue.slice();\n } else {\n this.value = newValue;\n this.emitValueChange(this.value);\n }\n }\n /**\n * @hidden\n */\n onChildrenLoaded() {\n setTimeout(() => {\n if (this.popupRef) {\n this._searchableNodes = getSearchableItems(this.treeViewId, this.popupRef.popupElement);\n }\n if (this.isActionSheetExpanded) {\n this._searchableNodes = getSearchableItems(this.treeViewId, this.actionSheet.element.nativeElement);\n }\n });\n }\n /**\n * @hidden\n *\n * Determines which of the provided tags should be disabled and stores their position indices\n */\n disabledItemsMapper() {\n return new Set(this.dataItems.reduce((indices, item, index) => {\n if (this.itemDisabled(item.dataItem, item.index)) {\n indices.push(index);\n }\n return indices;\n }, []));\n }\n setComponentClasses() {\n if (this.size !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getSizeClass('input', this.size));\n }\n if (this.rounded !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getRoundedClass(this.rounded));\n }\n if (this.fillMode !== 'none') {\n this.renderer.addClass(this.wrapper.nativeElement, getFillModeClass('input', this.fillMode));\n }\n }\n removeParents(parent) {\n let currentParent = parent;\n const nodes = [];\n while (currentParent) {\n nodes.push(currentParent.item);\n currentParent = currentParent.parent;\n }\n return nodes;\n }\n /**\n * Creates an internal map of the available tree items to be used as a reference\n * to retrieve the item's children/parent and determine the checked sate\n */\n registerLookupItems(data, parentItem = null, levelIndex = 0) {\n if (!isPresent(data) || data.length === 0) {\n return;\n }\n const parentIndex = nodeIndex$1(parentItem);\n const treeItems = data.map(node => buildTreeItem(node, this.valueField, levelIndex));\n if (isPresent(parentItem)) {\n this.lookup.registerChildren(parentIndex, treeItems);\n }\n treeItems.forEach(item => {\n this.lookup.registerItem(item, parentItem);\n if (!this.loadOnDemand) {\n this.registerChildLookupItems(item, levelIndex);\n }\n });\n }\n registerChildLookupItems(item, levelIndex) {\n if (this.hasChildren(item.dataItem)) {\n this.children(item.dataItem).subscribe(children => {\n const index = this.isHeterogeneous ? levelIndex + 1 : 0;\n this.registerLookupItems(children, item, index);\n });\n }\n }\n closeActionSheet() {\n this.wrapper.nativeElement.focus();\n this.actionSheet.toggle(false);\n if (this.filterable) {\n this.actionSheetSearchBar.value = '';\n this.filterChange.emit('');\n }\n this.closed.emit();\n }\n openActionSheet() {\n this.windowSize = windowSize();\n this.actionSheet.toggle(true);\n this.title = setActionSheetTitle(this.wrapper, this.title);\n this.cdr.detectChanges();\n updateActionSheetAdaptiveAppearance(this.actionSheet, this.windowSize, this.renderer);\n this.cdr.detectChanges();\n this.opened.emit();\n this.filterable && this.actionSheetSearchBar.focus();\n }\n }\n MultiSelectTreeComponent.ɵfac = function MultiSelectTreeComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiSelectTreeComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.PopupService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(MultiSelectTreeLookupService));\n };\n MultiSelectTreeComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MultiSelectTreeComponent,\n selectors: [[\"kendo-multiselecttree\"]],\n contentQueries: function MultiSelectTreeComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NodeTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, NoDataTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, TagTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupTagTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nodeTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupTagTemplate = _t.first);\n }\n },\n viewQuery: function MultiSelectTreeComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ResponsiveRendererComponent, 5);\n i0.ɵɵviewQuery(_c10, 7);\n i0.ɵɵviewQuery(_c9, 7, ViewContainerRef);\n i0.ɵɵviewQuery(_c21, 5);\n i0.ɵɵviewQuery(_c22, 5);\n i0.ɵɵviewQuery(_c24, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.responsiveRendererComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.treeview = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterInput = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.checkAllInput = _t.first);\n }\n },\n hostVars: 22,\n hostBindings: function MultiSelectTreeComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-disabled\", ctx.isDisabled)(\"aria-autocomplete\", ctx.hostAriaAutocomplete)(\"aria-invalid\", ctx.hostAriaInvalid)(\"aria-busy\", ctx.isBusy)(\"id\", ctx.id)(\"dir\", ctx.direction)(\"tabindex\", ctx.hostTabIndex)(\"role\", ctx.role)(\"aria-haspopup\", ctx.ariaHasPopup)(\"readonly\", ctx.isReadonly)(\"aria-describedby\", ctx.ariaDescribedBy)(\"aria-activedescendant\", ctx.ariaActiveDescendant);\n i0.ɵɵclassProp(\"k-multiselecttree\", ctx.hostClasses)(\"k-input\", ctx.hostClasses)(\"k-disabled\", ctx.isDisabled)(\"k-loading\", ctx.isLoading)(\"k-readonly\", ctx.readonly);\n }\n },\n inputs: {\n adaptiveMode: \"adaptiveMode\",\n title: \"title\",\n subtitle: \"subtitle\",\n tabindex: \"tabindex\",\n size: \"size\",\n rounded: \"rounded\",\n fillMode: \"fillMode\",\n popupSettings: \"popupSettings\",\n checkableSettings: \"checkableSettings\",\n data: \"data\",\n value: \"value\",\n dataItems: \"dataItems\",\n textField: \"textField\",\n valueField: \"valueField\",\n valueDepth: \"valueDepth\",\n loading: \"loading\",\n placeholder: \"placeholder\",\n listHeight: \"listHeight\",\n disabled: \"disabled\",\n readonly: \"readonly\",\n valuePrimitive: \"valuePrimitive\",\n loadOnDemand: \"loadOnDemand\",\n focusableId: \"focusableId\",\n clearButton: \"clearButton\",\n filterable: \"filterable\",\n checkAll: \"checkAll\",\n hasChildren: \"hasChildren\",\n fetchChildren: \"fetchChildren\",\n isNodeExpanded: \"isNodeExpanded\",\n isNodeVisible: \"isNodeVisible\",\n itemDisabled: \"itemDisabled\",\n tagMapper: \"tagMapper\"\n },\n outputs: {\n onFocus: \"focus\",\n onBlur: \"blur\",\n open: \"open\",\n opened: \"opened\",\n close: \"close\",\n closed: \"closed\",\n nodeExpand: \"nodeExpand\",\n nodeCollapse: \"nodeCollapse\",\n valueChange: \"valueChange\",\n removeTag: \"removeTag\",\n filterChange: \"filterChange\"\n },\n exportAs: [\"kendoMultiSelectTree\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, NavigationService, DataService, DisabledItemsService, SelectionService, MultiSelectTreeLookupService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.multiselecttree'\n }, {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }, {\n provide: DataBoundComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }, {\n provide: ExpandableComponent,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }, {\n provide: KendoInput,\n useExisting: forwardRef(() => MultiSelectTreeComponent)\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 14,\n vars: 24,\n consts: () => {\n let i18n_25;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed in the popup when there are no items\n * @meaning kendo.multiselecttree.noDataText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_25 = goog.getMsg(\"NO DATA FOUND\");\n i18n_25 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_25;\n } else {\n i18n_25 = $localize`:kendo.multiselecttree.noDataText|The text displayed in the popup when there are no items:NO DATA FOUND`;\n }\n let i18n_26;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the clear button\n * @meaning kendo.multiselecttree.clearTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_26 = goog.getMsg(\"clear\");\n i18n_26 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_26;\n } else {\n i18n_26 = $localize`:kendo.multiselecttree.clearTitle|The title of the clear button:clear`;\n }\n let i18n_27;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text displayed for the check-all checkbox\n * @meaning kendo.multiselecttree.checkAllText\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_27 = goog.getMsg(\"Check all\");\n i18n_27 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_27;\n } else {\n i18n_27 = $localize`:kendo.multiselecttree.checkAllText|The text displayed for the check-all checkbox:Check all`;\n }\n let i18n_28;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text set as aria-label on the filter input\n * @meaning kendo.multiselecttree.filterInputLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_28 = goog.getMsg(\"Filter\");\n i18n_28 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_28;\n } else {\n i18n_28 = $localize`:kendo.multiselecttree.filterInputLabel|The text set as aria-label on the filter input:Filter`;\n }\n let i18n_29;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the popup element that contains the list of options when its role is 'region'\n * @meaning kendo.multiselecttree.popupLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_29 = goog.getMsg(\"Options list\");\n i18n_29 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_29;\n } else {\n i18n_29 = $localize`:kendo.multiselecttree.popupLabel|The label of the popup element that contains the list of options when its role is 'region':Options list`;\n }\n let i18n_30;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Apply button in the action sheet\n * @meaning kendo.multiselecttree.applyButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_30 = goog.getMsg(\"Apply\");\n i18n_30 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_30;\n } else {\n i18n_30 = $localize`:kendo.multiselecttree.applyButton|The text of the Apply button in the action sheet:Apply`;\n }\n let i18n_31;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Cancel button in the action sheet\n * @meaning kendo.multiselecttree.cancelButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_31 = goog.getMsg(\"Cancel\");\n i18n_31 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_DROPDOWNS_FESM2020_PROGRESS_KENDO_ANGULAR_DROPDOWNS_MJS_31;\n } else {\n i18n_31 = $localize`:kendo.multiselecttree.cancelButton|The text of the Cancel button in the action sheet:Cancel`;\n }\n return [[\"popupTemplate\", \"\"], [\"container\", \"\"], [\"sharedPopupActionSheetTemplate\", \"\"], [\"treeview\", \"\"], [\"filterInput\", \"\"], [\"checkAllInput\", \"\"], [\"kendoMultiSelectTreeLocalizedMessages\", \"\", \"noDataText\", i18n_25, \"clearTitle\", i18n_26, \"checkAllText\", i18n_27, \"filterInputLabel\", i18n_28, \"popupLabel\", i18n_29, \"applyButton\", i18n_30, \"cancelButton\", i18n_31], [1, \"k-input-values\", 3, \"removeTag\", \"size\", \"rounded\", \"fillMode\", \"id\", \"tags\", \"focused\", \"textField\", \"valueField\", \"valueDepth\", \"disabled\", \"tagPrefix\", \"template\", \"groupTemplate\", \"disabledIndices\"], [1, \"k-input-inner\", \"k-readonly\"], [\"class\", \"k-input-value-text\", 4, \"ngIf\"], [\"class\", \"k-clear-value\", \"role\", \"button\", \"tabindex\", \"-1\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"k-icon k-i-loading k-input-loading-icon\", 4, \"ngIf\"], [3, \"closePopup\", \"onExpand\", \"onCollapse\", \"textInputChange\", \"onApply\", \"onCancel\", \"sharedPopupActionSheetTemplate\", \"isActionSheetExpanded\", \"title\", \"showTextInput\", \"showActionButtons\", \"subtitle\"], [3, \"resize\", 4, \"ngIf\"], [1, \"k-input-value-text\"], [\"role\", \"button\", \"tabindex\", \"-1\", 1, \"k-clear-value\", 3, \"click\"], [\"name\", \"x\", 1, \"k-icon\", 3, \"svgIcon\"], [1, \"k-icon\", \"k-i-loading\", \"k-input-loading-icon\"], [4, \"ngTemplateOutlet\"], [\"class\", \"k-list-filter\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"k-check-all\", 4, \"ngIf\"], [\"kendoMultiSelectTreeCheckable\", \"\", 3, \"keydown\", \"nodeClick\", \"expand\", \"collapse\", \"checkedItemsChange\", \"childrenLoaded\", \"size\", \"nodes\", \"animate\", \"isHeterogeneous\", \"checkable\", \"checkedItems\", \"valueField\", \"textField\", \"children\", \"hasChildren\", \"isExpanded\", \"isDisabled\", \"nodeTemplate\", \"loadOnDemand\", \"filter\", \"isVisible\", \"kendoEventsOutsideAngular\", \"scope\"], [\"class\", \"k-no-data\", 4, \"ngIf\"], [1, \"k-list-filter\"], [1, \"k-textbox\", \"k-input\", 3, \"ngClass\"], [1, \"k-input-prefix\"], [\"name\", \"search\", 1, \"k-icon\", 3, \"svgIcon\"], [\"role\", \"searchbox\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-input-inner\", 3, \"input\", \"keydown\", \"filterInput\", \"value\", \"kendoEventsOutsideAngular\", \"scope\"], [3, \"templateContext\"], [1, \"k-check-all\"], [1, \"k-checkbox-wrap\"], [\"type\", \"checkbox\", \"role\", \"checkbox\", \"tabindex\", \"0\", \"aria-disabled\", \"false\", \"aria-readonly\", \"false\", 1, \"k-checkbox\", 3, \"checkedItemsChange\", \"keydown\", \"checkAll\", \"ngClass\", \"treeview\", \"checkedItems\", \"valueField\", \"lastAction\", \"kendoEventsOutsideAngular\", \"scope\"], [1, \"k-checkbox-label\", 3, \"click\", \"mousedown\"], [1, \"k-no-data\"], [3, \"ngIf\", \"templateContext\"], [3, \"ngIf\"], [3, \"resize\"]];\n },\n template: function MultiSelectTreeComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 6);\n i0.ɵɵelementStart(1, \"kendo-taglist\", 7);\n i0.ɵɵlistener(\"removeTag\", function MultiSelectTreeComponent_Template_kendo_taglist_removeTag_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleRemoveTag($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"span\", 8);\n i0.ɵɵtemplate(3, MultiSelectTreeComponent_span_3_Template, 2, 1, \"span\", 9);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, MultiSelectTreeComponent_span_4_Template, 2, 2, \"span\", 10)(5, MultiSelectTreeComponent_span_5_Template, 1, 0, \"span\", 11)(6, MultiSelectTreeComponent_ng_template_6_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementContainer(8, null, 1);\n i0.ɵɵelementStart(10, \"responsive-renderer\", 12);\n i0.ɵɵlistener(\"closePopup\", function MultiSelectTreeComponent_Template_responsive_renderer_closePopup_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.togglePopup(false));\n })(\"onExpand\", function MultiSelectTreeComponent_Template_responsive_renderer_onExpand_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onExpand());\n })(\"onCollapse\", function MultiSelectTreeComponent_Template_responsive_renderer_onCollapse_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onCollapse());\n })(\"textInputChange\", function MultiSelectTreeComponent_Template_responsive_renderer_textInputChange_10_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onFilterChange($event));\n })(\"onApply\", function MultiSelectTreeComponent_Template_responsive_renderer_onApply_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.applyValue());\n })(\"onCancel\", function MultiSelectTreeComponent_Template_responsive_renderer_onCancel_10_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.cancelValue());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(11, MultiSelectTreeComponent_ng_template_11_Template, 7, 28, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor)(13, MultiSelectTreeComponent_kendo_resize_sensor_13_Template, 1, 0, \"kendo-resize-sensor\", 13);\n }\n if (rf & 2) {\n const sharedPopupActionSheetTemplate_r4 = i0.ɵɵreference(12);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx.size)(\"rounded\", ctx.rounded)(\"fillMode\", ctx.fillMode)(\"id\", ctx.tagListId)(\"tags\", ctx.tags)(\"focused\", ctx.focusedTagIndex)(\"textField\", ctx.textField)(\"valueField\", ctx.valueField)(\"valueDepth\", ctx.valueDepth)(\"disabled\", ctx.disabled)(\"tagPrefix\", ctx.tagPrefix)(\"template\", ctx.tagTemplate)(\"groupTemplate\", ctx.groupTagTemplate)(\"disabledIndices\", ctx.disabledIndices);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx.tags || !ctx.tags.length);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.disabled && !ctx.loading && !ctx.readonly && ctx.clearButton && (ctx.tags == null ? null : ctx.tags.length));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"sharedPopupActionSheetTemplate\", sharedPopupActionSheetTemplate_r4)(\"isActionSheetExpanded\", ctx.isActionSheetExpanded)(\"title\", ctx.title)(\"showTextInput\", ctx.filterable)(\"showActionButtons\", true)(\"subtitle\", ctx.subtitle);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.isOpen || ctx.isAdaptiveModeEnabled);\n }\n },\n dependencies: [LocalizedMessagesDirective, TagListComponent, NgIf, IconWrapperComponent, NgTemplateOutlet, ResponsiveRendererComponent, NgClass, FilterInputDirective, EventsOutsideAngularDirective, TemplateContextDirective, CheckAllDirective, TreeViewComponent, CheckDirective, ResizeSensorComponent],\n encapsulation: 2\n });\n return MultiSelectTreeComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nlet DropDownTreeFlatBindingDirective = /*#__PURE__*/(() => {\n class DropDownTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.dropDownTree.nodes = changes['nodes'].currentValue;\n super.nodes = changes['nodes'].currentValue;\n }\n super.ngOnChanges(changes);\n }\n }\n DropDownTreeFlatBindingDirective.ɵfac = function DropDownTreeFlatBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownTreeFlatBindingDirective)(i0.ɵɵdirectiveInject(i1$1.DataBoundComponent));\n };\n DropDownTreeFlatBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DropDownTreeFlatBindingDirective,\n selectors: [[\"\", \"kendoDropDownTreeFlatBinding\", \"\"]],\n inputs: {\n nodes: [0, \"kendoDropDownTreeFlatBinding\", \"nodes\"],\n idField: [0, \"valueField\", \"idField\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return DropDownTreeFlatBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst INDEX_SEPARATOR = '_';\nconst nodeIndex = (index = '', parentIndex = '') => {\n return `${parentIndex}${parentIndex ? INDEX_SEPARATOR : ''}${index}`;\n};\nconst isArrayWithAtLeastOneItem = v => v && Array.isArray(v) && v.length !== 0;\nconst mapToWrappers = (currentLevelNodes, childrenField, parent = null, parentIndex = '') => {\n if (!isArrayWithAtLeastOneItem(currentLevelNodes)) {\n return [];\n }\n return currentLevelNodes.map((node, idx) => {\n const index = nodeIndex(idx.toString(), parentIndex);\n const wrapper = {\n dataItem: node,\n index,\n parent,\n visible: true\n };\n wrapper.children = mapToWrappers(getter$1(childrenField)(node), childrenField, wrapper, index);\n return wrapper;\n });\n};\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nlet DropDownTreeHierarchyBindingDirective = /*#__PURE__*/(() => {\n class DropDownTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.dropDownTree.nodes = changes['nodes'].currentValue;\n super.nodes = changes['nodes'].currentValue;\n }\n super.ngOnChanges(changes);\n }\n }\n DropDownTreeHierarchyBindingDirective.ɵfac = function DropDownTreeHierarchyBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownTreeHierarchyBindingDirective)(i0.ɵɵdirectiveInject(i1$1.DataBoundComponent));\n };\n DropDownTreeHierarchyBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DropDownTreeHierarchyBindingDirective,\n selectors: [[\"\", \"kendoDropDownTreeHierarchyBinding\", \"\"]],\n inputs: {\n nodes: [0, \"kendoDropDownTreeHierarchyBinding\", \"nodes\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return DropDownTreeHierarchyBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when flat data is provided.\n */\nlet MultiSelectTreeFlatBindingDirective = /*#__PURE__*/(() => {\n class MultiSelectTreeFlatBindingDirective extends FlatDataBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.multiSelectTree.nodes = changes['nodes'].currentValue;\n super.nodes = changes['nodes'].currentValue;\n }\n super.ngOnChanges(changes);\n }\n }\n MultiSelectTreeFlatBindingDirective.ɵfac = function MultiSelectTreeFlatBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiSelectTreeFlatBindingDirective)(i0.ɵɵdirectiveInject(i1$1.DataBoundComponent));\n };\n MultiSelectTreeFlatBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MultiSelectTreeFlatBindingDirective,\n selectors: [[\"\", \"kendoMultiSelectTreeFlatBinding\", \"\"]],\n inputs: {\n nodes: [0, \"kendoMultiSelectTreeFlatBinding\", \"nodes\"],\n idField: [0, \"valueField\", \"idField\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return MultiSelectTreeFlatBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which encapsulates the retrieval of the child nodes when hierarchical data is provided.\n */\nlet MultiSelectTreeHierarchyBindingDirective = /*#__PURE__*/(() => {\n class MultiSelectTreeHierarchyBindingDirective extends HierarchyBindingDirective {\n constructor(multiSelectTree) {\n super(multiSelectTree);\n this.multiSelectTree = multiSelectTree;\n }\n /**\n * @hidden\n */\n set filter(term) {\n super.filter = term;\n }\n ngOnChanges(changes) {\n if (isChanged('nodes', changes, false)) {\n this.multiSelectTree.nodes = changes['nodes'].currentValue;\n super.nodes = changes['nodes'].currentValue;\n }\n super.ngOnChanges(changes);\n }\n }\n MultiSelectTreeHierarchyBindingDirective.ɵfac = function MultiSelectTreeHierarchyBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiSelectTreeHierarchyBindingDirective)(i0.ɵɵdirectiveInject(i1$1.DataBoundComponent));\n };\n MultiSelectTreeHierarchyBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MultiSelectTreeHierarchyBindingDirective,\n selectors: [[\"\", \"kendoMultiSelectTreeHierarchyBinding\", \"\"]],\n inputs: {\n nodes: [0, \"kendoMultiSelectTreeHierarchyBinding\", \"nodes\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return MultiSelectTreeHierarchyBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which manages the expanded state of the popup TreeView.\n */\nlet DropDownTreesExpandDirective = /*#__PURE__*/(() => {\n class DropDownTreesExpandDirective extends ExpandDirective {\n constructor(dropDownTree) {\n super(dropDownTree);\n this.dropDownTree = dropDownTree;\n }\n /**\n * @hidden\n *\n * Ensures a user-defined `isNodeExpanded` callback will not be overriden by the default directive setup.\n * Implemented as a value setter in the base directive, this just overrides the input name.\n */\n set isExpanded(value) {\n this.dropDownTree.isExpanded = value;\n }\n }\n DropDownTreesExpandDirective.ɵfac = function DropDownTreesExpandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownTreesExpandDirective)(i0.ɵɵdirectiveInject(i1$1.ExpandableComponent));\n };\n DropDownTreesExpandDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DropDownTreesExpandDirective,\n selectors: [[\"\", \"kendoDropDownTreeExpandable\", \"\"], [\"\", \"kendoMultiSelectTreeExpandable\", \"\"]],\n inputs: {\n isExpanded: [0, \"isNodeExpanded\", \"isExpanded\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return DropDownTreesExpandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_FILTER_SETTINGS = {\n caseSensitive: false,\n operator: 'startsWith'\n};\n/**\n * Implements an event handler for the `filterChange` event of a DropDowns component\n * which performs simple data filtering.\n *\n * @example\n * ```ts\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public data: Array = [\"Albania\", \"Andorra\", \"Armenia\", \"Austria\", \"Azerbaijan\"];\n * }\n * ```\n * > Currently, the built-in filtering does not work with [grouped data]({% slug api_kendo-data-query_groupby %}).\n */\nlet FilterDirective = /*#__PURE__*/(() => {\n class FilterDirective {\n constructor(component) {\n this.component = component;\n /**\n * @hidden\n *\n * Sets whether the filtering functionality is enabled on component init.\n */\n this.filterable = true;\n this._data = [];\n }\n /**\n * The initial data that will be used as a source array for the filtering operations.\n */\n set data(data) {\n this._data = data || [];\n }\n get data() {\n return this._data;\n }\n ngOnInit() {\n this.component.filterable = this.filterable;\n this.filterChangeSubscription = this.component.filterChange.subscribe(this.handleFilterChange.bind(this));\n }\n ngOnDestroy() {\n if (isPresent(this.filterChangeSubscription)) {\n this.filterChangeSubscription.unsubscribe();\n }\n }\n handleFilterChange(query) {\n this.component.data = this.data.filter(item => this.matchesAnyField(item, query));\n }\n matchesAnyField(item, query) {\n const normalizedQuery = this.normalizeValue(query);\n const {\n fields\n } = this.filterSettings;\n // if no filter fields are present, we are dealing with primitive data\n if (fields.length === 0) {\n return this.checkItem(item, normalizedQuery);\n }\n return fields.some(field => this.checkItem(getter(item, field), normalizedQuery));\n }\n checkItem(target, query) {\n target = this.normalizeValue(target);\n if (this.filterSettings.operator === 'contains') {\n return target.indexOf(query) !== -1;\n } else {\n return target.indexOf(query) === 0;\n }\n }\n normalizeValue(value) {\n const normalizedValue = isPresent(value) ? value.toString() : '';\n return this.filterSettings.caseSensitive ? normalizedValue : normalizedValue.toLowerCase();\n }\n getFilterFields(providedFields) {\n // ignore provided fields if the component deals with primitive data\n if (!this.component.textField && !this.component.valueField) {\n return [];\n }\n if (isArray(providedFields) && providedFields.length > 0) {\n return providedFields;\n } else {\n // the autocomplete uses `valueField` for text extraction\n const textField = this.component.textField || this.component.valueField;\n return [textField];\n }\n }\n get filterSettings() {\n const settings = this.rawSettings;\n const providedFields = isPresent(settings) && typeof settings === 'object' ? settings.fields : [];\n return Object.assign({}, DEFAULT_FILTER_SETTINGS, settings, {\n fields: this.getFilterFields(providedFields)\n });\n }\n }\n FilterDirective.ɵfac = function FilterDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterDirective)(i0.ɵɵdirectiveInject(FilterableComponent));\n };\n FilterDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterDirective,\n selectors: [[\"\", \"kendoDropDownFilter\", \"\"]],\n inputs: {\n data: \"data\",\n rawSettings: [0, \"kendoDropDownFilter\", \"rawSettings\"],\n filterable: \"filterable\"\n },\n standalone: true\n });\n return FilterDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_dropdowns %}#toc-messages)).\n */\nlet CustomMessagesComponent = /*#__PURE__*/(() => {\n class CustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n CustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CustomMessagesComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n CustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CustomMessagesComponent,\n selectors: [[\"kendo-dropdownlist-messages\"], [\"kendo-combobox-messages\"], [\"kendo-multicolumncombobox-messages\"], [\"kendo-autocomplete-messages\"], [\"kendo-multiselect-messages\"], [\"kendo-dropdowntree-messages\"], [\"kendo-multiselecttree-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: Messages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function CustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return CustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which configures the MultiSelect to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug summarytagmode_multiselect %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet SummaryTagDirective = /*#__PURE__*/(() => {\n class SummaryTagDirective {\n constructor(multiSelectComponent) {\n this.multiSelectComponent = multiSelectComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectComponent.onTagMapperChange();\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectComponent.tagMapper = tags => {\n if (tags.length > showAfter) {\n const result = tags.slice(0, showAfter);\n result.push(tags.slice(showAfter, tags.length));\n return result;\n } else {\n return tags;\n }\n };\n }\n }\n SummaryTagDirective.ɵfac = function SummaryTagDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SummaryTagDirective)(i0.ɵɵdirectiveInject(MultiSelectComponent));\n };\n SummaryTagDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SummaryTagDirective,\n selectors: [[\"\", \"kendoMultiSelectSummaryTag\", \"\"]],\n inputs: {\n showAfter: [0, \"kendoMultiSelectSummaryTag\", \"showAfter\"]\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return SummaryTagDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which configures the MultiSelectTree to show one single summary tag for all selected data items.\n * When a number is provided, the summary tag is displayed after the given amount of data items are selected\n * ([more information and examples]({% slug api_dropdowns_multiselecttreesummarytagdirective %})).\n *\n * @example\n * ```ts-no-run\n * \n * ```\n *\n * @example\n * ```ts-no-run\n * \n * ```\n */\nlet MultiSelectTreeSummaryTagDirective = /*#__PURE__*/(() => {\n class MultiSelectTreeSummaryTagDirective {\n constructor(multiSelectTreeComponent) {\n this.multiSelectTreeComponent = multiSelectTreeComponent;\n /**\n * A numeric value that indicates the number of selected data items after which the summary tag will appear.\n */\n this.showAfter = 0;\n this.createTagMapper();\n }\n ngOnChanges(changes) {\n if (isPresent(changes.showAfter)) {\n this.createTagMapper();\n this.multiSelectTreeComponent.handleTagMapperChange(this.showAfter);\n }\n }\n createTagMapper() {\n const showAfter = parseNumber(this.showAfter);\n this.multiSelectTreeComponent.tagMapper = tags => {\n if (tags.length > showAfter) {\n // tags provided in an array are rendered as a single group tag\n return [...tags.slice(0, showAfter), tags.slice(showAfter)];\n } else {\n return tags;\n }\n };\n }\n }\n MultiSelectTreeSummaryTagDirective.ɵfac = function MultiSelectTreeSummaryTagDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiSelectTreeSummaryTagDirective)(i0.ɵɵdirectiveInject(MultiSelectTreeComponent));\n };\n MultiSelectTreeSummaryTagDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MultiSelectTreeSummaryTagDirective,\n selectors: [[\"\", \"kendoMultiSelectTreeSummaryTag\", \"\"]],\n inputs: {\n showAfter: [0, \"kendoMultiSelectTreeSummaryTag\", \"showAfter\"]\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return MultiSelectTreeSummaryTagDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Utility array that contains all `AutoComplete` related components and directives\n */\nconst KENDO_AUTOCOMPLETE = [AutoCompleteComponent, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, NoDataTemplateDirective, FilterDirective, CustomMessagesComponent, SuffixTemplateDirective, PrefixTemplateDirective, SeparatorComponent];\n/**\n * Utility array that contains all `ComboBox` related components and directives\n */\nconst KENDO_COMBOBOX = [ComboBoxComponent, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, NoDataTemplateDirective, FilterDirective, CustomMessagesComponent, SuffixTemplateDirective, PrefixTemplateDirective, SeparatorComponent];\n/**\n * Utility array that contains all `MultiColumnComboBox` related components and directives\n */\nconst KENDO_MULTICOLUMNCOMBOBOX = [MultiColumnComboBoxComponent, ComboBoxColumnComponent, ColumnHeaderTemplateDirective, ColumnCellTemplateDirective, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, NoDataTemplateDirective, FilterDirective, CustomMessagesComponent, SuffixTemplateDirective, PrefixTemplateDirective, SeparatorComponent];\n/**\n * Utility array that contains all `DropDownList` related components and directives\n */\nconst KENDO_DROPDOWNLIST = [DropDownListComponent, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, ValueTemplateDirective, NoDataTemplateDirective, FilterDirective, CustomMessagesComponent];\n/**\n * Utility array that contains all `MultiSelect` related components and directives\n */\nconst KENDO_MULTISELECT = [MultiSelectComponent, SummaryTagDirective, CustomItemTemplateDirective, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTemplateDirective, GroupTagTemplateDirective, TagTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, NoDataTemplateDirective, FilterDirective, CustomMessagesComponent, SuffixTemplateDirective, PrefixTemplateDirective, SeparatorComponent];\n/**\n * Utility array that contains all `DropDownTree` related components and directives\n */\nconst KENDO_DROPDOWNTREE = [DropDownTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, DropDownTreesExpandDirective, NodeTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ValueTemplateDirective, NoDataTemplateDirective, CustomMessagesComponent];\n/**\n * Utility array that contains all `MultiSelectTree` related components and directives\n */\nconst KENDO_MULTISELECTTREE = [MultiSelectTreeComponent, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, DropDownTreesExpandDirective, NodeTemplateDirective, MultiSelectTreeSummaryTagDirective, GroupTagTemplateDirective, TagTemplateDirective, HeaderTemplateDirective, FooterTemplateDirective, ValueTemplateDirective, NoDataTemplateDirective, CustomMessagesComponent];\n/**\n * Utility array that contains all `@progress/kendo-angular-dropdowns` related components and directives\n */\nconst KENDO_DROPDOWNS = [...KENDO_AUTOCOMPLETE, ...KENDO_COMBOBOX, ...KENDO_MULTICOLUMNCOMBOBOX, ...KENDO_DROPDOWNLIST, ...KENDO_MULTISELECT, ...KENDO_DROPDOWNTREE, ...KENDO_MULTISELECTTREE];\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * - `MultiSelectTreeComponent`—The MultiSelectTree component class.\n * - `DropDownTreeComponent`—The DropDownTree component class.\n * - `MultiSelectTreeFlatBindingDirective`—The MultiSelectTree flat binding directive.\n * - `DropDownTreeFlatBindingDirective`—The DropDownTree flat binding directive.\n * - `MultiSelectTreeHierarchyBindingDirective`—The MultiSelectTree hierarchy binding directive.\n * - `DropDownTreeHierarchyBindingDirective`—The DropDownTree hierarchy binding directive.\n * - `DropDownTreesExpandDirective`—The DropDownTreesExpand directive.\n * - `NodeTemplateDirective`—The node template directive.\n * - `MultiSelectTreeSummaryTagDirective`—The MultiSelectTreeSummaryTag directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `GroupTagTemplateDirective`—The group tag template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `NoDataTemplateDirective`—The no-data template directive.\n * - `CustomMessagesComponent`—The custom messages component.\n */\nlet DropDownTreesModule = /*#__PURE__*/(() => {\n class DropDownTreesModule {}\n DropDownTreesModule.ɵfac = function DropDownTreesModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownTreesModule)();\n };\n DropDownTreesModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DropDownTreesModule\n });\n DropDownTreesModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService],\n imports: [DropDownTreeComponent, CustomMessagesComponent, MultiSelectTreeComponent, CustomMessagesComponent]\n });\n return DropDownTreesModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Dropdowns components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Dropdowns module\n * import { DropDownsModule } from '@progress/kendo-angular-dropdowns';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare the app component\n * imports: [BrowserModule, DropDownsModule], // import the Dropdowns module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet DropDownsModule = /*#__PURE__*/(() => {\n class DropDownsModule {}\n DropDownsModule.ɵfac = function DropDownsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownsModule)();\n };\n DropDownsModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DropDownsModule\n });\n DropDownsModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService],\n imports: [AutoCompleteComponent, CustomMessagesComponent, i10.SeparatorComponent, ComboBoxComponent, CustomMessagesComponent, i10.SeparatorComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, CustomMessagesComponent, i10.SeparatorComponent, DropDownListComponent, CustomMessagesComponent, MultiSelectComponent, CustomMessagesComponent, i10.SeparatorComponent, DropDownTreeComponent, CustomMessagesComponent, MultiSelectTreeComponent, CustomMessagesComponent, AdornmentsModule]\n });\n return DropDownsModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n *\n * The exported package module.\n *\n * The package exports:\n * - `MultiSelectComponent`—The MultiSelect component class.\n * - `SummaryTagDirective`—The MultiSelect summary tag directive.\n * - `ItemTemplateDirective`—The item template directive.\n * - `CustomItemTemplateDirective`—The custom item template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `GroupTagTemplateDirective`—The group tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no-data template directive.\n * - `FilterDirective`—The filter directive.\n * - `CustomMessagesComponent`—The custom messages component.\n * - `GroupTemplateDirective`—The group template directive.\n * - `FixedGroupTemplateDirective`—The fixed group template directive.\n * - `SuffixTemplateDirective`—The suffix template directive.\n * - `PrefixTemplateDirective`—The prefix template directive.\n */\nlet MultiSelectModule = /*#__PURE__*/(() => {\n class MultiSelectModule {}\n MultiSelectModule.ɵfac = function MultiSelectModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MultiSelectModule)();\n };\n MultiSelectModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MultiSelectModule\n });\n MultiSelectModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService],\n imports: [MultiSelectComponent, CustomMessagesComponent, i10.SeparatorComponent, AdornmentsModule]\n });\n return MultiSelectModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst SHARED_DIRECTIVES = [HeaderTemplateDirective, FooterTemplateDirective, ItemTemplateDirective, GroupTemplateDirective, FixedGroupTemplateDirective, NoDataTemplateDirective, ValueTemplateDirective, TagTemplateDirective, GroupTagTemplateDirective, LocalizedMessagesDirective, CustomMessagesComponent, FilterDirective, FilterInputDirective];\n/**\n * @hidden\n *\n * The exported package module.\n *\n * The package exports:\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The noData template directive.\n * - `TagTemplateDirective`—The tag template directive.\n * - `SummaryTagTemplateDirective`—The summary tag template directive.\n */\nlet SharedDirectivesModule = /*#__PURE__*/(() => {\n class SharedDirectivesModule {}\n SharedDirectivesModule.ɵfac = function SharedDirectivesModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SharedDirectivesModule)();\n };\n SharedDirectivesModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: SharedDirectivesModule\n });\n SharedDirectivesModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CustomMessagesComponent]\n });\n return SharedDirectivesModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst INTERNAL_DIRECTIVES = [ListComponent, ListItemDirective, SelectableDirective, SearchBarComponent, TemplateContextDirective, TagListComponent, CheckDirective, CheckAllDirective, ResponsiveRendererComponent];\n/**\n * @hidden\n */\nlet SharedModule = /*#__PURE__*/(() => {\n class SharedModule {}\n SharedModule.ɵfac = function SharedModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SharedModule)();\n };\n SharedModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: SharedModule\n });\n SharedModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService, PopupService, ResizeBatchService],\n imports: [ListComponent, SearchBarComponent, TagListComponent, ResponsiveRendererComponent, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule, IconsModule, ActionSheetModule, ButtonModule, TextBoxModule, FormsModule, ReactiveFormsModule, PopupModule, ResizeSensorModule, SharedDirectivesModule, EventsModule, IconsModule, ActionSheetModule, ButtonModule, TextBoxModule]\n });\n return SharedModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n *\n * The exported package module.\n *\n * The package exports:\n * - `AutoCompleteComponent`—The AutoComplete component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no data template directive.\n * - `FixedGroupTemplateDirective`—The fixed group template directive.\n * - `GroupTemplateDirective`—The group template directive.\n * - `FilterDirective`—The filter directive.\n * - `CustomMessagesComponent`—The custom messages component.\n * - `SuffixTemplateDirective`—The suffix template directive.\n * - `PrefixTemplateDirective`—The prefix template directive.\n */\nlet AutoCompleteModule = /*#__PURE__*/(() => {\n class AutoCompleteModule {}\n AutoCompleteModule.ɵfac = function AutoCompleteModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AutoCompleteModule)();\n };\n AutoCompleteModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: AutoCompleteModule\n });\n AutoCompleteModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService],\n imports: [AutoCompleteComponent, CustomMessagesComponent, i10.SeparatorComponent, AdornmentsModule]\n });\n return AutoCompleteModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n *\n * The exported package module.\n *\n * The package exports:\n * - `ComboBoxComponent`—The ComboBox component class.\n * - `ComboBoxColumnComponent`—The ComboBoxColumn component class.\n * - `MultiColumnComboBoxComponent`—The MultiColumnComboBox component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no data template directive.\n * - `FixedGroupTemplateDirective`—The fixed group template directive.\n * - `GroupTemplateDirective`—The group template directive.\n * - `FilterDirective`—The filter directive.\n * - `CustomMessagesComponent`—The custom messages component.\n * - `SuffixTemplateDirective`—The suffix template directive.\n * - `PrefixTemplateDirective`—The prefix template directive.\n */\nlet ComboBoxModule = /*#__PURE__*/(() => {\n class ComboBoxModule {}\n ComboBoxModule.ɵfac = function ComboBoxModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ComboBoxModule)();\n };\n ComboBoxModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ComboBoxModule\n });\n ComboBoxModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService],\n imports: [ComboBoxComponent, CustomMessagesComponent, i10.SeparatorComponent, MultiColumnComboBoxComponent, ComboBoxColumnComponent, CustomMessagesComponent, i10.SeparatorComponent, AdornmentsModule]\n });\n return ComboBoxModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n *\n * The exported package module.\n *\n * The package exports:\n * - `DropDownListComponent`—The DropDownList component class.\n * - `ItemTemplateDirective`—The item template directive.\n * - `ValueTemplateDirective`—The value template directive.\n * - `HeaderTemplateDirective`—The header template directive.\n * - `FooterTemplateDirective`—The footer template directive.\n * - `NoDataTemplateDirective`—The no data template directive.\n * - `GroupTemplateDirective`—The group template directive.\n * - `FixedGroupTemplateDirective`—The fixed group template directive.\n * - `FilterDirective`—The filter directive.\n * - `CustomMessagesComponent`—The custom messages component.\n */\nlet DropDownListModule = /*#__PURE__*/(() => {\n class DropDownListModule {}\n DropDownListModule.ɵfac = function DropDownListModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropDownListModule)();\n };\n DropDownListModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DropDownListModule\n });\n DropDownListModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService],\n imports: [DropDownListComponent, CustomMessagesComponent]\n });\n return DropDownListModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutoCompleteComponent, AutoCompleteModule, CheckAllDirective, CheckDirective, ColumnCellTemplateDirective, ColumnHeaderTemplateDirective, ComboBoxColumnComponent, ComboBoxComponent, ComboBoxModule, CustomItemTemplateDirective, CustomMessagesComponent, DropDownListComponent, DropDownListModule, DropDownTreeComponent, DropDownTreeFlatBindingDirective, DropDownTreeHierarchyBindingDirective, DropDownTreesExpandDirective, DropDownTreesModule, DropDownsModule, FilterDirective, FilterInputDirective, FilterableComponent, FixedGroupTemplateDirective, FooterTemplateDirective, GroupTagTemplateDirective, GroupTemplateDirective, HeaderTemplateDirective, ItemTemplateDirective, KENDO_AUTOCOMPLETE, KENDO_COMBOBOX, KENDO_DROPDOWNLIST, KENDO_DROPDOWNS, KENDO_DROPDOWNTREE, KENDO_MULTICOLUMNCOMBOBOX, KENDO_MULTISELECT, KENDO_MULTISELECTTREE, ListComponent, ListItemDirective, LocalizedMessagesDirective, MultiColumnComboBoxComponent, MultiSelectComponent, MultiSelectModule, MultiSelectTreeComponent, MultiSelectTreeFlatBindingDirective, MultiSelectTreeHierarchyBindingDirective, MultiSelectTreeSummaryTagDirective, NoDataTemplateDirective, NodeTemplateDirective, PreventableEvent, RemoveTagEvent, ResponsiveRendererComponent, SearchBarComponent, SelectableDirective, SharedDirectivesModule, SharedModule, SummaryTagDirective, TagListComponent, TagTemplateDirective, ValueTemplateDirective };","/**\n * @hidden\n */\nexport const isPresent = value => value !== null && value !== undefined;\n/**\n * @hidden\n */\nexport const isBlank = value => value === null || value === undefined;\n/**\n * @hidden\n */\nexport const isArray = value => Array.isArray(value);\n/**\n * @hidden\n */\nexport const isFunction = value => typeof value === 'function';\n/**\n * @hidden\n */\nexport const isString = value => typeof value === 'string';\n/**\n * @hidden\n */\nexport const isTruthy = value => !!value;\n/**\n * @hidden\n */\nexport const isNullOrEmptyString = value => isBlank(value) || value.trim().length === 0;\n/**\n * @hidden\n */\nexport const isNotNullOrEmptyString = value => !isNullOrEmptyString(value);\n/**\n * @hidden\n */\nexport const isNumeric = value => !isNaN(value - parseFloat(value));\n/**\n * @hidden\n */\nexport const isDate = value => value && value.getTime;","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport const isCompositeFilterDescriptor = source => {\n return isPresent(source.filters);\n};","/**\n * @hidden\n */\nexport const ifElse = (predicate, right, left) => value => predicate(value) ? right(value) : left(value);\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport const compose = (...args) => data => args.reduceRight((acc, curr) => curr(acc), data);\n/**\n * @hidden\n */\nexport const constant = x => () => x;\n/**\n * @hidden\n */\nexport const identity = x => x;","import { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport const wrapIf = predicate => (str, ...args) => predicate() ? `${str[0]}${args[0]}${str[1]}` : args[0];\n/**\n * @hidden\n */\nexport const toUTC = date => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n/**\n * @hidden\n */\nexport const quote = ({\n field,\n value,\n ignoreCase,\n operator\n}) => ({\n value: `'${value.replace(/'/g, \"''\")}'`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const encodeValue = ({\n field,\n value,\n ignoreCase,\n operator\n}) => ({\n value: `${encodeURIComponent(value)}`,\n field,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const toLower = ({\n field,\n value,\n ignoreCase,\n operator\n}) => ({\n field: wrapIf(() => ignoreCase)`tolower(${field})`,\n value,\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const normalizeField = ({\n field,\n value,\n ignoreCase,\n operator\n}) => ({\n value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase,\n operator\n});\n/**\n * @hidden\n */\nexport const isStringValue = x => isString(x.value);\n/**\n * @hidden\n */\nexport const isDateValue = x => isDate(x.value);\n/**\n * @hidden\n */\nexport const serializeFilters = (map, join) => filter => {\n const brackets = wrapIf(() => filter.filters.length > 1);\n return brackets`(${filter.filters.map(map).join(join(filter))})`;\n};","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nconst operatorMap = key => ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n})[key.toLowerCase()] || key;\nconst normalizeOperator = descriptor => {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(filter => {\n const result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nconst normalizeDescriptor = descriptor => {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport const normalizeFilters = descriptor => {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};","import { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nconst serializeSort = orderby => {\n const str = orderby.filter(sort => isPresent(sort.dir)).map(sort => {\n const order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? `$orderby=${str}` : str;\n};\nconst emptyString = constant('');\nconst concat = a => b => a + b;\nconst serializeKey = (strings, val) => ifElse(isPresent, concat(strings[0]), emptyString)(val);\nconst rules = (settings, state) => key => ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey`$skip=${state.skip}`,\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey`$top=${state.take}`\n})[key];\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport const toODataString = (state, settings = {}) => Object.keys(state).map(rules(settings, state)).filter(isNotNullOrEmptyString).join('&');","import { isPresent } from './utils';\nconst getterCache = {};\nconst FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = obj => obj;\n/**\n * @hidden\n */\nexport const getter = (field, safe) => {\n const key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n const fields = [];\n field.replace(FIELD_REGEX, (_, index, indexAccessor, field) => {\n fields.push(isPresent(index) ? index : indexAccessor || field);\n return undefined;\n });\n getterCache[key] = obj => {\n let result = obj;\n for (let idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};","import { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nconst toQueryString = values => values.reduce((acc, [key, value]) => [...acc, `${key}=${value}`], []);\nconst toObject = values => values.reduce((acc, [key, value]) => Object.assign(Object.assign({}, acc), {\n [key]: value\n}), {});\nconst pairwise = key => value => [key, value];\nconst empty = () => null;\nconst isNotEmptyArray = value => isPresent(value) && isArray(value) && value.length > 0;\nconst has = accessor => value => isPresent(accessor(value));\nconst isNotEmpty = accessor => value => isNotEmptyArray(accessor(value));\nconst runOrEmpty = (predicate, fn) => ifElse(predicate, fn, empty);\nconst calcPage = ({\n skip,\n take\n}) => Math.floor((skip || 0) / take) + 1;\nconst formatDescriptors = (accessor, formatter) => state => accessor(state).map(formatter).join(\"~\");\nconst removeAfter = what => str => str.slice(0, str.indexOf(what));\nconst replace = patterns => compose(...patterns.map(([left, right]) => s => s.replace(new RegExp(left, \"g\"), right)));\nconst sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nconst removeAfterDot = removeAfter(\".\");\nconst directionFormatter = ({\n field,\n dir = \"asc\"\n}) => `${field}-${dir}`;\nconst aggregateFormatter = ({\n field,\n aggregate\n}) => `${field}-${aggregate}`;\nconst take = getter(\"take\");\nconst aggregates = getter(\"aggregates\");\nconst skip = getter(\"skip\");\nconst group = getter(\"group\");\nconst sort = getter(\"sort\", true);\nconst formatSort = formatDescriptors(sort, directionFormatter);\nconst formatGroup = formatDescriptors(group, directionFormatter);\nconst formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nconst prefixDateValue = value => `datetime'${value}'`;\nconst formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nconst formatDate = ({\n field,\n value,\n ignoreCase,\n operator\n}) => ({\n value: formatDateValue(value),\n field,\n ignoreCase,\n operator\n});\nconst normalizeSort = state => Object.assign({}, state, {\n sort: (sort(state) || []).filter(({\n dir\n }) => isNotNullOrEmptyString(dir))\n});\nconst transformSkip = compose(pairwise('page'), calcPage);\nconst transformTake = compose(pairwise('pageSize'), take);\nconst transformGroup = compose(pairwise('group'), formatGroup);\nconst transformSort = compose(pairwise('sort'), formatSort);\nconst transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nconst serializePage = runOrEmpty(has(skip), transformSkip);\nconst serializePageSize = runOrEmpty(has(take), transformTake);\nconst serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nconst serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nconst serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nconst hasField = ({\n field\n}) => isNotNullOrEmptyString(field);\nconst filterFormatter = ({\n field,\n operator,\n value\n}) => `${field}~${operator}~${value}`;\nconst dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nconst typedFormatter = encode => runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter));\nconst join = ({\n logic\n}) => `~${logic}~`;\nconst serialize = encode => serializeFilters(filter => ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter), join);\nconst serializeFilter = ({\n filter\n}, encode) => {\n if (filter && filter.filters) {\n const filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nconst rules = (state, encode = true) => key => ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n})[key];\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport const toDataSourceRequestString = state => toQueryString(Object.keys(state).map(rules(state)).filter(isPresent)).join('&');\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport const toDataSourceRequest = state => toObject(Object.keys(state).map(rules(state, false)).filter(isPresent));","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nconst set = (field, target, value) => {\n target[field] = value;\n return target;\n};\nconst toCamelCase = str => str.replace(/(^[A-Z])/g, (_, g1) => g1.toLowerCase());\nconst prop = fieldName => obj => {\n const value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n};\nconst member = prop(\"Member\");\nconst aggregateMethodName = prop(\"AggregateMethodName\");\nconst value = prop(\"Value\");\nconst convert = mapper => values => Object.keys(values).reduce(mapper.bind(null, values), {});\nconst translateAggregate = convert((source, acc, field) => set(field.toLowerCase(), acc, source[field]));\nconst translateAggregates = convert((source, acc, field) => set(field, acc, translateAggregate(source[field])));\nconst valueOrDefault = (value, defaultValue) => isPresent(value) ? value : defaultValue;\nconst normalizeGroup = group => ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n});\nconst translateGroup = compose(({\n field,\n hasSubgroups,\n value,\n aggregates,\n items\n}) => ({\n aggregates: translateAggregates(aggregates),\n field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value\n}), normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport const translateDataSourceResultGroups = data => data.map(translateGroup);\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport const translateAggregateResults = data => (data || []).reduce((acc, x) => set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))), {});","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nconst compare = (a, b) => {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst compareDesc = (a, b) => compare(b, a);\nconst descriptorAsFunc = descriptor => {\n if (typeof descriptor.compare === 'function') {\n return descriptor.compare;\n }\n const prop = getter(descriptor.field, true);\n return (a, b) => (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b));\n};\nconst initial = (_a, _b) => 0;\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport const composeSortDescriptors = descriptors => descriptors.filter(x => isPresent(x.dir) || isPresent(x.compare)).map(descriptor => descriptorAsFunc(descriptor)).reduce((acc, curr) => (a, b) => acc(a, b) || curr(a, b), initial);","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nconst valueToString = value => {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport const groupCombinator = field => {\n const prop = getter(field, true);\n let position = 0;\n return (agg, value) => {\n agg[field] = agg[field] || {};\n const groupValue = prop(value);\n const key = valueToString(groupValue);\n const values = agg[field][key] || {\n __position: position++,\n aggregates: {},\n items: [],\n value: groupValue\n };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport const expandAggregates = (result = {}) => {\n Object.keys(result).forEach(field => {\n const aggregates = result[field];\n Object.keys(aggregates).forEach(aggregate => {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nconst aggregatesFuncs = name => ({\n average: () => {\n let value = 0;\n let count = 0;\n return {\n calc: curr => {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n } else {\n value = curr;\n }\n },\n result: () => isNumeric(value) ? value / count : value\n };\n },\n count: () => {\n let state = 0;\n return {\n calc: () => state++,\n result: () => state\n };\n },\n max: () => {\n let state = Number.NEGATIVE_INFINITY;\n return {\n calc: value => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n min: () => {\n let state = Number.POSITIVE_INFINITY;\n return {\n calc: value => {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: () => state\n };\n },\n sum: () => {\n let state = 0;\n return {\n calc: value => {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: () => state\n };\n }\n})[name]();\n/**\n * @hidden\n */\nexport const aggregatesCombinator = descriptors => {\n const functions = descriptors.map(descriptor => {\n const fieldAccessor = getter(descriptor.field, true);\n const aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n const aggregateAccessor = getter(aggregateName, true);\n return (state, value) => {\n const fieldAggregates = state[descriptor.field] || {};\n const aggregateFunction = aggregateAccessor(fieldAggregates) || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return (state, value) => functions.reduce((agg, calc) => calc(agg, value), state);\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport const concat = (arr, value) => {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport const map = transform => reduce => (acc, curr, index) => reduce(acc, transform(curr, index));\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport const filter = predicate => reduce => (acc, curr) => predicate(curr) ? reduce(acc, curr) : acc;\n/**\n * @hidden\n */\nexport const isTransformerResult = source => {\n return isPresent(source.__value);\n};\nconst reduced = x => {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const take = count => reduce => (acc, curr) => count-- > 0 ? reduce(acc, curr) : reduced(acc);\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport const takeWhile = predicate => reduce => (acc, curr) => predicate(curr) ? reduce(acc, curr) : reduced(acc);\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport const skip = count => reduce => (acc, curr) => count-- <= 0 ? reduce(acc, curr) : acc;\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport const exec = (transform, initialValue, data) => {\n let result = initialValue;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nconst identity = map(x => x);\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult](slug:api_kendo-data-query_aggregateresult) configuration.\n */\n// tslint:enable:max-line-length\nexport const aggregateBy = (data, descriptors = [], transformers = identity) => {\n const initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n const result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nconst logic = {\n \"or\": {\n concat: (acc, fn) => a => acc(a) || fn(a),\n identity: () => false\n },\n \"and\": {\n concat: (acc, fn) => a => acc(a) && fn(a),\n identity: () => true\n }\n};\nconst operatorsMap = {\n contains: (a, b) => (a || \"\").indexOf(b) >= 0,\n doesnotcontain: (a, b) => (a || \"\").indexOf(b) === -1,\n doesnotendwith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0,\n doesnotstartwith: (a, b) => (a || \"\").lastIndexOf(b, 0) === -1,\n endswith: (a, b) => (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0,\n eq: (a, b) => a === b,\n gt: (a, b) => a > b,\n gte: (a, b) => a >= b,\n isempty: a => a === '',\n isnotempty: a => a !== '',\n isnotnull: a => isPresent(a),\n isnull: a => isBlank(a),\n lt: (a, b) => a < b,\n lte: (a, b) => a <= b,\n neq: (a, b) => a != b,\n startswith: (a, b) => (a || \"\").lastIndexOf(b, 0) === 0\n};\nconst dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nconst convertValue = (value, ignoreCase) => {\n if (value != null && isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n } else if (ignoreCase) {\n return value.toLowerCase();\n }\n } else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nconst typedGetter = (prop, value, ignoreCase) => {\n if (!isPresent(value)) {\n return prop;\n }\n let acc = prop;\n if (isString(value)) {\n const date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n } else {\n acc = a => {\n const x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n } else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return a => {\n const x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nconst transformFilter = ({\n field,\n ignoreCase,\n value,\n operator\n}) => {\n field = !isPresent(field) ? a => a : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n const itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n const op = isFunction(operator) ? operator : operatorsMap[operator];\n return a => op(itemProp(a), value, ignoreCase);\n};\n/**\n * @hidden\n */\nexport const transformCompositeFilter = filter => {\n const combiner = logic[filter.logic];\n return filter.filters.filter(isPresent).map(x => isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x)).reduce(combiner.concat, combiner.identity);\n};","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport const compileFilter = descriptor => {\n if (!descriptor || descriptor.filters.length === 0) {\n return () => true;\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport const filterBy = (data, descriptor) => {\n if (!isPresent(descriptor) || isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport const normalizeGroups = descriptors => {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(x => Object.assign({\n dir: \"asc\"\n }, x));\n};\nconst identity = map(x => x);\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport const groupBy = (data, descriptors = [], transformers = identity, originalData = data) => {\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n const descriptor = descriptors[0];\n const initialValue = {};\n const view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n const result = [];\n Object.keys(view).forEach(field => {\n Object.keys(view[field]).forEach(value => {\n const group = view[field][value];\n let aggregateResult = {};\n let filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ? groupBy(group.items, descriptors.slice(1), identity, filteredData) : group.items,\n value: group.value\n };\n });\n });\n return result;\n};","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport const orderBy = (data, descriptors) => {\n if (descriptors.some(x => isPresent(x.dir) || isPresent(x.compare))) {\n data = data.slice(0);\n const comparer = composeSortDescriptors(descriptors);\n data.sort(comparer);\n }\n return data;\n};\nconst defaultComparer = (a, b) => a === b;\nconst normalizeComparer = comparer => {\n if (isString(comparer)) {\n const accessor = getter(comparer);\n comparer = (a, b) => accessor(a) === accessor(b);\n }\n return comparer;\n};\nconst _distinct = (data, comparer) => data.filter((x, idx, xs) => xs.findIndex(comparer.bind(null, x)) === idx);\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport const distinct = (data, comparer = defaultComparer) => _distinct(data, normalizeComparer(comparer));\n/**\n * @hidden\n */\nexport const count = (data, predicate) => {\n let counter = 0;\n for (let idx = 0, length = data.length; idx < length; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport const limit = (data, predicate) => {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport const process = (data, state) => {\n const {\n skip: skipCount,\n take: takeCount,\n filter: filterDescriptor,\n sort,\n group\n } = state;\n const sortDescriptors = [...normalizeGroups(group || []), ...(sort || [])];\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n const hasFilters = isPresent(filterDescriptor) && filter.length;\n const hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n let total;\n const transformers = [];\n let predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n } else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n const transform = compose(...transformers);\n const result = hasGroups ? groupBy(data, group, transform, limit(data, predicate)) : exec(transform(concat), [], data);\n return {\n data: result,\n total: total\n };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator = /*#__PURE__*/function (FilterOperator) {\n /**\n * The `contains` operator.\n */\n FilterOperator[\"Contains\"] = \"contains\";\n /**\n * The `doesnotcontain` operator.\n */\n FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n /**\n * The `doesnotendwith` operator.\n */\n FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n /**\n * The `doesnotstartwith` operator.\n */\n FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n /**\n * The `endswith` operator.\n */\n FilterOperator[\"EndsWith\"] = \"endswith\";\n /**\n * The `eq` operator.\n */\n FilterOperator[\"EqualTo\"] = \"eq\";\n /**\n * The `gt` operator.\n */\n FilterOperator[\"GreaterThan\"] = \"gt\";\n /**\n * The `gte` operator.\n */\n FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n /**\n * The `isempty` operator.\n */\n FilterOperator[\"IsEmpty\"] = \"isempty\";\n /**\n * The `isnotempty` operator.\n */\n FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n /**\n * The `isnotnull` operator.\n */\n FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n /**\n * The `isnull` operator.\n */\n FilterOperator[\"IsNull\"] = \"isnull\";\n /**\n * The `lt` operator.\n */\n FilterOperator[\"LessThan\"] = \"lt\";\n /**\n * The `lte` operator.\n */\n FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n /**\n * The `neq` operator.\n */\n FilterOperator[\"NotEqualTo\"] = \"neq\";\n /**\n * The `startswith` operator.\n */\n FilterOperator[\"StartsWith\"] = \"startswith\";\n return FilterOperator;\n}(FilterOperator || {});","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport * as i0 from '@angular/core';\nimport { isDevMode, Component, HostBinding, Input, Directive, forwardRef, EventEmitter, Output, ViewChild, ContentChild, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { hasObservers, isDocumentAvailable, isChanged, ResizeSensorComponent, ResizeBatchService } from '@progress/kendo-angular-common';\nimport { NgStyle, NgClass, NgIf, NgFor, NgTemplateOutlet } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n/**\n * @hidden\n */\nconst _c0 = [\"progressStatus\"];\nconst _c1 = [\"progressStatusWrap\"];\nfunction ProgressBarComponent_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 7);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.formattedLabelValue);\n }\n}\nfunction ProgressBarComponent_span_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 7);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.formattedLabelValue);\n }\n}\nfunction ChunkProgressBarComponent_li_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"li\", 3);\n }\n if (rf & 2) {\n const chunk_r1 = ctx.$implicit;\n const i_r2 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"width\", ctx_r2.orientationStyles.width)(\"height\", ctx_r2.orientationStyles.height);\n i0.ɵɵclassProp(\"k-first\", i_r2 === 0)(\"k-last\", i_r2 === ctx_r2.chunkCount - 1)(\"k-selected\", chunk_r1);\n i0.ɵɵproperty(\"ngClass\", chunk_r1 ? ctx_r2.progressCssClass : ctx_r2.emptyCssClass)(\"ngStyle\", chunk_r1 ? ctx_r2.progressCssStyle : ctx_r2.emptyCssStyle);\n }\n}\nconst _c2 = [\"progress\"];\nconst _c3 = [\"scale\"];\nconst _c4 = [\"label\"];\nconst _c5 = [\"surface\"];\nfunction CircularProgressBarComponent_div_11_ng_template_2_Template(rf, ctx) {}\nfunction CircularProgressBarComponent_div_11_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 11, 4);\n i0.ɵɵtemplate(2, CircularProgressBarComponent_div_11_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.centerTemplate.templateRef)(\"ngTemplateOutletContext\", ctx_r1.centerTemplateContext);\n }\n}\nconst packageMetadata = {\n name: '@progress/kendo-angular-progressbar',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621625,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n/**\n * @hidden\n */\nconst MIN_MAX_ERROR_MESSAGE = `The max value should be greater than the min.`;\n/**\n * @hidden\n */\nconst LABEL_DECIMALS = 3;\n/**\n * @hidden\n */\nconst MIN_RATIO = 0.0001;\n\n/**\n * @hidden\n */\nconst formatValue = (value, min, max, label) => {\n const defaultFormattedValue = truncateNumber(value);\n if (typeof label !== 'boolean') {\n if (typeof label.format === 'string') {\n switch (label.format) {\n case 'value':\n return defaultFormattedValue;\n case 'percent':\n return `${Math.floor(calculatePercentage(value, min, max))}%`;\n default:\n return defaultFormattedValue;\n }\n } else if (typeof label.format === 'function') {\n return label.format(value);\n } else {\n return defaultFormattedValue;\n }\n }\n return defaultFormattedValue;\n};\n/**\n * @hidden\n */\nconst validateRange = (min, max) => {\n if (isDevMode && min > max) {\n throw new Error(MIN_MAX_ERROR_MESSAGE);\n }\n};\n/**\n * @hidden\n */\nconst adjustValueToRange = (min, max, value) => Math.max(Math.min(value, max), min);\n/**\n * @hidden\n */\nconst calculatePercentage = (value, min, max) => {\n const decimalValue = Math.abs((value - min) / (max - min));\n return decimalValue * 100;\n};\n/**\n * @hidden\n */\nconst truncateNumber = value => {\n const numberParts = value.toString().split('.');\n return numberParts.length === 1 ? `${numberParts[0]}` : `${numberParts[0]}.${numberParts[1].substr(0, LABEL_DECIMALS)}`;\n};\n/**\n * @hidden\n */\nconst calculateRatio = (min, max, value) => Math.max((value - min) / (max - min), MIN_RATIO);\n/**\n * @hidden\n */\nconst extractValueFromChanges = (changes, type, value) => changes[type] && changes[type].currentValue !== undefined ? changes[type].currentValue : value;\n/**\n * @hidden\n */\nconst runAnimation = (changes, animation, previousValue, displayValue) => animation && typeof requestAnimationFrame !== 'undefined' && changes['value'] && previousValue !== displayValue;\n/**\n * @hidden\n */\nconst stopCurrentAnimation = changes => {\n const isAnimationChanged = Boolean(changes['animation']);\n const hasAnimation = isAnimationChanged && changes['animation'].currentValue;\n return isAnimationChanged && !hasAnimation;\n};\n/**\n * @hidden\n */\nconst setProgressBarStyles = (props, renderer) => {\n props.forEach(prop => {\n renderer[prop.method](prop.el, prop.attr, `${prop.attrValue}`);\n });\n};\n/**\n * @hidden\n */\nconst removeProgressBarStyles = (props, renderer) => {\n props.forEach(prop => {\n renderer[prop.method](prop.el, prop.attr);\n });\n};\n/**\n * @hidden\n */\nconst hasElementSize = element => {\n return !!(element.style.width && element.style.height);\n};\n\n/**\n * @hidden\n */\nlet ProgressBarBase = /*#__PURE__*/(() => {\n class ProgressBarBase {\n /**\n * @hidden\n */\n constructor(elem, renderer, localization) {\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.hostClasses = true;\n this.roleAttribute = 'progressbar';\n /**\n * The maximum value of the ProgressBar.\n * Defaults to `100`.\n */\n this.max = 100;\n /**\n * The minimum value of the ProgressBar.\n * Defaults to `0`.\n */\n this.min = 0;\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * By default, the value is equal to the `min` value.\n */\n /**\n * The value of the ProgressBar.\n * Has to be between `min` and `max`.\n * Defaults to `0`.\n */\n this.value = 0;\n /**\n * Defines the orientation of the ProgressBar\n * ([see example]({% slug progressbar_orientation %})).\n * Defaults to `horizontal`.\n */\n this.orientation = 'horizontal';\n /**\n * If set to `true`, the ProgressBar will be disabled\n * ([see example]({% slug progressbar_disabled %})).\n * It will still allow you to change its value.\n * Defaults to `false`.\n */\n this.disabled = false;\n /**\n * If set to `true`, the ProgressBar will be reversed\n * ([see example]({% slug progressbar_direction %})).\n * Defaults to `false`.\n */\n this.reverse = false;\n /**\n * Sets the `indeterminate` state of the ProgressBar.\n * Defaults to `false`.\n */\n this.indeterminate = false;\n this.displayValue = 0;\n this.previousValue = 0;\n validatePackage(packageMetadata);\n this.localizationChangeSubscription = localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n }\n get isHorizontal() {\n return this.orientation === 'horizontal';\n }\n get isVertical() {\n return this.orientation === 'vertical';\n }\n get disabledClass() {\n return this.disabled;\n }\n get reverseClass() {\n return this.reverse;\n }\n get indeterminateClass() {\n return this.indeterminate;\n }\n get dirAttribute() {\n return this.direction;\n }\n get ariaMinAttribute() {\n return String(this.min);\n }\n get ariaMaxAttribute() {\n return String(this.max);\n }\n get ariaValueAttribute() {\n return this.indeterminate ? undefined : String(this.displayValue);\n }\n /**\n * @hidden\n */\n get isCompleted() {\n return this.value === this.max;\n }\n /**\n * @hidden\n */\n get statusWidth() {\n return this.orientation === 'horizontal' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusHeight() {\n return this.orientation === 'vertical' ? this._progressRatio * 100 : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperWidth() {\n return this.orientation === 'horizontal' ? 100 / this._progressRatio : 100;\n }\n /**\n * @hidden\n */\n get statusWrapperHeight() {\n return this.orientation === 'vertical' ? 100 / this._progressRatio : 100;\n }\n get _progressRatio() {\n return calculateRatio(this.min, this.max, this.displayValue);\n }\n ngAfterViewInit() {\n const elem = this.elem.nativeElement;\n const label = this.localization.get('progressBarLabel');\n this.renderer.setAttribute(elem, 'aria-label', label);\n }\n ngOnChanges(changes) {\n const min = extractValueFromChanges(changes, 'min', this.min);\n const max = extractValueFromChanges(changes, 'max', this.max);\n const value = extractValueFromChanges(changes, 'value', this.value);\n if (changes['min'] || changes['max'] || changes['value']) {\n if (changes['min'] || changes['max']) {\n validateRange(min, max);\n }\n if (changes['value']) {\n if (value == null || Number.isNaN(value)) {\n this.value = min;\n }\n const previousValue = this.displayValue;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n this.previousValue = previousValue;\n }\n this.min = min;\n this.max = max;\n this.displayValue = adjustValueToRange(this.min, this.max, value);\n }\n }\n ngOnDestroy() {\n if (this.localizationChangeSubscription) {\n this.localizationChangeSubscription.unsubscribe();\n }\n }\n }\n ProgressBarBase.ɵfac = function ProgressBarBase_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ProgressBarBase)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n ProgressBarBase.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ProgressBarBase,\n selectors: [[\"ng-component\"]],\n hostVars: 17,\n hostBindings: function ProgressBarBase_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dirAttribute)(\"role\", ctx.roleAttribute)(\"aria-valuemin\", ctx.ariaMinAttribute)(\"aria-valuemax\", ctx.ariaMaxAttribute)(\"aria-valuenow\", ctx.ariaValueAttribute);\n i0.ɵɵclassProp(\"k-progressbar\", ctx.hostClasses)(\"k-progressbar-horizontal\", ctx.isHorizontal)(\"k-progressbar-vertical\", ctx.isVertical)(\"k-disabled\", ctx.disabledClass)(\"k-progressbar-reverse\", ctx.reverseClass)(\"k-progressbar-indeterminate\", ctx.indeterminateClass);\n }\n },\n inputs: {\n max: \"max\",\n min: \"min\",\n value: \"value\",\n orientation: \"orientation\",\n disabled: \"disabled\",\n reverse: \"reverse\",\n indeterminate: \"indeterminate\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 0,\n vars: 0,\n template: function ProgressBarBase_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ProgressBarBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ProgressBarMessages = /*#__PURE__*/(() => {\n class ProgressBarMessages extends ComponentMessages {}\n ProgressBarMessages.ɵfac = /* @__PURE__ */(() => {\n let ɵProgressBarMessages_BaseFactory;\n return function ProgressBarMessages_Factory(__ngFactoryType__) {\n return (ɵProgressBarMessages_BaseFactory || (ɵProgressBarMessages_BaseFactory = i0.ɵɵgetInheritedFactory(ProgressBarMessages)))(__ngFactoryType__ || ProgressBarMessages);\n };\n })();\n ProgressBarMessages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ProgressBarMessages,\n inputs: {\n progressBarLabel: \"progressBarLabel\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return ProgressBarMessages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalizedProgressBarMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedProgressBarMessagesDirective extends ProgressBarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedProgressBarMessagesDirective.ɵfac = function LocalizedProgressBarMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedProgressBarMessagesDirective)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n LocalizedProgressBarMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedProgressBarMessagesDirective,\n selectors: [[\"\", \"kendoProgressBarLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ProgressBarMessages,\n useExisting: forwardRef(() => LocalizedProgressBarMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedProgressBarMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the [Kendo UI ProgressBar component for Angular]({% slug overview_progressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 50;\n * }\n * ```\n */\nlet ProgressBarComponent = /*#__PURE__*/(() => {\n class ProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization, elem, renderer, zone) {\n super(elem, renderer, localization);\n this.localization = localization;\n this.elem = elem;\n this.renderer = renderer;\n this.zone = zone;\n /**\n * Determines whether the status label will be visible.\n * Defaults to `true`—the label will be visible and displayed with the default\n * `LabelSettings` having its position set to `end` and its format set to `value`.\n */\n this.label = true;\n /**\n * The animation configuration of the ProgressBar.\n * Defaults to `false`.\n */\n this.animation = false;\n /**\n * Fires when the animation which indicates the latest value change is completed.\n */\n this.animationEnd = new EventEmitter();\n }\n /**\n * @hidden\n */\n get showLabel() {\n if (typeof this.label === 'boolean') {\n return this.label;\n } else {\n if (this.label && !this.label.hasOwnProperty('visible')) {\n this.label.visible = true;\n }\n return this.label.visible;\n }\n }\n /**\n * @hidden\n */\n get labelPosition() {\n if (typeof this.label === 'boolean') {\n return 'end';\n } else {\n if (this.label && !this.label.hasOwnProperty('position')) {\n this.label.position = 'end';\n }\n return this.label.position;\n }\n }\n /**\n * @hidden\n */\n get isPositionStart() {\n return this.labelPosition === 'start';\n }\n /**\n * @hidden\n */\n get isPositionCenter() {\n return this.labelPosition === 'center';\n }\n /**\n * @hidden\n */\n get isPositionEnd() {\n return this.labelPosition === 'end';\n }\n /**\n * @hidden\n */\n get formattedLabelValue() {\n return formatValue(this.displayValue, this.min, this.max, this.label);\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n if (this.isAnimationInProgress && stopCurrentAnimation(changes)) {\n this.cancelCurrentAnimation = true;\n }\n if (runAnimation(changes, this.animation, this.previousValue, this.displayValue) && !changes['value'].firstChange) {\n this.startAnimation(this.previousValue);\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n /**\n * @hidden\n */\n startAnimation(previousValue) {\n this.isAnimationInProgress = true;\n const element = this.progressStatusElement.nativeElement;\n const wrapperElement = this.progressStatusWrapperElement.nativeElement;\n const animationOptions = this.getAnimationOptions(previousValue);\n this.zone.runOutsideAngular(() => {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame);\n }\n const animate = () => {\n const elapsed = new Date().getTime() - animationOptions.startTime;\n const position = Math.min(elapsed / animationOptions.duration, 1);\n const size = animationOptions.startSize + animationOptions.deltaSize * position;\n const wrapperSize = 100 / size * 100;\n this.renderValueChange(element, wrapperElement, animationOptions.property, size, wrapperSize);\n if (position < 1) {\n if (this.cancelCurrentAnimation) {\n this.resetProgress(element, wrapperElement, animationOptions.property);\n return;\n }\n this.animationFrame = requestAnimationFrame(animate);\n } else {\n this.stopAnimation(previousValue);\n }\n };\n animate();\n });\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'boolean') {\n return 400;\n } else {\n if (this.animation && !this.animation.hasOwnProperty('duration')) {\n this.animation.duration = 400;\n }\n return this.animation.duration;\n }\n }\n stopAnimation(value) {\n if (hasObservers(this.animationEnd)) {\n this.zone.run(() => {\n this.animationEnd.emit({\n from: value,\n to: this.displayValue\n });\n });\n }\n this.zone.run(() => {\n this.isAnimationInProgress = false;\n });\n }\n getAnimationOptions(value) {\n const isHorizontal = this.orientation === 'horizontal';\n const previousRatio = calculateRatio(this.min, this.max, value);\n const previousStatusWidth = isHorizontal ? previousRatio * 100 : 100;\n const previousStatusHeight = !isHorizontal ? previousRatio * 100 : 100;\n const property = isHorizontal ? 'width' : 'height';\n const startTime = new Date().getTime();\n const startSize = isHorizontal ? previousStatusWidth : previousStatusHeight;\n const deltaSize = isHorizontal ? this.statusWidth - previousStatusWidth : this.statusHeight - previousStatusHeight;\n const duration = this.animationDuration * Math.abs(deltaSize / 100);\n return {\n property,\n startTime,\n startSize,\n deltaSize,\n duration\n };\n }\n renderValueChange(element, wrapperElement, property, size, wrapperSize) {\n this.renderer.setStyle(element, property, size + '%');\n this.renderer.setStyle(wrapperElement, property, wrapperSize + '%');\n }\n resetProgress(element, wrapperElement, property) {\n const size = calculateRatio(this.min, this.max, this.value);\n const newSize = size * 100;\n const newWrapperSize = 100 / size;\n this.renderValueChange(element, wrapperElement, property, newSize, newWrapperSize);\n this.zone.run(() => {\n this.cancelCurrentAnimation = false;\n this.isAnimationInProgress = false;\n });\n }\n }\n ProgressBarComponent.ɵfac = function ProgressBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ProgressBarComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n ProgressBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ProgressBarComponent,\n selectors: [[\"kendo-progressbar\"]],\n viewQuery: function ProgressBarComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.progressStatusElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.progressStatusWrapperElement = _t.first);\n }\n },\n inputs: {\n label: \"label\",\n progressCssStyle: \"progressCssStyle\",\n progressCssClass: \"progressCssClass\",\n emptyCssStyle: \"emptyCssStyle\",\n emptyCssClass: \"emptyCssClass\",\n animation: \"animation\"\n },\n outputs: {\n animationEnd: \"animationEnd\"\n },\n exportAs: [\"kendoProgressBar\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.progressbar'\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 8,\n vars: 28,\n consts: () => {\n let i18n_0;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The aria-label attribute for the ProgressBar component.\n * @meaning kendo.progressbar.progressBarLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_PROGRESSBAR_FESM2020_PROGRESS_KENDO_ANGULAR_PROGRESSBAR_MJS_0 = goog.getMsg(\"Progressbar\");\n i18n_0 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_PROGRESSBAR_FESM2020_PROGRESS_KENDO_ANGULAR_PROGRESSBAR_MJS_0;\n } else {\n i18n_0 = $localize`:kendo.progressbar.progressBarLabel|The aria-label attribute for the ProgressBar component.:Progressbar`;\n }\n return [[\"progressStatus\", \"\"], [\"progressStatusWrap\", \"\"], [\"kendoProgressBarLocalizedMessages\", \"\", \"progressBarLabel\", i18n_0], [1, \"k-progress-status-wrap\", 3, \"ngStyle\", \"ngClass\"], [\"class\", \"k-progress-status\", 4, \"ngIf\"], [1, \"k-selected\", \"k-progressbar-value\", 3, \"ngStyle\", \"ngClass\"], [1, \"k-progress-status-wrap\"], [1, \"k-progress-status\"]];\n },\n template: function ProgressBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 2);\n i0.ɵɵelementStart(1, \"span\", 3);\n i0.ɵɵtemplate(2, ProgressBarComponent_span_2_Template, 2, 1, \"span\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 5, 0)(5, \"span\", 6, 1);\n i0.ɵɵtemplate(7, ProgressBarComponent_span_7_Template, 2, 1, \"span\", 4);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"k-progress-start\", ctx.isPositionStart)(\"k-progress-center\", ctx.isPositionCenter)(\"k-progress-end\", ctx.isPositionEnd);\n i0.ɵɵproperty(\"ngStyle\", ctx.emptyCssStyle)(\"ngClass\", ctx.emptyCssClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"width\", ctx.statusWidth, \"%\")(\"height\", ctx.statusHeight, \"%\");\n i0.ɵɵclassProp(\"k-complete\", ctx.isCompleted);\n i0.ɵɵproperty(\"ngStyle\", ctx.progressCssStyle)(\"ngClass\", ctx.progressCssClass);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"width\", ctx.statusWrapperWidth, \"%\")(\"height\", ctx.statusWrapperHeight, \"%\");\n i0.ɵɵclassProp(\"k-progress-start\", ctx.isPositionStart)(\"k-progress-center\", ctx.isPositionCenter)(\"k-progress-end\", ctx.isPositionEnd);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n }\n },\n dependencies: [LocalizedProgressBarMessagesDirective, NgStyle, NgClass, NgIf],\n encapsulation: 2\n });\n return ProgressBarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the [Kendo UI ChunkProgressBar component for Angular]({% slug overview_chunkprogressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public value = 40;\n * }\n * ```\n */\nlet ChunkProgressBarComponent = /*#__PURE__*/(() => {\n class ChunkProgressBarComponent extends ProgressBarBase {\n /**\n * @hidden\n */\n constructor(localization, elem, renderer) {\n super(elem, renderer, localization);\n this.localization = localization;\n this.elem = elem;\n this.renderer = renderer;\n this.chunkClass = true;\n /**\n * Sets the number of chunks into which the ChunkProgressBar will be split.\n * Defaults to `5`.\n */\n this.chunkCount = 5;\n this._orientationStyles = {\n width: `${this.chunkSizePercentage}%`,\n height: null\n };\n }\n /**\n * @hidden\n */\n get chunks() {\n const count = this.chunkCount;\n const chunks = Array(count).fill(false);\n const completedChunks = Math.floor(this._progressRatio * count);\n for (let i = 0; i < completedChunks; i++) {\n chunks[i] = true;\n }\n return chunks;\n }\n /**\n * @hidden\n */\n get chunkSizePercentage() {\n return 100 / this.chunkCount;\n }\n /**\n * @hidden\n */\n get orientationStyles() {\n if (this.orientation === 'horizontal') {\n this._orientationStyles.width = `${this.chunkSizePercentage}%`;\n this._orientationStyles.height = null;\n } else {\n this._orientationStyles.height = `${this.chunkSizePercentage}%`;\n this._orientationStyles.width = null;\n }\n return this._orientationStyles;\n }\n }\n ChunkProgressBarComponent.ɵfac = function ChunkProgressBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ChunkProgressBarComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n ChunkProgressBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ChunkProgressBarComponent,\n selectors: [[\"kendo-chunkprogressbar\"]],\n hostVars: 2,\n hostBindings: function ChunkProgressBarComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-chunk-progressbar\", ctx.chunkClass);\n }\n },\n inputs: {\n chunkCount: \"chunkCount\",\n progressCssStyle: \"progressCssStyle\",\n progressCssClass: \"progressCssClass\",\n emptyCssStyle: \"emptyCssStyle\",\n emptyCssClass: \"emptyCssClass\"\n },\n exportAs: [\"kendoChunkProgressBar\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.chunkprogressbar'\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 1,\n consts: () => {\n let i18n_1;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The aria-label attribute for the ChunkProgressBar component.\n * @meaning kendo.chunkprogressbar.progressBarLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_PROGRESSBAR_FESM2020_PROGRESS_KENDO_ANGULAR_PROGRESSBAR_MJS_1 = goog.getMsg(\"Chunk progressbar\");\n i18n_1 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_PROGRESSBAR_FESM2020_PROGRESS_KENDO_ANGULAR_PROGRESSBAR_MJS_1;\n } else {\n i18n_1 = $localize`:kendo.chunkprogressbar.progressBarLabel|The aria-label attribute for the ChunkProgressBar component.:Chunk progressbar`;\n }\n return [[\"kendoProgressBarLocalizedMessages\", \"\", \"progressBarLabel\", i18n_1], [1, \"k-reset\", \"k-progressbar-chunks\"], [\"class\", \"k-progressbar-chunk\", 3, \"k-first\", \"k-last\", \"k-selected\", \"ngClass\", \"ngStyle\", \"width\", \"height\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-progressbar-chunk\", 3, \"ngClass\", \"ngStyle\"]];\n },\n template: function ChunkProgressBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 0);\n i0.ɵɵelementStart(1, \"ul\", 1);\n i0.ɵɵtemplate(2, ChunkProgressBarComponent_li_2_Template, 1, 12, \"li\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx.chunks);\n }\n },\n dependencies: [LocalizedProgressBarMessagesDirective, NgFor, NgClass, NgStyle],\n encapsulation: 2\n });\n return ChunkProgressBarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive that selects a template within the `` component which will be used for the center template.\n * ([see example]({% slug center_template_circularprogressbar %})).\n */\nlet CircularProgressbarCenterTemplateDirective = /*#__PURE__*/(() => {\n class CircularProgressbarCenterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n CircularProgressbarCenterTemplateDirective.ɵfac = function CircularProgressbarCenterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CircularProgressbarCenterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n CircularProgressbarCenterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CircularProgressbarCenterTemplateDirective,\n selectors: [[\"\", \"kendoCircularProgressbarCenterTemplate\", \"\"]],\n standalone: true\n });\n return CircularProgressbarCenterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_SURFACE_SIZE = 200;\n/**\n * Represents the [Kendo UI Circular ProgressBar component for Angular]({% slug overview_circularprogressbar %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * `\n * })\n * class AppComponent {\n * public value: number = 50;\n * }\n * ```\n */\nlet CircularProgressBarComponent = /*#__PURE__*/(() => {\n class CircularProgressBarComponent {\n constructor(renderer, cdr, localization, element, zone) {\n this.renderer = renderer;\n this.cdr = cdr;\n this.localization = localization;\n this.element = element;\n this.zone = zone;\n this.hostClasses = true;\n this.roleAttribute = 'progressbar';\n /**\n * Indicates whether an animation will be played on value changes.\n *\n * @default false\n */\n this.animation = false;\n /**\n * The opacity of the value arc.\n * @default 1\n */\n this.opacity = 1;\n /**\n * Fires when the animation which indicates the latest value change is completed.\n */\n this.animationEnd = new EventEmitter();\n this.centerTemplateContext = {};\n this._indeterminate = false;\n this._max = 100;\n this._min = 0;\n this._value = 0;\n this.previousValue = 0;\n this.internalValue = 0;\n this.subscriptions = new Subscription();\n validatePackage(packageMetadata);\n this.subscriptions.add(this.localization.changes.subscribe(this.rtlChange.bind(this)));\n }\n get ariaMinAttribute() {\n return String(this.min);\n }\n get ariaMaxAttribute() {\n return String(this.max);\n }\n get ariaValueAttribute() {\n return this.indeterminate ? undefined : String(this.value);\n }\n /**\n * Sets the default value of the Circular Progressbar between `min` and `max`.\n *\n * @default 0\n */\n set value(value) {\n if (value > this.max) {\n this.handleErrors('value > max');\n }\n if (value < this.min) {\n this.handleErrors('value < min');\n }\n this.previousValue = this.value;\n this._value = value;\n }\n get value() {\n return this._value;\n }\n /**\n * The maximum value which the Circular Progressbar can accept.\n *\n * @default 100\n */\n set max(max) {\n if (max < this.min) {\n this.handleErrors('max < min');\n }\n this._max = max;\n }\n get max() {\n return this._max;\n }\n /**\n * The minimum value which the Circular Progressbar can accept.\n *\n * @default 0\n */\n set min(min) {\n if (min > this.max) {\n this.handleErrors('max < min');\n }\n this._min = min;\n }\n get min() {\n return this._min;\n }\n /**\n * Puts the Circular ProgressBar in indeterminate state.\n * @default false\n */\n set indeterminate(indeterminate) {\n this._indeterminate = indeterminate;\n }\n get indeterminate() {\n return this._indeterminate;\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n const elem = this.element.nativeElement;\n const ariaLabel = this.localization.get('progressBarLabel');\n this.renderer.setAttribute(elem, 'aria-label', ariaLabel);\n this.initProgressArc();\n }\n ngOnChanges(changes) {\n const skipFirstChange = true;\n if (isChanged('value', changes, skipFirstChange) && this.progress) {\n if (this.animation) {\n this.progressbarAnimation();\n } else {\n const value = this.value - this.min;\n this.internalValue = changes['value'].currentValue;\n this.calculateProgress(value);\n }\n }\n if (changes['opacity'] && this.progress) {\n setProgressBarStyles([{\n method: 'setAttribute',\n el: this.progress.nativeElement,\n attr: 'opacity',\n attrValue: this.opacity.toString()\n }], this.renderer);\n }\n if (changes['indeterminate'] && !changes['indeterminate'].firstChange) {\n this.indeterminateState();\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n onResize() {\n this.setStyles();\n const value = this.animation ? this.internalValue : this.value;\n this.calculateProgress(value);\n this.updateCenterTemplate(value);\n }\n initProgressArc() {\n this.setStyles();\n if (this.indeterminate) {\n this.indeterminateState();\n } else {\n if (!this.animation) {\n const value = this.value - this.min;\n this.calculateProgress(value);\n } else {\n this.progressbarAnimation();\n }\n }\n }\n calculateProgress(value) {\n if (this.progressColor) {\n this.updateProgressColor(value);\n }\n // needed when we have *ngIf inside the template to render different content depending on some condition\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n this.updateCenterTemplate(value + this.min);\n });\n const progressArc = this.progress.nativeElement;\n const radius = this.progress.nativeElement.r.baseVal.value;\n const circumference = Math.PI * (radius * 2);\n const dir = this.rtl ? circumference * -1 : circumference;\n const strokeDashOffest = circumference - dir * (value / (this.max - this.min));\n const progressCalculations = [{\n method: 'setStyle',\n el: progressArc,\n attr: 'strokeDasharray',\n attrValue: circumference.toString()\n }, {\n method: 'setStyle',\n el: progressArc,\n attr: 'strokeDashoffset',\n attrValue: strokeDashOffest.toString()\n }];\n setProgressBarStyles(progressCalculations, this.renderer);\n }\n progressbarAnimation() {\n const forwardProgress = {\n isOngoing: this.internalValue > this.value - this.min,\n isPositive: this.value >= this.previousValue\n };\n const backwardProgress = {\n isOngoing: this.internalValue < this.value - this.min,\n isNegative: this.value <= this.previousValue\n };\n if (forwardProgress.isOngoing && forwardProgress.isPositive || backwardProgress.isOngoing && backwardProgress.isNegative) {\n return;\n }\n this.calculateProgress(this.internalValue);\n const from = this.internalValue;\n if (hasObservers(this.animationEnd)) {\n this.animationEnd.emit({\n from: from,\n to: this.internalValue\n });\n }\n // eslint-disable-next-line no-unused-expressions\n forwardProgress.isPositive ? this.internalValue += 1 : this.internalValue -= 1;\n requestAnimationFrame(this.progressbarAnimation.bind(this));\n }\n setStyles() {\n const progressArc = this.progress.nativeElement;\n const scale = this.scale.nativeElement;\n const surface = this.surface.nativeElement;\n const element = this.element.nativeElement;\n let elWidth = element.getBoundingClientRect().width;\n if (!hasElementSize(element)) {\n const surfaceSize = [{\n method: 'setStyle',\n el: surface,\n attr: 'width',\n attrValue: `${DEFAULT_SURFACE_SIZE}px`\n }, {\n method: 'setStyle',\n el: surface,\n attr: 'height',\n attrValue: `${DEFAULT_SURFACE_SIZE}px`\n }];\n elWidth = DEFAULT_SURFACE_SIZE;\n setProgressBarStyles(surfaceSize, this.renderer);\n }\n const attributesArray = [{\n method: 'setAttribute',\n el: progressArc,\n attr: 'r',\n attrValue: String(elWidth / 2 - 10)\n }, {\n method: 'setAttribute',\n el: progressArc,\n attr: 'cx',\n attrValue: String(elWidth / 2)\n }, {\n method: 'setAttribute',\n el: progressArc,\n attr: 'cy',\n attrValue: String(elWidth / 2)\n }, {\n method: 'setAttribute',\n el: progressArc,\n attr: 'opacity',\n attrValue: String(this.opacity)\n }, {\n method: 'setAttribute',\n el: scale,\n attr: 'r',\n attrValue: String(elWidth / 2 - 10)\n }, {\n method: 'setAttribute',\n el: scale,\n attr: 'cx',\n attrValue: String(elWidth / 2)\n }, {\n method: 'setAttribute',\n el: scale,\n attr: 'cy',\n attrValue: String(elWidth / 2)\n }];\n setProgressBarStyles(attributesArray, this.renderer);\n }\n indeterminateState() {\n const progressArc = this.progress.nativeElement;\n if (this.indeterminate) {\n // the indeterminate state wont work as the `k-circular-progressbar-arc` has a transform: rotate(-90deg) which is\n // interfering with the svg animation as the animateTransform brings its own transform: rotate()\n // This will be like this until the themes release a new version, bringing a new class `k-circular-progressbar-indeterminate-arc`\n // containing only the necassery CSS styles and we will switch between them when the state of the progressbar is switched.\n this.calculateProgress(this.value - this.min);\n const rotate = this.rtl ? {\n from: 360,\n to: 0\n } : {\n from: 0,\n to: 360\n };\n let color;\n if (!this.progressColor) {\n color = getComputedStyle(progressArc).stroke;\n }\n const indeterminateStyles = [{\n method: 'setStyle',\n el: progressArc,\n attr: 'transform-origin',\n attrValue: 'center'\n }, {\n method: 'setStyle',\n el: progressArc,\n attr: 'fill',\n attrValue: 'none'\n }, {\n method: 'setStyle',\n el: progressArc,\n attr: 'stroke-linecap',\n attrValue: 'round'\n }, {\n method: 'setStyle',\n el: progressArc,\n attr: 'stroke',\n attrValue: color ? color : this.currentColor\n }];\n setProgressBarStyles(indeterminateStyles, this.renderer);\n this.renderer.removeClass(progressArc, 'k-circular-progressbar-arc');\n progressArc.innerHTML = ``;\n } else {\n this.renderer.addClass(progressArc, 'k-circular-progressbar-arc');\n const removeIndeterminateStyles = [{\n method: 'removeStyle',\n el: progressArc,\n attr: 'transform-origin'\n }, {\n method: 'removeStyle',\n el: progressArc,\n attr: 'fill'\n }, {\n method: 'removeStyle',\n el: progressArc,\n attr: 'stroke-linecap'\n }];\n removeProgressBarStyles(removeIndeterminateStyles, this.renderer);\n progressArc.innerHTML = '';\n if (this.animation) {\n this.progressbarAnimation();\n }\n }\n }\n updateCenterTemplate(value) {\n if (!this.centerTemplate) {\n return;\n }\n this.centerTemplateContext.value = value;\n this.centerTemplateContext.color = this.currentColor;\n this.cdr.detectChanges();\n this.positionLabel();\n }\n positionLabel() {\n const labelEl = this.labelElement.nativeElement;\n const element = this.element.nativeElement;\n const surface = this.surface.nativeElement;\n let elWidth;\n let elHeight;\n if (!hasElementSize(element)) {\n const surfaceSize = surface.getBoundingClientRect();\n elWidth = surfaceSize.width;\n elHeight = surfaceSize.height;\n } else {\n const elementSize = element.getBoundingClientRect();\n elWidth = elementSize.width;\n elHeight = elementSize.height;\n }\n const left = elWidth / 2 - labelEl.offsetWidth / 2;\n const top = elHeight / 2 - labelEl.offsetHeight / 2;\n const labelCalculations = [{\n method: 'setStyle',\n el: labelEl,\n attr: 'left',\n attrValue: `${left}px`\n }, {\n method: 'setStyle',\n el: labelEl,\n attr: 'top',\n attrValue: `${top}px`\n }];\n setProgressBarStyles(labelCalculations, this.renderer);\n }\n get currentColor() {\n const currentColor = this.progress.nativeElement.style.stroke;\n return currentColor;\n }\n updateProgressColor(value) {\n const progressArc = this.progress.nativeElement;\n if (typeof this.progressColor === 'string') {\n this.renderer.setStyle(progressArc, 'stroke', this.progressColor);\n } else {\n for (let i = 0; i < this.progressColor.length; i++) {\n const from = this.progressColor[i].from;\n const to = this.progressColor[i].to;\n if (value >= from && value <= to || !from && value <= to) {\n this.renderer.setStyle(progressArc, 'stroke', this.progressColor[i].color);\n break;\n }\n if (!to && value >= from) {\n this.renderer.setStyle(progressArc, 'stroke', this.progressColor[i].color);\n }\n }\n }\n }\n handleErrors(type) {\n if (isDevMode()) {\n switch (type) {\n case 'value > max':\n throw new Error('The value of the CircularProgressbar cannot exceed the max value');\n case 'value < min':\n throw new Error('The value of the CircularProgressbar cannot be lower than the min value');\n case 'max < min':\n throw new Error('The min value cannot be higher than the max value');\n default:\n }\n }\n }\n setDirection() {\n this.rtl = this.localization.rtl;\n if (this.element) {\n this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n if (this.labelElement) {\n this.renderer.setAttribute(this.labelElement.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');\n }\n }\n rtlChange() {\n if (this.element && this.rtl !== this.localization.rtl) {\n this.setDirection();\n }\n }\n }\n CircularProgressBarComponent.ɵfac = function CircularProgressBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CircularProgressBarComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n CircularProgressBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CircularProgressBarComponent,\n selectors: [[\"kendo-circularprogressbar\"]],\n contentQueries: function CircularProgressBarComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CircularProgressbarCenterTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.centerTemplate = _t.first);\n }\n },\n viewQuery: function CircularProgressBarComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 5);\n i0.ɵɵviewQuery(_c3, 5);\n i0.ɵɵviewQuery(_c4, 5);\n i0.ɵɵviewQuery(_c5, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.progress = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scale = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.labelElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.surface = _t.first);\n }\n },\n hostVars: 6,\n hostBindings: function CircularProgressBarComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-valuemin\", ctx.ariaMinAttribute)(\"aria-valuemax\", ctx.ariaMaxAttribute)(\"aria-valuenow\", ctx.ariaValueAttribute)(\"role\", ctx.roleAttribute);\n i0.ɵɵclassProp(\"k-circular-progressbar\", ctx.hostClasses);\n }\n },\n inputs: {\n value: \"value\",\n max: \"max\",\n min: \"min\",\n animation: \"animation\",\n opacity: \"opacity\",\n indeterminate: \"indeterminate\",\n progressColor: \"progressColor\"\n },\n outputs: {\n animationEnd: \"animationEnd\"\n },\n exportAs: [\"kendoCircularProgressBar\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.circularprogressbar'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 13,\n vars: 1,\n consts: () => {\n let i18n_2;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The aria-label attribute for the Circular ProgressBar component.\n * @meaning kendo.circularprogressbar.progressBarLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_PROGRESSBAR_FESM2020_PROGRESS_KENDO_ANGULAR_PROGRESSBAR_MJS_2 = goog.getMsg(\"Circular progressbar\");\n i18n_2 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_PROGRESSBAR_FESM2020_PROGRESS_KENDO_ANGULAR_PROGRESSBAR_MJS_2;\n } else {\n i18n_2 = $localize`:kendo.circularprogressbar.progressBarLabel|The aria-label attribute for the Circular ProgressBar component.:Circular progressbar`;\n }\n return [[\"surface\", \"\"], [\"svg\", \"\"], [\"scale\", \"\"], [\"progress\", \"\"], [\"label\", \"\"], [\"kendoProgressBarLocalizedMessages\", \"\", \"progressBarLabel\", i18n_2], [1, \"k-circular-progressbar-surface\"], [\"stroke-width\", \"9.5\", 1, \"k-circular-progressbar-scale\"], [\"stroke-width\", \"9.5\", 1, \"k-circular-progressbar-arc\"], [\"class\", \"k-circular-progressbar-label\", 4, \"ngIf\"], [3, \"resize\"], [1, \"k-circular-progressbar-label\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]];\n },\n template: function CircularProgressBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainer(0, 5);\n i0.ɵɵelementStart(1, \"div\", 6, 0)(3, \"div\");\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(4, \"svg\", null, 1)(6, \"g\");\n i0.ɵɵelement(7, \"circle\", 7, 2)(9, \"circle\", 8, 3);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(11, CircularProgressBarComponent_div_11_Template, 3, 2, \"div\", 9);\n i0.ɵɵelementEnd()();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(12, \"kendo-resize-sensor\", 10);\n i0.ɵɵlistener(\"resize\", function CircularProgressBarComponent_Template_kendo_resize_sensor_resize_12_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onResize());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(11);\n i0.ɵɵproperty(\"ngIf\", ctx.centerTemplate);\n }\n },\n dependencies: [LocalizedProgressBarMessagesDirective, NgIf, NgTemplateOutlet, ResizeSensorComponent],\n encapsulation: 2\n });\n return CircularProgressBarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nlet ProgressBarCustomMessagesComponent = /*#__PURE__*/(() => {\n class ProgressBarCustomMessagesComponent extends ProgressBarMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n ProgressBarCustomMessagesComponent.ɵfac = function ProgressBarCustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ProgressBarCustomMessagesComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n ProgressBarCustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ProgressBarCustomMessagesComponent,\n selectors: [[\"kendo-progressbar-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ProgressBarMessages,\n useExisting: forwardRef(() => ProgressBarCustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ProgressBarCustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ProgressBarCustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Utility array that contains all `ChunkProgressBar` related components and directives\n */\nconst KENDO_CHUNKPROGRESSBAR = [ChunkProgressBarComponent, ProgressBarCustomMessagesComponent];\n/**\n * Utility array that contains all `CircularProgressBar` related components and directives\n */\nconst KENDO_CIRCULARPROGRESSBAR = [CircularProgressbarCenterTemplateDirective, CircularProgressBarComponent, ProgressBarCustomMessagesComponent];\n/**\n * Utility array that contains all `ProgressBar` related components and directives\n */\nconst KENDO_PROGRESSBAR = [ProgressBarComponent, ProgressBarCustomMessagesComponent];\n/**\n * Utility array that contains all `@progress/kendo-angular-progressbar` related components and directives\n */\nconst KENDO_PROGRESSBARS = [...KENDO_CHUNKPROGRESSBAR, ...KENDO_CIRCULARPROGRESSBAR, ...KENDO_PROGRESSBAR];\n\n/**\n * @hidden\n * IMPORTANT: NgModule export kept for backwards compatibility\n*/\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmodules'])\n * definition for the ProgressBar components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ProgressBar module\n * import { ProgressBarModule } from '@progress/kendo-angular-progressbar';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ProgressBarModule], // import ProgressBar module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet ProgressBarModule = /*#__PURE__*/(() => {\n class ProgressBarModule {}\n ProgressBarModule.ɵfac = function ProgressBarModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ProgressBarModule)();\n };\n ProgressBarModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ProgressBarModule\n });\n ProgressBarModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [ResizeBatchService],\n imports: [ChunkProgressBarComponent, ProgressBarCustomMessagesComponent, CircularProgressBarComponent, ProgressBarCustomMessagesComponent, ProgressBarComponent, ProgressBarCustomMessagesComponent]\n });\n return ProgressBarModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ChunkProgressBarComponent, CircularProgressBarComponent, CircularProgressbarCenterTemplateDirective, KENDO_CHUNKPROGRESSBAR, KENDO_CIRCULARPROGRESSBAR, KENDO_PROGRESSBAR, KENDO_PROGRESSBARS, LocalizedProgressBarMessagesDirective, ProgressBarComponent, ProgressBarCustomMessagesComponent, ProgressBarModule };","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Injectable, Directive, Optional, isDevMode, Component, SkipSelf, Host, Input, ViewChild, HostBinding, ViewChildren, ContentChildren, EventEmitter, Output, ContentChild, HostListener, Inject, QueryList, NgZone, forwardRef, ElementRef, ViewEncapsulation, TemplateRef, NgModule } from '@angular/core';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';\nimport * as i1$1 from '@progress/kendo-angular-common';\nimport { Keys, shouldShowValidationUI, WatermarkOverlayComponent, isDocumentAvailable, DraggableDirective, PreventableEvent as PreventableEvent$1, guid, ResizeSensorComponent, hasObservers, isPresent as isPresent$1, focusableSelector, isChanged } from '@progress/kendo-angular-common';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport * as i1$2 from '@angular/animations';\nimport { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';\nimport { Subject, BehaviorSubject, Subscription, of, fromEvent } from 'rxjs';\nimport { chevronUpIcon, chevronDownIcon, caretAltLeftIcon, caretAltRightIcon, caretAltUpIcon, caretAltDownIcon, xIcon, checkCircleIcon, exclamationCircleIcon, chevronRightIcon } from '@progress/kendo-svg-icons';\nimport { IconWrapperComponent } from '@progress/kendo-angular-icons';\nimport { NgIf, NgTemplateOutlet, NgFor, NgStyle, NgClass } from '@angular/common';\nimport { delay, takeUntil, map, tap, filter, switchMap, take } from 'rxjs/operators';\nimport { ButtonComponent } from '@progress/kendo-angular-buttons';\nimport { ProgressBarComponent } from '@progress/kendo-angular-progressbar';\nimport { Draggable } from '@progress/kendo-draggable';\nimport { DatePipe } from '@progress/kendo-angular-intl';\n\n/**\n * @hidden\n */\nconst _c0 = [\"header\"];\nconst _c1 = [\"contentWrapper\"];\nconst _c2 = [[[\"kendo-panelbar-item\"]]];\nconst _c3 = [\"kendo-panelbar-item\"];\nconst _c4 = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => ({\n title: a0,\n id: a1,\n icon: a2,\n iconClass: a3,\n svgIcon: a4,\n imageUrl: a5,\n selected: a6,\n expanded: a7,\n disabled: a8,\n focused: a9,\n content: a10\n});\nconst _c5 = a0 => ({\n item: a0\n});\nconst _c6 = (a0, a1, a2, a3, a4, a5) => ({\n title: a0,\n id: a1,\n icon: a2,\n imageUrl: a3,\n disabled: a4,\n content: a5\n});\nconst _c7 = a0 => ({\n $implicit: a0\n});\nfunction PanelBarItemComponent_kendo_icon_wrapper_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 7);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r1.iconClasses)(\"customFontClass\", ctx_r1.customIconClasses)(\"svgIcon\", ctx_r1.svgIcon);\n }\n}\nfunction PanelBarItemComponent_img_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"img\", 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"src\", ctx_r1.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction PanelBarItemComponent_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 9);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r1.title);\n }\n}\nfunction PanelBarItemComponent_5_ng_template_0_Template(rf, ctx) {}\nfunction PanelBarItemComponent_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, PanelBarItemComponent_5_ng_template_0_Template, 0, 0, \"ng-template\", 10);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.titleTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(14, _c5, i0.ɵɵpureFunctionV(2, _c4, [ctx_r1.title, ctx_r1.id, ctx_r1.icon, ctx_r1.iconClass, ctx_r1.svgIcon, ctx_r1.imageUrl, ctx_r1.selected, ctx_r1.expanded, ctx_r1.disabled, ctx_r1.focused, ctx_r1.content])));\n }\n}\nfunction PanelBarItemComponent_kendo_icon_wrapper_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 11);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r1.expanded ? \"arrow-chevron-up\" : \"chevron-down\")(\"svgIcon\", ctx_r1.expanderSVGIcon)(\"innerCssClass\", ctx_r1.dirInnerCssClasses);\n }\n}\nfunction PanelBarItemComponent_div_7_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 14);\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"overflow\", ctx_r1.contentOverflow)(\"height\", ctx_r1.contentHeight);\n }\n}\nfunction PanelBarItemComponent_div_7_div_3_ng_template_1_Template(rf, ctx) {}\nfunction PanelBarItemComponent_div_7_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 15);\n i0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_3_ng_template_1_Template, 0, 0, \"ng-template\", 10);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"overflow\", ctx_r1.contentOverflow)(\"height\", ctx_r1.contentHeight);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.contentTemplate.first.templateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(13, _c7, i0.ɵɵpureFunction6(6, _c6, ctx_r1.title, ctx_r1.id, ctx_r1.icon, ctx_r1.imageUrl, ctx_r1.disabled, ctx_r1.content)));\n }\n}\nfunction PanelBarItemComponent_div_7_div_4_ng_container_1_kendo_panelbar_item_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-panelbar-item\", 18);\n }\n if (rf & 2) {\n const item_r3 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"title\", item_r3.title)(\"id\", item_r3.id)(\"icon\", item_r3.icon)(\"iconClass\", item_r3.iconClass)(\"svgIcon\", item_r3.svgIcon)(\"imageUrl\", item_r3.imageUrl)(\"selected\", !!item_r3.selected)(\"expanded\", !!item_r3.expanded)(\"disabled\", !!item_r3.disabled)(\"template\", ctx_r1.template)(\"items\", item_r3.children)(\"content\", item_r3.content);\n }\n}\nfunction PanelBarItemComponent_div_7_div_4_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_4_ng_container_1_kendo_panelbar_item_1_Template, 1, 12, \"kendo-panelbar-item\", 17);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const item_r3 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !item_r3.hidden);\n }\n}\nfunction PanelBarItemComponent_div_7_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 14);\n i0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_4_ng_container_1_Template, 2, 1, \"ng-container\", 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"overflow\", ctx_r1.contentOverflow)(\"height\", ctx_r1.contentHeight);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.items);\n }\n}\nfunction PanelBarItemComponent_div_7_div_5_ng_template_1_Template(rf, ctx) {}\nfunction PanelBarItemComponent_div_7_div_5_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵtextInterpolate(ctx_r1.content);\n }\n}\nfunction PanelBarItemComponent_div_7_div_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 15);\n i0.ɵɵtemplate(1, PanelBarItemComponent_div_7_div_5_ng_template_1_Template, 0, 0, \"ng-template\", 10)(2, PanelBarItemComponent_div_7_div_5_ng_template_2_Template, 1, 1, \"ng-template\", 19);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"overflow\", ctx_r1.contentOverflow)(\"height\", ctx_r1.contentHeight);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(14, _c7, i0.ɵɵpureFunction6(7, _c6, ctx_r1.title, ctx_r1.id, ctx_r1.icon, ctx_r1.imageUrl, ctx_r1.disabled, ctx_r1.content)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.template);\n }\n}\nfunction PanelBarItemComponent_div_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", null, 1);\n i0.ɵɵtemplate(2, PanelBarItemComponent_div_7_div_2_Template, 2, 4, \"div\", 12)(3, PanelBarItemComponent_div_7_div_3_Template, 2, 15, \"div\", 13)(4, PanelBarItemComponent_div_7_div_4_Template, 2, 5, \"div\", 12)(5, PanelBarItemComponent_div_7_div_5_Template, 3, 16, \"div\", 13);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"@toggle\", ctx_r1.state);\n i0.ɵɵattribute(\"role\", \"group\")(\"aria-hidden\", !ctx_r1.disabled && !ctx_r1.expanded);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.hasChildItems && !(ctx_r1.items == null ? null : ctx_r1.items.length));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.hasContent && !ctx_r1.content);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.hasItems);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.content);\n }\n}\nfunction PanelBarComponent_ng_content_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 0, [\"*ngIf\", \"contentChildItems && !items\"]);\n }\n}\nfunction PanelBarComponent_ng_template_1_ng_container_0_kendo_panelbar_item_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-panelbar-item\", 5);\n }\n if (rf & 2) {\n const item_r1 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"title\", item_r1.title)(\"id\", item_r1.id)(\"icon\", item_r1.icon)(\"iconClass\", item_r1.iconClass)(\"svgIcon\", item_r1.svgIcon)(\"imageUrl\", item_r1.imageUrl)(\"selected\", !!item_r1.selected)(\"expanded\", !!item_r1.expanded)(\"disabled\", !!item_r1.disabled)(\"template\", ctx_r1.templateRef)(\"items\", item_r1.children)(\"content\", item_r1.content);\n }\n}\nfunction PanelBarComponent_ng_template_1_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, PanelBarComponent_ng_template_1_ng_container_0_kendo_panelbar_item_1_Template, 1, 12, \"kendo-panelbar-item\", 4);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const item_r1 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !item_r1.hidden);\n }\n}\nfunction PanelBarComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, PanelBarComponent_ng_template_1_ng_container_0_Template, 2, 1, \"ng-container\", 3);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.items);\n }\n}\nfunction PanelBarComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 6);\n }\n}\nconst _c8 = [\"*\"];\nfunction SplitterPaneComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵprojection(1);\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction SplitterPaneComponent_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 2);\n }\n}\nfunction SplitterBarComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵlistener(\"click\", function SplitterBarComponent_div_0_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.togglePrevious());\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r1.previousArrowClass())(\"svgIcon\", ctx_r1.previousSVGArrowClass());\n }\n}\nfunction SplitterBarComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵlistener(\"click\", function SplitterBarComponent_div_2_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.toggleNext());\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r1.nextArrowClass())(\"svgIcon\", ctx_r1.nextSVGArrowClass());\n }\n}\nconst _c9 = [[[\"kendo-splitter-pane\"]]];\nconst _c10 = [\"kendo-splitter-pane\"];\nconst _c11 = (a0, a1) => ({\n width: a0,\n height: a1\n});\nfunction SplitterComponent_ng_container_1_kendo_splitter_bar_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-splitter-bar\", 2);\n }\n if (rf & 2) {\n const index_r1 = i0.ɵɵnextContext().index;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"index\", index_r1)(\"orientation\", ctx_r1.orientation)(\"ngStyle\", i0.ɵɵpureFunction2(3, _c11, ctx_r1.orientation === \"horizontal\" ? ctx_r1.splitbarWidth + \"px\" : undefined, ctx_r1.orientation === \"vertical\" ? ctx_r1.splitbarWidth + \"px\" : undefined));\n }\n}\nfunction SplitterComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, SplitterComponent_ng_container_1_kendo_splitter_bar_1_Template, 1, 6, \"kendo-splitter-bar\", 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const last_r3 = ctx.last;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !last_r3);\n }\n}\nconst _c12 = [\"kendoTabStripScrollableButton\", \"\"];\nconst _c13 = [\"kendoTabStripTab\", \"\"];\nfunction TabComponent_ng_container_0_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.tab.title);\n }\n}\nfunction TabComponent_ng_container_0_span_2_ng_template_1_Template(rf, ctx) {}\nfunction TabComponent_ng_container_0_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵtemplate(1, TabComponent_ng_container_0_span_2_ng_template_1_Template, 0, 0, \"ng-template\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.tab.tabTitle == null ? null : ctx_r0.tab.tabTitle.templateRef);\n }\n}\nfunction TabComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TabComponent_ng_container_0_span_1_Template, 2, 1, \"span\", 4)(2, TabComponent_ng_container_0_span_2_Template, 2, 1, \"span\", 4);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.tab.tabTitle);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.tab.tabTitle);\n }\n}\nfunction TabComponent_ng_template_1_Template(rf, ctx) {}\nfunction TabComponent_button_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 6);\n i0.ɵɵlistener(\"click\", function TabComponent_button_3_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.closeTab(ctx_r0.index));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"icon\", ctx_r0.closeButtonClasses)(\"iconClass\", ctx_r0.customCloseButtonClasses)(\"svgIcon\", ctx_r0.closeSVGIconClass)(\"title\", ctx_r0.closeButtonTitle);\n i0.ɵɵattribute(\"aria-label\", ctx_r0.closeButtonTitle);\n }\n}\nconst _c14 = [\"tablist\"];\nconst _c15 = [\"prevScrollButton\"];\nconst _c16 = [\"nextScrollButton\"];\nconst _c17 = [\"tabHeaderContainer\"];\nfunction TabStripComponent_ng_container_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction TabStripComponent_ng_container_1_ng_container_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction TabStripComponent_ng_container_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TabStripComponent_ng_container_1_ng_container_2_ng_container_1_Template, 1, 0, \"ng-container\", 10);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n i0.ɵɵnextContext(2);\n const content_r1 = i0.ɵɵreference(6);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", content_r1);\n }\n}\nfunction TabStripComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TabStripComponent_ng_container_1_ng_container_1_Template, 1, 0, \"ng-container\", 10)(2, TabStripComponent_ng_container_1_ng_container_2_Template, 2, 1, \"ng-container\", 7);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const heading_r3 = i0.ɵɵreference(4);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", heading_r3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showContentArea);\n }\n}\nfunction TabStripComponent_ng_container_2_ng_container_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction TabStripComponent_ng_container_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TabStripComponent_ng_container_2_ng_container_1_ng_container_1_Template, 1, 0, \"ng-container\", 10);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n i0.ɵɵnextContext(2);\n const content_r1 = i0.ɵɵreference(6);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", content_r1);\n }\n}\nfunction TabStripComponent_ng_container_2_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction TabStripComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TabStripComponent_ng_container_2_ng_container_1_Template, 2, 1, \"ng-container\", 7)(2, TabStripComponent_ng_container_2_ng_container_2_Template, 1, 0, \"ng-container\", 10);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n const heading_r3 = i0.ɵɵreference(4);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showContentArea);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", heading_r3);\n }\n}\nfunction TabStripComponent_ng_template_3_span_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 15, 3);\n i0.ɵɵlistener(\"tabScroll\", function TabStripComponent_ng_template_3_span_1_Template_span_tabScroll_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.tabScroll.emit($event));\n })(\"onClick\", function TabStripComponent_ng_template_3_span_1_Template_span_onClick_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onScrollButtonClick($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"scrollable\", ctx_r1.scrollable)(\"tabPosition\", ctx_r1.tabPosition)(\"prev\", true)(\"title\", ctx_r1.localization.get(\"previousTabButton\"));\n }\n}\nfunction TabStripComponent_ng_template_3_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"li\", 16, 4);\n i0.ɵɵlistener(\"tabClose\", function TabStripComponent_ng_template_3_ng_container_4_Template_li_tabClose_1_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.tabClose.emit($event));\n })(\"click\", function TabStripComponent_ng_template_3_ng_container_4_Template_li_click_1_listener($event) {\n const i_r6 = i0.ɵɵrestoreView(_r5).index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onTabClick($event, i_r6));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const tab_r7 = ctx.$implicit;\n const i_r6 = ctx.index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", tab_r7.cssClass)(\"ngStyle\", tab_r7.cssStyle)(\"tab\", tab_r7)(\"index\", i_r6)(\"tabStripClosable\", ctx_r1.closable)(\"tabStripCloseIcon\", ctx_r1.closeIcon)(\"customTabstripCloseIcon\", ctx_r1.closeIconClass)(\"closeSVGIcon\", ctx_r1.closeSVGIcon)(\"id\", ctx_r1.getTabId(i_r6));\n i0.ɵɵattribute(\"aria-controls\", ctx_r1.showContentArea && tab_r7.selected ? ctx_r1.getTabPanelId(i_r6) : undefined);\n }\n}\nfunction TabStripComponent_ng_template_3_span_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 15, 5);\n i0.ɵɵlistener(\"tabScroll\", function TabStripComponent_ng_template_3_span_5_Template_span_tabScroll_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.tabScroll.emit($event));\n })(\"onClick\", function TabStripComponent_ng_template_3_span_5_Template_span_onClick_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onScrollButtonClick($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"scrollable\", ctx_r1.scrollable)(\"tabPosition\", ctx_r1.tabPosition)(\"prev\", false)(\"title\", ctx_r1.localization.get(\"nextTabButton\"));\n }\n}\nfunction TabStripComponent_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 11);\n i0.ɵɵtemplate(1, TabStripComponent_ng_template_3_span_1_Template, 2, 4, \"span\", 12);\n i0.ɵɵelementStart(2, \"ul\", 13, 2);\n i0.ɵɵtemplate(4, TabStripComponent_ng_template_3_ng_container_4_Template, 3, 10, \"ng-container\", 14);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, TabStripComponent_ng_template_3_span_5_Template, 2, 4, \"span\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r1.itemsWrapperClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.hasScrollButtons);\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"justify-content\", ctx_r1.tabsAlignmentStyles)(\"width\", ctx_r1.tabListWidth)(\"height\", ctx_r1.tabListHeight);\n i0.ɵɵattribute(\"aria-orientation\", ctx_r1.tabPosition === \"left\" || ctx_r1.tabPosition === \"right\" ? \"vertical\" : \"horizontal\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.tabs);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.hasScrollButtons);\n }\n}\nfunction TabStripComponent_ng_template_5_ng_template_0_div_0_ng_template_1_Template(rf, ctx) {}\nfunction TabStripComponent_ng_template_5_ng_template_0_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 19);\n i0.ɵɵtemplate(1, TabStripComponent_ng_template_5_ng_template_0_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 20);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r8 = i0.ɵɵnextContext();\n const tab_r10 = ctx_r8.$implicit;\n const i_r11 = ctx_r8.index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"@state\", tab_r10.selected && ctx_r1.animate ? \"active\" : \"inactive\")(\"ngClass\", !ctx_r1.keepTabContent || tab_r10.selected ? \"k-tabstrip-content k-active\" : \"k-tabstrip-content\")(\"tabIndex\", 0)(\"id\", ctx_r1.getTabPanelId(i_r11));\n i0.ɵɵattribute(\"aria-hidden\", !tab_r10.selected)(\"aria-labelledby\", ctx_r1.getTabId(i_r11))(\"aria-disabled\", tab_r10.disabled);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", tab_r10.tabContent == null ? null : tab_r10.tabContent.templateRef);\n }\n}\nfunction TabStripComponent_ng_template_5_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TabStripComponent_ng_template_5_ng_template_0_div_0_Template, 2, 8, \"div\", 18);\n }\n if (rf & 2) {\n const tab_r10 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngIf\", tab_r10.selected || ctx_r1.keepTabContent);\n }\n}\nfunction TabStripComponent_ng_template_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TabStripComponent_ng_template_5_ng_template_0_Template, 1, 1, \"ng-template\", 17);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.tabs);\n }\n}\nfunction TabStripComponent_kendo_resize_sensor_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r12 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 21);\n i0.ɵɵlistener(\"resize\", function TabStripComponent_kendo_resize_sensor_7_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r12);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onResize());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction TabStripComponent_div_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 22);\n }\n}\nconst _c18 = [\"kendoDrawerItem\", \"\"];\nconst _c19 = (a0, a1, a2, a3) => ({\n $implicit: a0,\n isItemExpanded: a1,\n hasChildren: a2,\n level: a3\n});\nfunction DrawerItemComponent_0_ng_template_0_Template(rf, ctx) {}\nfunction DrawerItemComponent_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerItemComponent_0_ng_template_0_Template, 0, 0, \"ng-template\", 2);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction4(2, _c19, ctx_r0.item, ctx_r0.viewItem.isExpanded, ctx_r0.viewItem.hasChildren, ctx_r0.viewItem.level));\n }\n}\nfunction DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 8);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"name\", ctx_r0.iconClasses)(\"customFontClass\", ctx_r0.customIconClasses)(\"svgIcon\", ctx_r0.item.svgIcon)(\"innerCssClass\", ctx_r0.innerCssClasses);\n }\n}\nfunction DrawerItemComponent_ng_template_1_ng_container_0_span_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 9);\n }\n}\nfunction DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 10);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"name\", ctx_r0.viewItem.isExpanded ? \"arrow-chevron-up\" : \"arrow-chevron-down\")(\"svgIcon\", ctx_r0.viewItem.isExpanded ? ctx_r0.arrowUpIcon : ctx_r0.arrowDownIcon);\n }\n}\nfunction DrawerItemComponent_ng_template_1_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_1_Template, 1, 4, \"kendo-icon-wrapper\", 4);\n i0.ɵɵelementStart(2, \"span\", 5);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, DrawerItemComponent_ng_template_1_ng_container_0_span_4_Template, 1, 0, \"span\", 6)(5, DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_5_Template, 1, 2, \"kendo-icon-wrapper\", 7);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.item.icon || ctx_r0.item.iconClass || ctx_r0.item.svgIcon);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r0.item.text);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.viewItem.hasChildren);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.viewItem.hasChildren);\n }\n}\nfunction DrawerItemComponent_ng_template_1_ng_container_1_kendo_icon_wrapper_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 8);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"name\", ctx_r0.iconClasses)(\"customFontClass\", ctx_r0.customIconClasses)(\"svgIcon\", ctx_r0.item.svgIcon)(\"innerCssClass\", ctx_r0.innerCssClasses);\n }\n}\nfunction DrawerItemComponent_ng_template_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, DrawerItemComponent_ng_template_1_ng_container_1_kendo_icon_wrapper_1_Template, 1, 4, \"kendo-icon-wrapper\", 4);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.item.icon || ctx_r0.item.iconClass || ctx_r0.item.svgIcon);\n }\n}\nfunction DrawerItemComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerItemComponent_ng_template_1_ng_container_0_Template, 6, 4, \"ng-container\", 3)(1, DrawerItemComponent_ng_template_1_ng_container_1_Template, 2, 1, \"ng-container\", 3);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.expanded);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.mini && !ctx_r0.expanded);\n }\n}\nconst _c20 = [\"kendoDrawerList\", \"\"];\nfunction DrawerListComponent_ng_container_0_li_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"li\", 3);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const v_r2 = ctx_r0.$implicit;\n const idx_r3 = ctx_r0.index;\n const ctx_r3 = i0.ɵɵnextContext();\n i0.ɵɵclassMapInterpolate1(\"k-drawer-item \", ctx_r3.expanded ? \" k-level-\" + v_r2.level : \"\", \"\");\n i0.ɵɵproperty(\"viewItem\", v_r2)(\"index\", idx_r3)(\"mini\", ctx_r3.mini)(\"expanded\", ctx_r3.expanded)(\"itemTemplate\", ctx_r3.itemTemplate)(\"ngClass\", v_r2.item.cssClass)(\"ngStyle\", v_r2.item.cssStyle)(\"tabindex\", v_r2.index === 0 ? \"0\" : \"-1\");\n i0.ɵɵattribute(\"data-kendo-drawer-index\", v_r2.index);\n }\n}\nfunction DrawerListComponent_ng_container_0_li_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 4);\n i0.ɵɵtext(1, \" \\xA0 \");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const v_r2 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"ngClass\", v_r2.item.cssClass)(\"ngStyle\", v_r2.item.cssStyle);\n }\n}\nfunction DrawerListComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, DrawerListComponent_ng_container_0_li_1_Template, 1, 12, \"li\", 1)(2, DrawerListComponent_ng_container_0_li_2_Template, 2, 2, \"li\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const v_r2 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !v_r2.item.separator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", v_r2.item.separator);\n }\n}\nfunction DrawerComponent_div_0_ng_container_1_1_ng_template_0_Template(rf, ctx) {}\nfunction DrawerComponent_div_0_ng_container_1_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerComponent_div_0_ng_container_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.headerTemplate == null ? null : ctx_r1.headerTemplate.templateRef);\n }\n}\nfunction DrawerComponent_div_0_ng_container_1_3_ng_template_0_Template(rf, ctx) {}\nfunction DrawerComponent_div_0_ng_container_1_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerComponent_div_0_ng_container_1_3_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.footerTemplate == null ? null : ctx_r1.footerTemplate.templateRef);\n }\n}\nfunction DrawerComponent_div_0_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, DrawerComponent_div_0_ng_container_1_1_Template, 1, 1, null, 3);\n i0.ɵɵelementStart(2, \"ul\", 4);\n i0.ɵɵlistener(\"select\", function DrawerComponent_div_0_ng_container_1_Template_ul_select_2_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onSelect($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, DrawerComponent_div_0_ng_container_1_3_Template, 1, 1, null, 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"mini\", ctx_r1.mini)(\"expanded\", ctx_r1.expanded)(\"view\", ctx_r1.viewItems)(\"itemTemplate\", ctx_r1.itemTemplate == null ? null : ctx_r1.itemTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.footerTemplate);\n }\n}\nfunction DrawerComponent_div_0_2_ng_template_0_Template(rf, ctx) {}\nfunction DrawerComponent_div_0_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerComponent_div_0_2_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.drawerTemplate == null ? null : ctx_r1.drawerTemplate.templateRef);\n }\n}\nfunction DrawerComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtemplate(1, DrawerComponent_div_0_ng_container_1_Template, 4, 6, \"ng-container\", 3)(2, DrawerComponent_div_0_2_Template, 1, 1, null, 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"width\", ctx_r1.drawerWidth, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.drawerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.drawerTemplate);\n }\n}\nfunction DrawerComponent_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 6);\n }\n}\nfunction DrawerContainerComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵlistener(\"click\", function DrawerContainerComponent_div_0_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.closeDrawer());\n });\n i0.ɵɵelementEnd();\n }\n}\nconst _c21 = [\"stepLink\"];\nconst _c22 = [\"kendoStepperStep\", \"\"];\nconst _c23 = (a0, a1) => ({\n $implicit: a0,\n index: a1\n});\nfunction StepperStepComponent_2_ng_template_0_Template(rf, ctx) {}\nfunction StepperStepComponent_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, StepperStepComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.stepTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c23, ctx_r1.step, ctx_r1.index));\n }\n}\nfunction StepperStepComponent_ng_container_3_span_1_1_ng_template_0_Template(rf, ctx) {}\nfunction StepperStepComponent_ng_container_3_span_1_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, StepperStepComponent_ng_container_3_span_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.indicatorTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c23, ctx_r1.step, ctx_r1.index));\n }\n}\nfunction StepperStepComponent_ng_container_3_span_1_ng_container_2_kendo_icon_wrapper_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 9);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"name\", ctx_r1.indicatorIconClass)(\"customFontClass\", ctx_r1.customIndicatorIconClass)(\"svgIcon\", ctx_r1.SVGIndicatorIcon);\n }\n}\nfunction StepperStepComponent_ng_container_3_span_1_ng_container_2_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 10);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.indicatorText);\n }\n}\nfunction StepperStepComponent_ng_container_3_span_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_1_ng_container_2_kendo_icon_wrapper_1_Template, 1, 3, \"kendo-icon-wrapper\", 7)(2, StepperStepComponent_ng_container_3_span_1_ng_container_2_span_2_Template, 2, 1, \"span\", 8);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showIndicatorIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.showIndicatorIcon);\n }\n}\nfunction StepperStepComponent_ng_container_3_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 6);\n i0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_1_1_Template, 1, 5, null, 2)(2, StepperStepComponent_ng_container_3_span_1_ng_container_2_Template, 3, 2, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"transition-duration\", ctx_r1.transitionDuration, \"ms\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.indicatorTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.indicatorTemplate);\n }\n}\nfunction StepperStepComponent_ng_container_3_span_2_1_ng_template_0_Template(rf, ctx) {}\nfunction StepperStepComponent_ng_container_3_span_2_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, StepperStepComponent_ng_container_3_span_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 3);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.labelTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c23, ctx_r1.step, ctx_r1.index));\n }\n}\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 15);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.step.label);\n }\n}\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_kendo_icon_wrapper_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 16);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"name\", ctx_r1.validationIconClasses)(\"customFontClass\", ctx_r1.customValidationIconClasses)(\"svgIcon\", ctx_r1.validationSVGIcon);\n }\n}\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 17);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"(\", ctx_r1.optionalText, \")\");\n }\n}\nfunction StepperStepComponent_ng_container_3_span_2_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_2_ng_container_2_span_1_Template, 2, 1, \"span\", 12)(2, StepperStepComponent_ng_container_3_span_2_ng_container_2_kendo_icon_wrapper_2_Template, 1, 3, \"kendo-icon-wrapper\", 13)(3, StepperStepComponent_ng_container_3_span_2_ng_container_2_span_3_Template, 2, 1, \"span\", 14);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showLabelText);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showLabelIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.step.optional);\n }\n}\nfunction StepperStepComponent_ng_container_3_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 11);\n i0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_2_1_Template, 1, 5, null, 2)(2, StepperStepComponent_ng_container_3_span_2_ng_container_2_Template, 4, 3, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.labelTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.labelTemplate);\n }\n}\nfunction StepperStepComponent_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, StepperStepComponent_ng_container_3_span_1_Template, 3, 4, \"span\", 4)(2, StepperStepComponent_ng_container_3_span_2_Template, 3, 2, \"span\", 5);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showIndicator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showLabel);\n }\n}\nconst _c24 = [\"kendoStepperList\", \"\"];\nfunction StepperListComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"li\", 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const step_r1 = ctx.$implicit;\n const idx_r2 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"max-width\", ctx_r2.maxStepWidth, \"%\")(\"max-height\", ctx_r2.maxStepHeight, \"%\");\n i0.ɵɵclassProp(\"k-step-first\", idx_r2 === 0)(\"k-step-last\", idx_r2 === ctx_r2.steps.length - 1)(\"k-step-done\", idx_r2 < ctx_r2.currentStep)(\"k-step-current\", idx_r2 === ctx_r2.currentStep)(\"k-step-optional\", step_r1.optional)(\"k-disabled\", step_r1.disabled)(\"k-focus\", idx_r2 === ctx_r2.focusedStep || !ctx_r2.isPresent(ctx_r2.focusedStep) && idx_r2 === ctx_r2.currentStep);\n i0.ɵɵproperty(\"type\", ctx_r2.stepType)(\"step\", step_r1)(\"index\", idx_r2)(\"current\", ctx_r2.currentStep)(\"successIcon\", ctx_r2.successIcon)(\"successSVGIcon\", ctx_r2.successSVGIcon)(\"errorIcon\", ctx_r2.errorIcon)(\"errorSVGIcon\", ctx_r2.errorSVGIcon)(\"svgIcon\", ctx_r2.svgIcon)(\"indicatorTemplate\", ctx_r2.indicatorTemplate)(\"labelTemplate\", ctx_r2.labelTemplate)(\"stepTemplate\", ctx_r2.stepTemplate)(\"ngClass\", step_r1.cssClass)(\"ngStyle\", step_r1.cssStyle);\n i0.ɵɵattribute(\"data-kendo-stepper-index\", idx_r2);\n }\n}\nfunction StepperComponent_kendo_progressbar_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-progressbar\", 3);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"animation\", ctx_r0.progressAnimation)(\"max\", ctx_r0.steps.length - 1)(\"label\", false)(\"orientation\", ctx_r0.orientation)(\"reverse\", !ctx_r0.isHorizontal)(\"value\", ctx_r0.currentStep)(\"ngStyle\", ctx_r0.progressBarStyling);\n i0.ɵɵattribute(\"aria-hidden\", true);\n }\n}\nfunction AvatarComponent_ng_content_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 0, [\"*ngIf\", \"customAvatar\"]);\n }\n}\nfunction AvatarComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 2);\n i0.ɵɵelement(2, \"img\", 3);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵpropertyInterpolate(\"src\", ctx_r0.imageSrc, i0.ɵɵsanitizeUrl);\n i0.ɵɵproperty(\"alt\", ctx_r0.textFor(\"avatarAlt\"))(\"ngStyle\", ctx_r0.cssStyle);\n }\n}\nfunction AvatarComponent_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 4);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngStyle\", ctx_r0.cssStyle);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.initials.substring(0, 2));\n }\n}\nfunction AvatarComponent_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 5);\n i0.ɵɵelement(2, \"kendo-icon-wrapper\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngStyle\", ctx_r0.cssStyle)(\"name\", ctx_r0.icon)(\"customFontClass\", ctx_r0.iconClass)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction CardActionsComponent_ng_content_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 0, [\"*ngIf\", \"!actionsArray && !actionsTemplate\"]);\n }\n}\nfunction CardActionsComponent_ng_container_1_button_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 2);\n i0.ɵɵlistener(\"click\", function CardActionsComponent_ng_container_1_button_1_Template_button_click_0_listener() {\n const action_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onClick(action_r2));\n });\n i0.ɵɵelementStart(1, \"span\", 3);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const action_r2 = ctx.$implicit;\n i0.ɵɵclassProp(\"k-button-solid\", !action_r2.flat)(\"k-button-flat\", action_r2.flat)(\"k-button-solid-base\", !action_r2.primary && !action_r2.flat)(\"k-button-solid-primary\", action_r2.primary && !action_r2.flat)(\"k-button-flat-base\", !action_r2.primary && action_r2.flat)(\"k-button-flat-primary\", action_r2.primary && action_r2.flat);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(action_r2.text);\n }\n}\nfunction CardActionsComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CardActionsComponent_ng_container_1_button_1_Template, 3, 13, \"button\", 1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.actionsArray);\n }\n}\nfunction CardActionsComponent_2_ng_template_0_Template(rf, ctx) {}\nfunction CardActionsComponent_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CardActionsComponent_2_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.actionsTemplate);\n }\n}\nconst _c25 = [\"content\"];\nfunction ExpansionPanelComponent_ng_container_2_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 11);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.title);\n }\n}\nfunction ExpansionPanelComponent_ng_container_2_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 12);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.subtitle, \" \");\n }\n}\nfunction ExpansionPanelComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, ExpansionPanelComponent_ng_container_2_div_1_Template, 2, 1, \"div\", 8);\n i0.ɵɵelement(2, \"span\", 9);\n i0.ɵɵtemplate(3, ExpansionPanelComponent_ng_container_2_div_3_Template, 2, 1, \"div\", 10);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.title);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.subtitle);\n }\n}\nfunction ExpansionPanelComponent_3_ng_template_0_Template(rf, ctx) {}\nfunction ExpansionPanelComponent_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ExpansionPanelComponent_3_ng_template_0_Template, 0, 0, \"ng-template\", 13);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.titleTemplate == null ? null : ctx_r1.titleTemplate.templateRef);\n }\n}\nfunction TileLayoutItemComponent_kendo_tilelayout_item_header_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-tilelayout-item-header\", 2)(1, \"h5\", 3);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"reorderable\", ctx_r0.isReorderable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"id\", ctx_r0.titleId);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.title);\n }\n}\nfunction TileLayoutItemComponent_ng_container_2_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 5);\n }\n if (rf & 2) {\n const dir_r2 = ctx.$implicit;\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMapInterpolate1(\"k-resize-handle k-cursor-\", dir_r2, \"-resize k-touch-action-none\");\n i0.ɵɵproperty(\"rtl\", ctx_r0.rtl)(\"resizeDirection\", dir_r2);\n }\n}\nfunction TileLayoutItemComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TileLayoutItemComponent_ng_container_2_div_1_Template, 1, 5, \"div\", 4);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.resizeDirections);\n }\n}\nconst _c26 = [\"hint\"];\nfunction TileLayoutComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 3);\n }\n}\nconst _c27 = [\"callout\"];\nconst _c28 = a0 => ({\n \"height\": a0\n});\nconst _c29 = (a0, a1, a2) => ({\n \"k-callout-n\": a0,\n \"k-callout-w\": a1,\n \"k-callout-e\": a2\n});\nconst _c30 = a0 => ({\n animationDuration: a0\n});\nconst _c31 = (a0, a1) => ({\n value: a0,\n params: a1\n});\nfunction TimelineCardComponent_div_3_2_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0, \" > \");\n }\n}\nfunction TimelineCardComponent_div_3_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TimelineCardComponent_div_3_2_ng_template_0_Template, 1, 0, \"ng-template\", 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.headerTemplate == null ? null : ctx_r1.headerTemplate.templateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c23, ctx_r1.event, ctx_r1.index));\n }\n}\nfunction TimelineCardComponent_div_3_div_3_button_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"button\", 12);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"icon\", ctx_r1.calloutFontIcon)(\"svgIcon\", ctx_r1.calloutSvgIcon);\n i0.ɵɵattribute(\"aria-hidden\", true);\n }\n}\nfunction TimelineCardComponent_div_3_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 9)(1, \"span\", 10);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, TimelineCardComponent_div_3_div_3_button_3_Template, 1, 3, \"button\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r1.event.title);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.collapsible && ctx_r1.orientation === \"vertical\");\n }\n}\nfunction TimelineCardComponent_div_3_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 13);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.event.subtitle);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_1_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0, \" > \");\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TimelineCardComponent_div_3_kendo_card_body_5_1_ng_template_0_Template, 1, 0, \"ng-template\", 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.bodyTemplate == null ? null : ctx_r1.bodyTemplate.templateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c23, ctx_r1.event, ctx_r1.index));\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_div_2_p_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"p\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.event.description);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_img_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"img\", 19);\n }\n if (rf & 2) {\n const image_r4 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"src\", image_r4.src, i0.ɵɵsanitizeUrl)(\"alt\", image_r4.alt);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_img_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"img\", 20);\n }\n if (rf & 2) {\n const image_r4 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵproperty(\"src\", image_r4.src, i0.ɵɵsanitizeUrl);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_img_1_Template, 1, 2, \"img\", 17)(2, TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_img_2_Template, 1, 1, \"img\", 18);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const image_r4 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", image_r4.alt);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !image_r4.alt);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 15);\n i0.ɵɵtemplate(1, TimelineCardComponent_div_3_kendo_card_body_5_div_2_p_1_Template, 2, 1, \"p\", 5)(2, TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_Template, 3, 2, \"ng-container\", 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.event.description);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.event.images);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_body_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-card-body\");\n i0.ɵɵlistener(\"@toggle.start\", function TimelineCardComponent_div_3_kendo_card_body_5_Template_kendo_card_body_animation_toggle_start_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.animationStart());\n })(\"@toggle.done\", function TimelineCardComponent_div_3_kendo_card_body_5_Template_kendo_card_body_animation_toggle_done_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.animationDone($event));\n });\n i0.ɵɵtemplate(1, TimelineCardComponent_div_3_kendo_card_body_5_1_Template, 1, 5, null, 5)(2, TimelineCardComponent_div_3_kendo_card_body_5_div_2_Template, 3, 2, \"div\", 14);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"@toggle\", i0.ɵɵpureFunction2(5, _c31, ctx_r1.expanded ? \"expanded\" : \"collapsed\", i0.ɵɵpureFunction1(3, _c30, ctx_r1.animationDuration || 0)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.bodyTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.bodyTemplate);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_actions_6_1_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0, \" > \");\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_actions_6_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TimelineCardComponent_div_3_kendo_card_actions_6_1_ng_template_0_Template, 1, 0, \"ng-template\", 8);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.actionsTemplate == null ? null : ctx_r1.actionsTemplate.templateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c23, ctx_r1.event, ctx_r1.index));\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_actions_6_ng_container_2_a_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"a\", 22);\n i0.ɵɵlistener(\"click\", function TimelineCardComponent_div_3_kendo_card_actions_6_ng_container_2_a_1_Template_a_click_0_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext(4);\n return i0.ɵɵresetView(ctx_r1.onActionClick($event));\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const action_r6 = ctx.$implicit;\n i0.ɵɵproperty(\"href\", action_r6.url, i0.ɵɵsanitizeUrl)(\"target\", action_r6.target === \"blank\" ? \"_blank\" : \"_self\");\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", action_r6.text, \" \");\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_actions_6_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TimelineCardComponent_div_3_kendo_card_actions_6_ng_container_2_a_1_Template, 2, 3, \"a\", 21);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.event.actions);\n }\n}\nfunction TimelineCardComponent_div_3_kendo_card_actions_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-card-actions\");\n i0.ɵɵtemplate(1, TimelineCardComponent_div_3_kendo_card_actions_6_1_Template, 1, 5, null, 5)(2, TimelineCardComponent_div_3_kendo_card_actions_6_ng_container_2_Template, 2, 1, \"ng-container\", 5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"@toggle\", i0.ɵɵpureFunction2(5, _c31, ctx_r1.expanded ? \"expanded\" : \"collapsed\", i0.ɵɵpureFunction1(3, _c30, ctx_r1.animationDuration || 0)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.actionsTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.actionsTemplate);\n }\n}\nfunction TimelineCardComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4)(1, \"kendo-card-header\");\n i0.ɵɵtemplate(2, TimelineCardComponent_div_3_2_Template, 1, 5, null, 5)(3, TimelineCardComponent_div_3_div_3_Template, 4, 2, \"div\", 6)(4, TimelineCardComponent_div_3_div_4_Template, 2, 1, \"div\", 7);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, TimelineCardComponent_div_3_kendo_card_body_5_Template, 3, 8, \"kendo-card-body\", 5)(6, TimelineCardComponent_div_3_kendo_card_actions_6_Template, 3, 8, \"kendo-card-actions\", 5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.event.description || ctx_r1.event.images);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.event.actions);\n }\n}\nconst _c32 = [\"track\"];\nconst _c33 = [\"scrollableTrack\"];\nconst _c34 = [\"card\"];\nconst _c35 = [\"trackCircle\"];\nconst _c36 = [\"trackFlag\"];\nconst _c37 = a0 => ({\n transformValue: a0\n});\nconst _c38 = () => ({\n \"transform-origin\": \"left top\"\n});\nconst _c39 = () => ({});\nconst _c40 = a0 => ({\n visibility: a0\n});\nfunction TimelineHorizontalComponent_ng_container_7_li_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 15, 2)(2, \"span\", 16);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const event_r2 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngStyle\", ctx_r2.tabStyle());\n i0.ɵɵattribute(\"role\", \"none\")(\"aria-hidden\", true);\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(event_r2.isFlag);\n }\n}\nfunction TimelineHorizontalComponent_ng_container_7_li_2_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 21);\n i0.ɵɵtext(1);\n i0.ɵɵpipe(2, \"kendoDate\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const event_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", i0.ɵɵpipeBind2(2, 1, event_r2.date, ctx_r2.dateFormat), \" \");\n }\n}\nfunction TimelineHorizontalComponent_ng_container_7_li_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 17, 3);\n i0.ɵɵlistener(\"click\", function TimelineHorizontalComponent_ng_container_7_li_2_Template_li_click_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const index_r5 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.navigateToEvent(index_r5));\n });\n i0.ɵɵelementStart(2, \"div\", 18);\n i0.ɵɵtemplate(3, TimelineHorizontalComponent_ng_container_7_li_2_span_3_Template, 3, 4, \"span\", 19);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(4, \"span\", 20);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2.tabStyle());\n i0.ɵɵattribute(\"role\", \"tab\");\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showDateLabels);\n }\n}\nfunction TimelineHorizontalComponent_ng_container_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TimelineHorizontalComponent_ng_container_7_li_1_Template, 4, 4, \"li\", 13)(2, TimelineHorizontalComponent_ng_container_7_li_2_Template, 5, 3, \"li\", 14);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const event_r2 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", event_r2.isFlag);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !event_r2.isFlag);\n }\n}\nfunction TimelineHorizontalComponent_ul_9_li_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 24, 4);\n i0.ɵɵlistener(\"transitionend\", function TimelineHorizontalComponent_ul_9_li_1_Template_li_transitionend_0_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onTransitionEnd());\n });\n i0.ɵɵelement(2, \"kendo-timeline-card\", 25);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const index_r8 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"event\", ctx_r2.selectedCardIndex === index_r8 ? ctx_r2.selectedEvent : null)(\"expanded\", true)(\"collapsible\", ctx_r2.collapsibleEvents)(\"calloutStyle\", ctx_r2.selectedCardIndex === index_r8 ? ctx_r2.calloutStyle : i0.ɵɵpureFunction0(12, _c39))(\"ngStyle\", i0.ɵɵpureFunction1(13, _c40, ctx_r2.selectedCardIndex === index_r8 ? \"visible\" : \"hidden\"))(\"tabIndex\", ctx_r2.selectedCardIndex === index_r8 ? \"0\" : \"-1\")(\"navigable\", ctx_r2.navigable)(\"index\", ctx_r2.selectedEventIndex)(\"headerTemplate\", ctx_r2.headerTemplate)(\"bodyTemplate\", ctx_r2.bodyTemplate)(\"actionsTemplate\", ctx_r2.actionsTemplate)(\"eventHeight\", ctx_r2.eventHeight);\n }\n}\nfunction TimelineHorizontalComponent_ul_9_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"ul\", 22);\n i0.ɵɵlistener(\"@eventsSlide.done\", function TimelineHorizontalComponent_ul_9_Template_ul_animation_eventsSlide_done_0_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.onSlideDone());\n });\n i0.ɵɵtemplate(1, TimelineHorizontalComponent_ul_9_li_1_Template, 3, 15, \"li\", 23);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"@eventsSlide\", i0.ɵɵpureFunction2(5, _c31, ctx_r2.animationState, i0.ɵɵpureFunction1(3, _c30, ctx_r2.animationDuration || 0)))(\"ngStyle\", i0.ɵɵpureFunction0(8, _c38));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.eventsInInterval);\n }\n}\nconst _c41 = [\"dateWrap\"];\nconst _c42 = [\"innerDate\"];\nconst _c43 = a0 => ({\n \"k-reverse\": a0\n});\nfunction TimelineVerticalComponent_ul_0_ng_container_1_li_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 11)(1, \"span\", 12);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const event_r1 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(event_r1.flag);\n }\n}\nfunction TimelineVerticalComponent_ul_0_ng_container_1_span_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 13, 2);\n i0.ɵɵtext(2);\n i0.ɵɵpipe(3, \"kendoDate\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const event_r1 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", i0.ɵɵpipeBind2(3, 1, event_r1.date, ctx_r1.dateFormat), \" \");\n }\n}\nfunction TimelineVerticalComponent_ul_0_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TimelineVerticalComponent_ul_0_ng_container_1_li_1_Template, 3, 1, \"li\", 5);\n i0.ɵɵelementStart(2, \"li\", 6)(3, \"div\", 7, 0);\n i0.ɵɵtemplate(5, TimelineVerticalComponent_ul_0_ng_container_1_span_5_Template, 4, 4, \"span\", 8);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(6, \"span\", 9)(7, \"kendo-timeline-card\", 10, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const event_r1 = ctx.$implicit;\n const i_r3 = ctx.index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", event_r1.flag);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(15, _c43, ctx_r1.alterMode && i_r3 % 2 === 0));\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showDateLabels);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"event\", event_r1)(\"expanded\", event_r1.expanded || !ctx_r1.collapsibleEvents)(\"collapsible\", ctx_r1.collapsibleEvents)(\"reversed\", ctx_r1.alterMode && i_r3 % 2 === 0)(\"tabIndex\", \"0\")(\"navigable\", ctx_r1.navigable)(\"animationDuration\", ctx_r1.animationDuration)(\"headerTemplate\", ctx_r1.headerTemplate)(\"bodyTemplate\", ctx_r1.bodyTemplate)(\"actionsTemplate\", ctx_r1.actionsTemplate)(\"index\", i_r3)(\"eventWidth\", ctx_r1.eventWidth);\n }\n}\nfunction TimelineVerticalComponent_ul_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"ul\");\n i0.ɵɵtemplate(1, TimelineVerticalComponent_ul_0_ng_container_1_Template, 9, 17, \"ng-container\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.events);\n }\n}\nfunction TimelineComponent_kendo_timeline_vertical_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-timeline-vertical\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"events\", ctx_r0.events)(\"alterMode\", ctx_r0.alterMode)(\"collapsibleEvents\", ctx_r0.collapsibleEvents)(\"navigable\", ctx_r0.navigable)(\"showDateLabels\", ctx_r0.showDateLabels)(\"animationDuration\", ctx_r0.animationDuration)(\"eventWidth\", ctx_r0.eventWidth)(\"dateFormat\", ctx_r0.dateFormat)(\"headerTemplate\", ctx_r0.headerTemplate)(\"bodyTemplate\", ctx_r0.bodyTemplate)(\"actionsTemplate\", ctx_r0.actionsTemplate);\n }\n}\nfunction TimelineComponent_kendo_timeline_horizontal_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-timeline-horizontal\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"events\", ctx_r0.events)(\"collapsibleEvents\", false)(\"navigable\", ctx_r0.navigable)(\"showDateLabels\", ctx_r0.showDateLabels)(\"animationDuration\", ctx_r0.animationDuration)(\"eventHeight\", ctx_r0.eventHeight)(\"dateFormat\", ctx_r0.dateFormat)(\"headerTemplate\", ctx_r0.headerTemplate)(\"bodyTemplate\", ctx_r0.bodyTemplate)(\"actionsTemplate\", ctx_r0.actionsTemplate);\n }\n}\nconst packageMetadata = {\n name: '@progress/kendo-angular-layout',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621680,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'\n};\n\n/**\n * Represents the expand modes of the PanelBar.\n * By default, the expand mode is set to `multiple`.\n */\nvar PanelBarExpandMode = /*#__PURE__*/function (PanelBarExpandMode) {\n /**\n * Allows you to expand only one item at a time.\n * When you expand an item, the item that was previously expanded is coll.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Single\"] = 0] = \"Single\";\n /**\n * Allows you to expand only one item at a time and requires you to set the `height` property.\n * The expanded area occupies the entire height of the PanelBar.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Full\"] = 1] = \"Full\";\n /**\n * The default mode of the PanelBar.\n * Allows you to expand more than one item at a time. Items can also be toggled.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Multiple\"] = 2] = \"Multiple\";\n /**\n * By default, the expand mode is set to `multiple`.\n */\n PanelBarExpandMode[PanelBarExpandMode[\"Default\"] = 2] = \"Default\";\n return PanelBarExpandMode;\n}(PanelBarExpandMode || {});\n/**\n * @hidden\n */\nlet nextPanelbarId = 0;\n/**\n * @hidden\n */\nlet PanelBarService = /*#__PURE__*/(() => {\n class PanelBarService {\n constructor() {\n this.parentSource = new Subject();\n this.keepContentSource = new BehaviorSubject(false);\n this.childSource = new Subject();\n this.itemClick = new Subject();\n this.parent$ = this.parentSource.asObservable();\n this.children$ = this.childSource.asObservable();\n this.keepContent$ = this.keepContentSource.asObservable();\n this.pbId = nextPanelbarId++;\n }\n onKeepContent(keepContent) {\n this.keepContentSource.next(keepContent);\n }\n onSelect(event) {\n this.childSource.next(event);\n }\n onFocus() {\n this.parentSource.next(true);\n }\n onBlur() {\n this.parentSource.next(false);\n }\n }\n PanelBarService.ɵfac = function PanelBarService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PanelBarService)();\n };\n PanelBarService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PanelBarService,\n factory: PanelBarService.ɵfac\n });\n return PanelBarService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the content template of the declaratively initialized PanelBar items.\n * The content can be expanded or collapsed through the item.\n */\nlet PanelBarContentDirective = /*#__PURE__*/(() => {\n class PanelBarContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n PanelBarContentDirective.ɵfac = function PanelBarContentDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PanelBarContentDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n PanelBarContentDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PanelBarContentDirective,\n selectors: [[\"\", \"kendoPanelBarContent\", \"\"]],\n standalone: true\n });\n return PanelBarContentDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item title\n * ([more information and example]({% slug templates_panelbar %}#toc-customizing-the-appearance-of-the-title)).\n *\n * > The `kendoPanelBarItemTitle` directive overrides the PanelBarItem [title]({% slug api_layout_panelbaritemcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * Item Title\n * \n * \n * \n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nlet PanelBarItemTitleDirective = /*#__PURE__*/(() => {\n class PanelBarItemTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n PanelBarItemTitleDirective.ɵfac = function PanelBarItemTitleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PanelBarItemTitleDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n PanelBarItemTitleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PanelBarItemTitleDirective,\n selectors: [[\"\", \"kendoPanelBarItemTitle\", \"\"]],\n standalone: true\n });\n return PanelBarItemTitleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextId$1 = 0;\nconst SIZES = {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n};\nconst ROUNDNESS = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n full: 'full'\n};\nconst SHAPE_TO_ROUNDED = {\n rounded: 'large',\n circle: 'full'\n};\n/**\n * @hidden\n */\nconst parsePanelBarItems = data => {\n return data.map(item => {\n if (!isPresent(item.id)) {\n item.id = `default-${nextId$1++}`;\n }\n if (item.children) {\n item.children = parsePanelBarItems(item.children);\n }\n return item;\n });\n};\n/**\n * @hidden\n */\nconst isPresent = value => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isHorizontalArrowKey = keyCode => keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight;\n/**\n * @hidden\n */\nconst isVerticalArrowKey = keyCode => keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown;\n/**\n * @hidden\n */\nconst isArrowKey = keyCode => isHorizontalArrowKey(keyCode) || isVerticalArrowKey(keyCode);\n/**\n * @hidden\n */\nconst isNavigationKey = keyCode => keyCode === Keys.PageUp || keyCode === Keys.PageDown || keyCode === Keys.Home || keyCode === Keys.End;\n/**\n * @hidden\n *\n * Returns the styling classes to be added and removed\n */\nconst getStylingClasses = (componentType, stylingOption, previousValue, newValue) => {\n switch (stylingOption) {\n case 'size':\n return {\n toRemove: `k-${componentType}-${SIZES[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-${componentType}-${SIZES[newValue]}` : ''\n };\n case 'rounded':\n return {\n toRemove: `k-rounded-${ROUNDNESS[previousValue]}`,\n toAdd: newValue !== 'none' ? `k-rounded-${ROUNDNESS[newValue]}` : ''\n };\n default:\n break;\n }\n};\n/**\n * @hidden\n */\nconst mapShapeToRounded = shape => SHAPE_TO_ROUNDED[shape] || 'none';\n/**\n * @hidden\n */\nconst isNumber = value => typeof value === 'number' && isFinite(value);\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst toClassList = classNames => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst isFocusable = element => {\n if (element.tagName) {\n const tagName = element.tagName.toLowerCase();\n const tabIndex = element.getAttribute('tabIndex');\n const skipTab = tabIndex === '-1';\n let focusable = tabIndex !== null && !skipTab;\n if (focusableRegex.test(tagName)) {\n focusable = !element.disabled && !skipTab;\n }\n return focusable;\n }\n return false;\n};\n/**\n * @hidden\n */\nconst hasClass = (element, className) => Boolean(toClassList(element.className).find(name => name === className));\n/**\n * @hidden\n */\nconst closestInScope = (target, predicate, scope, targetAttr) => {\n while (target && target !== scope && !predicate(target, targetAttr)) {\n target = target.parentNode;\n }\n if (target !== scope) {\n return target;\n }\n};\n/**\n * @hidden\n */\nconst itemIndex = (item, indexAttr) => +item.getAttribute(indexAttr);\nconst hasItemIndex = (item, indexAttr) => isPresent(item.getAttribute(indexAttr));\n/**\n * @hidden\n */\nconst closestItem = (target, targetAttr, scope) => closestInScope(target, hasItemIndex, scope, targetAttr);\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nlet nextId = 0;\n/**\n * Represents the items of the PanelBar.\n */\nlet PanelBarItemComponent = /*#__PURE__*/(() => {\n class PanelBarItemComponent {\n constructor(parent, eventService, element, renderer) {\n this.parent = parent;\n this.eventService = eventService;\n this.element = element;\n this.renderer = renderer;\n /**\n * Allows the component to set the `\"id\"` property to each item.\n * Used to set the `id` attributes of the nested elements and to enable the WAI-ARIA support.\n */\n this.id = `default-${nextId++}`;\n /**\n * Defines the icon that will be rendered next to the title ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.icon = '';\n /**\n * Defines the icon that will be rendered next to the title by using a custom CSS class\n * ([see example]({% slug items_panelbar %}#toc-title-icons)).\n */\n this.iconClass = '';\n /**\n * Defines the location of the image that will be displayed next to the title\n * ([see example]({% slug items_panelbar %}#toc-title-images)).\n */\n this.imageUrl = '';\n /**\n * When set to `true`, disables a PanelBar item ([see example]({% slug items_panelbar %}#toc-disabled-state)).\n */\n this.disabled = false;\n /**\n * Sets the selected state of a PanelBar item ([see example]({% slug items_panelbar %}#toc-selected-state)).\n */\n this.selected = false;\n this.keepContent = false;\n this.hasChildItems = false;\n this.hasItems = false;\n this.hasContent = false;\n this.state = \"inactive\";\n this.role = \"treeitem\";\n this.titleAttribute = null; // eslint-disable-line\n this.kItemClass = true;\n this.focused = false;\n this.wrapperFocused = false;\n this.subscriptions = new Subscription(() => {});\n this._expanded = false;\n this.subscriptions.add(eventService.parent$.subscribe(focused => this.onWrapperFocusChange(focused)));\n this.subscriptions.add(eventService.keepContent$.subscribe(keepContent => this.keepContent = keepContent));\n this.wrapperFocused = parent ? parent.focused : false;\n this.level = this.parent ? this.parent.level + 1 : 0;\n }\n /**\n * Defines an SVGIcon to be rendered.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n if (isDevMode() && icon && this.icon && this.iconClass) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this._svgIcon = icon;\n }\n get svgIcon() {\n return this._svgIcon;\n }\n /**\n * When set to `true`, expands the PanelBar item ([see example]({% slug items_panelbar %}#toc-expanded-state)).\n */\n set expanded(value) {\n const activeState = this.animate ? \"active\" : \"activeWithoutAnimation\";\n this.state = value ? activeState : \"inactive\";\n if (!this.keepContent) {\n this.toggleExpandedChildAnimations(value);\n }\n this._expanded = value;\n }\n get expanded() {\n return this._expanded;\n }\n get animate() {\n return this.eventService.animate;\n }\n get kStateExpandedClass() {\n return !this.disabled && this.expanded && (this.hasChildItems || this.hasContent);\n }\n get itemId() {\n return 'k-panelbar-' + this.eventService.pbId + '-item-' + this.id;\n }\n get ariaExpanded() {\n return this.hasChildItems || this.hasContent ? !this.disabled && this.expanded : null;\n }\n get ariaSelected() {\n return !this.disabled && this.selected;\n }\n get ariaDisabled() {\n return this.disabled ? true : null;\n }\n get headerClass() {\n return this.parent ? null : true;\n }\n /**\n * @hidden\n */\n get titleTemplate() {\n return this.titleTemplates.length > 0 ? this.titleTemplates.toArray()[0].templateRef : undefined;\n }\n /**\n * @hidden\n */\n headerHeight() {\n return this.element.nativeElement.offsetHeight - (this.contentWrapper ? this.contentWrapper.nativeElement.offsetHeight : 0);\n }\n ngOnInit() {\n this.addLevelClass();\n }\n ngAfterContentChecked() {\n this.hasItems = this.items && this.items.filter(item => !item.hidden).length > 0;\n this.hasChildItems = this.contentItems.filter(item => item !== this).length > 0 || this.hasItems;\n this.hasContent = this.contentTemplate !== undefined && this.contentTemplate.length > 0 || this.content !== undefined;\n this.validateConfiguration();\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n } else {\n this.childrenItems = this.contentItems.filter(item => item !== this);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n onItemAction() {\n if (!this.disabled) {\n this.eventService.onSelect(this);\n }\n }\n /**\n * @hidden\n */\n onItemClick(e) {\n if (!isFocusable(e.target)) {\n this.eventService.itemClick.next({\n item: this.serialize(),\n originalEvent: e\n });\n this.onItemAction();\n }\n }\n /**\n * @hidden\n */\n get iconClasses() {\n if (this.icon) {\n return `${this.icon}`;\n }\n }\n /**\n * @hidden\n */\n get customIconClasses() {\n if (this.iconClass) {\n return `${this.iconClass}`;\n }\n }\n /**\n * @hidden\n */\n get dirInnerCssClasses() {\n const dirClass = this.expanded ? 'k-panelbar-collapse' : 'k-panelbar-expand';\n return `k-panelbar-toggle ${dirClass}`;\n }\n /**\n * @hidden\n */\n get expanderSVGIcon() {\n return this.expanded ? chevronUpIcon : chevronDownIcon;\n }\n /**\n * @hidden\n */\n serialize() {\n return {\n content: this.content,\n disabled: this.disabled,\n expanded: this.expanded,\n focused: this.focused,\n icon: this.icon,\n iconClass: this.iconClass,\n svgIcon: this.svgIcon,\n id: this.id,\n imageUrl: this.imageUrl,\n selected: this.selected,\n title: this.title,\n children: this.items\n };\n }\n /**\n * @hidden\n */\n subTreeViewItems() {\n let subTree = [];\n this.viewChildItems.forEach(item => {\n subTree = subTree.concat(item.subTreeViewItems());\n subTree.push(item);\n });\n return subTree;\n }\n /**\n * @hidden\n */\n validateConfiguration() {\n if (isDevMode()) {\n if (this.content && this.contentTemplate !== undefined && this.contentTemplate.length > 0) {\n throw new Error(\"Invalid configuration: mixed template components and component property.\");\n }\n }\n }\n /**\n * @hidden\n */\n toggleAnimationState(value) {\n if (!this.animate) {\n return;\n }\n this.state = value && this.eventService.expandMode !== PanelBarExpandMode.Single ? 'active' : 'activeWithoutAnimation';\n }\n /**\n * @hidden\n */\n toggleExpandedChildAnimations(value) {\n if (this.childrenItems) {\n this.childrenItems.forEach(child => {\n if (child.expanded) {\n child.toggleAnimationState(value);\n child.toggleExpandedChildAnimations(value);\n }\n });\n }\n }\n /**\n * @hidden\n */\n addLevelClass() {\n if (this.level >= 0) {\n this.renderer.addClass(this.element.nativeElement, `k-level-${this.level}`);\n }\n }\n onWrapperFocusChange(focused) {\n this.wrapperFocused = focused;\n }\n }\n PanelBarItemComponent.ɵfac = function PanelBarItemComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PanelBarItemComponent)(i0.ɵɵdirectiveInject(PanelBarItemComponent, 13), i0.ɵɵdirectiveInject(PanelBarService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n PanelBarItemComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PanelBarItemComponent,\n selectors: [[\"kendo-panelbar-item\"]],\n contentQueries: function PanelBarItemComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, PanelBarItemComponent, 4);\n i0.ɵɵcontentQuery(dirIndex, PanelBarContentDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, PanelBarItemTitleDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentItems = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplate = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.titleTemplates = _t);\n }\n },\n viewQuery: function PanelBarItemComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n i0.ɵɵviewQuery(PanelBarItemComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.header = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentWrapper = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewChildItems = _t);\n }\n },\n hostVars: 12,\n hostBindings: function PanelBarItemComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.itemId);\n i0.ɵɵattribute(\"role\", ctx.role)(\"title\", ctx.titleAttribute)(\"aria-expanded\", ctx.ariaExpanded)(\"aria-selected\", ctx.ariaSelected)(\"aria-disabled\", ctx.ariaDisabled);\n i0.ɵɵclassProp(\"k-panelbar-item\", ctx.kItemClass)(\"k-expanded\", ctx.kStateExpandedClass)(\"k-panelbar-header\", ctx.headerClass);\n }\n },\n inputs: {\n title: \"title\",\n id: \"id\",\n icon: \"icon\",\n iconClass: \"iconClass\",\n svgIcon: \"svgIcon\",\n imageUrl: \"imageUrl\",\n disabled: \"disabled\",\n expanded: \"expanded\",\n selected: \"selected\",\n content: \"content\",\n items: \"items\",\n template: \"template\"\n },\n exportAs: [\"kendoPanelbarItem\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 8,\n vars: 14,\n consts: [[\"header\", \"\"], [\"contentWrapper\", \"\"], [3, \"click\"], [\"innerCssClass\", \"k-panelbar-item-icon\", 3, \"name\", \"customFontClass\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-image k-panelbar-item-icon\", \"alt\", \"\", 3, \"src\", 4, \"ngIf\"], [4, \"ngIf\"], [3, \"name\", \"svgIcon\", \"innerCssClass\", 4, \"ngIf\"], [\"innerCssClass\", \"k-panelbar-item-icon\", 3, \"name\", \"customFontClass\", \"svgIcon\"], [\"alt\", \"\", 1, \"k-image\", \"k-panelbar-item-icon\", 3, \"src\"], [1, \"k-panelbar-item-text\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"name\", \"svgIcon\", \"innerCssClass\"], [\"class\", \"k-panelbar-group\", 3, \"overflow\", \"height\", 4, \"ngIf\"], [\"class\", \"k-panelbar-content\", 3, \"overflow\", \"height\", 4, \"ngIf\"], [1, \"k-panelbar-group\"], [1, \"k-panelbar-content\"], [4, \"ngFor\", \"ngForOf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"svgIcon\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\", 4, \"ngIf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"svgIcon\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\"], [3, \"ngIf\"]],\n template: function PanelBarItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵelementStart(0, \"span\", 2, 0);\n i0.ɵɵlistener(\"click\", function PanelBarItemComponent_Template_span_click_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onItemClick($event));\n });\n i0.ɵɵtemplate(2, PanelBarItemComponent_kendo_icon_wrapper_2_Template, 1, 3, \"kendo-icon-wrapper\", 3)(3, PanelBarItemComponent_img_3_Template, 1, 1, \"img\", 4)(4, PanelBarItemComponent_ng_container_4_Template, 3, 1, \"ng-container\", 5)(5, PanelBarItemComponent_5_Template, 1, 16, null, 5)(6, PanelBarItemComponent_kendo_icon_wrapper_6_Template, 1, 3, \"kendo-icon-wrapper\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(7, PanelBarItemComponent_div_7_Template, 6, 7, \"div\", 5);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-link\", true)(\"k-selected\", !ctx.disabled && ctx.selected)(\"k-focus\", ctx.focused && ctx.wrapperFocused)(\"k-disabled\", ctx.disabled);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.iconClass || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.titleTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.titleTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.hasChildItems || ctx.hasContent);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.keepContent || !ctx.disabled && ctx.expanded && (ctx.hasChildItems || ctx.hasContent));\n }\n },\n dependencies: [PanelBarItemComponent, NgIf, IconWrapperComponent, NgTemplateOutlet, NgFor],\n encapsulation: 2,\n data: {\n animation: [trigger('toggle', [state('inactive', style({\n display: 'none'\n })), transition('* => active', [style({\n overflow: 'hidden',\n display: 'block',\n height: 0\n }), animate(200, style({\n height: AUTO_STYLE\n }))]), transition('active => *', [style({\n overflow: 'hidden',\n height: AUTO_STYLE\n }), animate(200, style({\n height: 0,\n display: 'none'\n }))])])]\n }\n });\n return PanelBarItemComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the template directive of the PanelBar which helps to customize the item content.\n */\nlet PanelBarItemTemplateDirective = /*#__PURE__*/(() => {\n class PanelBarItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n PanelBarItemTemplateDirective.ɵfac = function PanelBarItemTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PanelBarItemTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n PanelBarItemTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PanelBarItemTemplateDirective,\n selectors: [[\"\", \"kendoPanelBarItemTemplate\", \"\"]],\n standalone: true\n });\n return PanelBarItemTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n this.prevented = false;\n Object.assign(this, args);\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns `true` if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `collapse` event of the PanelBar.\n */\nclass PanelBarCollapseEvent extends PreventableEvent {}\n\n/**\n * Arguments for the `expand` event of the PanelBar.\n */\nclass PanelBarExpandEvent extends PreventableEvent {}\n\n/**\n * Arguments for the `select` event of the PanelBar.\n */\nclass PanelBarSelectEvent extends PreventableEvent {}\n\n/**\n * Arguments for the `stateChange` event of the PanelBar.\n */\nclass PanelBarStateChangeEvent {}\n\n/**\n * Arguments for the `itemClick` event of the PanelBar.\n */\nclass PanelBarItemClickEvent {}\n\n/**\n * Represents the [Kendo UI PanelBar component for Angular]({% slug overview_panelbar %}).\n */\n// TODO: add styles as input prop\nlet PanelBarComponent = /*#__PURE__*/(() => {\n class PanelBarComponent {\n constructor(elementRef, eventService, localization) {\n this.localization = localization;\n /**\n * Sets the expand mode of the PanelBar through the `PanelBarExpandMode` enum ([see example]({% slug expandmodes_panelbar %})).\n *\n * The available modes are:\n * - `\"single\"`—Expands only one item at a time. Expanding an item collapses the item that was previously expanded.\n * - `\"multiple\"`—The default mode of the PanelBar.\n * Expands more than one item at a time. Items can also be toggled.\n * - `\"full\"`—Expands only one item at a time.\n * The expanded area occupies the entire height of the PanelBar. Requires you to set the `height` property.\n */\n this.expandMode = PanelBarExpandMode.Default;\n /**\n * Allows the PanelBar to modify the selected state of the items.\n */\n this.selectable = true;\n /**\n * Sets the animate state of the PanelBar ([see example]({% slug animations_panelbar %})).\n */\n this.animate = true;\n /**\n * Sets the height of the component when the `\"full\"` expand mode is used.\n * This option is ignored in the `\"multiple\"` and `\"single\"` expand modes.\n */\n this.height = '400px';\n /**\n * Fires each time the user interacts with a PanelBar item\n * ([see example]({% slug routing_panelbar %}#toc-getting-the-selected-item)).\n * The event data contains a collection of all items that are modified.\n */\n this.stateChange = new EventEmitter();\n /**\n * Fires when an item is about to be selected.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will not be selected.\n */\n this.select = new EventEmitter();\n /**\n * Fires when an item is about to be expanded.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will remain collapsed.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when an item is about to be collapsed.\n * ([see example]({% slug events_panelbar %}))\n * This event is preventable. If you cancel it, the item will remain expanded.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires when the user clicks an item ([see example]({% slug events_panelbar %})).\n */\n this.itemClick = new EventEmitter();\n this.hostClasses = true;\n this.tabIndex = 0;\n this.role = 'tree';\n this.activeDescendant = '';\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this.isViewInit = true;\n this.focused = false;\n this._keepItemContent = false;\n this.subs = new Subscription();\n this.updateChildrenHeight = () => {\n let childrenHeight = 0;\n const panelbarHeight = this.elementRef.nativeElement.offsetHeight;\n const contentOverflow = this.expandMode === PanelBarExpandMode.Full ? 'auto' : 'visible';\n this.childrenItems.forEach(item => {\n childrenHeight += item.headerHeight();\n });\n this.childrenItems.forEach(item => {\n item.contentHeight = PanelBarExpandMode.Full === this.expandMode ? panelbarHeight - childrenHeight + 'px' : 'auto';\n item.contentOverflow = contentOverflow;\n });\n };\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n /* eslint-disable-line*/\n this.keyBindings = this.computedKeys;\n this.elementRef = elementRef;\n this.eventService = eventService;\n this.subs.add(this.eventService.children$.subscribe(event => this.onItemAction(event)));\n this.subs.add(this.eventService.itemClick.subscribe(ev => this.itemClick.emit(ev)));\n }\n /**\n * When set to `true`, the PanelBar renders the content of all items and they are persisted in the DOM\n * ([see example]({% slug templates_panelbar %}#toc-collections)).\n * By default, this option is set to `false`.\n */\n get keepItemContent() {\n return this._keepItemContent;\n }\n set keepItemContent(keepItemContent) {\n this._keepItemContent = keepItemContent;\n this.eventService.onKeepContent(keepItemContent);\n }\n /**\n * Sets the items of the PanelBar as an array of `PanelBarItemModel` instances\n * ([see example]({% slug items_panelbar %})).\n */\n set items(data) {\n if (data) {\n this._items = parsePanelBarItems(data);\n }\n }\n get items() {\n return this._items;\n }\n get hostHeight() {\n return this.expandMode === PanelBarExpandMode.Full ? this.height : 'auto';\n }\n get overflow() {\n return this.expandMode === PanelBarExpandMode.Full ? 'hidden' : 'visible';\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n /**\n * @hidden\n */\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n get computedKeys() {\n return {\n [Keys.Space]: () => this.selectFocusedItem(),\n [Keys.Enter]: () => this.selectFocusedItem(),\n [Keys.ArrowUp]: () => this.focusPreviousItem(),\n [this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight)]: () => this.collapseItem(),\n [Keys.ArrowDown]: () => this.focusNextItem(),\n [this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft)]: () => this.expandItem(),\n [Keys.End]: () => this.focusLastItem(),\n [Keys.Home]: () => this.focusFirstItem()\n };\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n ngOnInit() {\n this.subs.add(this.localization.changes.subscribe(() => this.keyBindings = this.computedKeys));\n this.eventService.animate = this.animate;\n this.eventService.expandMode = this.expandMode;\n }\n ngAfterViewChecked() {\n if (this.items) {\n this.childrenItems = this.viewChildItems.toArray();\n this.allItems = this.viewItems;\n } else {\n this.childrenItems = this.contentChildItems.toArray();\n this.allItems = this.contentItems.toArray();\n }\n if (this.isViewInit && this.childrenItems.length) {\n this.isViewInit = false;\n setTimeout(() => this.updateChildrenHeight());\n }\n this.validateConfiguration();\n }\n ngOnChanges(changes) {\n if (changes['height'] || changes['expandMode'] || changes['items']) {\n // eslint-disable-line\n if (this.childrenItems) {\n setTimeout(this.updateChildrenHeight);\n }\n }\n if (changes['animate']) {\n this.eventService.animate = this.animate;\n }\n if (changes['expandMode']) {\n this.eventService.expandMode = this.expandMode;\n }\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n onComponentClick(event) {\n const itemClicked = this.visibleItems().some(item => {\n return item.header.nativeElement.contains(event.target);\n });\n if (!isFocusable(event.target) && !this.focused && itemClicked) {\n this.elementRef.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n onComponentFocus() {\n this.eventService.onFocus();\n this.focused = true;\n if (this.allItems.length > 0) {\n const visibleItems = this.visibleItems();\n const focusedItems = visibleItems.filter(item => item.focused);\n if (!focusedItems.length && visibleItems.length > 0) {\n visibleItems[0].focused = true;\n this.activeDescendant = visibleItems[0].itemId;\n }\n }\n }\n /**\n * @hidden\n */\n onComponentBlur() {\n this.eventService.onBlur();\n this.focused = false;\n this.activeDescendant = '';\n }\n /**\n * @hidden\n */\n onComponentKeyDown(event) {\n if (event.target === this.elementRef.nativeElement) {\n if (event.keyCode === Keys.Space || event.keyCode === Keys.ArrowUp || event.keyCode === Keys.ArrowDown || event.keyCode === Keys.ArrowLeft || event.keyCode === Keys.ArrowRight || event.keyCode === Keys.Home || event.keyCode === Keys.End || event.keyCode === Keys.PageUp || event.keyCode === Keys.PageDown) {\n event.preventDefault();\n }\n const handler = this.keyBindings[event.keyCode];\n //TODO: check if next item is disabled and skip operation?\n if (handler) {\n handler();\n }\n }\n }\n /**\n * @hidden\n */\n emitEvent(event, item) {\n let eventArgs;\n switch (event) {\n case 'select':\n eventArgs = new PanelBarSelectEvent();\n break;\n case 'collapse':\n eventArgs = new PanelBarCollapseEvent();\n break;\n default:\n eventArgs = new PanelBarExpandEvent();\n break;\n }\n eventArgs.item = item.serialize();\n this[event].emit(eventArgs);\n return eventArgs;\n }\n get viewItems() {\n let treeItems = [];\n this.viewChildItems.toArray().forEach(item => {\n treeItems.push(item);\n treeItems = treeItems.concat(item.subTreeViewItems());\n });\n return treeItems;\n }\n validateConfiguration() {\n if (isDevMode()) {\n if (this.items && this.contentItems && this.contentItems.length > 0) {\n throw new Error('Invalid configuration: mixed template components and items property.');\n }\n }\n }\n onItemAction(item) {\n if (!item) {\n return;\n }\n const modifiedItems = new Array();\n const selectPreventedItems = [];\n this.allItems.forEach(currentItem => {\n let selectedState = currentItem === item;\n const focusedState = selectedState;\n selectedState = this.selectable ? selectedState : currentItem.selected;\n if (currentItem.selected !== selectedState || currentItem.focused !== focusedState) {\n const isSelectPrevented = selectedState ? this.emitEvent('select', currentItem).isDefaultPrevented() : false;\n if (!isSelectPrevented) {\n currentItem.selected = selectedState;\n currentItem.focused = focusedState;\n this.activeDescendant = focusedState ? currentItem.itemId : '';\n modifiedItems.push(currentItem);\n } else {\n selectPreventedItems.push(currentItem);\n }\n }\n });\n if (this.expandMode === PanelBarExpandMode.Multiple) {\n if ((item.hasChildItems || item.hasContent) && !selectPreventedItems.includes(item)) {\n const isEventPrevented = item.expanded ? this.emitEvent('collapse', item).isDefaultPrevented() : this.emitEvent('expand', item).isDefaultPrevented();\n if (!isEventPrevented) {\n item.expanded = !item.expanded;\n if (modifiedItems.indexOf(item) < 0) {\n modifiedItems.push(item);\n }\n }\n }\n } else {\n const siblings = item.parent ? item.parent.childrenItems : this.childrenItems;\n let preventedCollapseItem;\n const expandedItems = [];\n if ((item.hasChildItems || item.hasContent) && !selectPreventedItems.includes(item)) {\n siblings.forEach(currentItem => {\n const expandedState = currentItem === item;\n if (currentItem.expanded !== expandedState) {\n const isEventPrevented = currentItem.expanded ? this.emitEvent('collapse', currentItem).isDefaultPrevented() : this.emitEvent('expand', currentItem).isDefaultPrevented();\n if (!isEventPrevented) {\n currentItem.expanded = expandedState;\n if (currentItem.expanded) {\n expandedItems.push(currentItem);\n }\n if (modifiedItems.indexOf(currentItem) < 0) {\n modifiedItems.push(currentItem);\n }\n } else if (isEventPrevented && currentItem.expanded) {\n preventedCollapseItem = currentItem;\n }\n } else if (currentItem.expanded === expandedState && expandedState) {\n const isCollapsePrevented = this.emitEvent('collapse', currentItem).isDefaultPrevented();\n if (!isCollapsePrevented) {\n currentItem.expanded = !currentItem.expanded;\n if (modifiedItems.indexOf(currentItem) < 0) {\n modifiedItems.push(currentItem);\n }\n }\n }\n });\n expandedItems.forEach(item => {\n if (preventedCollapseItem && item.id !== preventedCollapseItem.id) {\n item.expanded = false;\n if (isDevMode()) {\n const expandMode = PanelBarExpandMode[this.expandMode].toLowerCase();\n console.warn(`\n The ${expandMode} expandMode allows the expansion of only one item at a time.\n See https://www.telerik.com/kendo-angular-ui-develop/components/layout/panelbar/expand-modes/`);\n }\n }\n });\n }\n }\n if (modifiedItems.length > 0) {\n const eventArgs = new PanelBarStateChangeEvent();\n eventArgs.items = modifiedItems.map(currentItem => currentItem.serialize());\n this.stateChange.emit(eventArgs);\n }\n }\n isVisible(item) {\n const visibleItems = this.visibleItems();\n return visibleItems.some(i => i === item);\n }\n getVisibleParent(item) {\n const visibleItems = this.visibleItems();\n if (!item.parent) {\n return item;\n }\n return visibleItems.some(i => i === item.parent) ? item.parent : this.getVisibleParent(item.parent);\n }\n focusItem(action) {\n const visibleItems = this.visibleItems();\n let currentIndex = visibleItems.findIndex(item => item.focused);\n let currentItem = visibleItems[currentIndex];\n let nextItem;\n if (currentIndex === -1) {\n const focusedItem = this.allItems.find(item => item.focused);\n focusedItem.focused = false;\n currentItem = this.getVisibleParent(focusedItem);\n currentIndex = visibleItems.findIndex(item => item === currentItem);\n }\n switch (action) {\n case 'lastItem':\n nextItem = visibleItems[visibleItems.length - 1];\n break;\n case 'firstItem':\n nextItem = visibleItems[0];\n break;\n case 'nextItem':\n nextItem = visibleItems[currentIndex < visibleItems.length - 1 ? currentIndex + 1 : 0];\n break;\n case 'previousItem':\n nextItem = visibleItems[currentIndex > 0 ? currentIndex - 1 : visibleItems.length - 1];\n break;\n default:\n }\n if (currentItem && nextItem && currentItem !== nextItem) {\n this.moveFocus(currentItem, nextItem);\n }\n }\n moveFocus(from, to) {\n from.focused = false;\n to.focused = true;\n this.activeDescendant = to.itemId;\n const modifiedItems = new Array(from.serialize(), to.serialize());\n const eventArgs = new PanelBarStateChangeEvent();\n eventArgs.items = modifiedItems;\n this.stateChange.emit(eventArgs);\n }\n focusLastItem() {\n this.focusItem('lastItem');\n }\n focusFirstItem() {\n this.focusItem('firstItem');\n }\n focusNextItem() {\n this.focusItem('nextItem');\n }\n focusPreviousItem() {\n this.focusItem('previousItem');\n }\n expandItem() {\n let currentItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(currentItem)) {\n currentItem.focused = false;\n currentItem = this.getVisibleParent(currentItem);\n }\n if (currentItem.hasChildItems || currentItem.hasContent) {\n if (!currentItem.expanded) {\n this.onItemAction(currentItem);\n } else if (currentItem.hasChildItems) {\n const firstChildIndex = currentItem.childrenItems.findIndex(item => !item.disabled);\n if (firstChildIndex > -1) {\n this.moveFocus(currentItem, currentItem.childrenItems[firstChildIndex]);\n }\n }\n }\n }\n collapseItem() {\n const currentItem = this.allItems.filter(item => item.focused)[0];\n if (currentItem.expanded) {\n this.onItemAction(currentItem);\n } else if (currentItem.parent) {\n this.moveFocus(currentItem, currentItem.parent);\n }\n }\n selectFocusedItem() {\n let focusedItem = this.allItems.filter(item => item.focused)[0];\n if (!this.isVisible(focusedItem)) {\n focusedItem.focused = false;\n focusedItem = this.getVisibleParent(focusedItem);\n }\n if (focusedItem) {\n focusedItem.onItemAction();\n }\n }\n visibleItems() {\n return this.flatVisibleItems(this.childrenItems);\n }\n flatVisibleItems(listOfItems = new Array(), flattedItems = new Array()) {\n listOfItems.forEach(item => {\n flattedItems.push(item);\n if (item.expanded && item.hasChildItems) {\n this.flatVisibleItems(item.childrenItems, flattedItems);\n }\n });\n return flattedItems;\n }\n }\n PanelBarComponent.ɵfac = function PanelBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PanelBarComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(PanelBarService), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n PanelBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PanelBarComponent,\n selectors: [[\"kendo-panelbar\"]],\n contentQueries: function PanelBarComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, PanelBarItemTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, PanelBarItemComponent, 5);\n i0.ɵɵcontentQuery(dirIndex, PanelBarItemComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentItems = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentChildItems = _t);\n }\n },\n viewQuery: function PanelBarComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(PanelBarItemComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewChildItems = _t);\n }\n },\n hostVars: 10,\n hostBindings: function PanelBarComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function PanelBarComponent_click_HostBindingHandler($event) {\n return ctx.onComponentClick($event);\n })(\"focus\", function PanelBarComponent_focus_HostBindingHandler() {\n return ctx.onComponentFocus();\n })(\"blur\", function PanelBarComponent_blur_HostBindingHandler() {\n return ctx.onComponentBlur();\n })(\"keydown\", function PanelBarComponent_keydown_HostBindingHandler($event) {\n return ctx.onComponentKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"tabIndex\", ctx.tabIndex)(\"role\", ctx.role)(\"aria-activedescendant\", ctx.activeDescendant)(\"dir\", ctx.dir);\n i0.ɵɵstyleProp(\"height\", ctx.hostHeight)(\"overflow\", ctx.overflow);\n i0.ɵɵclassProp(\"k-panelbar\", ctx.hostClasses);\n }\n },\n inputs: {\n expandMode: \"expandMode\",\n selectable: \"selectable\",\n animate: \"animate\",\n height: \"height\",\n keepItemContent: \"keepItemContent\",\n items: \"items\"\n },\n outputs: {\n stateChange: \"stateChange\",\n select: \"select\",\n expand: \"expand\",\n collapse: \"collapse\",\n itemClick: \"itemClick\"\n },\n exportAs: [\"kendoPanelbar\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([PanelBarService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.panelbar'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 3,\n vars: 3,\n consts: [[4, \"ngIf\"], [3, \"ngIf\"], [\"kendoWatermarkOverlay\", \"\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"svgIcon\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\", 4, \"ngIf\"], [3, \"title\", \"id\", \"icon\", \"iconClass\", \"svgIcon\", \"imageUrl\", \"selected\", \"expanded\", \"disabled\", \"template\", \"items\", \"content\"], [\"kendoWatermarkOverlay\", \"\"]],\n template: function PanelBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c2);\n i0.ɵɵtemplate(0, PanelBarComponent_ng_content_0_Template, 1, 0, \"ng-content\", 0)(1, PanelBarComponent_ng_template_1_Template, 1, 1, \"ng-template\", 1)(2, PanelBarComponent_div_2_Template, 1, 0, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.contentChildItems && !ctx.items);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.items == null ? null : ctx.items.length);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showLicenseWatermark);\n }\n },\n dependencies: [NgIf, NgFor, PanelBarItemComponent, WatermarkOverlayComponent],\n encapsulation: 2\n });\n return PanelBarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the pane component of the Splitter.\n */\nlet SplitterPaneComponent = /*#__PURE__*/(() => {\n class SplitterPaneComponent {\n constructor(element, renderer, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n /**\n * The value of the aria-label attribute of the auxiliary separator.\n */\n this.separatorLabel = 'Splitter pane';\n /**\n * Specifies if the user is allowed to resize the pane and provide space for other panes.\n */\n this.resizable = true;\n /**\n * Specifies if the user is allowed to hide the pane and provide space for other panes.\n */\n this.collapsible = false;\n /**\n * Specifies if overflowing content is scrollable or hidden.\n */\n this.scrollable = true;\n /**\n * Specifies if the pane is initially collapsed.\n */\n this.collapsed = false;\n /**\n * @hidden\n */\n this.orientation = 'horizontal';\n /**\n * @hidden\n */\n this.overlayContent = false;\n /**\n * Fires each time the user resizes the Splitter pane.\n * The event data contains the new pane size.\n * Allows a two-way binding of the pane `size` property.\n */\n this.sizeChange = new EventEmitter();\n /**\n * Fires each time the `collapsed` property changes.\n * The event data contains the new property state.\n * Allows a two-way binding of the `collapsed` pane property.\n */\n this.collapsedChange = new EventEmitter();\n this.ariaRole = 'group';\n this.hostClass = true;\n /**\n * @hidden\n */\n this.forceExpand = false;\n /**\n * @hidden\n */\n this.isResized = false;\n }\n /**\n * @hidden\n */\n set order(paneOrder) {\n this._order = paneOrder;\n this.setOrderStyles();\n }\n get order() {\n return this._order;\n }\n /**\n * Sets the initial size of the pane.\n * Accepts units in pixel and percentage values.\n * Has to be between the `min` and `max` properties.\n */\n set size(newSize) {\n this._size = newSize;\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-preferred-size', newSize);\n this.renderer.setStyle(element, 'flex-basis', newSize);\n if (this.staticPaneClass) {\n this.renderer.addClass(element, 'k-pane-static');\n } else {\n this.renderer.removeClass(element, 'k-pane-static');\n }\n }\n get size() {\n return this._size;\n }\n /**\n * @hidden\n */\n set containsSplitter(value) {\n const element = this.element.nativeElement;\n if (value) {\n this.renderer.addClass(element, 'k-pane-flex');\n } else {\n this.renderer.removeClass(element, 'k-pane-flex');\n }\n }\n get isHidden() {\n return this.collapsed;\n }\n get staticPaneClass() {\n if (this.forceExpand) {\n return false;\n }\n return !this.resizable && !this.collapsible || this.fixedSize;\n }\n get scrollablePaneClass() {\n return this.scrollable;\n }\n get fixedSize() {\n return this.size && this.size.length > 0;\n }\n ngAfterViewChecked() {\n const element = this.element.nativeElement;\n if (this.isHidden) {\n this.renderer.addClass(element, 'k-hidden');\n this.renderer.addClass(element, 'hidden');\n } else {\n this.renderer.removeClass(element, 'k-hidden');\n this.renderer.removeClass(element, 'hidden');\n }\n }\n /**\n * @hidden\n */\n get computedSize() {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.offsetHeight;\n } else {\n return this.element.nativeElement.offsetWidth;\n }\n }\n /**\n * @hidden\n */\n toggleOverlay(show) {\n this.overlayContent = show;\n this.cdr.detectChanges();\n }\n /**\n * @hidden\n */\n detectChanges() {\n this.cdr.detectChanges();\n }\n setOrderStyles() {\n const element = this.element.nativeElement;\n this.renderer.setStyle(element, '-ms-flex-order', this.order);\n this.renderer.setStyle(element, 'order', this.order);\n }\n }\n SplitterPaneComponent.ɵfac = function SplitterPaneComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitterPaneComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n SplitterPaneComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SplitterPaneComponent,\n selectors: [[\"kendo-splitter-pane\"]],\n hostVars: 7,\n hostBindings: function SplitterPaneComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.ariaRole);\n i0.ɵɵclassProp(\"k-pane\", ctx.hostClass)(\"k-pane-static\", ctx.staticPaneClass)(\"k-scrollable\", ctx.scrollablePaneClass);\n }\n },\n inputs: {\n order: \"order\",\n size: \"size\",\n separatorLabel: \"separatorLabel\",\n min: \"min\",\n max: \"max\",\n resizable: \"resizable\",\n collapsible: \"collapsible\",\n scrollable: \"scrollable\",\n collapsed: \"collapsed\",\n orientation: \"orientation\",\n containsSplitter: \"containsSplitter\",\n overlayContent: \"overlayContent\"\n },\n outputs: {\n sizeChange: \"sizeChange\",\n collapsedChange: \"collapsedChange\"\n },\n exportAs: [\"kendoSplitterPane\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 2,\n vars: 2,\n consts: [[4, \"ngIf\"], [\"class\", \"k-splitter-overlay k-overlay\", 4, \"ngIf\"], [1, \"k-splitter-overlay\", \"k-overlay\"]],\n template: function SplitterPaneComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, SplitterPaneComponent_ng_container_0_Template, 2, 0, \"ng-container\", 0)(1, SplitterPaneComponent_div_1_Template, 1, 0, \"div\", 1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.collapsed);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.overlayContent);\n }\n },\n dependencies: [NgIf],\n encapsulation: 2\n });\n return SplitterPaneComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst shouldTogglePrev = (keyCode, prev, next) => {\n const leftArrow = keyCode === Keys.ArrowLeft;\n const upArrow = keyCode === Keys.ArrowUp;\n const collapsePrev = !prev.collapsed && !next.collapsed && (leftArrow || upArrow);\n const expandPrev = prev.collapsed && !(leftArrow || upArrow);\n return collapsePrev || expandPrev;\n};\n/**\n * @hidden\n */\nconst shouldToggleNext = (keyCode, prev, next) => {\n const leftArrow = keyCode === Keys.ArrowLeft;\n const upArrow = keyCode === Keys.ArrowUp;\n const collapseNext = !next.collapsed && !prev.collapsed && !(leftArrow || upArrow);\n const expandNext = next.collapsed && (leftArrow || upArrow);\n return collapseNext || expandNext;\n};\n/**\n * @hidden\n */\nconst shouldToggleOrResize = (keyCode, orientation) => {\n const isHorizontal = orientation === 'horizontal';\n const isHorizontalChange = isHorizontal && (keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight);\n const isVerticalChange = !isHorizontal && (keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown);\n return isHorizontalChange || isVerticalChange;\n};\nconst SIZING_DOC_LINK = 'https://www.telerik.com/kendo-angular-ui/components/layout/splitter/panes/#toc-size';\n/**\n * @hidden\n */\nlet SplitterService = /*#__PURE__*/(() => {\n class SplitterService {\n constructor(zone) {\n this.zone = zone;\n this.layoutChange = new EventEmitter();\n this.resizeStep = 10;\n this.containerSize = () => {};\n }\n tryToggle(paneIndex) {\n const pane = this.pane(paneIndex);\n if (pane.collapsible) {\n pane.collapsed = !pane.collapsed;\n pane.collapsedChange.emit(pane.collapsed);\n this.emit(this.layoutChange, {});\n if (pane.collapsed) {\n pane.detectChanges();\n }\n }\n const notCollapsed = this.panes.filter(p => !p.collapsed);\n const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);\n notCollapsed.filter(p => p.fixedSize).forEach(pane => {\n pane.forceExpand = allHaveFixedSize ? true : false;\n });\n return pane.collapsible;\n }\n togglePane(keyCode, index) {\n const prev = this.pane(index);\n const next = this.pane(index + 1);\n if (shouldTogglePrev(keyCode, prev, next)) {\n this.tryToggle(index);\n } else if (shouldToggleNext(keyCode, prev, next)) {\n this.tryToggle(index + 1);\n }\n }\n resizePane(keyCode, index) {\n const state = this.dragState(index);\n const direction = keyCode === Keys.ArrowLeft || keyCode === (this.rtl ? Keys.ArrowDown : Keys.ArrowUp);\n let step = direction ? -this.resizeStep : this.resizeStep;\n if (this.rtl) {\n step = -step;\n }\n this.setSize(state, step);\n }\n toggleContentOverlay(index, show) {\n this.pane(index).toggleOverlay(show);\n this.pane(index + 1).toggleOverlay(show);\n }\n dragState(splitbarIndex) {\n const prev = this.pane(splitbarIndex);\n const next = this.pane(splitbarIndex + 1);\n const total = prev.computedSize + next.computedSize;\n const px = s => this.toPixels(s);\n return {\n prev: {\n index: splitbarIndex,\n initialSize: prev.computedSize,\n min: px(prev.min) || total - px(next.max) || 0,\n max: px(prev.max) || total - px(next.min) || total\n },\n next: {\n index: splitbarIndex + 1,\n initialSize: next.computedSize,\n min: px(next.min) || total - px(prev.max) || 0,\n max: px(next.max) || total - px(prev.min) || total\n }\n };\n }\n setSize(state, delta) {\n const clamp = (min, max, v) => Math.min(max, Math.max(min, v));\n const resize = (paneState, change) => {\n const pane = this.pane(paneState.index);\n const splitterSize = this.containerSize();\n const newSize = clamp(paneState.min, paneState.max, paneState.initialSize + change);\n let size = \"\";\n if (this.isPercent(pane.size)) {\n size = 100 * newSize / splitterSize + \"%\";\n } else {\n size = newSize + \"px\";\n }\n pane.size = size;\n pane.isResized = true;\n this.emit(pane.sizeChange, size);\n };\n // resizing both panes\n resize(state.prev, delta);\n resize(state.next, -delta);\n this.emit(this.layoutChange, {});\n }\n isDraggable(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsedPane = prev.collapsed || next.collapsed;\n return betweenResizablePanes && !nearCollapsedPane;\n }\n isStatic(splitBarIndex) {\n const prev = this.pane(splitBarIndex);\n const next = this.pane(splitBarIndex + 1);\n const betweenResizablePanes = prev.resizable && next.resizable;\n const nearCollapsiblePane = prev.collapsible || next.collapsible;\n return !betweenResizablePanes && !nearCollapsiblePane;\n }\n pane(index) {\n if (!this.panes) {\n throw new Error(\"Panes not initialized\");\n }\n if (index < 0 || index >= this.panes.length) {\n throw new Error(\"Index out of range\");\n }\n return this.panes[index];\n }\n configure({\n panes,\n orientation,\n containerSize,\n direction\n }) {\n this.panes = panes;\n this.panes.forEach((pane, index) => {\n pane.order = index * 2;\n pane.orientation = orientation;\n });\n if (isDevMode()) {\n const allPanesWithSize = panes.length && !panes.some(pane => !pane.fixedSize);\n const hasResizedPane = panes.length && panes.some(pane => pane.isResized);\n if (allPanesWithSize && !hasResizedPane) {\n throw new Error(`\n The Splitter should have at least one pane without a set size.\n See ${SIZING_DOC_LINK} for more information.\n `);\n }\n }\n this.containerSize = containerSize;\n this.rtl = direction === 'rtl';\n }\n isPercent(size) {\n return /%$/.test(size);\n }\n toPixels(size) {\n let result = parseFloat(size);\n if (this.isPercent(size)) {\n result = this.containerSize() * result / 100;\n }\n return result;\n }\n emit(emitter, args) {\n if (emitter.observers.length) {\n this.zone.run(() => emitter.emit(args));\n }\n }\n }\n SplitterService.ɵfac = function SplitterService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitterService)(i0.ɵɵinject(i0.NgZone));\n };\n SplitterService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SplitterService,\n factory: SplitterService.ɵfac\n });\n return SplitterService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst stopPropagation = ({\n originalEvent: event\n}) => {\n event.stopPropagation();\n event.preventDefault();\n};\nconst preventOnDblClick = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\nconst classFromObject = classes => Object.keys(classes).filter(c => classes[c]).join(' ');\nconst createMoveStream = draggable => mouseDown => draggable.kendoDrag.pipe(takeUntil(draggable.kendoRelease), map(({\n pageX,\n pageY\n}) => ({\n originalX: mouseDown.pageX,\n originalY: mouseDown.pageY,\n pageX,\n pageY\n})));\n/**\n * @hidden\n */\nlet SplitterBarComponent = /*#__PURE__*/(() => {\n class SplitterBarComponent {\n constructor(draggable, localization, splitterService, element, renderer) {\n this.draggable = draggable;\n this.localization = localization;\n this.splitterService = splitterService;\n this.element = element;\n this.renderer = renderer;\n this.ariaRole = 'separator';\n this.focused = false;\n this.orientation = 'horizontal';\n this.index = 0;\n this.subscriptions = new Subscription();\n }\n get hostOrientation() {\n return this.orientation === 'horizontal' ? 'vertical' : 'horizontal';\n }\n get tabIndex() {\n return this.splitterService.isStatic(this.index) ? -1 : 0;\n }\n get hostClasses() {\n const isHorizontal = this.orientation === 'horizontal';\n const isDraggable = this.splitterService.isDraggable(this.index);\n const isStatic = this.splitterService.isStatic(this.index);\n return classFromObject({\n 'k-focus': this.focused,\n 'k-splitbar': true,\n 'k-splitbar-horizontal': isHorizontal,\n 'k-splitbar-vertical': !isHorizontal,\n 'k-splitbar-draggable-horizontal': isHorizontal && isDraggable,\n 'k-splitbar-draggable-vertical': !isHorizontal && isDraggable,\n 'k-splitbar-static-horizontal': isHorizontal && isStatic,\n 'k-splitbar-static-vertical': !isHorizontal && isStatic,\n 'k-touch-action-none': isDraggable\n });\n }\n get order() {\n return 2 * this.index + 1;\n }\n ngOnInit() {\n let state;\n const listener = this.draggable.kendoPress.pipe(tap(stopPropagation), filter(() => this.splitterService.isDraggable(this.index)), tap(() => state = this.splitterService.dragState(this.index)), tap(() => this.splitterService.toggleContentOverlay(this.index, true)), switchMap(preventOnDblClick(this.draggable.kendoRelease)), switchMap(createMoveStream(this.draggable))).subscribe(({\n pageX,\n pageY,\n originalX,\n originalY\n }) => {\n let delta;\n if (this.orientation === 'vertical') {\n delta = pageY - originalY;\n } else if (this.direction === 'rtl') {\n delta = originalX - pageX;\n } else {\n delta = pageX - originalX;\n }\n this.splitterService.setSize(state, delta);\n });\n this.subscriptions.add(listener);\n this.subscriptions.add(this.draggable.kendoRelease.subscribe(() => this.splitterService.toggleContentOverlay(this.index, false)));\n const element = this.element.nativeElement;\n this.subscriptions.add(this.renderer.listen(element, 'keydown', event => this.onKeyDown(event)));\n this.subscriptions.add(this.renderer.listen(element, 'focusin', () => this.focused = true));\n this.subscriptions.add(this.renderer.listen(element, 'focusout', () => this.focused = false));\n this.subscriptions.add(this.renderer.listen(element, 'dblclick', () => this.togglePane()));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n togglePrevious() {\n this.splitterService.tryToggle(this.index);\n }\n toggleNext() {\n this.splitterService.tryToggle(this.index + 1);\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n shouldShowIcon(iconName) {\n const paneIndex = iconName === 'prev' ? this.index : this.index + 1;\n const relatedPaneIndex = iconName === 'prev' ? this.index + 1 : this.index;\n const pane = this.splitterService.pane(paneIndex);\n const relatedPane = this.splitterService.pane(relatedPaneIndex);\n const isCollapsible = pane.collapsible;\n return isCollapsible && !relatedPane.isHidden;\n }\n previousArrowClass() {\n const pane = this.splitterService.pane(this.index);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n return classFromObject({\n 'caret-alt-left': isCollapsible && isHorizontal && (!isCollapsed && !isRTL || isCollapsed && isRTL),\n 'caret-alt-right': isCollapsible && isHorizontal && (isCollapsed && !isRTL || !isCollapsed && isRTL),\n 'caret-alt-up': isCollapsible && !isHorizontal && !isCollapsed,\n 'caret-alt-down': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n previousSVGArrowClass() {\n const pane = this.splitterService.pane(this.index);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n if (isCollapsible && isHorizontal && (!isCollapsed && !isRTL || isCollapsed && isRTL)) {\n return caretAltLeftIcon;\n }\n if (isCollapsible && isHorizontal && (isCollapsed && !isRTL || !isCollapsed && isRTL)) {\n return caretAltRightIcon;\n }\n if (isCollapsible && !isHorizontal && !isCollapsed) {\n return caretAltUpIcon;\n }\n if (isCollapsible && !isHorizontal && isCollapsed) {\n return caretAltDownIcon;\n }\n }\n nextArrowClass() {\n const pane = this.splitterService.pane(this.index + 1);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n return classFromObject({\n 'caret-alt-right': isCollapsible && isHorizontal && (!isCollapsed && !isRTL || isCollapsed && isRTL),\n 'caret-alt-left': isCollapsible && isHorizontal && (isCollapsed && !isRTL || !isCollapsed && isRTL),\n 'caret-alt-down': isCollapsible && !isHorizontal && !isCollapsed,\n 'caret-alt-up': isCollapsible && !isHorizontal && isCollapsed\n });\n }\n nextSVGArrowClass() {\n const pane = this.splitterService.pane(this.index + 1);\n const isCollapsible = pane.collapsible;\n const isCollapsed = pane.collapsed;\n const isHorizontal = this.orientation === 'horizontal';\n const isRTL = this.direction === 'rtl';\n if (isCollapsible && isHorizontal && (!isCollapsed && !isRTL || isCollapsed && isRTL)) {\n return caretAltRightIcon;\n }\n if (isCollapsible && isHorizontal && (isCollapsed && !isRTL || !isCollapsed && isRTL)) {\n return caretAltLeftIcon;\n }\n if (isCollapsible && !isHorizontal && !isCollapsed) {\n return caretAltDownIcon;\n }\n if (isCollapsible && !isHorizontal && isCollapsed) {\n return caretAltUpIcon;\n }\n }\n togglePane() {\n if (this.expandLast) {\n this.toggleNext();\n } else {\n this.tryToggleNearest();\n }\n }\n get expandLast() {\n const panes = this.splitterService.panes;\n return panes.length === 2 && panes[1].collapsed;\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const shouldToggle = event.ctrlKey || event.metaKey;\n if (keyCode === Keys.Enter) {\n event.preventDefault();\n this.togglePane();\n } else if (shouldToggleOrResize(keyCode, this.orientation)) {\n event.preventDefault();\n if (shouldToggle) {\n this.splitterService.togglePane(keyCode, this.index);\n } else {\n this.splitterService.resizePane(keyCode, this.index);\n }\n }\n }\n tryToggleNearest() {\n const prev = this.index;\n const next = this.index + 1;\n if (!this.splitterService.tryToggle(prev)) {\n this.splitterService.tryToggle(next);\n }\n }\n }\n SplitterBarComponent.ɵfac = function SplitterBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitterBarComponent)(i0.ɵɵdirectiveInject(i1$1.DraggableDirective, 1), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(SplitterService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n SplitterBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SplitterBarComponent,\n selectors: [[\"kendo-splitter-bar\"]],\n hostVars: 11,\n hostBindings: function SplitterBarComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.ariaRole)(\"aria-orientation\", ctx.hostOrientation)(\"tabindex\", ctx.tabIndex);\n i0.ɵɵclassMap(ctx.hostClasses);\n i0.ɵɵstyleProp(\"-ms-flex-order\", ctx.order)(\"order\", ctx.order);\n i0.ɵɵclassProp(\"k-focus\", ctx.focused);\n }\n },\n inputs: {\n orientation: \"orientation\",\n index: \"index\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 2,\n consts: [[\"class\", \"k-collapse-prev\", 3, \"click\", 4, \"ngIf\"], [1, \"k-resize-handle\"], [\"class\", \"k-collapse-next\", 3, \"click\", 4, \"ngIf\"], [1, \"k-collapse-prev\", 3, \"click\"], [\"size\", \"xsmall\", 3, \"name\", \"svgIcon\"], [1, \"k-collapse-next\", 3, \"click\"]],\n template: function SplitterBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, SplitterBarComponent_div_0_Template, 2, 2, \"div\", 0);\n i0.ɵɵelement(1, \"div\", 1);\n i0.ɵɵtemplate(2, SplitterBarComponent_div_2_Template, 2, 2, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.shouldShowIcon(\"prev\"));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.shouldShowIcon(\"next\"));\n }\n },\n dependencies: [NgIf, IconWrapperComponent],\n encapsulation: 2\n });\n return SplitterBarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the [Kendo UI Splitter component for Angular]({% slug overview_splitter %}).\n *\n * ```ts-preview\n *\n * @Component({\n * selector: 'my-app',\n * template: `\n * \n *\n * \n *

Inner splitter / left pane

\n *

Resizable and collapsible.

\n *
\n *\n * \n *

Inner splitter / center pane

\n *

Resizable only.

\n *
\n *\n * \n *

Inner splitter / right pane

\n *

Resizable and collapsible.

\n *
\n *\n *
\n * `,\n * styles: [ `\n * h3 { font-size: 1.2em; }\n * h3, p { margin: 10px; padding: 0; }\n * ` ]\n * })\n * class AppComponent {}\n * ```\n */\nlet SplitterComponent = /*#__PURE__*/(() => {\n class SplitterComponent {\n constructor(element, splitterService, localization, renderer, enclosingPane) {\n this.element = element;\n this.splitterService = splitterService;\n this.localization = localization;\n this.renderer = renderer;\n this.enclosingPane = enclosingPane;\n /**\n * Specifies the orientation of the panes within the Splitter.\n * Panes in a horizontal Splitter are placed horizontally.\n * Panes in a vertical Splitter are placed vertically.\n */\n this.orientation = 'horizontal';\n validatePackage(packageMetadata);\n if (enclosingPane) {\n enclosingPane.containsSplitter = true;\n }\n // the handler only runs in NgZone if there are bound handlers\n // this line merges both streams\n this.layoutChange = this.splitterService.layoutChange;\n this.configure = this.configure.bind(this);\n }\n /**\n * The distance in pixels that the separator is moved with during keyboard navigation.\n * @default 10\n */\n set resizeStep(value) {\n this.splitterService.resizeStep = value;\n }\n get resizeStep() {\n return this.splitterService.resizeStep;\n }\n get hostClasses() {\n return true;\n }\n get horizontalHostClasses() {\n return this.orientation === 'horizontal';\n }\n get verticalHostClasses() {\n return this.orientation === 'vertical';\n }\n get dir() {\n return this.direction;\n }\n set splitbars(splitbars) {\n if (!isPresent(splitbars) || !isPresent(this.panes)) {\n return;\n }\n if (!isDocumentAvailable()) {\n return;\n }\n const panesArray = this.panes.toArray();\n const splitBarsArray = splitbars.toArray();\n const components = [...panesArray, ...splitBarsArray].sort((a, b) => a.order - b.order);\n const elements = components.map(component => component.element.nativeElement);\n panesArray.forEach((pane, i) => {\n if (splitBarsArray[i] && pane.separatorLabel) {\n const splitbar = splitBarsArray[i].element.nativeElement;\n this.renderer.setAttribute(splitbar, 'aria-label', pane.separatorLabel);\n }\n });\n elements.forEach(element => this.renderer.appendChild(this.element.nativeElement, element));\n }\n ngAfterContentInit() {\n this.reconfigure();\n }\n ngOnChanges(changes) {\n if (changes.orientation && !changes.orientation.isFirstChange()) {\n this.reconfigure();\n }\n }\n ngOnDestroy() {\n if (this.enclosingPane) {\n this.enclosingPane.containsSplitter = false;\n }\n this.unsubscribeChanges();\n }\n reconfigure() {\n this.unsubscribeChanges();\n this.configure();\n this.paneChangesSubscription = this.panes.changes.subscribe(this.configure);\n }\n unsubscribeChanges() {\n if (this.paneChangesSubscription) {\n this.paneChangesSubscription.unsubscribe();\n this.paneChangesSubscription = null;\n }\n }\n configure() {\n this.splitterService.configure({\n panes: this.panes.toArray(),\n orientation: this.orientation,\n containerSize: () => {\n if (this.orientation === 'vertical') {\n return this.element.nativeElement.clientHeight;\n } else {\n return this.element.nativeElement.clientWidth;\n }\n },\n direction: this.direction\n });\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n }\n SplitterComponent.ɵfac = function SplitterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitterComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(SplitterService), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(SplitterPaneComponent, 9));\n };\n SplitterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SplitterComponent,\n selectors: [[\"kendo-splitter\"]],\n contentQueries: function SplitterComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, SplitterPaneComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.panes = _t);\n }\n },\n viewQuery: function SplitterComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(SplitterBarComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.splitbars = _t);\n }\n },\n hostVars: 9,\n hostBindings: function SplitterComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-splitter\", ctx.hostClasses)(\"k-splitter-flex\", ctx.hostClasses)(\"k-splitter-horizontal\", ctx.horizontalHostClasses)(\"k-splitter-vertical\", ctx.verticalHostClasses);\n }\n },\n inputs: {\n orientation: \"orientation\",\n splitbarWidth: \"splitbarWidth\",\n resizeStep: \"resizeStep\"\n },\n outputs: {\n layoutChange: \"layoutChange\"\n },\n exportAs: [\"kendoSplitter\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([SplitterService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.spliter'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c10,\n decls: 2,\n vars: 1,\n consts: [[4, \"ngFor\", \"ngForOf\"], [\"kendoDraggable\", \"\", 3, \"index\", \"orientation\", \"ngStyle\", 4, \"ngIf\"], [\"kendoDraggable\", \"\", 3, \"index\", \"orientation\", \"ngStyle\"]],\n template: function SplitterComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c9);\n i0.ɵɵprojection(0);\n i0.ɵɵtemplate(1, SplitterComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.panes);\n }\n },\n dependencies: [NgFor, NgIf, SplitterBarComponent, DraggableDirective, NgStyle],\n encapsulation: 2\n });\n return SplitterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the content template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabContent` inside the component tag.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

Content 1

\n *
\n *
\n *\n * \n * \n *

Content 2

\n *
\n *
\n *
\n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nlet TabContentDirective = /*#__PURE__*/(() => {\n class TabContentDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n TabContentDirective.ɵfac = function TabContentDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabContentDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n TabContentDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TabContentDirective,\n selectors: [[\"\", \"kendoTabContent\", \"\"]],\n standalone: true\n });\n return TabContentDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the title template of the Kendo UI TabStrip.\n * To define the template, nest a `` tag with the `kendoTabTitle` directive inside the component tag.\n *\n * > The `kendoTabTitle` directive overrides the TabStripTab [title]({% slug api_layout_tabstriptabcomponent %}#toc-title) option.\n *\n * @example\n * ```ts-preview\n *\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n *

Custom Title

\n *
\n * \n *

Content 1

\n *
\n *
\n *\n * \n * \n *

Content 2

\n *
\n *
\n *
\n * `\n * })\n *\n * class AppComponent {}\n *\n * ```\n */\nlet TabTitleDirective = /*#__PURE__*/(() => {\n class TabTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n TabTitleDirective.ɵfac = function TabTitleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabTitleDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n TabTitleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TabTitleDirective,\n selectors: [[\"\", \"kendoTabTitle\", \"\"]],\n standalone: true\n });\n return TabTitleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TabTemplateDirective = /*#__PURE__*/(() => {\n class TabTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n TabTemplateDirective.ɵfac = function TabTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n TabTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TabTemplateDirective,\n selectors: [[\"\", \"kendoTabTemplate\", \"\"]],\n standalone: true\n });\n return TabTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the tab component of the TabStrip.\n */\nlet TabStripTabComponent = /*#__PURE__*/(() => {\n class TabStripTabComponent {\n constructor() {\n /**\n * Used to disable a tab ([see example]({% slug tabs_tabstrip %}#toc-disabled-tabs)).\n *\n * Defaults to `false`.\n */\n this.disabled = false;\n this._tabDirective = new QueryList();\n this._tabContent = new QueryList();\n /**\n * @hidden\n *\n * Currently only disabled tabs can be focused. Otherwise they will be\n * immediately selected\n */\n this.focused = false;\n }\n get tabContent() {\n return this._tabContent.first;\n }\n get tabTitle() {\n return this._tabTitleDirective.first;\n }\n get tabTemplate() {\n return this._tabDirective.first;\n }\n }\n TabStripTabComponent.ɵfac = function TabStripTabComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabStripTabComponent)();\n };\n TabStripTabComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TabStripTabComponent,\n selectors: [[\"kendo-tabstrip-tab\"]],\n contentQueries: function TabStripTabComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TabTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, TabContentDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, TabTitleDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabDirective = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabContent = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._tabTitleDirective = _t);\n }\n },\n inputs: {\n title: \"title\",\n disabled: \"disabled\",\n cssClass: \"cssClass\",\n cssStyle: \"cssStyle\",\n selected: \"selected\",\n closable: \"closable\",\n closeIcon: \"closeIcon\",\n closeIconClass: \"closeIconClass\",\n closeSVGIcon: \"closeSVGIcon\"\n },\n exportAs: [\"kendoTabStripTab\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function TabStripTabComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return TabStripTabComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the `tabClose` event of the TabStrip.\n * The `tabClose` event fires when the close button of the tab is clicked.\n *\n */\nclass TabCloseEvent {\n /**\n * Constructs the event arguments for the `tabClose` event.\n * @param index - The index of the closed tab.\n * @param tab - The closed tab instance\n */\n constructor(index, tab) {\n this.index = index;\n this.tab = tab;\n }\n}\n\n/**\n * Arguments for the `select` event of the TabStrip.\n * The `select` event fires when a tab is selected (clicked).\n */\nclass SelectEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `select` event.\n * @param index - The index of the selected tab.\n * @param title - The title of the selected tab.\n */\n constructor(index, title) {\n super();\n this.index = index;\n this.title = title;\n }\n}\n\n/**\n * @hidden\n *\n * Checks if the current target is a TabStrip tab element\n */\nconst isTabElement = target => {\n const targetId = target.getAttribute('id');\n if (isPresent(targetId) || targetId.indexOf('k-tabstrip-tab-') >= 0) {\n return true;\n }\n return false;\n};\n/**\n * @hidden\n *\n * Checks if the current tab is closable. Depends on the value of the TabStrip closable property.\n */\nconst isTabClosable = (tab, tabStripClosable) => {\n if (tab.closable !== undefined) {\n return tab.closable;\n }\n return tabStripClosable;\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip scroll buttons will be rendered. Depends on the value of the TabStrip scrollable settings.\n */\nconst tabStripHasScrollButtons = scrollableSettings => {\n return scrollableSettings.enabled && scrollableSettings.scrollButtons !== 'hidden';\n};\n/**\n * @hidden\n *\n * Checks if the TabStrip mouse scroll will be enabled. Depends on the value of the TabStrip scrollable settings.\n */\nconst mouseScrollEnabled = scrollableSettings => {\n return scrollableSettings.enabled && scrollableSettings.mouseScroll;\n};\n/**\n * @hidden\n *\n * Retrieves the current active tab element and its index.\n * This could either be the currently selected tab or the currently focused tab.\n */\nconst getActiveTab = tabs => {\n let focusedTab;\n let selectedTab;\n let focusedIndex = -1;\n let selectedIndex = -1;\n tabs.forEach((tab, index) => {\n if (tab.selected) {\n selectedTab = tab;\n selectedIndex = index;\n } else if (tab.focused) {\n focusedTab = tab;\n focusedIndex = index;\n }\n });\n return focusedIndex >= 0 ? {\n tab: focusedTab,\n index: focusedIndex\n } : {\n tab: selectedTab,\n index: selectedIndex\n };\n};\n/**\n * @hidden\n */\nconst getTabByIndex = (tabs, index) => {\n const filtered = tabs.filter((_tab, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst getTabHeaderByIndex = (tabHeaderContainers, index) => {\n const filtered = tabHeaderContainers.filter((_tabHeader, i) => i === index);\n if (filtered.length > 0) {\n return filtered[0];\n }\n return null;\n};\n/**\n * @hidden\n */\nconst resetTabFocus = tabs => {\n tabs.forEach(tab => {\n tab.focused = false;\n });\n};\n/**\n * @hidden\n */\nconst resetTabSelection = tabs => {\n tabs.forEach(tab => {\n tab.selected = false;\n });\n};\n/**\n * @hidden\n */\nconst isTablistHorizontal = tabPosition => tabPosition === 'top' || tabPosition === 'bottom';\n/**\n * @hidden\n */\nconst getId$1 = (prefix, tabStripId, tabIndex) => {\n return `${prefix}-${tabStripId}-${tabIndex}`;\n};\n\n/**\n * @hidden\n */\nlet TabStripService = /*#__PURE__*/(() => {\n class TabStripService {\n constructor(localization, ngZone) {\n this.localization = localization;\n this.ngZone = ngZone;\n }\n onKeyDown(event) {\n if (!isTabElement(event.target)) {\n return;\n }\n const key = event.keyCode;\n if (this.shouldHandleKey(key)) {\n event.preventDefault();\n } else {\n return;\n }\n if (isNavigationKey(key) || isArrowKey(key)) {\n this.onNavigate(key);\n } else if (key === Keys.Delete) {\n this.onDelete();\n }\n }\n onTabSelect(tab, index) {\n const selectArgs = new SelectEvent(index, tab.title);\n this.owner.tabSelect.emit(selectArgs);\n if (!selectArgs.isDefaultPrevented()) {\n if (tab.selected) {\n this.focusTabHeader(index);\n return;\n }\n this.selectTab(tab, index);\n }\n }\n selectTab(tab, index) {\n resetTabSelection(this.owner.tabs);\n this.focusTabHeader(index);\n tab.selected = true;\n if (this.owner.isScrollable) {\n this.owner.scrollToSelectedTab();\n }\n }\n onNavigate(keyCode) {\n const {\n tab: activeTab,\n index: activeIndex\n } = getActiveTab(this.owner.tabs);\n if (!NgZone.isInAngularZone()) {\n this.ngZone.run(() => {\n if (activeIndex < 0) {\n this.owner.selectTab(this.firstNavigatableIndex());\n return;\n }\n activeTab.focused = false;\n const nextIndex = this.computeNextIndex(activeIndex, keyCode);\n this.activateTab(nextIndex);\n });\n }\n }\n onDelete() {\n const {\n tab: activeTab,\n index: activeTabIndex\n } = getActiveTab(this.owner.tabs);\n if (isTabClosable(activeTab, this.owner.closable) && !activeTab.disabled) {\n this.ngZone.run(() => {\n this.owner.tabClose.emit({\n tab: activeTab,\n index: activeTabIndex\n });\n });\n }\n }\n activateTab(index) {\n const tab = getTabByIndex(this.owner.tabs, index);\n if (tab.disabled) {\n this.focusTabHeader(index);\n tab.focused = true;\n } else {\n this.onTabSelect(tab, index);\n }\n }\n focusTabHeader(index) {\n const tabHeader = getTabHeaderByIndex(this.owner.tabHeaderContainers, index);\n tabHeader.nativeElement.focus();\n }\n shouldHandleKey(keyCode) {\n if (isNavigationKey(keyCode)) {\n return true;\n }\n if (isTablistHorizontal(this.owner.tabPosition) && isHorizontalArrowKey(keyCode)) {\n return true;\n }\n if (!isTablistHorizontal(this.owner.tabPosition) && isVerticalArrowKey(keyCode)) {\n return true;\n }\n if (keyCode === Keys.Delete) {\n return true;\n }\n return false;\n }\n computeNextIndex(activeIndex, keyCode) {\n switch (keyCode) {\n case this.invertKeys(Keys.ArrowLeft, Keys.ArrowRight):\n case this.invertKeys(Keys.ArrowUp, Keys.ArrowDown):\n return this.prevNavigatableIndex(activeIndex);\n case this.invertKeys(Keys.ArrowRight, Keys.ArrowLeft):\n case this.invertKeys(Keys.ArrowDown, Keys.ArrowUp):\n return this.nextNavigatableIndex(activeIndex);\n case Keys.Home:\n return this.firstNavigatableIndex();\n case Keys.End:\n return this.lastNavigatableIndex();\n default:\n return;\n }\n }\n invertKeys(original, inverted) {\n return this.localization.rtl ? inverted : original;\n }\n firstNavigatableIndex() {\n return 0;\n }\n lastNavigatableIndex() {\n return this.owner.tabs.length - 1;\n }\n prevNavigatableIndex(selectedIndex) {\n if (selectedIndex - 1 < 0) {\n return this.lastNavigatableIndex();\n }\n return selectedIndex - 1;\n }\n nextNavigatableIndex(selectedIndex) {\n if (selectedIndex + 1 >= this.owner.tabs.length) {\n return this.firstNavigatableIndex();\n }\n return selectedIndex + 1;\n }\n }\n TabStripService.ɵfac = function TabStripService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabStripService)(i0.ɵɵinject(i1.LocalizationService), i0.ɵɵinject(i0.NgZone));\n };\n TabStripService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TabStripService,\n factory: TabStripService.ɵfac\n });\n return TabStripService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst MOUSE_SCROLL_SPEED = 10;\n/**\n * @hidden\n */\nconst BUTTON_SCROLL_SPEED = 100;\n/**\n * @hidden\n */\nconst SCROLLABLE_CLASS = 'k-tabstrip-scrollable';\n/**\n * @hidden\n */\nconst HIDDEN_CLASS = 'k-hidden';\n/**\n * @hidden\n */\nconst DIRECTION_CLASSES = {\n left: 'caret-alt-left',\n right: 'caret-alt-right',\n up: 'caret-alt-up',\n down: 'caret-alt-down'\n};\n/**\n * @hidden\n */\nconst DEFAULT_SCROLL_BEHAVIOR = 'smooth';\n\n/**\n * @hidden\n */\nlet ScrollService = /*#__PURE__*/(() => {\n class ScrollService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.position = 0;\n this.scrollButtonActiveStateChange = new Subject();\n this.isDisabled = buttonType => this.owner[`${buttonType}ScrollButton`].host.nativeElement.classList.contains('k-disabled');\n }\n get tablistElement() {\n return this.owner.tablist.nativeElement;\n }\n get tabstripSize() {\n const hostElement = this.owner.wrapper.nativeElement;\n const wrapperWidth = parseFloat(getComputedStyle(hostElement).width);\n const wrapperHeight = parseFloat(getComputedStyle(hostElement).height);\n return isTablistHorizontal(this.owner.tabPosition) ? wrapperWidth : wrapperHeight;\n }\n get tablistOverflowSize() {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n const overflowSize = Math.floor(this.tablistElement[isHorizontal ? 'scrollWidth' : 'scrollHeight'] - this.tablistElement.getBoundingClientRect()[isHorizontal ? 'width' : 'height']);\n return overflowSize < 0 ? 0 : overflowSize;\n }\n get tabsOverflow() {\n return this.tablistOverflowSize > 0;\n }\n get scrollButtonsSize() {\n if (!this.owner.hasScrollButtons) {\n return 0;\n }\n const prevRect = this.owner.prevScrollButton.hostBoundingClientRect;\n const prevSize = isTablistHorizontal(this.owner.tabPosition) ? prevRect.width : prevRect.height;\n const nextRect = this.owner.nextScrollButton.hostBoundingClientRect;\n const nextSize = isTablistHorizontal(this.owner.tabPosition) ? nextRect.width : nextRect.height;\n return prevSize + nextSize;\n }\n toggleScrollButtonsState() {\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const currentPrevButtonActive = !this.isDisabled('prev');\n const currentNextButtonActive = !this.isDisabled('next');\n const calculatedPrevButtonActive = this.position > 0 && this.tablistOverflowSize > 0;\n const calculatedNextButtonActive = this.position < this.tablistOverflowSize + this.scrollButtonsSize && this.tablistOverflowSize > 0;\n if (calculatedPrevButtonActive !== currentPrevButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', calculatedPrevButtonActive));\n }\n if (calculatedNextButtonActive !== currentNextButtonActive) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', calculatedNextButtonActive));\n }\n }\n scrollToSelectedTab() {\n if (!this.tabsOverflow) {\n return;\n }\n const {\n index: activeIndex\n } = getActiveTab(this.owner.tabs);\n if (activeIndex === -1) {\n return;\n }\n this.position += this.getScrollOffset(activeIndex);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n } else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n const tabStrip = this.owner;\n if (!tabStrip.hasScrollButtons) {\n return;\n }\n const isFirstTabActive = activeIndex === 0;\n const isLastTabActive = activeIndex === this.owner.tabs.length - 1;\n if (isFirstTabActive && !this.isDisabled('prev')) {\n this.ngZone.run(() => this.toggleButtonActiveState('prev', false));\n }\n if (isLastTabActive && !this.isDisabled('next')) {\n this.ngZone.run(() => this.toggleButtonActiveState('next', false));\n }\n }\n getScrollOffset(activeIndex) {\n if (!isDocumentAvailable()) {\n return 0;\n }\n const isHorizontal = isTablistHorizontal(this.owner.tabPosition);\n this.tablistElement[`scroll${isHorizontal ? 'Left' : 'Top'}`] = this.position;\n const activeTabRect = this.tablistElement.children[activeIndex].getBoundingClientRect();\n const tablistRect = this.tablistElement.getBoundingClientRect();\n const end = isHorizontal ? 'right' : 'bottom';\n const start = isHorizontal ? 'left' : 'top';\n const activeTabStart = activeTabRect[start];\n const activeTabEnd = activeTabRect[end];\n const tablistStart = tablistRect[start];\n const tablistEnd = tablistRect[end];\n const tabEndIsInVisibleRange = activeTabEnd <= tablistEnd;\n const tabStartIsInVisibleRange = activeTabStart >= tablistStart;\n const isWholeTabVisible = tabEndIsInVisibleRange && tabStartIsInVisibleRange;\n if (isWholeTabVisible) {\n return 0;\n }\n if (!tabEndIsInVisibleRange) {\n return activeTabEnd - tablistEnd;\n }\n if (!tabStartIsInVisibleRange) {\n return activeTabStart - tablistStart;\n }\n }\n onMouseScroll(event) {\n event.preventDefault();\n if (!mouseScrollEnabled(this.owner.scrollable)) {\n return;\n }\n const direction = event.deltaY < 0 ? 'prev' : 'next';\n this.calculateListPosition(direction, this.owner.scrollable.mouseScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n } else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n }\n scrollTabs(direction) {\n this.calculateListPosition(direction, this.owner.scrollable.buttonScrollSpeed);\n if (isTablistHorizontal(this.owner.tabPosition) && this.tablistElement) {\n this.tablistElement.scrollTo({\n left: this.position,\n behavior: DEFAULT_SCROLL_BEHAVIOR\n });\n } else {\n this.tablistElement.scrollTo({\n top: this.position,\n behavior: DEFAULT_SCROLL_BEHAVIOR\n });\n }\n this.toggleScrollButtonsState();\n }\n calculateListPosition(direction, scrollSpeed) {\n const adjustedMaxScroll = this.tablistOverflowSize + this.scrollButtonsSize;\n if (direction === 'prev' && this.position > 0) {\n this.position = this.position - scrollSpeed <= 0 ? 0 : this.position - scrollSpeed;\n } else if (direction === 'next' && this.position < adjustedMaxScroll) {\n if (this.position + scrollSpeed > adjustedMaxScroll) {\n this.position = adjustedMaxScroll;\n return;\n }\n this.position += scrollSpeed;\n }\n }\n restoreScrollPosition() {\n if (isTablistHorizontal(this.owner.tabPosition)) {\n this.tablistElement.scrollLeft = this.position;\n } else {\n this.tablistElement.scrollTop = this.position;\n }\n this.toggleScrollButtonsState();\n }\n toggleButtonActiveState(buttonType, active) {\n this.scrollButtonActiveStateChange.next({\n buttonType,\n active\n });\n }\n }\n ScrollService.ɵfac = function ScrollService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ScrollService)(i0.ɵɵinject(i0.NgZone));\n };\n ScrollService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollService,\n factory: ScrollService.ɵfac\n });\n return ScrollService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst normalizeSettings = ({\n enabled = true,\n scrollButtons = 'auto',\n mouseScroll = true,\n buttonScrollSpeed = BUTTON_SCROLL_SPEED,\n mouseScrollSpeed = MOUSE_SCROLL_SPEED,\n prevButtonIcon,\n nextButtonIcon,\n prevSVGButtonIcon,\n nextSVGButtonIcon\n}) => ({\n enabled,\n scrollButtons,\n mouseScroll,\n buttonScrollSpeed,\n mouseScrollSpeed,\n prevButtonIcon,\n nextButtonIcon,\n prevSVGButtonIcon,\n nextSVGButtonIcon\n});\n/**\n * @hidden\n */\nconst normalizeScrollableSettings = settings => normalizeSettings(settings === false ? {\n enabled: false\n} : settings);\n\n/**\n * Arguments for the `tabScroll` event of the TabStrip.\n * The `tabScroll` event fires when the tabs are being scrolled.\n *\n */\nclass TabScrollEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nlet TabStripScrollableButtonComponent = /*#__PURE__*/(() => {\n class TabStripScrollableButtonComponent {\n constructor(host, renderer, ngZone, localization) {\n this.host = host;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.localization = localization;\n this.prev = false;\n this.tabScroll = new EventEmitter();\n this.onClick = new EventEmitter();\n this.caretAltLeftIcon = caretAltLeftIcon;\n this.caretAltRightIcon = caretAltRightIcon;\n this.caretAltUpIcon = caretAltUpIcon;\n this.caretAltDownIcon = caretAltDownIcon;\n this.subs = new Subscription();\n this.clickHandler = scrollEvent => {\n const tabStripScrollEvent = this.emitScrollEvent(scrollEvent);\n const isTabStripScrollEventPrevented = tabStripScrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented) {\n return;\n }\n const buttonType = this.prev ? 'prev' : 'next';\n this.onClick.emit(buttonType);\n };\n }\n get prevClass() {\n return this.prev;\n }\n get nextClass() {\n return !this.prev;\n }\n get hostBoundingClientRect() {\n return this.host.nativeElement.getBoundingClientRect();\n }\n get iconClass() {\n return this.scrollButtonIconClass;\n }\n get customIconClass() {\n return this.customScrollButtonIconClass;\n }\n get svgIcon() {\n return this.scrollButtonSVGIcon;\n }\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(this.host.nativeElement, 'click', this.clickHandler));\n });\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n toggle(show) {\n this.renderer[show ? 'removeClass' : 'addClass'](this.host.nativeElement, HIDDEN_CLASS);\n }\n get scrollButtonIconClass() {\n const defaultPrevIcon = isTablistHorizontal(this.tabPosition) ? !this.localization.rtl ? DIRECTION_CLASSES.left : DIRECTION_CLASSES.right : DIRECTION_CLASSES.up;\n const defaultNextIcon = isTablistHorizontal(this.tabPosition) ? !this.localization.rtl ? DIRECTION_CLASSES.right : DIRECTION_CLASSES.left : DIRECTION_CLASSES.down;\n if (typeof this.scrollable === 'object') {\n const prevIcon = typeof this.scrollable.prevButtonIcon === 'undefined' ? defaultPrevIcon : '';\n const nextIcon = typeof this.scrollable.nextButtonIcon === 'undefined' ? defaultNextIcon : '';\n if (prevIcon && this.prev) {\n return prevIcon;\n } else if (nextIcon && !this.prev) {\n return nextIcon;\n }\n }\n }\n get customScrollButtonIconClass() {\n if (typeof this.scrollable === 'object') {\n const prevIcon = this.scrollable.prevButtonIcon;\n const nextIcon = this.scrollable.nextButtonIcon;\n if (prevIcon && this.prev) {\n return `k-icon ${prevIcon}`;\n }\n if (nextIcon && !this.prev) {\n return `k-icon ${nextIcon}`;\n }\n }\n }\n get scrollButtonSVGIcon() {\n const defaultPrevSVGIcon = isTablistHorizontal(this.tabPosition) ? !this.localization.rtl ? this.caretAltLeftIcon : this.caretAltRightIcon : this.caretAltUpIcon;\n const defaultNextSVGIcon = isTablistHorizontal(this.tabPosition) ? !this.localization.rtl ? this.caretAltRightIcon : this.caretAltLeftIcon : this.caretAltDownIcon;\n if (typeof this.scrollable === 'object') {\n const prevIcon = this.scrollable.prevSVGButtonIcon !== undefined ? this.scrollable.prevSVGButtonIcon : defaultPrevSVGIcon;\n const nextIcon = this.scrollable.nextSVGButtonIcon !== undefined ? this.scrollable.nextSVGButtonIcon : defaultNextSVGIcon;\n if (prevIcon || nextIcon) {\n return this.prev ? prevIcon : nextIcon;\n }\n }\n }\n emitScrollEvent(event) {\n const scrollEvent = new TabScrollEvent({\n originalEvent: event\n });\n this.tabScroll.emit(scrollEvent);\n return scrollEvent;\n }\n }\n TabStripScrollableButtonComponent.ɵfac = function TabStripScrollableButtonComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabStripScrollableButtonComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n TabStripScrollableButtonComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TabStripScrollableButtonComponent,\n selectors: [[\"\", \"kendoTabStripScrollableButton\", \"\"]],\n hostVars: 4,\n hostBindings: function TabStripScrollableButtonComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-tabstrip-prev\", ctx.prevClass)(\"k-tabstrip-next\", ctx.nextClass);\n }\n },\n inputs: {\n prev: \"prev\",\n tabPosition: \"tabPosition\",\n scrollable: \"scrollable\"\n },\n outputs: {\n tabScroll: \"tabScroll\",\n onClick: \"onClick\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c12,\n decls: 1,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"customFontClass\", \"svgIcon\"]],\n template: function TabStripScrollableButtonComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"name\", ctx.iconClass)(\"customFontClass\", ctx.customIconClass)(\"svgIcon\", ctx.svgIcon);\n }\n },\n dependencies: [IconWrapperComponent],\n encapsulation: 2\n });\n return TabStripScrollableButtonComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TabComponent = /*#__PURE__*/(() => {\n class TabComponent {\n constructor(localization) {\n this.localization = localization;\n this.tabClose = new EventEmitter();\n this.hostClasses = true;\n }\n get activeClass() {\n return this.tab.selected;\n }\n get disabledClass() {\n return this.tab.disabled;\n }\n get focusedClass() {\n return this.tab.focused;\n }\n get tabIndex() {\n return this.tab.selected || this.tab.focused ? 0 : -1;\n }\n get tabClosable() {\n if (this.tab.closable !== undefined) {\n return this.tab.closable;\n }\n return this.tabStripClosable;\n }\n get closeSVGIconClass() {\n if (this.customCloseButtonClasses) {\n return;\n }\n if (this.tab.closeSVGIcon) {\n return this.tab.closeSVGIcon;\n }\n if (this.closeSVGIcon) {\n return this.closeSVGIcon;\n }\n return xIcon;\n }\n get closeButtonClasses() {\n if (!this.customTabstripCloseIcon && this.tabStripCloseIcon && !this.tab.closeIconClass) {\n if (this.tab.closeIcon) {\n return this.tab.closeIcon;\n }\n return this.tabStripCloseIcon;\n }\n }\n get customCloseButtonClasses() {\n if (this.customTabstripCloseIcon || this.tab.closeIconClass) {\n if (this.tab.closeIconClass) {\n return this.tab.closeIconClass;\n }\n return this.customTabstripCloseIcon;\n }\n }\n get closeButtonTitle() {\n return this.localization.get('closeTitle');\n }\n closeTab(index) {\n const closeArgs = new TabCloseEvent(index, this.tab);\n this.tabClose.emit(closeArgs);\n }\n }\n TabComponent.ɵfac = function TabComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n TabComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TabComponent,\n selectors: [[\"\", \"kendoTabStripTab\", \"\"]],\n hostVars: 13,\n hostBindings: function TabComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-selected\", ctx.activeClass)(\"aria-disabled\", ctx.disabledClass)(\"tabindex\", ctx.tabIndex);\n i0.ɵɵclassProp(\"k-item\", ctx.hostClasses)(\"k-tabstrip-item\", ctx.hostClasses)(\"k-active\", ctx.activeClass)(\"k-disabled\", ctx.disabledClass)(\"k-focus\", ctx.focusedClass);\n }\n },\n inputs: {\n tab: \"tab\",\n index: \"index\",\n tabStripClosable: \"tabStripClosable\",\n tabStripCloseIcon: \"tabStripCloseIcon\",\n customTabstripCloseIcon: \"customTabstripCloseIcon\",\n closeSVGIcon: \"closeSVGIcon\"\n },\n outputs: {\n tabClose: \"tabClose\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c13,\n decls: 4,\n vars: 4,\n consts: [[\"tabTemplate\", \"\"], [4, \"ngIf\", \"ngIfElse\"], [3, \"ngTemplateOutlet\"], [\"kendoButton\", \"\", \"type\", \"button\", \"role\", \"button\", \"fillMode\", \"flat\", \"class\", \"k-remove-tab k-icon-button\", 3, \"icon\", \"iconClass\", \"svgIcon\", \"title\", \"click\", 4, \"ngIf\"], [\"class\", \"k-link\", 4, \"ngIf\"], [1, \"k-link\"], [\"kendoButton\", \"\", \"type\", \"button\", \"role\", \"button\", \"fillMode\", \"flat\", 1, \"k-remove-tab\", \"k-icon-button\", 3, \"click\", \"icon\", \"iconClass\", \"svgIcon\", \"title\"]],\n template: function TabComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TabComponent_ng_container_0_Template, 3, 2, \"ng-container\", 1)(1, TabComponent_ng_template_1_Template, 0, 0, \"ng-template\", 2, 0, i0.ɵɵtemplateRefExtractor)(3, TabComponent_button_3_Template, 1, 5, \"button\", 3);\n }\n if (rf & 2) {\n const tabTemplate_r3 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"ngIf\", !ctx.tab.tabTemplate)(\"ngIfElse\", tabTemplate_r3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.tab.tabTemplate == null ? null : ctx.tab.tabTemplate.templateRef);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.tabClosable);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, ButtonComponent],\n encapsulation: 2\n });\n return TabComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TabStripMessages = /*#__PURE__*/(() => {\n class TabStripMessages extends ComponentMessages {}\n TabStripMessages.ɵfac = /* @__PURE__ */(() => {\n let ɵTabStripMessages_BaseFactory;\n return function TabStripMessages_Factory(__ngFactoryType__) {\n return (ɵTabStripMessages_BaseFactory || (ɵTabStripMessages_BaseFactory = i0.ɵɵgetInheritedFactory(TabStripMessages)))(__ngFactoryType__ || TabStripMessages);\n };\n })();\n TabStripMessages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TabStripMessages,\n selectors: [[\"kendo-tabstrip-messages-base\"]],\n inputs: {\n closeTitle: \"closeTitle\",\n previousTabButton: \"previousTabButton\",\n nextTabButton: \"nextTabButton\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return TabStripMessages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalizedTabStripMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedTabStripMessagesDirective extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedTabStripMessagesDirective.ɵfac = function LocalizedTabStripMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedTabStripMessagesDirective)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n LocalizedTabStripMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedTabStripMessagesDirective,\n selectors: [[\"\", \"kendoTabStripLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: TabStripMessages,\n useExisting: forwardRef(() => LocalizedTabStripMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedTabStripMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the [Kendo UI TabStrip component for Angular]({% slug overview_tabstrip %}).\n */\nlet TabStripComponent = /*#__PURE__*/(() => {\n class TabStripComponent {\n constructor(localization, renderer, wrapper, tabstripService, scrollService, ngZone) {\n this.localization = localization;\n this.renderer = renderer;\n this.wrapper = wrapper;\n this.tabstripService = tabstripService;\n this.scrollService = scrollService;\n this.ngZone = ngZone;\n /**\n * Enables the tab animation.\n *\n * @default true\n */\n this.animate = true;\n /**\n * Sets the position of the tabs. Defaults to `top`.\n *\n * @default 'top'\n */\n this.tabPosition = 'top';\n /**\n * When set to `true`, the component renders all tabs and they are persisted in the DOM.\n * By default, `keepTabContent` is `false`.\n *\n * @default false\n */\n this.keepTabContent = false;\n /**\n * When set to `true`, a close button will be rendered inside each tab.\n * By default, `closable` is `false`.\n *\n * @default false\n */\n this.closable = false;\n /**\n * Defines the name for an existing font icon in the Kendo UI theme for the close icon.\n */\n this.closeIcon = 'x';\n /**\n * Determines whether the content associated with each tab will be rendered.\n *\n * @default true\n */\n this.showContentArea = true;\n /**\n * Fires each time the user selects a tab ([see example](slug:events_tabstrip)).\n * The event data contains the index of the selected tab and its title.\n */\n this.tabSelect = new EventEmitter();\n /**\n * Fires each time the user closes a tab.\n * The event data contains the index of the closed tab and its instance.\n */\n this.tabClose = new EventEmitter();\n /**\n * Fires each time the user scrolls the TabStrip list.\n * The event is preventable.\n */\n this.tabScroll = new EventEmitter();\n this.hostClasses = true;\n /**\n * A query list of all declared tabs.\n */\n this.tabs = new QueryList();\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this._scrollableSettings = normalizeScrollableSettings(false);\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n this.tabStripId = guid();\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n this.tabstripService.owner = this;\n this.scrollService.owner = this;\n this.subscriptions.add(this.scrollService.scrollButtonActiveStateChange.subscribe(activeButtonSettings => {\n if (this.hasScrollButtons) {\n const action = activeButtonSettings.active ? 'remove' : 'add';\n this.renderer[`${action}Class`](this[`${activeButtonSettings.buttonType}ScrollButton`].host.nativeElement, 'k-disabled');\n }\n }));\n }\n /**\n * Sets the height of the TabStrip.\n */\n set height(value) {\n this._height = value;\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', value);\n }\n get height() {\n return this._height;\n }\n /**\n * Enables the scrolling of the tab list. When set to `true` and the total size of all tabs\n * is greater than the size of the TabStrip container, scroll buttons will be rendered on each end of the tab list.\n *\n * By default, `scrollable` is `false`.\n *\n * @default false\n */\n set scrollable(value) {\n this._scrollableSettings = normalizeScrollableSettings(value);\n if (this.tablist) {\n this.toggleScrollButtons(this.scrollService.tabsOverflow);\n this.attachWheelHandler(this.tablist.nativeElement);\n }\n }\n get scrollable() {\n return this._scrollableSettings;\n }\n /**\n * Defines an SVGIcon to be rendered for the close icon.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set closeSVGIcon(icon) {\n if (isDevMode() && icon && this.closeIcon && this.closeIcon !== 'x') {\n throw new Error('Setting both closeIcon and svgIcon options at the same time is not supported.');\n }\n this._closeSVGIcon = icon;\n }\n get closeSVGIcon() {\n return this._closeSVGIcon;\n }\n get tabsAtTop() {\n return this.tabPosition === 'top';\n }\n get tabsAtRight() {\n return this.tabPosition === 'right';\n }\n get tabsAtBottom() {\n return this.tabPosition === 'bottom';\n }\n get tabsAtLeft() {\n return this.tabPosition === 'left';\n }\n get dir() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n get tabStripScrollable() {\n return this._scrollableSettings.enabled;\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n } else {\n this.toggleScrollButtons(false);\n }\n setTimeout(() => {\n this.scrollToSelectedTab();\n });\n });\n this.initDomEvents();\n this.tabsChangesSub = this.tabs.changes.subscribe(() => {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.toggleScrollButtons(this.scrollService.tabsOverflow);\n this.scrollService.toggleScrollButtonsState();\n });\n });\n }\n ngOnChanges(changes) {\n if (!isDocumentAvailable()) {\n return;\n }\n const positionChange = changes['tabPosition'];\n if (positionChange) {\n const tabsAtBottomChanged = positionChange.previousValue === 'bottom' || positionChange.currentValue === 'bottom';\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (tabsAtBottomChanged) {\n if (this.subscriptionsArePresent) {\n this.subscriptions.unsubscribe();\n this.subscriptions = new Subscription();\n this.subscriptionsArePresent = false;\n this.activeStateChangeSub = this.scrollService.scrollButtonActiveStateChange.subscribe(activeButtonSettings => {\n if (this.hasScrollButtons) {\n const action = activeButtonSettings.active ? 'remove' : 'add';\n this.renderer[`${action}Class`](this[`${activeButtonSettings.buttonType}ScrollButton`].host.nativeElement, 'k-disabled');\n }\n });\n }\n this.initDomEvents();\n }\n this.scrollService.restoreScrollPosition();\n });\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.tabsChangesSub) {\n this.tabsChangesSub.unsubscribe();\n }\n if (this.activeStateChangeSub) {\n this.activeStateChangeSub.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get tabsAlignmentStyles() {\n return {\n start: 'flex-start',\n end: 'flex-end',\n center: 'center',\n justify: 'space-between'\n }[this.tabAlignment];\n }\n /**\n * @hidden\n */\n get tabListWidth() {\n if (this.tabPosition === 'top' || this.tabPosition === 'bottom') {\n return '100%';\n }\n return null;\n }\n /**\n * @hidden\n */\n get tabListHeight() {\n if (this.tabPosition === 'left' || this.tabPosition === 'right') {\n return '100%';\n }\n return null;\n }\n /**\n * @hidden\n */\n get isScrollable() {\n return this._scrollableSettings.enabled;\n }\n /**\n * @hidden\n */\n get hasScrollButtons() {\n return tabStripHasScrollButtons(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get mouseScrollEnabled() {\n return mouseScrollEnabled(this._scrollableSettings);\n }\n /**\n * @hidden\n */\n get itemsWrapperClass() {\n return isTablistHorizontal(this.tabPosition) ? 'k-hstack' : 'k-vstack';\n }\n /**\n * Allows the user to select a tab programmatically.\n * @param {number} index - The index of the tab that will be selected.\n */\n selectTab(index) {\n const tab = getTabByIndex(this.tabs, index);\n if (!tab || tab.disabled) {\n return;\n }\n this.tabstripService.selectTab(tab, index);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n getTabId(idx) {\n return getId$1('k-tabstrip-tab', this.tabStripId, idx);\n }\n /**\n * @hidden\n */\n getTabPanelId(idx) {\n return getId$1('k-tabstrip-tabpanel', this.tabStripId, idx);\n }\n /**\n * @hidden\n */\n onTabClick(originalEvent, tabIndex) {\n if (isFocusable(originalEvent.target)) {\n return;\n }\n const targetElement = originalEvent.target;\n const isTargetCloseButton = hasClass(targetElement, 'k-remove-tab') || hasClass(targetElement.parentElement, 'k-remove-tab');\n if (isTargetCloseButton) {\n return;\n }\n const tab = getTabByIndex(this.tabs, tabIndex);\n this.tabstripService.onTabSelect(tab, tabIndex);\n this.scrollToSelectedTab();\n }\n /**\n * @hidden\n */\n onResize() {\n if (this.scrollService.tabsOverflow) {\n this.toggleScrollButtons(true);\n } else {\n this.toggleScrollButtons(false);\n }\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n /**\n * @hidden\n */\n scrollToSelectedTab() {\n if (this._scrollableSettings.enabled) {\n this.scrollService.scrollToSelectedTab();\n }\n }\n /**\n * @hidden\n */\n onScrollButtonClick(buttonType) {\n this.scrollService.scrollTabs(buttonType);\n }\n initDomEvents() {\n if (!this.wrapper || this.subscriptionsArePresent) {\n return;\n }\n const tablist = this.tablist.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'keydown', ev => {\n this.tabstripService.onKeyDown(ev);\n }));\n });\n this.subscriptions.add(this.renderer.listen(tablist, 'focusout', () => {\n resetTabFocus(this.tabs);\n }));\n if (this.isScrollable && this.mouseScrollEnabled) {\n this.attachWheelHandler(tablist);\n }\n this.subscriptionsArePresent = true;\n }\n toggleScrollButtons(tabsOverflow) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n const scrollButtonsSetting = this._scrollableSettings.scrollButtons;\n const scrollButtonsArePresent = this.prevScrollButton && this.nextScrollButton;\n const shouldShowButtons = scrollButtonsArePresent && tabsOverflow;\n const shouldHideButtons = scrollButtonsArePresent && !tabsOverflow && scrollButtonsSetting !== 'visible';\n const alwaysVisible = scrollButtonsSetting === 'visible';\n if (shouldHideButtons) {\n this.prevScrollButton.toggle(false);\n this.nextScrollButton.toggle(false);\n } else if (shouldShowButtons || alwaysVisible) {\n this.prevScrollButton.toggle(true);\n this.nextScrollButton.toggle(true);\n }\n if (scrollButtonsArePresent && alwaysVisible) {\n this.ngZone.runOutsideAngular(() => {\n this.scrollService.toggleScrollButtonsState();\n });\n }\n });\n }\n attachWheelHandler(tablist) {\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(this.renderer.listen(tablist, 'wheel', wheelEvent => {\n const scrollEvent = new TabScrollEvent({\n originalEvent: wheelEvent\n });\n this.tabScroll.emit(scrollEvent);\n const isTabStripScrollEventPrevented = scrollEvent.isDefaultPrevented();\n if (isTabStripScrollEventPrevented || !this.scrollService.tabsOverflow) {\n return;\n }\n this.scrollService.onMouseScroll(wheelEvent);\n }));\n });\n }\n }\n TabStripComponent.ɵfac = function TabStripComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabStripComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(TabStripService), i0.ɵɵdirectiveInject(ScrollService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n TabStripComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TabStripComponent,\n selectors: [[\"kendo-tabstrip\"]],\n contentQueries: function TabStripComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TabStripTabComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabs = _t);\n }\n },\n viewQuery: function TabStripComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c14, 5);\n i0.ɵɵviewQuery(_c15, 5);\n i0.ɵɵviewQuery(_c16, 5);\n i0.ɵɵviewQuery(_c17, 5, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tablist = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.prevScrollButton = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nextScrollButton = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabHeaderContainers = _t);\n }\n },\n hostVars: 15,\n hostBindings: function TabStripComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-tabstrip\", ctx.hostClasses)(\"k-pos-relative\", ctx.hostClasses)(\"k-tabstrip-top\", ctx.tabsAtTop)(\"k-tabstrip-right\", ctx.tabsAtRight)(\"k-tabstrip-bottom\", ctx.tabsAtBottom)(\"k-tabstrip-left\", ctx.tabsAtLeft)(\"k-tabstrip-scrollable\", ctx.tabStripScrollable);\n }\n },\n inputs: {\n height: \"height\",\n animate: \"animate\",\n tabAlignment: \"tabAlignment\",\n tabPosition: \"tabPosition\",\n keepTabContent: \"keepTabContent\",\n closable: \"closable\",\n scrollable: \"scrollable\",\n closeIcon: \"closeIcon\",\n closeIconClass: \"closeIconClass\",\n closeSVGIcon: \"closeSVGIcon\",\n showContentArea: \"showContentArea\"\n },\n outputs: {\n tabSelect: \"tabSelect\",\n tabClose: \"tabClose\",\n tabScroll: \"tabScroll\"\n },\n exportAs: [\"kendoTabStrip\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([TabStripService, ScrollService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.tabstrip'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 9,\n vars: 4,\n consts: () => {\n let i18n_0;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Close** button in the TabStrip tab.\n * @meaning kendo.tabstrip.closeTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_0 = goog.getMsg(\"Close\");\n i18n_0 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_0;\n } else {\n i18n_0 = $localize`:kendo.tabstrip.closeTitle|The title for the **Close** button in the TabStrip tab.:Close`;\n }\n let i18n_1;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Previous Tab** button when the Tabstrip is scrollable.\n * @meaning kendo.tabstrip.previousTabButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_1 = goog.getMsg(\"Previous Tab\");\n i18n_1 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_1;\n } else {\n i18n_1 = $localize`:kendo.tabstrip.previousTabButton|The title for the **Previous Tab** button when the Tabstrip is scrollable.:Previous Tab`;\n }\n let i18n_2;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the **Next Tab** button when the Tabstrip is scrollable.\n * @meaning kendo.tabstrip.nextTabButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_2 = goog.getMsg(\"Next Tab\");\n i18n_2 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_2;\n } else {\n i18n_2 = $localize`:kendo.tabstrip.nextTabButton|The title for the **Next Tab** button when the Tabstrip is scrollable.:Next Tab`;\n }\n return [[\"heading\", \"\"], [\"content\", \"\"], [\"tablist\", \"\"], [\"prevScrollButton\", \"\"], [\"tabHeaderContainer\", \"\"], [\"nextScrollButton\", \"\"], [\"kendoTabStripLocalizedMessages\", \"\", \"closeTitle\", i18n_0, \"previousTabButton\", i18n_1, \"nextTabButton\", i18n_2], [4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [\"kendoWatermarkOverlay\", \"\", 4, \"ngIf\"], [4, \"ngTemplateOutlet\"], [1, \"k-tabstrip-items-wrapper\", 3, \"ngClass\"], [\"role\", \"button\", \"kendoTabStripScrollableButton\", \"\", \"class\", \"k-icon-button k-button k-button-md k-rounded-md k-button-flat k-button-flat-base\", 3, \"scrollable\", \"tabPosition\", \"prev\", \"title\", \"tabScroll\", \"onClick\", 4, \"ngIf\"], [\"role\", \"tablist\", 1, \"k-reset\", \"k-tabstrip-items\"], [4, \"ngFor\", \"ngForOf\"], [\"role\", \"button\", \"kendoTabStripScrollableButton\", \"\", 1, \"k-icon-button\", \"k-button\", \"k-button-md\", \"k-rounded-md\", \"k-button-flat\", \"k-button-flat-base\", 3, \"tabScroll\", \"onClick\", \"scrollable\", \"tabPosition\", \"prev\", \"title\"], [\"kendoTabStripTab\", \"\", \"role\", \"tab\", 3, \"tabClose\", \"click\", \"ngClass\", \"ngStyle\", \"tab\", \"index\", \"tabStripClosable\", \"tabStripCloseIcon\", \"customTabstripCloseIcon\", \"closeSVGIcon\", \"id\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"tabpanel\", 3, \"ngClass\", \"tabIndex\", \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"ngClass\", \"tabIndex\", \"id\"], [3, \"ngTemplateOutlet\"], [3, \"resize\"], [\"kendoWatermarkOverlay\", \"\"]];\n },\n template: function TabStripComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 6);\n i0.ɵɵtemplate(1, TabStripComponent_ng_container_1_Template, 3, 2, \"ng-container\", 7)(2, TabStripComponent_ng_container_2_Template, 3, 2, \"ng-container\", 7)(3, TabStripComponent_ng_template_3_Template, 6, 11, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(5, TabStripComponent_ng_template_5_Template, 1, 1, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(7, TabStripComponent_kendo_resize_sensor_7_Template, 1, 0, \"kendo-resize-sensor\", 8)(8, TabStripComponent_div_8_Template, 1, 0, \"div\", 9);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.tabsAtBottom);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.tabsAtBottom);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"ngIf\", ctx.isScrollable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showLicenseWatermark);\n }\n },\n dependencies: [LocalizedTabStripMessagesDirective, NgIf, NgTemplateOutlet, NgClass, TabStripScrollableButtonComponent, NgFor, TabComponent, NgStyle, ResizeSensorComponent, WatermarkOverlayComponent],\n encapsulation: 2,\n data: {\n animation: [trigger('state', [state('active', style({\n opacity: 1\n })), transition('* => active', [style({\n opacity: 0\n }), animate('400ms ease-in')])])]\n }\n });\n return TabStripComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nlet TabStripCustomMessagesComponent = /*#__PURE__*/(() => {\n class TabStripCustomMessagesComponent extends TabStripMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n TabStripCustomMessagesComponent.ɵfac = function TabStripCustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabStripCustomMessagesComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n TabStripCustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TabStripCustomMessagesComponent,\n selectors: [[\"kendo-tabstrip-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: TabStripMessages,\n useExisting: forwardRef(() => TabStripCustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function TabStripCustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return TabStripCustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a template that defines the content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerTemplate` directive inside the `` tag.\n * Using this template directive will override all other templates,\n * for example, `kendoDrawerHeaderTemplate` and `kendoDrawerItemTemplate`.\n */\nlet DrawerTemplateDirective = /*#__PURE__*/(() => {\n class DrawerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n DrawerTemplateDirective.ɵfac = function DrawerTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n DrawerTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DrawerTemplateDirective,\n selectors: [[\"\", \"kendoDrawerTemplate\", \"\"]],\n standalone: true\n });\n return DrawerTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a template that defines the item content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerItemTemplate` directive inside the `` tag.\n */\nlet DrawerItemTemplateDirective = /*#__PURE__*/(() => {\n class DrawerItemTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n DrawerItemTemplateDirective.ɵfac = function DrawerItemTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerItemTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n DrawerItemTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DrawerItemTemplateDirective,\n selectors: [[\"\", \"kendoDrawerItemTemplate\", \"\"]],\n standalone: true\n });\n return DrawerItemTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a template that defines the header content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerHeaderTemplate` directive inside the `` tag.\n */\nlet DrawerHeaderTemplateDirective = /*#__PURE__*/(() => {\n class DrawerHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n DrawerHeaderTemplateDirective.ɵfac = function DrawerHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n DrawerHeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DrawerHeaderTemplateDirective,\n selectors: [[\"\", \"kendoDrawerHeaderTemplate\", \"\"]],\n standalone: true\n });\n return DrawerHeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a template that defines the footer content of the Drawer.\n * To define the template, nest an `` tag\n * with the `kendoDrawerFooterTemplate` directive inside the `` tag.\n */\nlet DrawerFooterTemplateDirective = /*#__PURE__*/(() => {\n class DrawerFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n DrawerFooterTemplateDirective.ɵfac = function DrawerFooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerFooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n DrawerFooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DrawerFooterTemplateDirective,\n selectors: [[\"\", \"kendoDrawerFooterTemplate\", \"\"]],\n standalone: true\n });\n return DrawerFooterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst defaultIsItemExpanded = _item => false;\n/**\n * @hidden\n */\nlet DrawerService = /*#__PURE__*/(() => {\n class DrawerService {\n constructor() {\n this.selectedIndices = [];\n this.focusIndex = 0;\n this.originalItems = [];\n this.idxCounter = 0;\n this.isItemExpanded = defaultIsItemExpanded;\n }\n init() {\n this.resetViewData();\n this.originalItems = this.owner.items || [];\n const rootItems = this.originalItems.filter(item => !isPresent(item.parentId));\n this.populateViewData(rootItems);\n }\n get view() {\n return Array.from(this.viewData);\n }\n changeFocusedItem(items, keyName, renderer) {\n const currentItem = items.get(this.focusIndex);\n let nextItem;\n if (keyName === 'arrowUp') {\n if (this.focusIndex === 0) {\n nextItem = items.get(items.length - 1);\n this.focusIndex = items.length - 1;\n } else {\n nextItem = items.get(this.focusIndex - 1);\n this.focusIndex = this.focusIndex - 1;\n }\n } else if (keyName === 'arrowDown') {\n if (this.focusIndex === items.length - 1) {\n nextItem = items.get(0);\n this.focusIndex = 0;\n } else {\n nextItem = items.get(this.focusIndex + 1);\n this.focusIndex = this.focusIndex + 1;\n }\n }\n renderer.setAttribute(currentItem.nativeElement, 'tabindex', '-1');\n renderer.setAttribute(nextItem.nativeElement, 'tabindex', '0');\n nextItem.nativeElement.focus();\n }\n populateViewData(items, level = 0) {\n items.forEach(item => {\n this.setSelection(item);\n const children = this.loadChildren(item);\n const isExpanded = this.isItemExpanded(item);\n this.viewData.add({\n item: item,\n index: this.idxCounter++,\n level: level,\n hasChildren: children.length > 0,\n isExpanded: isExpanded\n });\n if (children.length > 0 && isExpanded) {\n this.populateViewData(children, level + 1);\n }\n });\n }\n resetViewData() {\n this.idxCounter = 0;\n this.viewData = new Set();\n }\n loadChildren(item) {\n return this.originalItems.filter(i => {\n return isPresent(i.parentId) && i.parentId === item.id;\n });\n }\n onSelect(selectedIdx) {\n this.selectedIndices = [selectedIdx];\n const drawer = this.owner;\n if (drawer.autoCollapse && !drawer.minimized) {\n drawer.toggle(false);\n }\n }\n setSelection(item) {\n if (this.selectedIndices.length === 0 && item.selected) {\n this.selectedIndices.push(this.idxCounter);\n }\n }\n resetSelection() {\n this.selectedIndices = [];\n }\n }\n DrawerService.ɵfac = function DrawerService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerService)();\n };\n DrawerService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DrawerService,\n factory: DrawerService.ɵfac\n });\n return DrawerService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nfunction miniExpandPush(duration, width, miniWidth) {\n return [style({\n overflow: 'hidden',\n flexBasis: `${miniWidth}px`\n }), animate(`${duration}ms ease-in`, style({\n flexBasis: `${width}px`\n }))];\n}\n/**\n * @hidden\n */\nfunction miniCollapsePush(duration, width, miniWidth) {\n return [style({\n overflow: 'hidden',\n flexBasis: `${width}px`\n }), animate(`${duration}ms ease-in`, style({\n flexBasis: `${miniWidth}px`\n }))];\n}\n/**\n * @hidden\n *\n */\nfunction miniExpandOverlay(duration, width, miniWidth) {\n return [style({\n width: `${miniWidth}px`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n width: `${width}px`\n }))];\n}\n/**\n * @hidden\n */\nfunction expandPush(duration, width) {\n return [style({\n overflow: 'hidden',\n flexBasis: '0px'\n }), animate(`${duration}ms ease-in`, style({\n flexBasis: `${width}px`\n }))];\n}\n/**\n * @hidden\n */\nfunction collapsePush(duration, width) {\n return [style({\n flexBasis: `${width}px`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n flexBasis: `0px`\n }))];\n}\n/**\n * @hidden\n */\nfunction expandRTLOverlay(duration) {\n return [style({\n transform: `translateX(100%)`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n transform: `translateX(0)`\n }))];\n}\n/**\n * @hidden\n */\nfunction expandOverlay(duration, position) {\n const translateDir = position !== 'end' ? `-100%` : `100%`;\n return [style({\n transform: `translateX(${translateDir})`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n transform: `translateX(0)`\n }))];\n}\n/**\n * @hidden\n */\nfunction miniCollapseOverlay(duration, width, miniWidth) {\n return [style({\n width: `${width}px`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n width: `${miniWidth}px`\n }))];\n}\n/**\n * @hidden\n */\nfunction collapseOverlay(duration, position) {\n const translateDir = position !== 'end' ? '-100%' : '100%';\n return [style({\n transform: `translateX(0)`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n transform: `translateX(${translateDir})`\n }))];\n}\n/**\n * @hidden\n */\nfunction collapseRTLOverlay(duration) {\n return [style({\n transform: `translateX(0)`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n transform: `translateX(100%)`\n }))];\n}\n/**\n * @hidden\n */\nfunction expandAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniExpandPush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return expandPush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? expandRTLOverlay(duration) : expandOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniExpandOverlay(duration, width, miniWidth);\n }\n}\n/**\n * @hidden\n */\nfunction collapseAnimation(settings) {\n const duration = settings.animation.duration;\n const width = settings.width;\n const miniWidth = settings.miniWidth;\n const mode = settings.mode;\n const mini = settings.mini;\n const rtl = settings.rtl;\n const position = settings.position;\n if (mini && mode === 'push') {\n return miniCollapsePush(duration, width, miniWidth);\n }\n if (!mini && mode === 'push') {\n return collapsePush(duration, width);\n }\n if (!mini && mode === 'overlay') {\n return rtl ? collapseRTLOverlay(duration) : collapseOverlay(duration, position);\n }\n if (mini && mode === 'overlay') {\n return miniCollapseOverlay(duration, width, miniWidth);\n }\n}\n\n/**\n * @hidden\n */\nconst DRAWER_ITEM_INDEX = 'data-kendo-drawer-index';\n\n/**\n * @hidden\n */\nconst DRAWER_LINK_SELECTOR = '.k-drawer-link';\n/**\n * @hidden\n */\nconst ACTIVE_NESTED_LINK_SELECTOR = ':focus:not(.k-disabled) .k-drawer-link';\n/**\n * @hidden\n */\nconst nestedLink = (element, selector) => element.querySelector(selector);\n\n/**\n * @hidden\n */\nclass DrawerListSelectEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @hidden\n */\nlet DrawerItemComponent = /*#__PURE__*/(() => {\n class DrawerItemComponent {\n constructor(drawerService, element, renderer) {\n this.drawerService = drawerService;\n this.element = element;\n this.renderer = renderer;\n this.arrowUpIcon = chevronUpIcon;\n this.arrowDownIcon = chevronDownIcon;\n }\n get disabledClass() {\n return this.item.disabled;\n }\n get selectedClass() {\n return this.drawerService.selectedIndices.indexOf(this.index) >= 0;\n }\n get label() {\n return this.item.text ? this.item.text : null;\n }\n ngAfterViewInit() {\n const elem = this.element.nativeElement;\n const link = nestedLink(elem, DRAWER_LINK_SELECTOR);\n if (link) {\n this.renderer.removeAttribute(link, 'tabindex');\n }\n }\n get iconClasses() {\n if (this.item.icon) {\n const stripIcon = this.item.icon.replace('k-i-', '');\n return `${stripIcon}`;\n }\n }\n get innerCssClasses() {\n if (this.item.iconClass && this.item.icon) {\n return `${this.item.iconClass}`;\n }\n }\n get customIconClasses() {\n if (!this.item.icon && this.item.iconClass) {\n return this.item.iconClass;\n }\n }\n get item() {\n return this.viewItem.item;\n }\n }\n DrawerItemComponent.ɵfac = function DrawerItemComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerItemComponent)(i0.ɵɵdirectiveInject(DrawerService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n DrawerItemComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DrawerItemComponent,\n selectors: [[\"\", \"kendoDrawerItem\", \"\"]],\n hostVars: 7,\n hostBindings: function DrawerItemComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-disabled\", ctx.disabledClass)(\"aria-current\", ctx.selectedClass)(\"aria-label\", ctx.label);\n i0.ɵɵclassProp(\"k-disabled\", ctx.disabledClass)(\"k-selected\", ctx.selectedClass);\n }\n },\n inputs: {\n viewItem: \"viewItem\",\n index: \"index\",\n itemTemplate: \"itemTemplate\",\n mini: \"mini\",\n expanded: \"expanded\",\n disabled: \"disabled\",\n cssClass: \"cssClass\",\n cssStyle: \"cssStyle\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c18,\n decls: 3,\n vars: 2,\n consts: [[\"defaultTemplate\", \"\"], [4, \"ngIf\", \"ngIfElse\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [4, \"ngIf\"], [3, \"name\", \"customFontClass\", \"svgIcon\", \"innerCssClass\", 4, \"ngIf\"], [1, \"k-item-text\"], [\"class\", \"k-spacer\", 4, \"ngIf\"], [\"innerCssClass\", \"k-drawer-toggle\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [3, \"name\", \"customFontClass\", \"svgIcon\", \"innerCssClass\"], [1, \"k-spacer\"], [\"innerCssClass\", \"k-drawer-toggle\", 3, \"name\", \"svgIcon\"]],\n template: function DrawerItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerItemComponent_0_Template, 1, 7, null, 1)(1, DrawerItemComponent_ng_template_1_Template, 2, 2, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const defaultTemplate_r2 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"ngIf\", ctx.itemTemplate)(\"ngIfElse\", defaultTemplate_r2);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, IconWrapperComponent],\n encapsulation: 2\n });\n return DrawerItemComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DrawerListComponent = /*#__PURE__*/(() => {\n class DrawerListComponent {\n constructor(drawerService, renderer, ngZone, element) {\n this.drawerService = drawerService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.element = element;\n this.view = [];\n this.select = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n identifyItem(_index, viewItem) {\n return viewItem.item.id ?? viewItem.index;\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n this.subscriptions.add(this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this)));\n this.subscriptions.add(this.renderer.listen(nativeElement, 'keydown', e => {\n const isEnterOrSpace = e.keyCode === Keys.Enter || e.keyCode === Keys.Space;\n const isArrowUpOrDown = e.keyCode === Keys.ArrowUp || e.keyCode === Keys.ArrowDown;\n if (isEnterOrSpace) {\n this.onEnterOrSpaceKeyDown(e);\n } else if (isArrowUpOrDown) {\n if (e.target.classList.contains('k-drawer-item')) {\n e.preventDefault();\n const keyName = e.keyCode === Keys.ArrowUp ? 'arrowUp' : 'arrowDown';\n this.drawerService.changeFocusedItem(this.items, keyName, this.renderer);\n }\n }\n }));\n });\n }\n clickHandler(e) {\n const viewItemIdx = this.getDrawerItemIndex(e.target);\n const viewItem = this.view[viewItemIdx];\n const filterItems = this.view.filter(items => !items.item.separator);\n const selectedItemIndex = filterItems.findIndex(item => item.index === viewItemIdx);\n if (!viewItem) {\n return;\n }\n if (viewItem.item.disabled) {\n e.preventDefault();\n return;\n }\n const args = {\n index: viewItem.index,\n item: viewItem.item,\n originalEvent: e\n };\n this.ngZone.run(() => {\n const event = new DrawerListSelectEvent(args);\n this.select.emit(event);\n if (!event.isDefaultPrevented()) {\n this.drawerService.focusIndex = selectedItemIndex;\n this.drawerService.onSelect(viewItemIdx);\n this.drawerService.init();\n this.view = this.drawerService.view;\n }\n });\n }\n onEnterOrSpaceKeyDown(e) {\n this.clickHandler(e);\n const link = nestedLink(this.element.nativeElement, ACTIVE_NESTED_LINK_SELECTOR);\n if (link) {\n link.click();\n }\n return false;\n }\n getDrawerItemIndex(target) {\n const item = closestItem(target, DRAWER_ITEM_INDEX, this.element.nativeElement);\n if (item) {\n return itemIndex(item, DRAWER_ITEM_INDEX);\n }\n }\n }\n DrawerListComponent.ɵfac = function DrawerListComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerListComponent)(i0.ɵɵdirectiveInject(DrawerService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n DrawerListComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DrawerListComponent,\n selectors: [[\"\", \"kendoDrawerList\", \"\"]],\n viewQuery: function DrawerListComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(DrawerItemComponent, 5, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n inputs: {\n itemTemplate: \"itemTemplate\",\n mini: \"mini\",\n expanded: \"expanded\",\n view: \"view\"\n },\n outputs: {\n select: \"select\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c20,\n decls: 1,\n vars: 2,\n consts: [[4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"kendoDrawerItem\", \"\", \"role\", \"menuitem\", 3, \"class\", \"viewItem\", \"index\", \"mini\", \"expanded\", \"itemTemplate\", \"ngClass\", \"ngStyle\", \"tabindex\", 4, \"ngIf\"], [\"role\", \"separator\", \"class\", \"k-drawer-item k-drawer-separator\", 3, \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"kendoDrawerItem\", \"\", \"role\", \"menuitem\", 3, \"viewItem\", \"index\", \"mini\", \"expanded\", \"itemTemplate\", \"ngClass\", \"ngStyle\", \"tabindex\"], [\"role\", \"separator\", 1, \"k-drawer-item\", \"k-drawer-separator\", 3, \"ngClass\", \"ngStyle\"]],\n template: function DrawerListComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerListComponent_ng_container_0_Template, 3, 2, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.view)(\"ngForTrackBy\", ctx.identifyItem);\n }\n },\n dependencies: [NgFor, NgIf, DrawerItemComponent, NgClass, NgStyle],\n encapsulation: 2\n });\n return DrawerListComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst DEFAULT_ANIMATION = {\n type: 'slide',\n duration: 200\n};\n/**\n * Represents the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * \n * \n * \n * \n * \n * `\n * })\n * class AppComponent {\n * public expanded = false;\n *\n * public items: any[] = [\n * { text: 'Inbox', icon: 'k-i-inbox' },\n * { text: 'Notifications', icon: 'k-i-bell' },\n * { text: 'Date', icon: 'k-i-calendar' }\n * ];\n * }\n * ```\n */\nlet DrawerComponent = /*#__PURE__*/(() => {\n class DrawerComponent {\n constructor(element, builder, localizationService, drawerService) {\n this.element = element;\n this.builder = builder;\n this.localizationService = localizationService;\n this.drawerService = drawerService;\n this.hostClasses = true;\n /**\n * Specifies the mode in which the Drawer will be displayed.\n *\n * The possible values are:\n * * (Default) `overlay`\n * * `push`\n */\n this.mode = 'overlay';\n /**\n * Specifies the position of the Drawer\n * ([see example]({% slug positioning_drawer %})).\n *\n * The possible values are:\n * * (Default) `start`\n * * `end`\n */\n this.position = 'start';\n /**\n * Enables the mini (compact) view of the Drawer which is displayed when the component is collapsed\n * ([see example]({% slug expandmodespositions_drawer %}#toc-mini-view)).\n */\n this.mini = false;\n /**\n * Specifies the state of the Drawer.\n */\n this.expanded = false;\n /**\n * Defines the width of the Drawer when it is expanded.\n * Defaults to `240`.\n */\n this.width = 240;\n /**\n * Defines the width of the Drawer when the mini view is enabled\n * and the component is collapsed. Defaults to `60`.\n */\n this.miniWidth = 50;\n /**\n * Specifies if the Drawer will be automatically collapsed when an item\n * or the overlay is clicked. Defaults to `true`.\n */\n this.autoCollapse = true;\n /**\n * The collection of items that will be rendered in the Drawer.\n */\n this.items = [];\n /**\n * Specifies the animation settings of the Drawer.\n * ([see example]({% slug interaction_drawer %}#toc-toggling-between-states)).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * `false`\n * * `DrawerAnimation`\n * * (Default) `type?: 'slide'`\n * * `duration`—Accepts a number in milliseconds. Defaults to `300ms`.\n */\n this.animation = DEFAULT_ANIMATION;\n /**\n * Fires when the Drawer is expanded and its animation is complete.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the Drawer is collapsed and its animation is complete.\n */\n this.collapse = new EventEmitter();\n /**\n * Fires when a Drawer item is selected. This event is preventable.\n */\n this.select = new EventEmitter();\n /**\n * Fires when the `expanded` property of the component was updated.\n * Used to provide a two-way binding for the `expanded` property.\n */\n this.expandedChange = new EventEmitter();\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this.animationEnd = new EventEmitter();\n this.rtl = false;\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({\n rtl\n }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n this.drawerService.owner = this;\n }\n get startPositionClass() {\n return this.position === 'start';\n }\n get endPositionClass() {\n return this.position === 'end';\n }\n get overlayTransofrmStyles() {\n if (this.mode === 'push') {\n return;\n }\n if (this.expanded || this.minimized) {\n return `translateX(0px)`;\n }\n return `translateX(-100%)`;\n }\n get flexStyles() {\n if (this.mode === 'overlay') {\n return;\n }\n if (!this.expanded && !this.minimized) {\n return 0;\n }\n return this.drawerWidth;\n }\n /**\n * Defines a callback function which determines if an item should be expanded.\n */\n set isItemExpanded(fn) {\n if (isDevMode && isPresent(fn) && typeof fn !== 'function') {\n throw new Error(`isItemExpanded must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this.drawerService.isItemExpanded = fn;\n }\n get isItemExpanded() {\n return this.drawerService.isItemExpanded;\n }\n ngOnChanges(changes) {\n if (changes && changes['items']) {\n this.drawerService.resetSelection();\n this.drawerService.init();\n this.viewItems = this.drawerService.view;\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get minimized() {\n return this.mini && !this.expanded;\n }\n /**\n * @hidden\n */\n get drawerWidth() {\n return this.minimized ? this.miniWidth : this.width;\n }\n /**\n * Toggles the visibility of the Drawer.\n *\n * @param expanded? - Boolean. Specifies if the Drawer will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n if (current === true) {\n this.setExpanded(true);\n } else if (current === false && !this.animation) {\n this.setExpanded(false);\n }\n if (this.animation) {\n this.animationEnd.pipe(take(1)).subscribe(() => {\n this.onAnimationEnd(current);\n });\n this.animate(current);\n } else {\n this[current ? 'expand' : 'collapse'].emit();\n }\n }\n /**\n * @hidden\n */\n onSelect(e) {\n this.select.emit(Object.assign(e, {\n sender: this\n }));\n }\n onAnimationEnd(currentExpanded) {\n if (currentExpanded) {\n this.expand.emit();\n } else {\n this.setExpanded(false);\n this.collapse.emit();\n }\n }\n setExpanded(value) {\n this.expanded = value;\n this.expandedChange.emit(value);\n }\n animate(expanded) {\n const settings = {\n mode: this.mode,\n mini: this.mini,\n miniWidth: this.miniWidth,\n width: this.width,\n rtl: this.rtl,\n position: this.position,\n animation: typeof this.animation !== 'boolean' ? this.animation : DEFAULT_ANIMATION\n };\n const animation = expanded ? expandAnimation(settings) : collapseAnimation(settings);\n const player = this.createPlayer(animation, this.element.nativeElement);\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n }\n DrawerComponent.ɵfac = function DrawerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1$2.AnimationBuilder), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(DrawerService));\n };\n DrawerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DrawerComponent,\n selectors: [[\"kendo-drawer\"]],\n contentQueries: function DrawerComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DrawerTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DrawerFooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DrawerHeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DrawerItemTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.drawerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);\n }\n },\n hostVars: 11,\n hostBindings: function DrawerComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.direction);\n i0.ɵɵstyleProp(\"transform\", ctx.overlayTransofrmStyles)(\"flex-basis\", ctx.flexStyles, \"px\");\n i0.ɵɵclassProp(\"k-drawer\", ctx.hostClasses)(\"k-drawer-start\", ctx.startPositionClass)(\"k-drawer-end\", ctx.endPositionClass);\n }\n },\n inputs: {\n mode: \"mode\",\n position: \"position\",\n mini: \"mini\",\n expanded: \"expanded\",\n width: \"width\",\n miniWidth: \"miniWidth\",\n autoCollapse: \"autoCollapse\",\n items: \"items\",\n isItemExpanded: \"isItemExpanded\",\n animation: \"animation\"\n },\n outputs: {\n expand: \"expand\",\n collapse: \"collapse\",\n select: \"select\",\n expandedChange: \"expandedChange\"\n },\n exportAs: [\"kendoDrawer\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, DrawerService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 2,\n consts: [[\"class\", \"k-drawer-wrapper\", 3, \"width\", 4, \"ngIf\"], [\"kendoWatermarkOverlay\", \"\", 4, \"ngIf\"], [1, \"k-drawer-wrapper\"], [4, \"ngIf\"], [\"kendoDrawerList\", \"\", \"role\", \"menubar\", \"orientation\", \"vertical\", 1, \"k-drawer-items\", 3, \"select\", \"mini\", \"expanded\", \"view\", \"itemTemplate\"], [3, \"ngTemplateOutlet\"], [\"kendoWatermarkOverlay\", \"\"]],\n template: function DrawerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DrawerComponent_div_0_Template, 3, 4, \"div\", 0)(1, DrawerComponent_div_1_Template, 1, 0, \"div\", 1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.expanded || ctx.mini);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showLicenseWatermark);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, DrawerListComponent, WatermarkOverlayComponent],\n encapsulation: 2\n });\n return DrawerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Serves as a container for the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}) and its content.\n */\nlet DrawerContainerComponent = /*#__PURE__*/(() => {\n class DrawerContainerComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.rtl = false;\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({\n rtl\n }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get hostClass() {\n return true;\n }\n get overlayClass() {\n return this.drawer.mode === 'overlay';\n }\n get miniClass() {\n return this.drawer.mini && !this.drawer.expanded;\n }\n get pushClass() {\n return this.drawer.mode === 'push';\n }\n get isExpandedClass() {\n return this.drawer.expanded;\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get overlay() {\n return isPresent(this.drawer) && this.drawer.expanded && this.drawer.mode === 'overlay';\n }\n /**\n * @hidden\n */\n closeDrawer() {\n if (this.overlay && this.drawer.autoCollapse) {\n this.drawer.toggle(false);\n }\n }\n }\n DrawerContainerComponent.ɵfac = function DrawerContainerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerContainerComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n DrawerContainerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DrawerContainerComponent,\n selectors: [[\"kendo-drawer-container\"]],\n contentQueries: function DrawerContainerComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DrawerComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.drawer = _t.first);\n }\n },\n hostVars: 11,\n hostBindings: function DrawerContainerComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.direction);\n i0.ɵɵclassProp(\"k-drawer-container\", ctx.hostClass)(\"k-drawer-overlay\", ctx.overlayClass)(\"k-drawer-mini\", ctx.miniClass)(\"k-drawer-push\", ctx.pushClass)(\"k-drawer-expanded\", ctx.isExpandedClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.drawer.container'\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 2,\n vars: 1,\n consts: [[\"class\", \"k-overlay\", 3, \"click\", 4, \"ngIf\"], [1, \"k-overlay\", 3, \"click\"]],\n template: function DrawerContainerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, DrawerContainerComponent_div_0_Template, 1, 0, \"div\", 0);\n i0.ɵɵprojection(1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.overlay);\n }\n },\n dependencies: [NgIf],\n encapsulation: 2\n });\n return DrawerContainerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the content of the [Kendo UI Drawer component for Angular]({% slug overview_drawer %}).\n */\nlet DrawerContentComponent = /*#__PURE__*/(() => {\n class DrawerContentComponent {\n constructor() {\n this.hostClasses = true;\n }\n }\n DrawerContentComponent.ɵfac = function DrawerContentComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerContentComponent)();\n };\n DrawerContentComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DrawerContentComponent,\n selectors: [[\"kendo-drawer-content\"]],\n hostVars: 2,\n hostBindings: function DrawerContentComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-drawer-content\", ctx.hostClasses);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function DrawerContentComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return DrawerContentComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the `select` event of the Drawer.\n */\nclass DrawerSelectEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Represents a template that defines the content of the whole Step.\n * To define the template, nest an `` tag\n * with the `kendoStepperStepTemplate` directive inside the `` tag.\n */\nlet StepperStepTemplateDirective = /*#__PURE__*/(() => {\n class StepperStepTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n StepperStepTemplateDirective.ɵfac = function StepperStepTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperStepTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n StepperStepTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: StepperStepTemplateDirective,\n selectors: [[\"\", \"kendoStepperStepTemplate\", \"\"]],\n standalone: true\n });\n return StepperStepTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a template that defines the content of the Step label.\n * To define the template, nest an `` tag\n * with the `kendoStepperLabelTemplate` directive inside the `` tag.\n */\nlet StepperLabelTemplateDirective = /*#__PURE__*/(() => {\n class StepperLabelTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n StepperLabelTemplateDirective.ɵfac = function StepperLabelTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperLabelTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n StepperLabelTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: StepperLabelTemplateDirective,\n selectors: [[\"\", \"kendoStepperLabelTemplate\", \"\"]],\n standalone: true\n });\n return StepperLabelTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a template that defines the content of the Step indicator.\n * To define the template, nest an `` tag\n * with the `kendoStepperIndicatorTemplate` directive inside the `` tag.\n */\nlet StepperIndicatorTemplateDirective = /*#__PURE__*/(() => {\n class StepperIndicatorTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n StepperIndicatorTemplateDirective.ɵfac = function StepperIndicatorTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperIndicatorTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n StepperIndicatorTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: StepperIndicatorTemplateDirective,\n selectors: [[\"\", \"kendoStepperIndicatorTemplate\", \"\"]],\n standalone: true\n });\n return StepperIndicatorTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_CURRENT_STEP = 0;\nconst handlers = {};\nhandlers[Keys.ArrowLeft] = 'left';\nhandlers[Keys.ArrowRight] = 'right';\nhandlers[Keys.ArrowUp] = 'up';\nhandlers[Keys.ArrowDown] = 'down';\nhandlers[Keys.Home] = 'home';\nhandlers[Keys.End] = 'end';\nhandlers[Keys.Enter] = 'enter';\nhandlers[Keys.Space] = 'enter';\nconst handlersRTL = Object.assign({}, handlers);\nhandlersRTL[Keys.ArrowLeft] = 'right';\nhandlersRTL[Keys.ArrowRight] = 'left';\n// error NG3003: One or more import cycles would need to be created to compile this component,\n// which is not supported by the current compiler configuration\n/**\n * @hidden\n */\nlet StepperActivateEvent$1 = class StepperActivateEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n};\n/**\n * @hidden\n */\nlet StepperService = /*#__PURE__*/(() => {\n class StepperService {\n constructor(localization, ngZone, changeDetector) {\n this.localization = localization;\n this.ngZone = ngZone;\n this.changeDetector = changeDetector;\n this.currentStep = DEFAULT_CURRENT_STEP;\n this.triggerValidation = new EventEmitter();\n this.focusedStepChange = new EventEmitter();\n }\n get handlers() {\n return this.localization.rtl ? handlersRTL : handlers;\n }\n emit(event, eventArgs) {\n const stepper = this.owner;\n if (hasObservers(stepper[event])) {\n stepper[event].emit(eventArgs);\n }\n return eventArgs.isDefaultPrevented();\n }\n onActivate(currentIdx, originalEvent) {\n const eventArgs = new StepperActivateEvent$1({\n index: currentIdx,\n step: this.owner.steps[currentIdx],\n originalEvent: originalEvent,\n sender: this.owner\n });\n this.ngZone.run(() => {\n if (!this.emit('activate', eventArgs)) {\n this.currentStep = currentIdx;\n this.owner['currentStepChange'].emit(currentIdx);\n this.changeDetector.detectChanges();\n }\n });\n }\n validateSteps() {\n this.triggerValidation.emit();\n }\n keydown(e) {\n const current = this.focusedStep || this.currentStep;\n const handler = this.handlers[e.keyCode];\n if (!isPresent(current)) {\n return;\n }\n if (handler) {\n e.preventDefault();\n this[handler](e);\n }\n }\n left() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n right() {\n if (!this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n up() {\n if (this.isHorizontal) {\n return;\n }\n this.focusPrevStep();\n }\n down() {\n if (this.isHorizontal) {\n return;\n }\n this.focusNextStep();\n }\n home() {\n this.focusedStep = 0;\n this.focusedStepChange.emit();\n }\n end() {\n this.focusedStep = this.owner.steps.length - 1;\n this.focusedStepChange.emit();\n }\n enter(event) {\n if (this.focusedStep === this.currentStep) {\n return;\n }\n if (this.isStepDisabled(this.focusedStep)) {\n return;\n }\n if (this.owner.linear && this.isPrevOrNextStep(this.focusedStep) === false) {\n return;\n }\n this.onActivate(this.focusedStep, event);\n }\n focus(focusedIdx) {\n this.focusedStep = focusedIdx;\n }\n focusNextStep() {\n if (this.focusedStep < this.owner.steps.length) {\n this.focusedStep += 1;\n this.focusedStepChange.emit();\n }\n }\n focusPrevStep() {\n if (this.focusedStep > 0) {\n this.focusedStep -= 1;\n this.focusedStepChange.emit();\n }\n }\n isStepDisabled(index) {\n return this.owner.steps[index].disabled;\n }\n isPrevOrNextStep(index) {\n return index === this.currentStep + 1 || index === this.currentStep - 1;\n }\n get isHorizontal() {\n return this.owner.orientation === 'horizontal';\n }\n }\n StepperService.ɵfac = function StepperService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperService)(i0.ɵɵinject(i1.LocalizationService), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.ChangeDetectorRef));\n };\n StepperService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StepperService,\n factory: StepperService.ɵfac\n });\n return StepperService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst STEPPER_STEP_INDEX = 'data-kendo-stepper-index';\n\n/**\n * @hidden\n */\nlet StepperStepComponent = /*#__PURE__*/(() => {\n class StepperStepComponent {\n constructor(service, localization, ngZone) {\n this.service = service;\n this.localization = localization;\n this.ngZone = ngZone;\n this.isStepValid = undefined;\n this.shouldCheckValidity = undefined;\n this.checkCircleIcon = checkCircleIcon;\n this.exclamationCircleIcon = exclamationCircleIcon;\n validatePackage(packageMetadata);\n this.subs = this.service.focusedStepChange.subscribe(() => {\n this.onFocusedStepChange();\n });\n this.subs.add(this.service.triggerValidation.subscribe(() => {\n this.handleValidityChecks();\n }));\n }\n get errorStepClass() {\n if (isPresent(this.isStepValid)) {\n return !this.isStepValid;\n }\n return false;\n }\n get successStepClass() {\n if (isPresent(this.isStepValid)) {\n return this.isStepValid;\n }\n return false;\n }\n ngOnInit() {\n this.handleValidityChecks();\n }\n ngOnChanges(changes) {\n if (changes['current'] && !changes['current'].firstChange) {\n this.handleValidityChecks();\n }\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n onFocusedStepChange() {\n this.ngZone.runOutsideAngular(() => {\n if (this.index === this.service.focusedStep) {\n this.stepLink.nativeElement.focus();\n }\n });\n }\n onFocus() {\n this.service.focus(this.index);\n }\n get tabIndexAttr() {\n const active = this.service.focusedStep || this.service.currentStep;\n return this.index === active ? 0 : -1;\n }\n get indicatorIconClass() {\n if (this.step.icon && !this.step.iconClass) {\n return `${this.step.icon}`;\n }\n if (!this.step.icon && !this.step.iconClass && this.shouldCheckValidity) {\n return this.validationIconClasses;\n }\n }\n get customIndicatorIconClass() {\n if (this.step.iconClass) {\n return `${this.step.iconClass}`;\n }\n const renderCustomValidationIcon = !this.step.icon && !this.step.iconClass && this.shouldCheckValidity;\n if (renderCustomValidationIcon) {\n return this.customValidationIconClasses;\n }\n }\n get SVGIndicatorIcon() {\n if (this.step.svgIcon) {\n return this.step.svgIcon;\n }\n if (!this.step.svgIcon && this.shouldCheckValidity) {\n return this.validationSVGIcon;\n }\n }\n get validationIconClasses() {\n if (this.isStepValid) {\n return !this.successIcon ? 'check-circle' : '';\n }\n return !this.errorIcon ? 'exclamation-circle' : '';\n }\n get customValidationIconClasses() {\n if (this.isStepValid) {\n return this.successIcon ? this.successIcon : '';\n }\n return this.errorIcon ? this.errorIcon : '';\n }\n get validationSVGIcon() {\n if (this.isStepValid) {\n return this.successSVGIcon ? this.successSVGIcon : this.checkCircleIcon;\n }\n return this.errorSVGIcon ? this.errorSVGIcon : this.exclamationCircleIcon;\n }\n get showIndicatorIcon() {\n if (this.shouldCheckValidity) {\n return true;\n }\n if (this.step.icon || this.step.iconClass || this.step.svgIcon) {\n return true;\n }\n return false;\n }\n get showLabelIcon() {\n if (this.shouldCheckValidity) {\n if (this.type === 'label') {\n return true;\n }\n if (this.step.icon || this.step.iconClass) {\n return true;\n }\n }\n return false;\n }\n get showLabelText() {\n return this.type === 'label' || this.type === 'full';\n }\n get indicatorText() {\n const text = this.step.text;\n return text ? text : this.index + 1;\n }\n updateStepValidity() {\n if (typeof this.step.isValid === 'boolean') {\n return this.step.isValid;\n }\n if (typeof this.step.isValid === 'function') {\n return this.step.isValid(this.index);\n }\n return undefined;\n }\n get showIndicator() {\n return this.type === 'indicator' || this.type === 'full';\n }\n get showLabel() {\n if (this.type === 'label' || this.type === 'full') {\n return true;\n }\n return this.step.optional;\n }\n get optionalText() {\n return this.localization.get('optional');\n }\n get transitionDuration() {\n return this.service.owner.animationDuration;\n }\n _shouldCheckValidity() {\n if (isPresent(this.step.validate)) {\n if (typeof this.step.validate === 'boolean') {\n return this.step.validate;\n }\n if (typeof this.step.validate === 'function') {\n return this.step.validate(this.index);\n }\n }\n return isPresent(this.step.isValid) && this.index < this.current;\n }\n handleValidityChecks() {\n this.isStepValid = undefined;\n this.shouldCheckValidity = this._shouldCheckValidity();\n if (this.shouldCheckValidity) {\n this.isStepValid = this.updateStepValidity();\n }\n }\n }\n StepperStepComponent.ɵfac = function StepperStepComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperStepComponent)(i0.ɵɵdirectiveInject(StepperService), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n StepperStepComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StepperStepComponent,\n selectors: [[\"\", \"kendoStepperStep\", \"\"]],\n viewQuery: function StepperStepComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c21, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.stepLink = _t.first);\n }\n },\n hostVars: 4,\n hostBindings: function StepperStepComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-step-error\", ctx.errorStepClass)(\"k-step-success\", ctx.successStepClass);\n }\n },\n inputs: {\n step: \"step\",\n index: \"index\",\n current: \"current\",\n type: \"type\",\n successIcon: \"successIcon\",\n successSVGIcon: \"successSVGIcon\",\n errorIcon: \"errorIcon\",\n errorSVGIcon: \"errorSVGIcon\",\n svgIcon: \"svgIcon\",\n indicatorTemplate: \"indicatorTemplate\",\n labelTemplate: \"labelTemplate\",\n stepTemplate: \"stepTemplate\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c22,\n decls: 4,\n vars: 6,\n consts: [[\"stepLink\", \"\"], [\"href\", \"#\", 1, \"k-step-link\", 3, \"focus\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"k-step-indicator\", \"aria-hidden\", \"true\", 3, \"transition-duration\", 4, \"ngIf\"], [\"class\", \"k-step-label\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", 1, \"k-step-indicator\"], [\"innerCssClass\", \"k-step-indicator-icon\", 3, \"name\", \"customFontClass\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-step-indicator-text\", 4, \"ngIf\"], [\"innerCssClass\", \"k-step-indicator-icon\", 3, \"name\", \"customFontClass\", \"svgIcon\"], [1, \"k-step-indicator-text\"], [1, \"k-step-label\"], [\"class\", \"k-step-text\", 4, \"ngIf\"], [\"aria-hidden\", \"true\", 3, \"name\", \"customFontClass\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-step-label-optional\", 4, \"ngIf\"], [1, \"k-step-text\"], [\"aria-hidden\", \"true\", 3, \"name\", \"customFontClass\", \"svgIcon\"], [1, \"k-step-label-optional\"]],\n template: function StepperStepComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"a\", 1, 0);\n i0.ɵɵlistener(\"focus\", function StepperStepComponent_Template_a_focus_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onFocus());\n });\n i0.ɵɵtemplate(2, StepperStepComponent_2_Template, 1, 5, null, 2)(3, StepperStepComponent_ng_container_3_Template, 3, 2, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"tabindex\", ctx.tabIndexAttr)(\"title\", ctx.step.label)(\"aria-disabled\", ctx.step.disabled)(\"aria-current\", ctx.index === ctx.current ? \"step\" : null);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.stepTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.stepTemplate);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, IconWrapperComponent],\n encapsulation: 2\n });\n return StepperStepComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet StepperListComponent = /*#__PURE__*/(() => {\n class StepperListComponent {\n constructor(renderer, ngZone, service, element) {\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.service = service;\n this.element = element;\n this.listKeydown = new EventEmitter();\n this.listClick = new EventEmitter();\n }\n ngOnInit() {\n this.initDomEvents();\n }\n ngOnDestroy() {\n if (this.domSubs) {\n this.domSubs();\n }\n }\n get maxStepWidth() {\n return this.maxStepDimension('width');\n }\n get maxStepHeight() {\n return this.maxStepDimension('height');\n }\n get focusedStep() {\n return this.service.focusedStep;\n }\n isPresent(arg) {\n return isPresent$1(arg);\n }\n maxStepDimension(dimension) {\n if (dimension === 'width' && this.orientation === 'vertical') {\n return null;\n }\n if (dimension === 'height' && this.orientation === 'horizontal') {\n return null;\n }\n return 100 / this.steps.length;\n }\n initDomEvents() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n const nativeElement = this.element.nativeElement;\n const clickSubscription = this.renderer.listen(nativeElement, 'click', this.clickHandler.bind(this));\n const keydownSubscription = this.renderer.listen(nativeElement, 'keydown', e => {\n if (hasClass(e.target, 'k-step-link')) {\n this.listKeydown.emit(e);\n }\n });\n this.domSubs = () => {\n clickSubscription();\n keydownSubscription();\n };\n });\n }\n clickHandler(e) {\n e.preventDefault();\n const stepIdx = this.getStepIndex(e.target);\n const step = this.steps[stepIdx];\n if (!step || step.disabled) {\n return;\n }\n const eventArgs = {\n stepIdx,\n currentStep: this.currentStep,\n linear: this.linear,\n originalEvent: e\n };\n this.listClick.emit(eventArgs);\n }\n getStepIndex(target) {\n const step = closestItem(target, STEPPER_STEP_INDEX, this.element.nativeElement);\n if (step) {\n return itemIndex(step, STEPPER_STEP_INDEX);\n }\n }\n }\n StepperListComponent.ɵfac = function StepperListComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperListComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(StepperService), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n StepperListComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StepperListComponent,\n selectors: [[\"\", \"kendoStepperList\", \"\"]],\n inputs: {\n linear: \"linear\",\n stepType: \"stepType\",\n orientation: \"orientation\",\n currentStep: \"currentStep\",\n steps: \"steps\",\n successIcon: \"successIcon\",\n successSVGIcon: \"successSVGIcon\",\n errorIcon: \"errorIcon\",\n errorSVGIcon: \"errorSVGIcon\",\n svgIcon: \"svgIcon\",\n indicatorTemplate: \"indicatorTemplate\",\n labelTemplate: \"labelTemplate\",\n stepTemplate: \"stepTemplate\"\n },\n outputs: {\n listKeydown: \"listKeydown\",\n listClick: \"listClick\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c24,\n decls: 1,\n vars: 1,\n consts: [[4, \"ngFor\", \"ngForOf\"], [\"kendoStepperStep\", \"\", 1, \"k-step\", 3, \"type\", \"step\", \"index\", \"current\", \"successIcon\", \"successSVGIcon\", \"errorIcon\", \"errorSVGIcon\", \"svgIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\", \"ngClass\", \"ngStyle\"]],\n template: function StepperListComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, StepperListComponent_ng_container_0_Template, 2, 33, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.steps);\n }\n },\n dependencies: [NgFor, StepperStepComponent, NgClass, NgStyle],\n encapsulation: 2\n });\n return StepperListComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet StepperMessages = /*#__PURE__*/(() => {\n class StepperMessages extends ComponentMessages {}\n StepperMessages.ɵfac = /* @__PURE__ */(() => {\n let ɵStepperMessages_BaseFactory;\n return function StepperMessages_Factory(__ngFactoryType__) {\n return (ɵStepperMessages_BaseFactory || (ɵStepperMessages_BaseFactory = i0.ɵɵgetInheritedFactory(StepperMessages)))(__ngFactoryType__ || StepperMessages);\n };\n })();\n StepperMessages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: StepperMessages,\n selectors: [[\"kendo-stepper-messages-base\"]],\n inputs: {\n optional: \"optional\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return StepperMessages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalizedStepperMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedStepperMessagesDirective extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedStepperMessagesDirective.ɵfac = function LocalizedStepperMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedStepperMessagesDirective)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n LocalizedStepperMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedStepperMessagesDirective,\n selectors: [[\"\", \"kendoStepperLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: StepperMessages,\n useExisting: forwardRef(() => LocalizedStepperMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedStepperMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_ANIMATION_DURATION = 400;\n/**\n * Represents the [Kendo UI Stepper component for Angular]({% slug overview_stepper %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * \n * `\n * })\n * class AppComponent {\n * public steps: Array = [\n * { label: 'Step One' }, { label: 'Step Two' }, { label: 'Step Three' }\n * ];\n * }\n * ```\n */\nlet StepperComponent = /*#__PURE__*/(() => {\n class StepperComponent {\n constructor(renderer, elem, localization, stepperService) {\n this.renderer = renderer;\n this.elem = elem;\n this.localization = localization;\n this.stepperService = stepperService;\n this.hostClasses = true;\n this.ariaRole = 'navigation';\n this.displayStyle = 'grid';\n /**\n * Specifies the type of the steps in the Stepper.\n *\n * The possible values are:\n * * (Default) `indicator`\n * * `label`\n * * `full`\n */\n this.stepType = 'indicator';\n /**\n * Specifies the linear flow of the Stepper.\n *\n * @default true\n */\n this.linear = true;\n /**\n * Specifies the orientation of the Stepper\n * ([see example]({% slug orientation_stepper %})).\n *\n * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the duration of the progress indicator animation in milliseconds. Defaults to `400ms`.\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true`\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when a step is about to be activated. This event is preventable.\n */\n this.activate = new EventEmitter();\n /**\n * Fires when the `currentStep` property of the component was updated.\n * Used to provide a two-way binding for the `currentStep` property.\n */\n this.currentStepChange = new EventEmitter();\n this._steps = [];\n this.dynamicRTLSubscription = this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n this.stepperService.owner = this;\n }\n get linearClass() {\n return this.linear;\n }\n /**\n * The index of the current step.\n */\n set currentStep(value) {\n this.stepperService.currentStep = value;\n }\n get currentStep() {\n return this.stepperService.currentStep;\n }\n /**\n * The collection of steps that will be rendered in the Stepper.\n * ([see example]({% slug step_appearance_stepper %}))\n */\n set steps(steps) {\n if (isPresent(steps) && steps.length > 0) {\n this._steps = steps;\n }\n }\n get steps() {\n return this._steps;\n }\n /**\n * Defines an SVG icon to be rendered inside the step indicator instead of the default numeric or text content.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n this._svgIcon = icon;\n }\n get svgIcon() {\n return this._svgIcon;\n }\n ngOnInit() {\n this.applyHostStyling();\n }\n ngOnChanges(changes) {\n if (changes['steps'] && !changes['steps'].firstChange) {\n this.applyHostStyling();\n }\n if (changes['orientation']) {\n this.resetHostStyling();\n this.applyHostStyling();\n }\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n /**\n * Manually triggers the validity check configured by the [isValid]({% slug api_layout_stepperstep %}#toc-isvalid) property of the steps ([see example]({% slug step_validation_stepper %}#toc-triggering-the-validation)).\n *\n * Steps that have their [validate]({% slug api_layout_stepperstep %}#toc-validate) property set to `false`, will not be validated.\n */\n validateSteps() {\n this.stepperService.validateSteps();\n }\n applyHostStyling() {\n const stepFramesStyle = this.orientation === 'horizontal' ? 'grid-template-columns' : 'grid-template-rows';\n const stepFramesValue = `repeat(${this.steps.length * 2}, 1fr)`;\n this.renderer.setStyle(this.elem.nativeElement, stepFramesStyle, stepFramesValue);\n }\n resetHostStyling() {\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-columns');\n this.renderer.removeStyle(this.elem.nativeElement, 'grid-template-rows');\n }\n /**\n * @hidden\n */\n get progressAnimation() {\n return {\n duration: this.animationDuration\n };\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'number') {\n return this.animation;\n }\n if (typeof this.animation === 'boolean' && this.animation) {\n return DEFAULT_ANIMATION_DURATION;\n }\n return 0;\n }\n /**\n * @hidden\n */\n get stepsListStyling() {\n if (this.orientation === 'horizontal') {\n return {\n 'grid-column-start': 1,\n 'grid-column-end': -1\n };\n }\n return {\n 'grid-row-start': 1,\n 'grid-row-end': -1\n };\n }\n /**\n * @hidden\n */\n get progressBarStyling() {\n if (this.orientation === 'horizontal') {\n return {\n 'grid-column-start': 2,\n 'grid-column-end': this.steps.length * 2\n };\n }\n return {\n 'grid-row-start': 2,\n 'grid-row-end': this.steps.length * 2\n };\n }\n /**\n * @hidden\n */\n onListKeydown(e) {\n this.stepperService.keydown(e);\n }\n /**\n * @hidden\n */\n onListClick(e) {\n if (e.stepIdx === e.currentStep) {\n this.stepperService.focus(e.stepIdx);\n return;\n }\n if (e.linear && this.stepperService.isPrevOrNextStep(e.stepIdx) === false) {\n return;\n }\n this.stepperService.onActivate(e.stepIdx, e.originalEvent);\n }\n /**\n * @hidden\n */\n get isHorizontal() {\n return this.orientation === 'horizontal';\n }\n }\n StepperComponent.ɵfac = function StepperComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(StepperService));\n };\n StepperComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StepperComponent,\n selectors: [[\"kendo-stepper\"]],\n contentQueries: function StepperComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, StepperStepTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, StepperLabelTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, StepperIndicatorTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.stepTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.indicatorTemplate = _t.first);\n }\n },\n hostVars: 8,\n hostBindings: function StepperComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.ariaRole)(\"dir\", ctx.direction);\n i0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n i0.ɵɵclassProp(\"k-stepper\", ctx.hostClasses)(\"k-stepper-linear\", ctx.linearClass);\n }\n },\n inputs: {\n stepType: \"stepType\",\n linear: \"linear\",\n orientation: \"orientation\",\n currentStep: \"currentStep\",\n steps: \"steps\",\n svgIcon: \"svgIcon\",\n successSVGIcon: \"successSVGIcon\",\n errorSVGIcon: \"errorSVGIcon\",\n successIcon: \"successIcon\",\n errorIcon: \"errorIcon\",\n animation: \"animation\"\n },\n outputs: {\n activate: \"activate\",\n currentStepChange: \"currentStepChange\"\n },\n exportAs: [\"kendoStepper\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, StepperService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.stepper'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 19,\n consts: () => {\n let i18n_3;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the optional segment of the step label\n * @meaning kendo.stepper.optional\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_3 = goog.getMsg(\"Optional\");\n i18n_3 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_3;\n } else {\n i18n_3 = $localize`:kendo.stepper.optional|The text for the optional segment of the step label:Optional`;\n }\n return [[\"kendoStepperLocalizedMessages\", \"\", \"optional\", i18n_3], [\"kendoStepperList\", \"\", 1, \"k-step-list\", 3, \"listKeydown\", \"listClick\", \"stepType\", \"linear\", \"orientation\", \"steps\", \"currentStep\", \"successIcon\", \"successSVGIcon\", \"errorIcon\", \"errorSVGIcon\", \"svgIcon\", \"indicatorTemplate\", \"labelTemplate\", \"stepTemplate\", \"ngStyle\"], [3, \"animation\", \"max\", \"label\", \"orientation\", \"reverse\", \"value\", \"ngStyle\", 4, \"ngIf\"], [3, \"animation\", \"max\", \"label\", \"orientation\", \"reverse\", \"value\", \"ngStyle\"]];\n },\n template: function StepperComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 0);\n i0.ɵɵelementStart(1, \"ol\", 1);\n i0.ɵɵlistener(\"listKeydown\", function StepperComponent_Template_ol_listKeydown_1_listener($event) {\n return ctx.onListKeydown($event);\n })(\"listClick\", function StepperComponent_Template_ol_listClick_1_listener($event) {\n return ctx.onListClick($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, StepperComponent_kendo_progressbar_2_Template, 1, 8, \"kendo-progressbar\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"k-step-list-horizontal\", ctx.isHorizontal)(\"k-step-list-vertical\", !ctx.isHorizontal);\n i0.ɵɵproperty(\"stepType\", ctx.stepType)(\"linear\", ctx.linear)(\"orientation\", ctx.orientation)(\"steps\", ctx.steps)(\"currentStep\", ctx.currentStep)(\"successIcon\", ctx.successIcon)(\"successSVGIcon\", ctx.successSVGIcon)(\"errorIcon\", ctx.errorIcon)(\"errorSVGIcon\", ctx.errorSVGIcon)(\"svgIcon\", ctx.svgIcon)(\"indicatorTemplate\", ctx.indicatorTemplate == null ? null : ctx.indicatorTemplate.templateRef)(\"labelTemplate\", ctx.labelTemplate == null ? null : ctx.labelTemplate.templateRef)(\"stepTemplate\", ctx.stepTemplate == null ? null : ctx.stepTemplate.templateRef)(\"ngStyle\", ctx.stepsListStyling);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.steps.length > 0);\n }\n },\n dependencies: [LocalizedStepperMessagesDirective, StepperListComponent, NgStyle, NgIf, ProgressBarComponent],\n encapsulation: 2\n });\n return StepperComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the `activate` event of the Stepper.\n */\nclass StepperActivateEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nlet StepperCustomMessagesComponent = /*#__PURE__*/(() => {\n class StepperCustomMessagesComponent extends StepperMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n StepperCustomMessagesComponent.ɵfac = function StepperCustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperCustomMessagesComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n StepperCustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StepperCustomMessagesComponent,\n selectors: [[\"kendo-stepper-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: StepperMessages,\n useExisting: forwardRef(() => StepperCustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function StepperCustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return StepperCustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet Messages = /*#__PURE__*/(() => {\n class Messages extends ComponentMessages {}\n Messages.ɵfac = /* @__PURE__ */(() => {\n let ɵMessages_BaseFactory;\n return function Messages_Factory(__ngFactoryType__) {\n return (ɵMessages_BaseFactory || (ɵMessages_BaseFactory = i0.ɵɵgetInheritedFactory(Messages)))(__ngFactoryType__ || Messages);\n };\n })();\n Messages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: Messages,\n selectors: [[\"kendoAvatarMessages\"]],\n inputs: {\n avatarAlt: \"avatarAlt\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return Messages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-forward-ref\n/**\n * @hidden\n */\nlet LocalizedAvatarMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedAvatarMessagesDirective extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedAvatarMessagesDirective.ɵfac = function LocalizedAvatarMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedAvatarMessagesDirective)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n LocalizedAvatarMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedAvatarMessagesDirective,\n selectors: [[\"\", \"kendoAvatarLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: Messages,\n useExisting: forwardRef(() => LocalizedAvatarMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedAvatarMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_ROUNDED = 'full';\nconst DEFAULT_SIZE = 'medium';\nconst DEFAULT_THEME_COLOR = 'primary';\nconst DEFAULT_FILL_MODE = 'solid';\n/**\n * Displays images, icons or initials representing people or other entities.\n */\nlet AvatarComponent = /*#__PURE__*/(() => {\n class AvatarComponent {\n constructor(localization, renderer, element) {\n this.localization = localization;\n this.renderer = renderer;\n this.element = element;\n this.hostClass = true;\n /**\n * Sets a border to the avatar.\n */\n this.border = false;\n this._themeColor = DEFAULT_THEME_COLOR;\n this._size = DEFAULT_SIZE;\n this._fillMode = DEFAULT_FILL_MODE;\n this._rounded = DEFAULT_ROUNDED;\n validatePackage(packageMetadata);\n }\n /**\n * @hidden\n */\n get borderClass() {\n return this.border;\n }\n /**\n * @hidden\n */\n get flexBasis() {\n return this.width;\n }\n /**\n * Sets the shape for the avatar.\n * @hidden\n */\n set shape(shape) {\n this.rounded = mapShapeToRounded(shape);\n }\n /**\n * Specifies the size of the avatar\n * ([see example]({% slug appearance_avatar %}#toc-size)).\n *\n * The possible values are:\n * * `small`\n * * `medium` (Default)\n * * `large`\n * * `none`\n */\n set size(size) {\n if (size !== this._size) {\n const newSize = size ? size : DEFAULT_SIZE;\n this.handleClasses('size', newSize);\n this._size = newSize;\n }\n }\n get size() {\n return this._size;\n }\n /**\n * Specifies the rounded styling of the avatar\n * ([see example](slug:appearance_avatar#toc-roundness)).\n *\n * The possible values are:\n * * `small`\n * * `medium`\n * * `large`\n * * `full` (Default)\n * * `none`\n */\n set rounded(rounded) {\n if (rounded !== this._rounded) {\n const newRounded = rounded ? rounded : DEFAULT_ROUNDED;\n this.handleClasses('rounded', newRounded);\n this._rounded = newRounded;\n }\n }\n get rounded() {\n return this._rounded;\n }\n /**\n * Specifies the theme color of the avatar.\n * The theme color will be applied as background and border color, while also amending the text color accordingly.\n *\n * The possible values are:\n * * `base`— Applies the base coloring value.\n * * `primary` (Default)—Applies coloring based on primary theme color.\n * * `secondary`—Applies coloring based on secondary theme color.\n * * `tertiary`— Applies coloring based on tertiary theme color.\n * * `info`—Applies coloring based on info theme color.\n * * `success`— Applies coloring based on success theme color.\n * * `warning`— Applies coloring based on warning theme color.\n * * `error`— Applies coloring based on error theme color.\n * * `dark`— Applies coloring based on dark theme color.\n * * `light`— Applies coloring based on light theme color.\n * * `inverse`— Applies coloring based on inverted theme color.\n * * `none`— Removes the styling associated with the theme color.\n */\n set themeColor(themeColor) {\n if (themeColor !== this._themeColor) {\n const newThemeColor = themeColor ? themeColor : DEFAULT_THEME_COLOR;\n this._themeColor = newThemeColor;\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n }\n get themeColor() {\n return this._themeColor;\n }\n /**\n * Specifies the appearance fill style of the avatar.\n *\n * The possible values are:\n * * `solid` (Default)\n * * `outline`\n * * `none`\n */\n set fillMode(fillMode) {\n if (fillMode !== this.fillMode) {\n const newFillMode = fillMode ? fillMode : DEFAULT_FILL_MODE;\n this._fillMode = newFillMode;\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n }\n get fillMode() {\n return this._fillMode;\n }\n /**\n * Specifies the appearance fill style of the avatar.\n * Deprecated, left for backward compatibility.\n *\n * @hidden\n */\n set fill(fillMode) {\n this.fillMode = fillMode;\n }\n /**\n * @hidden\n */\n get avatarWidth() {\n return this.width;\n }\n /**\n * @hidden\n */\n get avatarHeight() {\n return this.height;\n }\n /**\n * Defines an SVGIcon to be rendered.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgIcon(icon) {\n if (isDevMode() && icon && this.icon && this.iconClass) {\n throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');\n }\n this._svgIcon = icon;\n }\n get svgIcon() {\n return this._svgIcon;\n }\n ngOnInit() {\n this.verifyProperties();\n }\n ngAfterViewInit() {\n const stylingInputs = ['size', 'rounded'];\n stylingInputs.forEach(input => {\n this.handleClasses(input, this[input]);\n });\n this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);\n }\n /**\n * @hidden\n */\n get customAvatar() {\n return !(this.imageSrc || this.initials || this.icon || this.iconClass);\n }\n verifyProperties() {\n if (!isDevMode()) {\n return;\n }\n const inputs = [this.icon || this.iconClass, this.imageSrc, this.initials];\n const inputsLength = inputs.filter(value => value).length;\n if (inputsLength > 1) {\n throw new Error(`\n Invalid property configuration given.\n The kendo-avatar component can accept only one of:\n icon, imageSrc or initials properties.\n `);\n }\n }\n handleClasses(styleType, value) {\n const elem = this.element.nativeElement;\n const classes = getStylingClasses('avatar', styleType, this[styleType], value);\n if (classes.toRemove) {\n this.renderer.removeClass(elem, classes.toRemove);\n }\n if (classes.toAdd) {\n this.renderer.addClass(elem, classes.toAdd);\n }\n }\n handleFillModeAndThemeColorClasses(fill, themeColor) {\n const wrapperElement = this.element.nativeElement;\n // remove existing fill and theme color classes\n const currentClasses = Array.from(wrapperElement.classList);\n const classesToRemove = currentClasses.filter(cl => {\n return cl.startsWith('k-avatar-solid') || cl.startsWith('k-avatar-outline');\n });\n classesToRemove.forEach(cl => this.renderer.removeClass(wrapperElement, cl));\n // add fill if needed\n if (fill !== 'none') {\n this.renderer.addClass(wrapperElement, `k-avatar-${fill}`);\n }\n // add theme color class if fill and theme color\n if (fill !== 'none' && themeColor !== 'none') {\n this.renderer.addClass(wrapperElement, `k-avatar-${fill}-${themeColor}`);\n }\n }\n /**\n * @hidden\n */\n textFor(key) {\n return this.localization.get(key);\n }\n }\n AvatarComponent.ɵfac = function AvatarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AvatarComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n AvatarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AvatarComponent,\n selectors: [[\"kendo-avatar\"]],\n hostVars: 10,\n hostBindings: function AvatarComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"flex-basis\", ctx.flexBasis)(\"width\", ctx.avatarWidth)(\"height\", ctx.avatarHeight);\n i0.ɵɵclassProp(\"k-avatar\", ctx.hostClass)(\"k-avatar-bordered\", ctx.borderClass);\n }\n },\n inputs: {\n shape: \"shape\",\n size: \"size\",\n rounded: \"rounded\",\n themeColor: \"themeColor\",\n fillMode: \"fillMode\",\n fill: \"fill\",\n border: \"border\",\n iconClass: \"iconClass\",\n width: \"width\",\n height: \"height\",\n cssStyle: \"cssStyle\",\n initials: \"initials\",\n icon: \"icon\",\n imageSrc: \"imageSrc\",\n svgIcon: \"svgIcon\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.avatar'\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 5,\n vars: 4,\n consts: () => {\n let i18n_4;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The alt attribute text of the image in the avatar.\n * @meaning kendo.avatar.avatarAlt\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_4 = goog.getMsg(\"Avatar\");\n i18n_4 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_4;\n } else {\n i18n_4 = $localize`:kendo.avatar.avatarAlt|The alt attribute text of the image in the avatar.:Avatar`;\n }\n return [[\"kendoAvatarLocalizedMessages\", \"\", \"avatarAlt\", i18n_4], [4, \"ngIf\"], [1, \"k-avatar-image\"], [3, \"src\", \"alt\", \"ngStyle\"], [1, \"k-avatar-text\", 3, \"ngStyle\"], [1, \"k-avatar-icon\"], [3, \"ngStyle\", \"name\", \"customFontClass\", \"svgIcon\"]];\n },\n template: function AvatarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementContainer(0, 0);\n i0.ɵɵtemplate(1, AvatarComponent_ng_content_1_Template, 1, 0, \"ng-content\", 1)(2, AvatarComponent_ng_container_2_Template, 3, 3, \"ng-container\", 1)(3, AvatarComponent_ng_container_3_Template, 3, 2, \"ng-container\", 1)(4, AvatarComponent_ng_container_4_Template, 3, 4, \"ng-container\", 1);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.customAvatar);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageSrc);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.initials);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.iconClass || ctx.svgIcon);\n }\n },\n dependencies: [NgIf, NgStyle, IconWrapperComponent, LocalizedAvatarMessagesDirective],\n encapsulation: 2\n });\n return AvatarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-forward-ref\n/**\n * Custom component messages override default component messages\n * ([see example]({% slug rtl_layout %})).\n */\nlet AvatarCustomMessagesComponent = /*#__PURE__*/(() => {\n class AvatarCustomMessagesComponent extends Messages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n AvatarCustomMessagesComponent.ɵfac = function AvatarCustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AvatarCustomMessagesComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n AvatarCustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AvatarCustomMessagesComponent,\n selectors: [[\"kendo-avatar-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: Messages,\n useExisting: forwardRef(() => AvatarCustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function AvatarCustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return AvatarCustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the [Kendo UI Card component for Angular]({% slug overview_card %})\n */\nlet CardComponent = /*#__PURE__*/(() => {\n class CardComponent {\n constructor(localizationService) {\n this.localizationService = localizationService;\n this.hostClass = true;\n /**\n * Specifies the layout of the Card content.\n *\n * The possible values are:\n * * (Default) `vertical`\n * * `horizontal`\n *\n */\n this.orientation = 'vertical';\n /**\n * Defines the width of the Card.\n * Defaults to `285px`.\n */\n this.width = '285px';\n this.rtl = false;\n validatePackage(packageMetadata);\n this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({\n rtl\n }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n }\n get widthStyle() {\n return this.width;\n }\n get vertical() {\n return this.orientation === 'vertical';\n }\n get horizontal() {\n return this.orientation === 'horizontal';\n }\n ngOnDestroy() {\n if (this.dynamicRTLSubscription) {\n this.dynamicRTLSubscription.unsubscribe();\n }\n }\n }\n CardComponent.ɵfac = function CardComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n CardComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CardComponent,\n selectors: [[\"kendo-card\"]],\n hostVars: 9,\n hostBindings: function CardComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.direction);\n i0.ɵɵstyleProp(\"width\", ctx.widthStyle);\n i0.ɵɵclassProp(\"k-card\", ctx.hostClass)(\"k-card-vertical\", ctx.vertical)(\"k-card-horizontal\", ctx.horizontal);\n }\n },\n inputs: {\n orientation: \"orientation\",\n width: \"width\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.card.component'\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function CardComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return CardComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the content in the Card header.\n */\nlet CardHeaderComponent = /*#__PURE__*/(() => {\n class CardHeaderComponent {\n constructor() {\n this.hostClass = true;\n }\n }\n CardHeaderComponent.ɵfac = function CardHeaderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardHeaderComponent)();\n };\n CardHeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CardHeaderComponent,\n selectors: [[\"kendo-card-header\"]],\n hostVars: 2,\n hostBindings: function CardHeaderComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-card-header\", ctx.hostClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function CardHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return CardHeaderComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the content in the Card body.\n */\nlet CardBodyComponent = /*#__PURE__*/(() => {\n class CardBodyComponent {\n constructor() {\n this.hostClass = true;\n }\n }\n CardBodyComponent.ɵfac = function CardBodyComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardBodyComponent)();\n };\n CardBodyComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CardBodyComponent,\n selectors: [[\"kendo-card-body\"]],\n hostVars: 2,\n hostBindings: function CardBodyComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-card-body\", ctx.hostClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function CardBodyComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return CardBodyComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the content in the Card footer.\n */\nlet CardFooterComponent = /*#__PURE__*/(() => {\n class CardFooterComponent {\n constructor() {\n this.hostClass = true;\n }\n }\n CardFooterComponent.ɵfac = function CardFooterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardFooterComponent)();\n };\n CardFooterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CardFooterComponent,\n selectors: [[\"kendo-card-footer\"]],\n hostVars: 2,\n hostBindings: function CardFooterComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-card-footer\", ctx.hostClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function CardFooterComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return CardFooterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the action buttons of the Card.\n * * ([see example]({% slug actions_card %})).\n */\nlet CardActionsComponent = /*#__PURE__*/(() => {\n class CardActionsComponent {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the layout of the Card action buttons.\n *\n * * The possible values are:\n * * (Default) `horizontal`\n * * `vertical`\n *\n */\n this.orientation = 'horizontal';\n /**\n * Specifies the layout of the Card action buttons.\n *\n * The possible values are:\n * * (Default) `start`\n * * `center`\n * * `end`\n * * `stretched`\n *\n */\n this.layout = 'start';\n /**\n * Fires when the user clicks an action button.\n */\n this.action = new EventEmitter();\n }\n get stretchedClass() {\n return this.layout === 'stretched';\n }\n get startClass() {\n return this.layout === 'start';\n }\n get endClass() {\n return this.layout === 'end';\n }\n get centerClass() {\n return this.layout === 'center';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n /**\n * Allows the declarative specification of the Card actions.\n */\n set actions(value) {\n if (Array.isArray(value)) {\n this.actionsArray = value;\n } else if (value instanceof TemplateRef) {\n this.actionsTemplate = value;\n }\n }\n /**\n * @hidden\n */\n onClick(action) {\n this.action.emit(action);\n }\n }\n CardActionsComponent.ɵfac = function CardActionsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardActionsComponent)();\n };\n CardActionsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CardActionsComponent,\n selectors: [[\"kendo-card-actions\"]],\n hostVars: 16,\n hostBindings: function CardActionsComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-actions\", ctx.hostClass)(\"k-card-actions\", ctx.hostClass)(\"k-actions-stretched\", ctx.stretchedClass)(\"k-actions-start\", ctx.startClass)(\"k-actions-end\", ctx.endClass)(\"k-actions-center\", ctx.centerClass)(\"k-actions-vertical\", ctx.verticalClass)(\"k-actions-horizontal\", ctx.horizontalClass);\n }\n },\n inputs: {\n orientation: \"orientation\",\n layout: \"layout\",\n actions: \"actions\"\n },\n outputs: {\n action: \"action\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 3,\n vars: 3,\n consts: [[4, \"ngIf\"], [\"type\", \"button\", \"class\", \"k-button k-button-md k-rounded-md\", 3, \"k-button-solid\", \"k-button-flat\", \"k-button-solid-base\", \"k-button-solid-primary\", \"k-button-flat-base\", \"k-button-flat-primary\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", 1, \"k-button\", \"k-button-md\", \"k-rounded-md\", 3, \"click\"], [1, \"k-button-text\"], [3, \"ngTemplateOutlet\"]],\n template: function CardActionsComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, CardActionsComponent_ng_content_0_Template, 1, 0, \"ng-content\", 0)(1, CardActionsComponent_ng_container_1_Template, 2, 1, \"ng-container\", 0)(2, CardActionsComponent_2_Template, 1, 1, null, 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.actionsArray && !ctx.actionsTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.actionsArray);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.actionsTemplate);\n }\n },\n dependencies: [NgIf, NgFor, NgTemplateOutlet],\n encapsulation: 2\n });\n return CardActionsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies a separator in the content of the Card.\n */\nlet CardSeparatorDirective = /*#__PURE__*/(() => {\n class CardSeparatorDirective {\n constructor() {\n this.hostClass = true;\n /**\n * Specifies the orientation of the Card separator.\n *\n * The possible values are:\n * (Default) `horizontal`\n * `vertical`\n */\n this.orientation = 'horizontal';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n }\n CardSeparatorDirective.ɵfac = function CardSeparatorDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardSeparatorDirective)();\n };\n CardSeparatorDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CardSeparatorDirective,\n selectors: [[\"\", \"kendoCardSeparator\", \"\"]],\n hostVars: 8,\n hostBindings: function CardSeparatorDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"color\", ctx.color);\n i0.ɵɵclassProp(\"k-card-separator\", ctx.hostClass)(\"k-separator-vertical\", ctx.verticalClass)(\"k-separator-horizontal\", ctx.horizontalClass);\n }\n },\n inputs: {\n color: \"color\",\n orientation: \"orientation\"\n },\n standalone: true\n });\n return CardSeparatorDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the text and styles for the title of the Card.\n */\nlet CardTitleDirective = /*#__PURE__*/(() => {\n class CardTitleDirective {\n constructor() {\n this.hostClass = true;\n }\n }\n CardTitleDirective.ɵfac = function CardTitleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardTitleDirective)();\n };\n CardTitleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CardTitleDirective,\n selectors: [[\"\", \"kendoCardTitle\", \"\"]],\n hostVars: 2,\n hostBindings: function CardTitleDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-card-title\", ctx.hostClass);\n }\n },\n standalone: true\n });\n return CardTitleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the text and styles for the subtitle of the Card.\n */\nlet CardSubtitleDirective = /*#__PURE__*/(() => {\n class CardSubtitleDirective {\n constructor() {\n this.hostClass = true;\n }\n }\n CardSubtitleDirective.ɵfac = function CardSubtitleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardSubtitleDirective)();\n };\n CardSubtitleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CardSubtitleDirective,\n selectors: [[\"\", \"kendoCardSubtitle\", \"\"]],\n hostVars: 2,\n hostBindings: function CardSubtitleDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-card-subtitle\", ctx.hostClass);\n }\n },\n standalone: true\n });\n return CardSubtitleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies any media that will be displayed and aligned in the Card.\n */\nlet CardMediaDirective = /*#__PURE__*/(() => {\n class CardMediaDirective {\n constructor() {\n this.hostClass = true;\n }\n }\n CardMediaDirective.ɵfac = function CardMediaDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardMediaDirective)();\n };\n CardMediaDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CardMediaDirective,\n selectors: [[\"\", \"kendoCardMedia\", \"\"]],\n hostVars: 2,\n hostBindings: function CardMediaDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-card-media\", ctx.hostClass);\n }\n },\n standalone: true\n });\n return CardMediaDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The settings of the Card action buttons.\n */\nclass CardAction {}\n\n/**\n * Represents a template that defines the content of the ExpansionPanel title.\n * To define the template, nest an `` tag\n * with the `kendoExpansionPanelTitleDirective` directive inside the `` tag.\n * ([see example]({% slug title_expansionpanel %}#toc-title-template)).\n */\nlet ExpansionPanelTitleDirective = /*#__PURE__*/(() => {\n class ExpansionPanelTitleDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n ExpansionPanelTitleDirective.ɵfac = function ExpansionPanelTitleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpansionPanelTitleDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n ExpansionPanelTitleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ExpansionPanelTitleDirective,\n selectors: [[\"\", \"kendoExpansionPanelTitleDirective\", \"\"]],\n standalone: true\n });\n return ExpansionPanelTitleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nfunction expand(duration, height) {\n return [style({\n overflow: 'hidden',\n display: 'block',\n height: 0\n }), animate(`${duration}ms ease-in`, style({\n height: `${height}`\n }))];\n}\n/**\n * @hidden\n */\nfunction collapse(duration, height) {\n return [style({\n overflow: 'hidden',\n height: `${height}`\n }), animate(`${duration}ms ease-in`, style({\n overflow: 'hidden',\n height: 0\n }))];\n}\n\n/**\n * Arguments for the `action` event of the ExpansionPanel.\n */\nclass ExpansionPanelActionEvent extends PreventableEvent$1 {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\nconst DEFAULT_DURATION = 200;\nconst CONTENT_HIDDEN_CLASS = 'k-hidden';\n/**\n * Represents the [Kendo UI ExpansionPanel component for Angular]({% slug overview_expansionpanel %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n * \n * There are various theories about the origin of the word Chile.\n * \n * `\n * })\n * class AppComponent {}\n * ```\n */\nlet ExpansionPanelComponent = /*#__PURE__*/(() => {\n class ExpansionPanelComponent {\n constructor(renderer, hostElement, ngZone, localizationService, builder) {\n this.renderer = renderer;\n this.hostElement = hostElement;\n this.ngZone = ngZone;\n this.localizationService = localizationService;\n this.builder = builder;\n /**\n * Specifies the primary text in the header of the ExpansionPanel\n * ([see example](slug:title_expansionpanel#toc-titles-and-subtitles)).\n */\n this.title = '';\n /**\n * Specifies the secondary text in the header of the ExpansionPanel, which is rendered next to the collapse/expand icon\n * ([see example](slug:title_expansionpanel#toc-titles-and-subtitles)).\n */\n this.subtitle = '';\n /**\n * Specifies whether the ExpansionPanel is disabled. If disabled, the ExpansionPanel can be neither expanded nor collapsed\n * ([see example]({% slug disabled_expansionpanel %})).\n *\n * @default false\n */\n this.disabled = false;\n /**\n * Specifies the animation settings of the ExpansionPanel\n * ([see example]({% slug animations_expansionpanel %})).\n *\n * The possible values are:\n * * Boolean\n * * (Default) `true` Numeric values represent duration. Default duration is 200ms.\n * * false\n * * Number\n */\n this.animation = true;\n /**\n * Fires when the `expanded` property of the component is updated.\n * Used to provide a two-way binding for the `expanded` property\n * ([see example](slug:events_expansionpanel)).\n */\n this.expandedChange = new EventEmitter();\n /**\n * Fires when the expanded state of the ExpansionPanel is about to change. This event is preventable\n * ([see example](slug:events_expansionpanel)).\n */\n this.action = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is expanded. If there is animation it will fire when the animation is complete\n * ([see example](slug:events_expansionpanel)).\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the ExpansionPanel is collapsed. If there is animation it will fire when the animation is complete\n * ([see example](slug:events_expansionpanel)).\n */\n this.collapse = new EventEmitter();\n this.hostClass = true;\n /**\n * @hidden\n */\n this.focused = false;\n this.animationEnd = new EventEmitter();\n this.subscriptions = new Subscription();\n this._expanded = false;\n this._svgExpandIcon = caretAltDownIcon;\n this._svgCollapseIcon = caretAltUpIcon;\n validatePackage(packageMetadata);\n this.direction = localizationService.rtl ? 'rtl' : 'ltr';\n }\n /**\n * Specifies whether the ExpansionPanel is expanded. The property supports two-way binding.\n * ([see example]({% slug interaction_expansionpanel %}#toc-setting-the-initial-state)).\n *\n * @default false\n */\n set expanded(value) {\n if (value === this.expanded) {\n return;\n }\n this._expanded = value;\n if (this.expanded) {\n this.removeContentHiddenClass();\n } else {\n this.addContentHiddenClass();\n }\n }\n get expanded() {\n return this._expanded;\n }\n /**\n * Defines an SVGIcon for the expanded state of the component.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgExpandIcon(icon) {\n if (isDevMode() && icon && this.expandIcon) {\n throw new Error('Setting both expandIcon/svgExpandIcon options at the same time is not supported.');\n }\n this._svgExpandIcon = icon;\n }\n get svgExpandIcon() {\n return this._svgExpandIcon;\n }\n /**\n * Defines an SVGIcon for the collapsed state of the component.\n * The input can take either an [existing Kendo SVG icon](slug:svgicon_list) or a custom one.\n */\n set svgCollapseIcon(icon) {\n if (isDevMode() && icon && this.collapseIcon) {\n throw new Error('Setting both collapseIcon/svgCollapseIcon options at the same time is not supported.');\n }\n this._svgCollapseIcon = icon;\n }\n get svgCollapseIcon() {\n return this._svgCollapseIcon;\n }\n get expandedClass() {\n return this.expanded && !this.disabled;\n }\n ngOnInit() {\n this.renderer.removeAttribute(this.hostElement.nativeElement, 'title');\n this.subscriptions = this.localizationService.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n });\n const elem = this.hostElement.nativeElement;\n const header = this.header.nativeElement;\n this.subscriptions.add(this.renderer.listen(header, 'focus', () => this.focusExpansionPanel(elem)));\n this.subscriptions.add(this.renderer.listen(header, 'blur', () => this.blurExpansionPanel(elem)));\n }\n ngAfterViewInit() {\n this.initDomEvents();\n if (!this.expanded) {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * @hidden\n */\n initDomEvents() {\n if (!this.hostElement) {\n return;\n }\n if (!this.disabled) {\n this.ngZone.runOutsideAngular(() => {\n const elem = this.hostElement.nativeElement;\n this.subscriptions.add(this.renderer.listen(elem, 'keydown', this.keyDownHandler.bind(this)));\n });\n }\n }\n /**\n * @hidden\n */\n keyDownHandler(ev) {\n const isEnterOrSpace = ev.keyCode === Keys.Enter || ev.keyCode === Keys.Space;\n if (!isEnterOrSpace) {\n return;\n }\n if (hasClass(ev.target, 'k-expander-header')) {\n ev.preventDefault();\n this.ngZone.run(() => {\n this.onHeaderAction();\n });\n }\n }\n /**\n * @hidden\n */\n onHeaderClick(ev) {\n const header = this.header.nativeElement;\n if (!isFocusable(ev.target) || ev.target === header && !this.disabled) {\n this.onHeaderAction();\n }\n }\n /**\n * @hidden\n */\n onHeaderAction() {\n const eventArgs = new ExpansionPanelActionEvent();\n eventArgs.action = this.expanded ? 'collapse' : 'expand';\n this.action.emit(eventArgs);\n if (!eventArgs.isDefaultPrevented()) {\n this.setExpanded(!this.expanded);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n }\n /**\n * @hidden\n */\n get expanderIndicatorClasses() {\n if (this.expanded) {\n return !this.collapseIcon ? `caret-alt-up` : '';\n } else {\n return !this.expandIcon ? `caret-alt-down` : '';\n }\n }\n /**\n * @hidden\n */\n get customExpanderIndicatorClasses() {\n if (this.expanded) {\n return this.collapseIcon ? this.collapseIcon : '';\n } else {\n return this.expandIcon ? this.expandIcon : '';\n }\n }\n /**\n * @hidden\n */\n get expanderSvgIcon() {\n return this.expanded ? this.svgCollapseIcon : this.svgExpandIcon;\n }\n /**\n * Toggles the visibility of the ExpansionPanel\n * ([see example]({% slug interaction_expansionpanel %}#toc-toggling-the-content)).\n *\n * @param expanded? - Boolean. Specifies, whether the ExpansionPanel will be expanded or collapsed.\n */\n toggle(expanded) {\n const previous = this.expanded;\n const current = isPresent(expanded) ? expanded : !previous;\n if (current === previous) {\n return;\n }\n this.setExpanded(current);\n if (this.expanded) {\n this.removeContentHiddenClass();\n }\n if (this.animation) {\n this.animateContent();\n return;\n }\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n }\n focusExpansionPanel(el) {\n if (!this.focused) {\n this.focused = true;\n this.renderer.addClass(el, 'k-focus');\n }\n }\n blurExpansionPanel(el) {\n if (this.focused) {\n this.focused = false;\n this.renderer.removeClass(el, 'k-focus');\n }\n }\n setExpanded(value) {\n this._expanded = value;\n this.expandedChange.emit(value);\n }\n animateContent() {\n const duration = typeof this.animation === 'boolean' ? DEFAULT_DURATION : this.animation;\n const contentHeight = getComputedStyle(this.content.nativeElement).height;\n const animation = this.expanded ? expand(duration, contentHeight) : collapse(duration, contentHeight);\n const player = this.createPlayer(animation, this.content.nativeElement);\n this.animationEnd.pipe(take(1)).subscribe(() => {\n if (!this.expanded) {\n this.addContentHiddenClass();\n }\n this.emitExpandCollapseEvent();\n });\n player.play();\n }\n createPlayer(animation, animatedElement) {\n const factory = this.builder.build(animation);\n let player = factory.create(animatedElement);\n player.onDone(() => {\n if (player) {\n this.animationEnd.emit();\n player.destroy();\n player = null;\n }\n });\n return player;\n }\n emitExpandCollapseEvent() {\n this[this.expanded ? 'expand' : 'collapse'].emit();\n }\n addContentHiddenClass() {\n this.renderer.addClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n removeContentHiddenClass() {\n this.renderer.removeClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);\n }\n }\n ExpansionPanelComponent.ɵfac = function ExpansionPanelComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpansionPanelComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i1$2.AnimationBuilder));\n };\n ExpansionPanelComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ExpansionPanelComponent,\n selectors: [[\"kendo-expansionpanel\"]],\n contentQueries: function ExpansionPanelComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ExpansionPanelTitleDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.titleTemplate = _t.first);\n }\n },\n viewQuery: function ExpansionPanelComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c25, 7);\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.content = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.header = _t.first);\n }\n },\n hostVars: 5,\n hostBindings: function ExpansionPanelComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.direction);\n i0.ɵɵclassProp(\"k-expander\", ctx.hostClass)(\"k-expanded\", ctx.expandedClass);\n }\n },\n inputs: {\n title: \"title\",\n subtitle: \"subtitle\",\n disabled: \"disabled\",\n expanded: \"expanded\",\n svgExpandIcon: \"svgExpandIcon\",\n svgCollapseIcon: \"svgCollapseIcon\",\n expandIcon: \"expandIcon\",\n collapseIcon: \"collapseIcon\",\n animation: \"animation\"\n },\n outputs: {\n expandedChange: \"expandedChange\",\n action: \"action\",\n expand: \"expand\",\n collapse: \"collapse\"\n },\n exportAs: [\"kendoExpansionPanel\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.expansionpanel'\n }]), i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 10,\n vars: 14,\n consts: [[\"header\", \"\"], [\"content\", \"\"], [\"role\", \"button\", \"tabindex\", \"0\", 3, \"click\"], [4, \"ngIf\"], [1, \"k-expander-indicator\"], [3, \"name\", \"customFontClass\", \"svgIcon\"], [1, \"k-expander-content-wrapper\", 3, \"id\"], [1, \"k-expander-content\"], [\"class\", \"k-expander-title\", 4, \"ngIf\"], [1, \"k-spacer\"], [\"class\", \"k-expander-sub-title\", 4, \"ngIf\"], [1, \"k-expander-title\"], [1, \"k-expander-sub-title\"], [3, \"ngTemplateOutlet\"]],\n template: function ExpansionPanelComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 2, 0);\n i0.ɵɵlistener(\"click\", function ExpansionPanelComponent_Template_div_click_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onHeaderClick($event));\n });\n i0.ɵɵtemplate(2, ExpansionPanelComponent_ng_container_2_Template, 4, 2, \"ng-container\", 3)(3, ExpansionPanelComponent_3_Template, 1, 1, null, 3);\n i0.ɵɵelementStart(4, \"span\", 4);\n i0.ɵɵelement(5, \"kendo-icon-wrapper\", 5);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(6, \"div\", 6, 1)(8, \"div\", 7);\n i0.ɵɵprojection(9);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-expander-header\", true)(\"k-disabled\", ctx.disabled);\n i0.ɵɵattribute(\"aria-disabled\", ctx.disabled)(\"aria-expanded\", ctx.expanded && !ctx.disabled)(\"aria-controls\", ctx.title);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx.titleTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.titleTemplate);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"name\", ctx.expanderIndicatorClasses)(\"customFontClass\", ctx.customExpanderIndicatorClasses)(\"svgIcon\", ctx.expanderSvgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"id\", ctx.title);\n i0.ɵɵadvance(2);\n i0.ɵɵattribute(\"aria-hidden\", !ctx.expanded);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, IconWrapperComponent],\n encapsulation: 2\n });\n return ExpansionPanelComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet idx = 0;\n/**\n * @hidden\n */\nconst getId = prefix => {\n return `${prefix}-${++idx}`;\n};\n/**\n * @hidden\n */\nconst normalizeValue = value => {\n return value ? +value : undefined;\n};\n/**\n * @hidden\n */\nconst isRowItemPresent = items => {\n return items.some(item => isPresent(item.row));\n};\n/**\n * @hidden\n */\nconst propsChanged = (initialProps, newProps) => {\n for (let i = 0; i < initialProps.length; i++) {\n if (initialProps[i] !== newProps[i]) {\n return true;\n }\n }\n return false;\n};\n/**\n * @hidden\n *\n * Extracts the event target from the viewport coords. Required for touch devices\n * where the `event.target` of a `pointermove` event is always the initially dragged item.\n */\nconst getDropTarget = event => {\n if (!(isDocumentAvailable() && isPresent(document.elementsFromPoint))) {\n return [event.target];\n }\n return document.elementsFromPoint(event.clientX, event.clientY).filter(item => item.classList && (item.classList.contains('k-tilelayout-item') || item.classList.contains('k-layout-item-hint')));\n};\n/**\n * @hidden\n */\nconst setElementStyles = (renderer, elem, styles) => {\n const props = Object.keys(styles);\n props.forEach(p => {\n renderer.setStyle(elem, p, styles[p]);\n });\n};\n/**\n * @hidden\n */\nconst calculateCellFromPosition = (coordinates, tileLayoutElement, gap, cellSize, columns, rtl = false) => {\n const tileLayoutRect = tileLayoutElement.getBoundingClientRect();\n const totalRows = (tileLayoutRect.height - gap.rows) / (cellSize.height + gap.rows);\n const distanceFromTop = coordinates.y - tileLayoutRect.y;\n const distanceFromLeft = coordinates.x - tileLayoutRect.x;\n const distanceFromRight = tileLayoutRect.right - coordinates.x;\n const distanceToCellWidthRatio = Math.floor((rtl ? distanceFromRight : distanceFromLeft) / (gap.columns + cellSize.width));\n const cappedColumnPosition = Math.min(distanceToCellWidthRatio + 1, columns);\n const distanceToCellHeightRatio = Math.floor(distanceFromTop / (gap.rows + cellSize.height));\n const cappedRowPosition = Math.min(distanceToCellHeightRatio + 1, totalRows);\n const col = Math.max(cappedColumnPosition, 0);\n const row = Math.max(cappedRowPosition, 0);\n return {\n row,\n col\n };\n};\n/**\n * @hidden\n */\nconst calculateOrderFromCell = (row, col, items, draggedItem, tileLayoutElement, gap, cellSize, columns) => {\n let order = 0;\n items.forEach(item => {\n const rect = item.elem.nativeElement.getBoundingClientRect();\n const start = calculateCellFromPosition({\n x: rect.x,\n y: rect.y\n }, tileLayoutElement, gap, cellSize, columns);\n if (item !== draggedItem && (start.row === row && start.col < col || start.row < row)) {\n order++;\n }\n });\n return order;\n};\n/**\n * @hidden\n */\nconst shouldResize = (keyCode, col, selectedTile, settings) => {\n const resizeRight = keyCode === Keys.ArrowRight && col + selectedTile.colSpan <= settings.columns;\n const resizeLeft = keyCode === Keys.ArrowLeft && selectedTile.colSpan > 1;\n const resizeDown = keyCode === Keys.ArrowDown;\n const resizeUp = keyCode === Keys.ArrowUp && selectedTile.rowSpan > 1;\n return {\n resizeRight,\n resizeLeft,\n resizeDown,\n resizeUp\n };\n};\n/**\n * @hidden\n */\nconst shouldReorder = (keyCode, col, selectedTile, settings) => {\n let reorderRight;\n let reorderLeft;\n if (selectedTile.col) {\n reorderRight = keyCode === Keys.ArrowRight && selectedTile.colSpan + col <= settings.columns;\n reorderLeft = keyCode === Keys.ArrowLeft && col > 1;\n } else {\n reorderRight = keyCode === Keys.ArrowRight && selectedTile.colSpan + selectedTile.order < settings.items.length;\n reorderLeft = keyCode === Keys.ArrowLeft && selectedTile.order > 0;\n }\n return {\n reorderLeft,\n reorderRight\n };\n};\n/**\n * @hidden\n */\nconst getCurrentCol = (selectedTile, settings, rtl) => {\n const rects = selectedTile.elem.nativeElement.getBoundingClientRect();\n const targetSize = {\n rowSpan: selectedTile.rowSpan,\n colSpan: selectedTile.colSpan\n };\n const width = (rects.width - (targetSize.colSpan - 1) * settings.gap.columns) / targetSize.colSpan;\n const height = (rects.height - (targetSize.rowSpan - 1) * settings.gap.rows) / targetSize.rowSpan;\n const {\n col\n } = calculateCellFromPosition({\n x: rects.x,\n y: rects.y\n }, settings.tileLayoutElement, settings.gap, {\n width: width,\n height: height\n }, settings.columns, rtl);\n return col;\n};\n\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_SIZE = 9;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_SIZE = 25;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP = 5;\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP = 18;\n/**\n * @hidden\n */\nconst DRAGGED_ZINDEX = 10;\n/**\n * @hidden\n */\nconst RESIZE_DIRECTIONS = ['ew', 'ns', 'nwse'];\n/**\n * @hidden\n */\nconst RTL_RESIZE_DIRECTIONS = ['ew', 'ns', 'nesw'];\n/**\n * @hidden\n */\nconst RESIZE_HANDLE_DIMENSIONS = {\n // numeric values represent pixels\n ew: {\n width: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n ns: {\n height: RESIZE_HANDLE_UNIDIRECTIONAL_SIZE,\n overlapY: RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP\n },\n nwse: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n },\n nesw: {\n width: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n height: RESIZE_HANDLE_BIDIRECTIONAL_SIZE,\n overlapX: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP,\n overlapY: RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP\n }\n};\n/**\n * @hidden\n */\nconst OVERLAP_THRESHOLD = 0.3;\n/**\n * @hidden\n */\nconst REVERSE_OVERLAP_THRESHOLD = -0.7;\n/**\n * @hidden\n */\nconst HINT_BORDERS_HEIGHT = 2;\n\n/**\n * Arguments for the `reorder` event. The event fires when the order or starting\n * positions of the items is changed via the UI. If you prevent the event, the change is canceled ([see example]({% slug reordering_tilelayout %}#toc-handling-the-reorder-event)).\n */\nclass TileLayoutReorderEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `reorder` event.\n * @param item - The TileLayoutItem being reordered.\n * @param items - The TileLayoutItem collection that holds the currently rendered items and their internal state.\n * @param newIndex - The new order index of the reordered item used to determine its positioning relative to the other items.\n * @param oldIndex - The initial order index of the reordered item used to determine its positioning relative to the other items.\n * @param newCol - The new start column of the reordered item.\n * @param oldCol - The initial start column of the reordered item.\n * @param newRow - The new start row of the reordered item.\n * @param oldRow - The initial start row of the reordered item.\n * @hidden\n */\n constructor(item, items, newIndex, oldIndex, newCol, oldCol, newRow, oldRow) {\n super();\n this.item = item;\n this.items = items;\n this.newIndex = newIndex;\n this.oldIndex = oldIndex;\n this.newCol = newCol;\n this.oldCol = oldCol;\n this.newRow = newRow;\n this.oldRow = oldRow;\n }\n}\n\n/**\n * Arguments for the `resize` event. The `resize` event fires when any item size\n * is changed from the UI. If you cancel the event, the change is prevented ([see example]({% slug resizing_tilelayout %}#toc-handling-the-resize-event)).\n */\nclass TileLayoutResizeEvent extends PreventableEvent$1 {\n /**\n * Constructs the event arguments for the `resize` event.\n * @param item - The TileLayoutItem being resized\n * @param items - The TileLayoutItem collection\n * @param newRowSpan - The new rowSpan of the resized item\n * @param oldRowSpan - The initial rowSpan of the resized item\n * @param newColSpan - The new colSpan of the resized item\n * @param oldColSpan - The initial colSpan of the resized item\n * @hidden\n */\n constructor(item, items, newRowSpan, oldRowSpan, newColSpan, oldColSpan) {\n super();\n this.item = item;\n this.items = items;\n this.newRowSpan = newRowSpan;\n this.oldRowSpan = oldRowSpan;\n this.newColSpan = newColSpan;\n this.oldColSpan = oldColSpan;\n }\n}\n\n/**\n * @hidden\n */\nlet TileLayoutDraggingService = /*#__PURE__*/(() => {\n class TileLayoutDraggingService {\n constructor(zone, renderer, cdr, localization) {\n this.zone = zone;\n this.renderer = renderer;\n this.cdr = cdr;\n this.localization = localization;\n this.reorderable = new BehaviorSubject(null);\n this.resizable = new BehaviorSubject(null);\n this.reorder = new Subject();\n this.resize = new Subject();\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n this.localizationSubscription = this.localization.changes.subscribe(({\n rtl\n }) => this.rtl = rtl);\n }\n get colStart() {\n return this.currentColStart;\n }\n get rowStart() {\n return this.currentRowStart;\n }\n get itemWrapper() {\n return this.draggedItemWrapper;\n }\n get order() {\n return this.targetOrder;\n }\n ngOnDestroy() {\n this.localizationSubscription.unsubscribe();\n }\n handlePress(originalEvent) {\n const resizing = !!originalEvent.target.classList.contains('k-resize-handle');\n const closestTile = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item'), this.tileLayoutSettings.tileLayoutElement);\n const closestHeader = closestInScope(originalEvent.target, el => el.classList.contains('k-tilelayout-item-header'), this.tileLayoutSettings.tileLayoutElement);\n if (!closestTile) {\n return;\n }\n this.zone.run(() => {\n this.draggedItemWrapper = closestTile;\n this.draggedItem = this.tileLayoutSettings.items.find(item => item.order === +closestTile.style.order);\n });\n const reordering = !resizing && this.reorderable.getValue() && this.draggedItem.reorderable && closestHeader;\n const focusableTarget = isFocusable(originalEvent.target);\n if (!(reordering || resizing) || focusableTarget) {\n return;\n } else {\n originalEvent.preventDefault();\n }\n this.zone.run(() => {\n this.reordering = reordering;\n this.resizing = resizing;\n });\n const tileRect = this.draggedItemWrapper.getBoundingClientRect();\n this.zone.run(() => {\n this.offset = {\n top: originalEvent.clientY - tileRect.top,\n left: originalEvent.clientX - tileRect.left,\n x: tileRect.x,\n y: tileRect.y,\n width: tileRect.width,\n height: tileRect.height\n };\n this.targetSize = {\n rowSpan: this.draggedItem.rowSpan,\n colSpan: this.draggedItem.colSpan\n };\n this.cellSize = {\n width: (tileRect.width - (this.targetSize.colSpan - 1) * this.tileLayoutSettings.gap.columns) / this.targetSize.colSpan,\n height: (tileRect.height - (this.targetSize.rowSpan - 1) * this.tileLayoutSettings.gap.rows) / this.targetSize.rowSpan\n };\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n });\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: tileRect.left + window.pageXOffset - window.scrollX + 'px',\n top: tileRect.top + window.pageYOffset - window.scrollY + 'px',\n width: tileRect.width + 'px',\n height: tileRect.height + 'px',\n zIndex: DRAGGED_ZINDEX\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'flex',\n height: tileRect.height - HINT_BORDERS_HEIGHT + 'px'\n });\n this.zone.run(() => this.targetOrder = this.draggedItem.order);\n this.cdr.markForCheck();\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n position: 'fixed'\n });\n if (this.reorderable.getValue() && !resizing) {\n this.zone.run(() => {\n this.currentColStart = this.draggedItem.colStart;\n this.currentRowStart = this.draggedItem.rowStart;\n });\n const headerEl = this.draggedItem.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n this.renderer.addClass(headerEl, 'k-cursor-grabbing');\n this.cdr.markForCheck();\n } else if (this.resizable && resizing) {\n this.zone.run(() => {\n this.startingPoint = {\n top: originalEvent.clientY,\n left: originalEvent.clientX\n };\n this.currentResizingColSpan = this.draggedItem.colSpan;\n this.currentResizingRowSpan = this.draggedItem.rowSpan;\n if (this.draggedItem.col) {\n this.currentColStart = this.draggedItem.col.toString();\n }\n if (this.draggedItem.row) {\n this.currentRowStart = this.draggedItem.row.toString();\n }\n this.direction = originalEvent.target.classList[1];\n });\n }\n }\n handleDrag(originalEvent) {\n if (this.draggedItemWrapper) {\n if (this.reordering) {\n this.reorderItems(originalEvent);\n } else if (this.resizing) {\n this.resizeItem(originalEvent);\n }\n this.lastDragCursorOffset = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n }\n }\n handleRelease(originalEvent) {\n originalEvent.preventDefault();\n if (this.reordering) {\n const initialOrder = this.draggedItem.order;\n const initialCol = this.draggedItem.col;\n const initialRow = this.draggedItem.row;\n const targetCol = normalizeValue(this.currentColStart);\n const targetRow = normalizeValue(this.currentRowStart);\n if (propsChanged([this.targetOrder, targetCol, targetRow], [initialOrder, initialCol, initialRow])) {\n const reorderEvent = new TileLayoutReorderEvent(this.draggedItem, this.tileLayoutSettings.items, this.targetOrder, initialOrder, normalizeValue(this.currentColStart), initialCol, targetRow, initialRow);\n this.reorder.next(reorderEvent);\n if (!reorderEvent.isDefaultPrevented()) {\n if (this.targetOrder > initialOrder) {\n this.zone.run(() => {\n for (let i = initialOrder + 1; i <= this.targetOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i - 1;\n }\n });\n } else {\n this.zone.run(() => {\n for (let i = this.targetOrder; i < initialOrder; i++) {\n this.tileLayoutSettings.items.find(item => item.order === i).order = i + 1;\n }\n });\n }\n this.draggedItem.order = this.targetOrder;\n if (this.draggedItem.col) {\n this.draggedItem.col = +this.currentColStart;\n }\n if (this.draggedItem.row) {\n this.draggedItem.row = +this.currentRowStart;\n }\n }\n }\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n this.cdr.markForCheck();\n this.zone.run(() => this.cleanUp());\n } else if (!this.reordering && this.resizing) {\n const initialRowSpan = this.draggedItem.rowSpan;\n const initialColSpan = this.draggedItem.colSpan;\n const {\n targetColSpan,\n targetRowSpan\n } = isRowItemPresent(this.tileLayoutSettings.items) ? this.targetSpan() : {\n targetColSpan: this.currentResizingColSpan,\n targetRowSpan: this.currentResizingRowSpan\n };\n if (propsChanged([initialRowSpan, initialColSpan], [targetRowSpan, targetColSpan])) {\n const resizeEvent = new TileLayoutResizeEvent(this.draggedItem, this.tileLayoutSettings.items, targetRowSpan, initialRowSpan, targetColSpan, initialColSpan);\n this.resize.next(resizeEvent);\n if (!resizeEvent.isDefaultPrevented()) {\n this.draggedItem.colSpan = this.currentResizingColSpan;\n this.draggedItem.rowSpan = this.currentResizingRowSpan;\n }\n }\n this.zone.run(() => this.cleanUp());\n }\n }\n reorderItems(event) {\n const targets = getDropTarget(event);\n const closestTile = targets.find(t => t !== this.draggedItemWrapper);\n const tileOrder = closestTile ? +closestTile.style.order : +this.draggedItemWrapper.style.order;\n if (this.tileLayoutSettings.autoFlow !== 'none') {\n const deltaX = event.clientX - this.lastDragCursorOffset.x;\n const deltaY = event.clientY - this.lastDragCursorOffset.y;\n const directionX = deltaX > 0 ? 'right' : deltaX < 0 ? 'left' : undefined;\n const directionY = deltaY > 0 ? 'down' : deltaX < 0 ? 'up' : undefined;\n const rect = this.draggedItemWrapper.getBoundingClientRect();\n const horizontalGap = this.tileLayoutSettings.gap.columns;\n const verticalGap = this.tileLayoutSettings.gap.rows;\n if (directionX && this.draggedItem.col) {\n const {\n col\n } = calculateCellFromPosition({\n x: directionX === 'right' ? rect.right - horizontalGap : rect.left + horizontalGap,\n y: event.clientY\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartCol = this.getTargetCol(col, directionX);\n this.currentColStart = targetStartCol.toString();\n }\n if (directionY && this.draggedItem.row) {\n const {\n row\n } = calculateCellFromPosition({\n x: event.clientX,\n y: directionY === 'down' ? rect.bottom - verticalGap : rect.top + verticalGap\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetStartRow = this.getTargetRow(row, directionY);\n this.currentRowStart = targetStartRow.toString();\n }\n }\n const hintBefore = tileOrder < this.targetOrder;\n const hintAfter = tileOrder > this.targetOrder;\n this.zone.run(() => this.targetOrder = tileOrder);\n if (hintBefore) {\n this.tileLayoutSettings.tileLayoutElement.insertBefore(this.tileLayoutSettings.hintElement, this.tileLayoutSettings.tileLayoutElement.firstChild);\n } else if (hintAfter) {\n this.tileLayoutSettings.tileLayoutElement.appendChild(this.tileLayoutSettings.hintElement);\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: event.pageY - this.offset.top - window.scrollY + 'px',\n left: event.pageX - this.offset.left - window.scrollX + 'px'\n });\n this.cdr.markForCheck();\n }\n resizeItem(event) {\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: this.direction.split('k-cursor-')[1]\n });\n const currentWidth = this.rtl ? this.offset.width + (this.offset.x - event.clientX) : this.offset.width + (event.clientX - this.startingPoint.left);\n const currentHeight = this.offset.height + (event.clientY - this.startingPoint.top);\n const hintRect = this.tileLayoutSettings.hintElement.getBoundingClientRect();\n const hintWidth = hintRect.width;\n const hintHeight = hintRect.height;\n const horizontalDragDirection = event.clientX - this.lastDragCursorOffset.x;\n const verticalDragDirection = event.clientY - this.lastDragCursorOffset.y;\n const startCol = this.draggedItem.col ? this.draggedItem.col : calculateCellFromPosition({\n x: this.rtl ? hintRect.right : hintRect.x,\n y: hintRect.y\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl).col;\n const maxWidth = (this.tileLayoutSettings.columns - startCol) * (this.cellSize.width + this.tileLayoutSettings.gap.columns) + this.cellSize.width;\n const resizeHorizontally = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n width: Math.min(Math.max(currentWidth, this.cellSize.width), maxWidth) + 'px'\n });\n if (this.rtl && currentWidth > this.cellSize.width) {\n const totalWidth = this.tileLayoutSettings.columns * (this.cellSize.width + this.tileLayoutSettings.gap.columns);\n const leftBoundary = this.tileLayoutSettings.tileLayoutElement.getBoundingClientRect().right - totalWidth;\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n left: Math.max(event.clientX, leftBoundary) + 'px'\n });\n }\n const deltaX = currentWidth - hintWidth;\n const {\n x,\n y,\n right\n } = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const {\n col\n } = calculateCellFromPosition({\n x: this.rtl ? right : x,\n y: y\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const resizedColSpan = col + this.currentResizingColSpan;\n const expandingCondition = this.rtl ? horizontalDragDirection < 0 : horizontalDragDirection > 0;\n const shrinkingCondition = this.rtl ? horizontalDragDirection > 0 : horizontalDragDirection < 0;\n if (deltaX > OVERLAP_THRESHOLD * this.cellSize.width && expandingCondition && resizedColSpan <= this.tileLayoutSettings.columns) {\n this.currentResizingColSpan++;\n } else if (this.currentResizingColSpan > 1 && shrinkingCondition && deltaX < REVERSE_OVERLAP_THRESHOLD * this.cellSize.width) {\n this.currentResizingColSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridColumnEnd: `span ${this.currentResizingColSpan}`\n });\n };\n const resizeVertically = () => {\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n height: Math.max(currentHeight, this.cellSize.height) + 'px'\n });\n const deltaY = currentHeight - hintHeight;\n if (deltaY > OVERLAP_THRESHOLD * this.cellSize.height && verticalDragDirection > 0) {\n this.currentResizingRowSpan++;\n } else if (this.currentResizingRowSpan > 1 && verticalDragDirection < 0 && deltaY < REVERSE_OVERLAP_THRESHOLD * this.cellSize.height) {\n this.currentResizingRowSpan--;\n }\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n gridRowEnd: `span ${this.currentResizingRowSpan}`\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n height: `${this.calculateHintHeight()}px`\n });\n };\n if (this.direction.indexOf('ew') > -1) {\n resizeHorizontally();\n } else if (this.direction.indexOf('ns') > -1) {\n resizeVertically();\n } else {\n resizeHorizontally();\n resizeVertically();\n }\n }\n cleanUp() {\n this.targetOrder = this.currentResizingColSpan = this.currentColStart = this.currentResizingRowSpan = this.currentRowStart = undefined;\n this.resizing = this.reordering = false;\n this.direction = null;\n if (this.draggedItemWrapper) {\n const grabHandle = this.draggedItemWrapper.querySelector('.k-cursor-grab');\n if (grabHandle) {\n this.renderer.removeClass(grabHandle, 'k-cursor-grabbing');\n }\n setElementStyles(this.renderer, this.draggedItemWrapper, {\n top: '',\n left: '',\n display: '',\n width: '',\n height: '',\n zIndex: '',\n position: ''\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.hintElement, {\n display: 'none',\n height: 'auto'\n });\n setElementStyles(this.renderer, this.tileLayoutSettings.tileLayoutElement, {\n cursor: 'default'\n });\n this.draggedItemWrapper = this.offset = this.draggedItem = this.resizing = this.reordering = this.currentResizingColSpan = this.currentResizingRowSpan = this.startingPoint = undefined;\n this.lastDragCursorOffset = {\n x: 0,\n y: 0\n };\n }\n }\n targetSpan() {\n const itemRect = this.draggedItem.elem.nativeElement.getBoundingClientRect();\n const startingCell = calculateCellFromPosition({\n x: this.rtl ? itemRect.right : itemRect.x,\n y: itemRect.y\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n const targetEndCell = calculateCellFromPosition({\n x: this.rtl ? itemRect.x + OVERLAP_THRESHOLD * this.cellSize.width : itemRect.right - OVERLAP_THRESHOLD * this.cellSize.width,\n y: itemRect.bottom - OVERLAP_THRESHOLD * this.cellSize.height\n }, this.tileLayoutSettings.tileLayoutElement, this.tileLayoutSettings.gap, this.cellSize, this.tileLayoutSettings.columns, this.rtl);\n return {\n targetColSpan: targetEndCell.col - startingCell.col + 1,\n targetRowSpan: targetEndCell.row - startingCell.row + 1\n };\n }\n getTargetCol(col, direction) {\n if (this.rtl) {\n return direction === 'left' ? col - this.draggedItem.colSpan + 1 : col;\n }\n return direction === 'right' ? col - this.draggedItem.colSpan + 1 : col;\n }\n getTargetRow(row, direction) {\n return direction === 'down' ? row - this.draggedItem.rowSpan + 1 : row;\n }\n calculateHintHeight() {\n const totalHintCellsHeight = this.currentResizingRowSpan * this.cellSize.height;\n const totalHintGapsHeight = (this.currentResizingRowSpan - 1) * this.tileLayoutSettings.gap.rows;\n const hintHeight = totalHintCellsHeight + totalHintGapsHeight - HINT_BORDERS_HEIGHT;\n return hintHeight;\n }\n }\n TileLayoutDraggingService.ɵfac = function TileLayoutDraggingService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutDraggingService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.Renderer2), i0.ɵɵinject(i0.ChangeDetectorRef), i0.ɵɵinject(i1.LocalizationService));\n };\n TileLayoutDraggingService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TileLayoutDraggingService,\n factory: TileLayoutDraggingService.ɵfac\n });\n return TileLayoutDraggingService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/* eslint-disable no-unused-expressions */\n/**\n * @hidden\n */\nlet TileLayoutKeyboardNavigationService = /*#__PURE__*/(() => {\n class TileLayoutKeyboardNavigationService {\n constructor(zone, renderer, localization) {\n this.zone = zone;\n this.renderer = renderer;\n this.localization = localization;\n this.navigable = new BehaviorSubject(false);\n this.localizationSubscription = this.localization.changes.subscribe(({\n rtl\n }) => this.rtl = rtl);\n }\n ngOnDestroy() {\n this.localizationSubscription.unsubscribe();\n }\n onKeyDown(event, elem, focusableItems, settings) {\n const keyCode = event.keyCode;\n const isTileFocused = document.activeElement === elem;\n const focusedTile = settings.items.find(item => item.elem.nativeElement === elem);\n const col = getCurrentCol(focusedTile, settings, this.rtl);\n if (keyCode === Keys.Enter && isTileFocused && focusableItems.length > 0) {\n this.changeTabIndex('0', elem, focusableItems);\n focusableItems[0].focus();\n } else if (keyCode === Keys.Escape) {\n this.changeTabIndex('-1', elem, focusableItems);\n elem.focus();\n } else if ((event.ctrlKey || event.metaKey) && isTileFocused && focusedTile.isResizable) {\n event.preventDefault();\n this.zone.run(() => {\n this.resizeItem(keyCode, focusedTile, settings, col);\n });\n } else if (event.shiftKey && isTileFocused && focusedTile.isReorderable) {\n this.zone.run(() => {\n this.reorderItem(keyCode, focusedTile, settings, col);\n });\n } else if (keyCode === Keys.Tab && !isTileFocused) {\n this.keepFocusWithinComponent(event, elem);\n }\n }\n onFocusOut(event, elem, focusableItems) {\n const isTargetFocusable = focusableItems.includes(event.target);\n const isRelatedTargetFocusable = focusableItems.includes(event.relatedTarget);\n if (isTargetFocusable && !isRelatedTargetFocusable) {\n this.changeTabIndex('-1', elem, focusableItems);\n event.relatedTarget?.focus();\n }\n }\n onClick(event, elem, focusableItems) {\n const isTargetFocusable = focusableItems.includes(event.target);\n if (isTargetFocusable) {\n this.changeTabIndex('0', elem, focusableItems);\n event.target.focus();\n }\n }\n changeTabIndex(tabIndex, elem, focusableItems) {\n this.renderer.setAttribute(elem, 'tabindex', tabIndex === '0' ? '-1' : '0');\n focusableItems.forEach(focusItem => {\n this.renderer.setAttribute(focusItem, 'tabindex', tabIndex);\n });\n }\n getAllFocusableChildren(parent) {\n return Array.from(parent.querySelectorAll(focusableSelector)).filter(element => element.offsetParent !== null);\n }\n resizeItem(keyCode, focusedTile, settings, col) {\n const {\n resizeRight,\n resizeLeft,\n resizeDown,\n resizeUp\n } = shouldResize(keyCode, col, focusedTile, settings);\n const resizeHorizontal = resizeLeft || resizeRight;\n const resizeVertical = resizeDown || resizeUp;\n const resizeDir = resizeLeft || resizeUp ? -1 : 1;\n if (resizeHorizontal) {\n focusedTile.colSpan += resizeDir;\n } else if (resizeVertical) {\n focusedTile.rowSpan += resizeDir;\n }\n }\n reorderItem(keyCode, focusedTile, settings, col) {\n const {\n reorderLeft,\n reorderRight\n } = shouldReorder(keyCode, col, focusedTile, settings);\n const onReorderRight = () => {\n const nextTile = this.targetTile(focusedTile, settings.items, 1);\n if (nextTile) {\n focusedTile.order += 1;\n nextTile.order -= 1;\n }\n };\n const onReorderLeft = () => {\n const prevTile = this.targetTile(focusedTile, settings.items, -1);\n if (prevTile) {\n focusedTile.order -= 1;\n prevTile.order += 1;\n }\n };\n if (reorderRight || reorderLeft) {\n const reorderDir = reorderRight ? 1 : -1;\n if (focusedTile.col) {\n focusedTile.col += reorderDir;\n } else {\n reorderRight ? onReorderRight() : onReorderLeft();\n }\n }\n }\n keepFocusWithinComponent(event, wrapper) {\n const [firstFocusable, lastFocusable] = this.getFirstAndLastFocusable(wrapper);\n const tabAfterLastFocusable = !event.shiftKey && event.target === lastFocusable;\n const shiftTabAfterFirstFocusable = event.shiftKey && event.target === firstFocusable;\n if (tabAfterLastFocusable) {\n event.preventDefault();\n firstFocusable.focus();\n wrapper.blur();\n }\n if (shiftTabAfterFirstFocusable) {\n event.preventDefault();\n lastFocusable.focus();\n }\n }\n getFirstAndLastFocusable(parent) {\n const all = this.getAllFocusableChildren(parent);\n const firstFocusable = all.length > 0 ? all[0] : parent;\n const lastFocusable = all.length > 0 ? all[all.length - 1] : parent;\n return [firstFocusable, lastFocusable];\n }\n targetTile(focusedTile, items, offset) {\n return items.find(item => item.order === focusedTile.order + offset);\n }\n }\n TileLayoutKeyboardNavigationService.ɵfac = function TileLayoutKeyboardNavigationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutKeyboardNavigationService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.Renderer2), i0.ɵɵinject(i1.LocalizationService));\n };\n TileLayoutKeyboardNavigationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TileLayoutKeyboardNavigationService,\n factory: TileLayoutKeyboardNavigationService.ɵfac\n });\n return TileLayoutKeyboardNavigationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Holds the content of the header section of the TileLayoutItem component.\n * This is the area which can be dragged to reorder the items if reordering is enabled for this item.\n */\nlet TileLayoutItemHeaderComponent = /*#__PURE__*/(() => {\n class TileLayoutItemHeaderComponent {\n constructor(hostEl, renderer) {\n this.hostEl = hostEl;\n this.renderer = renderer;\n this.hostClass = true;\n }\n /**\n * @hidden\n */\n set reorderable(value) {\n const hostElement = this.hostEl.nativeElement;\n if (value) {\n this.renderer.addClass(hostElement, 'k-touch-action-none');\n this.renderer.removeClass(hostElement, 'k-touch-action-auto');\n } else {\n this.renderer.addClass(hostElement, 'k-touch-action-auto');\n this.renderer.removeClass(hostElement, 'k-touch-action-none');\n }\n }\n }\n TileLayoutItemHeaderComponent.ɵfac = function TileLayoutItemHeaderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutItemHeaderComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n TileLayoutItemHeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TileLayoutItemHeaderComponent,\n selectors: [[\"kendo-tilelayout-item-header\"]],\n hostVars: 4,\n hostBindings: function TileLayoutItemHeaderComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-tilelayout-item-header\", ctx.hostClass)(\"k-card-header\", ctx.hostClass);\n }\n },\n inputs: {\n reorderable: \"reorderable\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function TileLayoutItemHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return TileLayoutItemHeaderComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TileLayoutResizeHandleDirective = /*#__PURE__*/(() => {\n class TileLayoutResizeHandleDirective {\n constructor(el, renderer) {\n this.el = el;\n this.renderer = renderer;\n }\n ngOnInit() {\n this.sizeHandle();\n }\n setHorizontalPosition(element) {\n this.renderer.setStyle(element, this.rtl ? 'left' : 'right', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapX + 'px');\n }\n setBottom(element) {\n this.renderer.setStyle(element, 'bottom', -RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].overlapY + 'px');\n }\n sizeHandle() {\n const element = this.el.nativeElement;\n const handleWidth = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width ? `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].width}px` : '100%';\n const handleHeight = RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height ? `${RESIZE_HANDLE_DIMENSIONS[this.resizeDirection].height}px` : '100%';\n this.renderer.setStyle(element, 'width', handleWidth);\n this.renderer.setStyle(element, 'height', handleHeight);\n if (this.resizeDirection === 'ew') {\n this.setHorizontalPosition(element);\n } else if (this.resizeDirection === 'ns') {\n this.setBottom(element);\n } else {\n this.setHorizontalPosition(element);\n this.setBottom(element);\n }\n }\n }\n TileLayoutResizeHandleDirective.ɵfac = function TileLayoutResizeHandleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutResizeHandleDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n TileLayoutResizeHandleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TileLayoutResizeHandleDirective,\n selectors: [[\"\", \"kendoTileLayoutResizeHandle\", \"\"]],\n inputs: {\n resizeDirection: \"resizeDirection\",\n rtl: \"rtl\"\n },\n standalone: true\n });\n return TileLayoutResizeHandleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a tile item within the TileLayoutComponent.\n */\nlet TileLayoutItemComponent = /*#__PURE__*/(() => {\n class TileLayoutItemComponent {\n constructor(elem, zone, renderer, localization, draggingService, keyboardNavigationService) {\n this.elem = elem;\n this.zone = zone;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n this.keyboardNavigationService = keyboardNavigationService;\n /**\n * Determines how many rows will the tile item span ([see example](slug:tiles_tilelayout#toc-programmatic-resizing)).\n * @default 1\n */\n this.rowSpan = 1;\n /**\n * Determines how many columns will the tile item span ([see example](slug:tiles_tilelayout#toc-programmatic-resizing)).\n * @default 1\n */\n this.colSpan = 1;\n /**\n * Determines whether the item can be reordered. By default all items are reorderable when the [reorderable]({% slug api_layout_tilelayoutcomponent %}#toc-reorderable) property of the TileLayoutComponent is set to `true` ([see example]({% slug reordering_tilelayout %}#toc-disabling-reordering)).\n *\n * @default true\n */\n this.reorderable = true;\n /**\n * Determines whether the item can be resized. By default all items are resizable when the [resizable]({% slug api_layout_tilelayoutcomponent %}#resizable) property of the TileLayoutComponent is set to `true` ([see example](slug:resizing_tilelayout#toc-disabling-resizing)).\n * @default true\n */\n this.resizable = true;\n this.itemClass = true;\n this.hostRole = 'listitem';\n /**\n * @hidden\n */\n this.titleId = '';\n this.subs = new Subscription();\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.rtl = rtl;\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n this.resizeDirections = resizable && this.resizable ? this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }));\n this.titleId = getId('k-tilelayout-title');\n }\n /**\n * Determines the order of the tile items within the TileLayout.\n * If not set, the items will receive increasing sequential order in accordance with\n * their position in the DOM when initially rendered.\n */\n set order(value) {\n this._order = value;\n this.renderer.setStyle(this.elem.nativeElement, 'order', `${this._order}`);\n }\n get order() {\n return this._order;\n }\n get hostDropEffect() {\n return this.isResizable || this.isReorderable ? 'execute' : undefined;\n }\n get hostTabindex() {\n return this.isNavigable ? '0' : undefined;\n }\n get ariaKeyShortcuts() {\n return this.isNavigable ? 'Enter' : undefined;\n }\n get hostGrabbed() {\n return this.isResizable || this.isReorderable;\n }\n get hostLabelledBy() {\n return this.title ? this.titleId : undefined;\n }\n get colEnd() {\n return `span ${this.colSpan}`;\n }\n get rowEnd() {\n return `span ${this.rowSpan}`;\n }\n get colStart() {\n return isPresent(this.col) ? this.col.toString() : undefined;\n }\n get rowStart() {\n return isPresent(this.row) ? this.row.toString() : undefined;\n }\n /**\n * @hidden\n */\n get isReorderable() {\n return this.reorderable && this.draggingService.reorderable.getValue();\n }\n /**\n * @hidden\n */\n get isNavigable() {\n return this.keyboardNavigationService.navigable.getValue();\n }\n /**\n * @hidden\n */\n get isResizable() {\n return this.resizable && this.draggingService.resizable.getValue();\n }\n ngAfterViewInit() {\n const elem = this.elem.nativeElement;\n const keyboardNavigation = this.keyboardNavigationService;\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n this.toggleCursorClass(reorderable && this.reorderable);\n if (this.headers?.first) {\n this.headers.first.reorderable = reorderable && this.reorderable;\n }\n }));\n this.subs.add(keyboardNavigation.navigable.subscribe(isNavigable => {\n if (isNavigable) {\n this.keyboardNavigationSubs = new Subscription();\n this.focusableItems = keyboardNavigation.getAllFocusableChildren(elem);\n this.zone.runOutsideAngular(() => {\n keyboardNavigation.changeTabIndex('-1', elem, this.focusableItems);\n this.keyboardNavigationSubs.add(this.renderer.listen(elem, 'keydown', event => keyboardNavigation.onKeyDown(event, elem, this.focusableItems, this.draggingService.tileLayoutSettings)));\n this.keyboardNavigationSubs.add(this.renderer.listen(elem, 'click', event => keyboardNavigation.onClick(event, elem, this.focusableItems)));\n this.keyboardNavigationSubs.add(this.renderer.listen(elem, 'focusout', event => keyboardNavigation.onFocusOut(event, elem, this.focusableItems)));\n });\n } else if (this.focusableItems) {\n this.focusableItems.forEach(focusItem => {\n this.renderer.setAttribute(focusItem, 'tabindex', '0');\n });\n this.keyboardNavigationSubs.unsubscribe();\n }\n }));\n }\n ngOnChanges(changes) {\n if (changes['reorderable'] && !changes['reorderable'].firstChange) {\n this.toggleCursorClass(changes['reorderable'].currentValue && this.draggingService.reorderable.getValue());\n }\n if (changes['resizable']) {\n this.resizeDirections = this.resizable && this.draggingService.resizable.getValue() ? this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;\n }\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n if (this.keyboardNavigationSubs) {\n this.keyboardNavigationSubs.unsubscribe();\n }\n }\n toggleCursorClass(isReorderable) {\n const headerEl = this.elem.nativeElement.querySelector('.k-tilelayout-item-header');\n if (!headerEl) {\n return;\n }\n if (isReorderable) {\n this.renderer.addClass(headerEl, 'k-cursor-grab');\n } else {\n this.renderer.removeClass(headerEl, 'k-cursor-grab');\n }\n }\n }\n TileLayoutItemComponent.ɵfac = function TileLayoutItemComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutItemComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(TileLayoutDraggingService), i0.ɵɵdirectiveInject(TileLayoutKeyboardNavigationService));\n };\n TileLayoutItemComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TileLayoutItemComponent,\n selectors: [[\"kendo-tilelayout-item\"]],\n contentQueries: function TileLayoutItemComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TileLayoutItemHeaderComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headers = _t);\n }\n },\n hostVars: 18,\n hostBindings: function TileLayoutItemComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.hostRole)(\"aria-dropeffect\", ctx.hostDropEffect)(\"tabindex\", ctx.hostTabindex)(\"aria-keyshortcuts\", ctx.ariaKeyShortcuts)(\"aria-grabbed\", ctx.hostGrabbed)(\"aria-labelledby\", ctx.hostLabelledBy);\n i0.ɵɵstyleProp(\"grid-column-end\", ctx.colEnd)(\"grid-row-end\", ctx.rowEnd)(\"grid-column-start\", ctx.colStart)(\"grid-row-start\", ctx.rowStart);\n i0.ɵɵclassProp(\"k-tilelayout-item\", ctx.itemClass)(\"k-card\", ctx.itemClass);\n }\n },\n inputs: {\n title: \"title\",\n rowSpan: \"rowSpan\",\n colSpan: \"colSpan\",\n order: \"order\",\n col: \"col\",\n row: \"row\",\n reorderable: \"reorderable\",\n resizable: \"resizable\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 3,\n vars: 2,\n consts: [[3, \"reorderable\", 4, \"ngIf\"], [4, \"ngIf\"], [3, \"reorderable\"], [1, \"k-card-title\", 3, \"id\"], [\"kendoTileLayoutResizeHandle\", \"\", 3, \"class\", \"rtl\", \"resizeDirection\", 4, \"ngFor\", \"ngForOf\"], [\"kendoTileLayoutResizeHandle\", \"\", 3, \"rtl\", \"resizeDirection\"]],\n template: function TileLayoutItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, TileLayoutItemComponent_kendo_tilelayout_item_header_0_Template, 3, 3, \"kendo-tilelayout-item-header\", 0);\n i0.ɵɵprojection(1);\n i0.ɵɵtemplate(2, TileLayoutItemComponent_ng_container_2_Template, 2, 1, \"ng-container\", 1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.title);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.resizable);\n }\n },\n dependencies: [NgIf, TileLayoutItemHeaderComponent, NgFor, TileLayoutResizeHandleDirective],\n encapsulation: 2\n });\n return TileLayoutItemComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst autoFlowClasses = {\n column: 'k-grid-flow-col',\n row: 'k-grid-flow-row',\n 'column-dense': 'k-grid-flow-col-dense',\n 'row-dense': 'k-grid-flow-row-dense'\n};\n/**\n * Represents the [Kendo UI TileLayout component for Angular]({% slug overview_tilelayout %})\n */\nlet TileLayoutComponent = /*#__PURE__*/(() => {\n class TileLayoutComponent {\n constructor(zone, elem, renderer, localization, draggingService, navigationService) {\n this.zone = zone;\n this.elem = elem;\n this.renderer = renderer;\n this.localization = localization;\n this.draggingService = draggingService;\n this.navigationService = navigationService;\n /**\n * Defines the number of columns ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default 1\n */\n this.columns = 1;\n /**\n * Determines the width of the columns. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.columnWidth = '1fr';\n /**\n * Determines whether the reordering functionality will be enabled ([see example]({% slug reordering_tilelayout %})).\n * @default false\n */\n this.reorderable = false;\n /**\n * Determines whether the resizing functionality will be enabled ([see example]({% slug resizing_tilelayout %})).\n * @default false\n */\n this.resizable = false;\n /**\n * Determines the height of the rows. Numeric values are treated as pixels ([see example]({% slug tiles_tilelayout %}#toc-tile-size-and-position)).\n * @default '1fr'\n */\n this.rowHeight = '1fr';\n /**\n * Controls how the auto-placement algorithm works, specifying exactly how auto-placed items are flowed in the TileLayout ([see example]({% slug tiles_autoflow_tilelayout %})).\n * For further reference, check the [grid-auto-flow CSS article](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow).\n *\n * The possible values are:\n * * (Default) `column`\n * * `row`\n * * `row dense`\n * * `column dense`\n * * `none`\n *\n */\n this.autoFlow = 'column';\n /**\n * If set to true, the user can use dedicated shortcuts to interact with the TileLayout.\n * By default, navigation is disabled and focusable TileLayout content is a part of the natural tab sequence of the page.\n *\n * @default false\n */\n this.navigable = false;\n /**\n * Fires when the user completes the reordering of the item ([see example]({% slug reordering_tilelayout %})).\n * This event is preventable. If you cancel it, the item will not be reordered.\n */\n this.reorder = new EventEmitter();\n /**\n * Fires when the user completes the resizing of the item ([see example]({% slug resizing_tilelayout %})).\n * This event is preventable. If you cancel it, the item will not be resized.\n */\n this.resize = new EventEmitter();\n this.hostClass = true;\n this.hostRole = 'list';\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this.subs = new Subscription();\n this._gap = {\n rows: 16,\n columns: 16\n };\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n }\n /**\n * The numeric values which determine the spacing in pixels between the layout items horizontally and vertically.\n * Properties:\n * * rows - the vertical spacing. Numeric values are treated as pixels. Defaults to `16`.\n * * columns - the horizontal spacing. Numeric values are treated as pixels. Defaults to `16`.\n *\n * When bound to a single numeric value, it will be set to both `rows` and `columns` properties.\n */\n set gap(value) {\n this._gap = typeof value === 'number' ? {\n rows: value,\n columns: value\n } : Object.assign(this._gap, value);\n }\n get gap() {\n return this._gap;\n }\n get gapStyle() {\n return `${this.gap.rows}px ${this.gap.columns}px`;\n }\n get currentColStart() {\n return this.draggingService.colStart;\n }\n get currentRowStart() {\n return this.draggingService.rowStart;\n }\n get draggedItemWrapper() {\n return this.draggingService.itemWrapper;\n }\n get targetOrder() {\n return this.draggingService.order;\n }\n ngOnInit() {\n this.applyColStyling();\n this.applyRowStyling();\n this.draggingService.reorderable.next(this.reorderable);\n this.draggingService.resizable.next(this.resizable);\n this.navigationService.navigable.next(this.navigable);\n if (hasObservers(this.reorder)) {\n this.subs.add(this.draggingService.reorder.subscribe(e => this.reorder.emit(e)));\n }\n if (hasObservers(this.resize)) {\n this.subs.add(this.draggingService.resize.subscribe(e => this.resize.emit(e)));\n }\n this.subs.add(this.draggingService.reorderable.subscribe(reorderable => {\n if (reorderable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.draggingService.resizable.subscribe(resizable => {\n if (resizable && !this.draggable) {\n this.initializeDraggable();\n }\n }));\n this.subs.add(this.localization.changes.subscribe(({\n rtl\n }) => {\n this.direction = rtl ? 'rtl' : 'ltr';\n }));\n }\n ngAfterViewInit() {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n this.applyAutoFlow(null, autoFlowClasses[this.autoFlow]);\n this.items.changes.subscribe(() => {\n this.setItemsOrder();\n this.draggingService.tileLayoutSettings.items = this.items.toArray();\n });\n }\n ngAfterContentInit() {\n this.setItemsOrder();\n }\n ngOnChanges(changes) {\n if (changes['columns'] || changes['columnWidth']) {\n this.applyColStyling();\n }\n if (changes['rowHeight']) {\n this.applyRowStyling();\n }\n if (isChanged('reorderable', changes)) {\n this.draggingService.reorderable.next(changes['reorderable'].currentValue);\n }\n if (isChanged('resizable', changes)) {\n this.draggingService.resizable.next(changes['resizable'].currentValue);\n }\n if (changes['gap'] || changes['autoFlow'] || changes['columns']) {\n this.draggingService.tileLayoutSettings = this.draggingServiceConfig();\n if (changes['autoFlow']) {\n this.applyAutoFlow(autoFlowClasses[changes['autoFlow'].previousValue] || '', autoFlowClasses[changes['autoFlow'].currentValue]);\n }\n }\n if (isChanged('navigable', changes)) {\n this.navigationService.navigable.next(changes['navigable'].currentValue);\n }\n }\n ngOnDestroy() {\n if (this.draggable) {\n this.draggable.destroy();\n }\n this.subs.unsubscribe();\n }\n handlePress({\n originalEvent\n }) {\n this.draggingService.handlePress(originalEvent);\n }\n handleDrag({\n originalEvent\n }) {\n this.draggingService.handleDrag(originalEvent);\n }\n handleRelease({\n originalEvent\n }) {\n this.draggingService.handleRelease(originalEvent);\n }\n applyColStyling() {\n const colWidth = typeof this.columnWidth === 'number' ? `${this.columnWidth}px` : this.columnWidth;\n const gridTemplateColumnsStyle = `repeat(${this.columns}, ${colWidth})`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-template-columns', gridTemplateColumnsStyle);\n }\n applyRowStyling() {\n const rowHeight = typeof this.rowHeight === 'number' ? `${this.rowHeight}px` : this.rowHeight;\n const gridAutoRowsStyle = `${rowHeight}`;\n this.renderer.setStyle(this.elem.nativeElement, 'grid-auto-rows', gridAutoRowsStyle);\n }\n draggingServiceConfig() {\n return {\n tileLayoutElement: this.elem ? this.elem.nativeElement : undefined,\n hintElement: this.hint ? this.hint.nativeElement : undefined,\n gap: this.gap,\n columns: this.columns,\n autoFlow: this.autoFlow,\n items: this.items ? this.items.toArray() : []\n };\n }\n initializeDraggable() {\n this.draggable = new Draggable({\n press: this.handlePress.bind(this),\n drag: this.handleDrag.bind(this),\n release: this.handleRelease.bind(this)\n });\n this.zone.runOutsideAngular(() => this.draggable.bindTo(this.elem.nativeElement));\n }\n applyAutoFlow(classToRemove, classToAdd) {\n const element = this.elem.nativeElement;\n if (classToRemove) {\n this.renderer.removeClass(element, classToRemove);\n }\n if (this.autoFlow !== 'none' && isPresent(classToAdd)) {\n this.renderer.addClass(element, classToAdd);\n }\n }\n setItemsOrder() {\n this.items.forEach((item, index) => {\n if (!isPresent(item.order)) {\n item.order = index;\n }\n });\n }\n }\n TileLayoutComponent.ɵfac = function TileLayoutComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(TileLayoutDraggingService), i0.ɵɵdirectiveInject(TileLayoutKeyboardNavigationService));\n };\n TileLayoutComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TileLayoutComponent,\n selectors: [[\"kendo-tilelayout\"]],\n contentQueries: function TileLayoutComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TileLayoutItemComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n viewQuery: function TileLayoutComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c26, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.hint = _t.first);\n }\n },\n hostVars: 10,\n hostBindings: function TileLayoutComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.hostRole)(\"dir\", ctx.direction);\n i0.ɵɵstyleProp(\"gap\", ctx.gapStyle)(\"padding\", ctx.gapStyle);\n i0.ɵɵclassProp(\"k-tilelayout\", ctx.hostClass)(\"k-pos-relative\", ctx.hostClass);\n }\n },\n inputs: {\n columns: \"columns\",\n columnWidth: \"columnWidth\",\n gap: \"gap\",\n reorderable: \"reorderable\",\n resizable: \"resizable\",\n rowHeight: \"rowHeight\",\n autoFlow: \"autoFlow\",\n navigable: \"navigable\"\n },\n outputs: {\n reorder: \"reorder\",\n resize: \"resize\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, TileLayoutDraggingService, TileLayoutKeyboardNavigationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.tilelayout.component'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 4,\n vars: 15,\n consts: [[\"hint\", \"\"], [1, \"k-layout-item-hint\", \"k-layout-item-hint-reorder\"], [\"kendoWatermarkOverlay\", \"\", 4, \"ngIf\"], [\"kendoWatermarkOverlay\", \"\"]],\n template: function TileLayoutComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵelement(1, \"div\", 1, 0);\n i0.ɵɵtemplate(3, TileLayoutComponent_div_3_Template, 1, 0, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"display\", \"none\")(\"order\", ctx.targetOrder)(\"grid-column-end\", ctx.draggedItemWrapper == null ? null : ctx.draggedItemWrapper.style.gridColumnEnd)(\"grid-row-end\", ctx.draggedItemWrapper == null ? null : ctx.draggedItemWrapper.style.gridRowEnd)(\"grid-column-start\", ctx.currentColStart)(\"grid-row-start\", ctx.currentRowStart)(\"z-index\", \"1\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.showLicenseWatermark);\n }\n },\n dependencies: [NgIf, WatermarkOverlayComponent],\n encapsulation: 2\n });\n return TileLayoutComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Holds the main content of the TileLayoutItem component.\n */\nlet TileLayoutItemBodyComponent = /*#__PURE__*/(() => {\n class TileLayoutItemBodyComponent {\n constructor() {\n this.hostClass = true;\n this.minHeight = 0;\n }\n }\n TileLayoutItemBodyComponent.ɵfac = function TileLayoutItemBodyComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutItemBodyComponent)();\n };\n TileLayoutItemBodyComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TileLayoutItemBodyComponent,\n selectors: [[\"kendo-tilelayout-item-body\"]],\n hostVars: 6,\n hostBindings: function TileLayoutItemBodyComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"min-height\", ctx.minHeight);\n i0.ɵɵclassProp(\"k-tilelayout-item-body\", ctx.hostClass)(\"k-card-body\", ctx.hostClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function TileLayoutItemBodyComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return TileLayoutItemBodyComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst VERTICAL_SUFFIX = {\n top: 'start',\n middle: 'center',\n bottom: 'end',\n stretch: 'stretch'\n};\n/**\n * @hidden\n */\nconst JUSTIFY_PREFIX = `k-justify-content`;\n/**\n * @hidden\n */\nconst GRID_JUSTIFY_PREFIX = `k-justify-items`;\n/**\n * @hidden\n */\nconst ALIGN_PREFIX = `k-align-items`;\n/**\n * @hidden\n */\nconst normalizeGap = gap => {\n if (typeof gap === 'number' || typeof gap === 'string') {\n return {\n cols: gap,\n rows: gap\n };\n } else {\n const parsedGap = {};\n parsedGap.rows = gap.rows ? gap.rows : 0;\n parsedGap.cols = gap.cols ? gap.cols : 0;\n return parsedGap;\n }\n};\n/**\n * @hidden\n */\nconst generateGapStyle = gap => {\n if (gap.rows === gap.cols) {\n return typeof gap.rows === 'number' ? `${gap.rows}px` : gap.rows;\n } else {\n const rowStyle = `${typeof gap.rows === 'number' ? gap.rows + 'px' : gap.rows}`;\n const colStyle = `${typeof gap.cols === 'number' ? gap.cols + 'px' : gap.cols}`;\n return `${rowStyle} ${colStyle}`;\n }\n};\n/**\n * @hidden\n */\nconst generateGridStyle = (items, itemType) => {\n const styling = [];\n items.forEach(item => {\n if (typeof item === 'number') {\n styling.push(`${item}px`);\n } else if (typeof item === 'string') {\n styling.push(item);\n } else {\n if (itemType === 'rows') {\n const rowHeight = item.height;\n if (rowHeight) {\n styling.push(typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight);\n } else {\n styling.push('0px');\n }\n } else {\n const colWidth = item.width;\n if (colWidth) {\n styling.push(typeof colWidth === 'number' ? `${colWidth}px` : colWidth);\n } else {\n styling.push('0px');\n }\n }\n }\n });\n return styling;\n};\n/**\n * @hidden\n */\nconst validateGridLayoutRowsCols = arr => {\n for (const el of arr) {\n const isNum = typeof el === 'number';\n const isStr = typeof el === 'string';\n const isObject = typeof el === 'object' && el !== null;\n if (!isNum && !isStr && !isObject) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Represents the [Kendo UI GridLayout component for Angular]({% slug overview_gridlayout %}).\n */\nlet GridLayoutComponent = /*#__PURE__*/(() => {\n class GridLayoutComponent {\n constructor(renderer, element, localization) {\n this.renderer = renderer;\n this.element = element;\n this.localization = localization;\n this.hostClass = true;\n /**\n * Specifies the gaps between the elements. The default value is `0`\n * ([see example](slug:layout_gridlayout#toc-gap)).\n */\n this.gap = 0;\n this._align = {\n horizontal: 'stretch',\n vertical: 'stretch'\n };\n validatePackage(packageMetadata);\n }\n get dir() {\n return this.direction;\n }\n /**\n * Specifies the horizontal and vertical alignment of the inner GridLayout elements\n * ([see example]({% slug layout_gridlayout %}#toc-alignment)).\n */\n set align(align) {\n this._align = Object.assign({}, this._align, align);\n this.handleAlignClasses();\n }\n get align() {\n return this._align;\n }\n ngAfterViewInit() {\n this.handleAlignClasses();\n this.handleGridTemplateStyling('rows');\n this.handleGridTemplateStyling('cols');\n this.setGap();\n }\n ngOnChanges(changes) {\n if (isChanged('gap', changes)) {\n this.setGap();\n }\n if (isChanged('rows', changes)) {\n this.handleGridTemplateStyling('rows');\n }\n if (isChanged('cols', changes)) {\n this.handleGridTemplateStyling('cols');\n }\n }\n handleAlignClasses() {\n const elem = this.element.nativeElement;\n if (isPresent(this.justifyClass)) {\n this.renderer.removeClass(elem, this.justifyClass);\n }\n if (isPresent(this.alignClass)) {\n this.renderer.removeClass(elem, this.alignClass);\n }\n this.justifyClass = `${GRID_JUSTIFY_PREFIX}-${this.align.horizontal}`;\n this.alignClass = `${ALIGN_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n this.renderer.addClass(elem, this.justifyClass);\n this.renderer.addClass(elem, this.alignClass);\n }\n setGap() {\n const parsedGap = normalizeGap(this.gap);\n const gapStyle = generateGapStyle(parsedGap);\n this.renderer.setStyle(this.element.nativeElement, 'gap', gapStyle);\n }\n handleGridTemplateStyling(type) {\n if (!isPresent(this[type])) {\n return;\n }\n const isValid = validateGridLayoutRowsCols(this[type]);\n if (!isValid && isDevMode()) {\n const valueType = type === 'rows' ? 'GridLayoutRowSize' : 'GridLayoutColSize';\n throw new Error(`The provided ${type} value contains invalid elements. The array supports values of type number, string or ${valueType}.`);\n }\n const gridTemplateStyle = type === 'rows' ? 'grid-template-rows' : 'grid-template-columns';\n const gridStyle = generateGridStyle(this[type], type);\n this.renderer.setStyle(this.element.nativeElement, gridTemplateStyle, gridStyle.join(' '));\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n }\n GridLayoutComponent.ɵfac = function GridLayoutComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridLayoutComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n GridLayoutComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GridLayoutComponent,\n selectors: [[\"kendo-gridlayout\"]],\n hostVars: 3,\n hostBindings: function GridLayoutComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-grid-layout\", ctx.hostClass);\n }\n },\n inputs: {\n rows: \"rows\",\n cols: \"cols\",\n gap: \"gap\",\n align: \"align\"\n },\n exportAs: [\"kendoGridLayout\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.gridlayout'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function GridLayoutComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return GridLayoutComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet GridLayoutItemComponent = /*#__PURE__*/(() => {\n class GridLayoutItemComponent {\n constructor(renderer, element) {\n this.renderer = renderer;\n this.element = element;\n }\n ngOnInit() {\n this.setItemStyle();\n }\n ngOnChanges() {\n this.setItemStyle();\n }\n setItemStyle() {\n const row = this.row || 'auto';\n const col = this.col || 'auto';\n const rowSpan = this.rowSpan ? `span ${this.rowSpan}` : 'auto';\n const colSpan = this.colSpan ? `span ${this.colSpan}` : 'auto';\n const gridAreaStyle = `${row} / ${col} / ${rowSpan} / ${colSpan}`;\n this.renderer.setStyle(this.element.nativeElement, 'grid-area', gridAreaStyle);\n }\n }\n GridLayoutItemComponent.ɵfac = function GridLayoutItemComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridLayoutItemComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n GridLayoutItemComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GridLayoutItemComponent,\n selectors: [[\"kendo-gridlayout-item\"]],\n inputs: {\n row: \"row\",\n col: \"col\",\n rowSpan: \"rowSpan\",\n colSpan: \"colSpan\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function GridLayoutItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return GridLayoutItemComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the [Kendo UI StackLayout component for Angular]({% slug overview_stacklayout %}).\n */\nlet StackLayoutComponent = /*#__PURE__*/(() => {\n class StackLayoutComponent {\n constructor(renderer, element, localization) {\n this.renderer = renderer;\n this.element = element;\n this.localization = localization;\n this.hostClass = true;\n /**\n * Specifies the gap between the inner StackLayout elements. The default value is `0`\n * ([see example](slug:layout_stacklayout#toc-gap)).\n */\n this.gap = 0;\n /**\n * Specifies the orientation of the StackLayout\n * ([see example]({% slug layout_stacklayout %}#toc-orientation)).\n *\n * The possible values are:\n * (Default) `horizontal`\n * `vertical`\n */\n this.orientation = 'horizontal';\n this._align = {\n horizontal: 'stretch',\n vertical: 'stretch'\n };\n validatePackage(packageMetadata);\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get dir() {\n return this.direction;\n }\n /**\n * Specifies the horizontal and vertical alignment of the inner StackLayout elements\n * ([see example]({% slug layout_stacklayout %}#toc-alignment)).\n */\n set align(align) {\n this._align = Object.assign({}, this._align, align);\n this.handleAlignClasses();\n }\n get align() {\n return this._align;\n }\n ngAfterViewInit() {\n this.handleAlignClasses();\n this.setGap();\n }\n ngOnChanges(changes) {\n if (isChanged('gap', changes)) {\n this.setGap();\n }\n if (isChanged('orientation', changes)) {\n this.handleAlignClasses();\n }\n }\n handleAlignClasses() {\n const elem = this.element.nativeElement;\n if (isPresent(this.justifyClass)) {\n this.renderer.removeClass(elem, this.justifyClass);\n }\n if (isPresent(this.alignClass)) {\n this.renderer.removeClass(elem, this.alignClass);\n }\n if (this.orientation === 'horizontal') {\n this.justifyClass = `${JUSTIFY_PREFIX}-${this.align.horizontal}`;\n this.alignClass = `${ALIGN_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n } else {\n this.justifyClass = `${JUSTIFY_PREFIX}-${VERTICAL_SUFFIX[this.align.vertical]}`;\n this.alignClass = `${ALIGN_PREFIX}-${this.align.horizontal}`;\n }\n this.renderer.addClass(elem, this.justifyClass);\n this.renderer.addClass(elem, this.alignClass);\n }\n setGap() {\n const parsedGap = isNumber(this.gap) ? `${this.gap}px` : this.gap;\n this.renderer.setStyle(this.element.nativeElement, 'gap', parsedGap);\n }\n get direction() {\n return this.localization.rtl ? 'rtl' : 'ltr';\n }\n }\n StackLayoutComponent.ɵfac = function StackLayoutComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StackLayoutComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n StackLayoutComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StackLayoutComponent,\n selectors: [[\"kendo-stacklayout\"]],\n hostVars: 7,\n hostBindings: function StackLayoutComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-stack-layout\", ctx.hostClass)(\"k-hstack\", ctx.horizontalClass)(\"k-vstack\", ctx.verticalClass);\n }\n },\n inputs: {\n align: \"align\",\n gap: \"gap\",\n orientation: \"orientation\"\n },\n exportAs: [\"kendoStackLayout\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.stacklayout'\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c8,\n decls: 1,\n vars: 0,\n template: function StackLayoutComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return StackLayoutComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TimelineMessages = /*#__PURE__*/(() => {\n class TimelineMessages extends ComponentMessages {}\n TimelineMessages.ɵfac = /* @__PURE__ */(() => {\n let ɵTimelineMessages_BaseFactory;\n return function TimelineMessages_Factory(__ngFactoryType__) {\n return (ɵTimelineMessages_BaseFactory || (ɵTimelineMessages_BaseFactory = i0.ɵɵgetInheritedFactory(TimelineMessages)))(__ngFactoryType__ || TimelineMessages);\n };\n })();\n TimelineMessages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TimelineMessages,\n selectors: [[\"kendo-timeline-messages-base\"]],\n inputs: {\n previous: \"previous\",\n next: \"next\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return TimelineMessages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Custom component messages override default component messages.\n */\nlet TimelineCustomMessagesComponent = /*#__PURE__*/(() => {\n class TimelineCustomMessagesComponent extends TimelineMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n TimelineCustomMessagesComponent.ɵfac = function TimelineCustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineCustomMessagesComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n TimelineCustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TimelineCustomMessagesComponent,\n selectors: [[\"kendo-timeline-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: TimelineMessages,\n useExisting: forwardRef(() => TimelineCustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function TimelineCustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return TimelineCustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the actions of each timeline card. To define an actions template, nest an `` tag\n * with the `kendoTimelineCardActionsTemplate` directive inside the `` tag.\n *\n * The following values are available as context variables:\n * - `let-event=\"event\"` (`TimelineEvent`) - The current card's event. Also available as implicit context variable.\n * - `let-index=\"index\"` (`number`) - The current event index.\n */\nlet TimelineCardActionsTemplateDirective = /*#__PURE__*/(() => {\n class TimelineCardActionsTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n TimelineCardActionsTemplateDirective.ɵfac = function TimelineCardActionsTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineCardActionsTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n TimelineCardActionsTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TimelineCardActionsTemplateDirective,\n selectors: [[\"\", \"kendoTimelineCardActionsTemplate\", \"\"]],\n standalone: true\n });\n return TimelineCardActionsTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the body of each timeline card. To define a body template, nest an `` tag\n * with the `kendoTimelineCardBodyTemplate` directive inside the `` tag.\n *\n * The following values are available as context variables:\n * - `let-event=\"event\"` (`TimelineEvent`) - The current card's event. Also available as implicit context variable.\n * - `let-index=\"index\"` (`number`) - The current event index.\n */\nlet TimelineCardBodyTemplateDirective = /*#__PURE__*/(() => {\n class TimelineCardBodyTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n TimelineCardBodyTemplateDirective.ɵfac = function TimelineCardBodyTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineCardBodyTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n TimelineCardBodyTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TimelineCardBodyTemplateDirective,\n selectors: [[\"\", \"kendoTimelineCardBodyTemplate\", \"\"]],\n standalone: true\n });\n return TimelineCardBodyTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Specifies the header of each timeline card. To define a header template, nest an `` tag\n * with the `kendoTimelineCardHeaderTemplate` directive inside the `` tag.\n *\n * The following values are available as context variables:\n * - `let-event=\"event\"` (`TimelineEvent`) - The current card's event. Also available as implicit context variable.\n * - `let-index=\"index\"` (`number`) - The current event index.\n */\nlet TimelineCardHeaderTemplateDirective = /*#__PURE__*/(() => {\n class TimelineCardHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n TimelineCardHeaderTemplateDirective.ɵfac = function TimelineCardHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineCardHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n TimelineCardHeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TimelineCardHeaderTemplateDirective,\n selectors: [[\"\", \"kendoTimelineCardHeaderTemplate\", \"\"]],\n standalone: true\n });\n return TimelineCardHeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst defaultModelFields = {\n title: 'title',\n subtitle: 'subtitle',\n description: 'description',\n date: 'date',\n expanded: 'expanded',\n images: 'images',\n actions: 'actions'\n};\n\n/**\n * @hidden\n */\nconst processItems = (items, fields) => {\n return items.map(item => parseItem(item, fields));\n};\n/**\n * @hidden\n */\nconst parseItem = (item, fields) => ({\n title: item[fields.title] || item.title,\n date: item[fields.date] || item.date,\n subtitle: item[fields.subtitle] || item.subtitle,\n description: item[fields.description] || item.description,\n expanded: item[fields.expanded] || item.expanded,\n images: item[fields.images] || item.images,\n actions: item[fields.actions] || item.actions\n});\n/**\n * @hidden\n */\nconst MAX_VISIBLE_EVENTS = 3;\n\n/**\n * @hidden\n */\nlet TimelineService = /*#__PURE__*/(() => {\n class TimelineService {\n onToggle(event) {\n if (this.timeline) {\n this.timeline['onToggle']?.emit(event);\n }\n }\n onActionClick(event) {\n if (this.timeline) {\n this.timeline['onActionClick']?.emit(event);\n }\n }\n onNavigate(event) {\n if (this.timeline) {\n this.timeline['onNavigate']?.emit(event);\n }\n }\n }\n TimelineService.ɵfac = function TimelineService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineService)();\n };\n TimelineService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TimelineService,\n factory: TimelineService.ɵfac\n });\n return TimelineService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TimelineCardComponent = /*#__PURE__*/(() => {\n class TimelineCardComponent {\n constructor(element, timelineService, renderer) {\n this.element = element;\n this.timelineService = timelineService;\n this.renderer = renderer;\n this.expanded = false;\n this.collapsible = true;\n this.reversed = false;\n this.hostClass = true;\n this.calloutSvgIcon = chevronRightIcon;\n this.calloutFontIcon = 'arrow-chevron-right';\n this.animationState = this.expanded ? 'expanded' : 'collapsed';\n this.animationInProgress = false;\n }\n set calloutStyle(value) {\n // applies only to horizontal orientation where the callout points upwards\n if (!this.calloutElementRef || !this.calloutElementRef.nativeElement.classList.contains('k-callout-n')) {\n return;\n }\n this.calloutElementRef.nativeElement.style.left = value?.left;\n }\n get collapsedClass() {\n return !this.expanded && !this.animationInProgress && this.animationState === 'collapsed';\n }\n onComponentKeyDown(event) {\n if (!this.navigable) {\n return;\n }\n if (event.keyCode === Keys.Space || event.keyCode === Keys.Enter) {\n event.preventDefault();\n if (this.collapsible && this.orientation === 'vertical') {\n this.expanded = !this.expanded;\n }\n }\n }\n get role() {\n return this.orientation === 'vertical' ? 'button' : 'tabpanel';\n }\n get ariaLive() {\n return this.orientation === 'vertical' ? 'polite' : null;\n }\n get ariaExpanded() {\n return this.orientation === 'vertical' ? this.expanded : null;\n }\n ngAfterViewInit() {\n this.makeOverflowVisible();\n }\n ngOnChanges(changes) {\n if (isChanged('collapsible', changes, false)) {\n if (!this.collapsible) {\n this.expanded = true;\n }\n }\n }\n toggle() {\n if (this.orientation === 'vertical') {\n this.expanded = this.collapsible ? !this.expanded : true;\n this.timelineService.onToggle(this.index);\n }\n }\n expand() {\n if (!this.expanded) {\n this.expanded = true;\n this.timelineService.onToggle(this.index);\n }\n }\n collapse() {\n if (!this.collapsible || !this.expanded) {\n return;\n }\n this.expanded = false;\n this.timelineService.onToggle(this.index);\n }\n onActionClick(event) {\n event.stopPropagation();\n this.timelineService.onActionClick(this.index);\n }\n animationStart() {\n this.animationInProgress = true;\n }\n animationDone(event) {\n this.animationInProgress = false;\n if (event.toState === 'expanded' && event.fromState !== 'expanded') {\n this.animationState = 'expanded';\n this.makeOverflowVisible();\n } else if (event.toState === 'collapsed' && event.fromState !== 'collapsed') {\n this.animationState = 'collapsed';\n }\n }\n makeOverflowVisible() {\n if (this.orientation === 'vertical') {\n return;\n }\n const cardBody = this.element?.nativeElement.querySelector('.k-card-body');\n if (cardBody) {\n this.renderer.setStyle(cardBody, 'overflow', 'auto');\n }\n }\n }\n TimelineCardComponent.ɵfac = function TimelineCardComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineCardComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(TimelineService), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n TimelineCardComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TimelineCardComponent,\n selectors: [[\"kendo-timeline-card\"]],\n viewQuery: function TimelineCardComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c27, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.calloutElementRef = _t.first);\n }\n },\n hostVars: 4,\n hostBindings: function TimelineCardComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function TimelineCardComponent_keydown_HostBindingHandler($event) {\n return ctx.onComponentKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-timeline-card\", ctx.hostClass)(\"k-collapsed\", ctx.collapsedClass);\n }\n },\n inputs: {\n event: \"event\",\n expanded: \"expanded\",\n collapsible: \"collapsible\",\n reversed: \"reversed\",\n orientation: \"orientation\",\n navigable: \"navigable\",\n tabIndex: \"tabIndex\",\n animationDuration: \"animationDuration\",\n index: \"index\",\n eventWidth: \"eventWidth\",\n eventHeight: \"eventHeight\",\n headerTemplate: \"headerTemplate\",\n bodyTemplate: \"bodyTemplate\",\n actionsTemplate: \"actionsTemplate\",\n calloutStyle: \"calloutStyle\"\n },\n exportAs: [\"kendoTimelineCard\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 14,\n consts: [[\"callout\", \"\"], [1, \"k-card-with-callout\", \"k-card-vertical\", 3, \"click\", \"ngStyle\", \"width\"], [1, \"k-timeline-card-callout\", \"k-card-callout\", 3, \"ngClass\"], [\"class\", \"k-card-inner\", 4, \"ngIf\"], [1, \"k-card-inner\"], [4, \"ngIf\"], [\"kendoCardTitle\", \"\", 4, \"ngIf\"], [\"kendoCardSubtitle\", \"\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"kendoCardTitle\", \"\"], [1, \"k-event-title\"], [\"kendoButton\", \"\", \"class\", \"k-event-collapse\", \"fillMode\", \"flat\", \"tabindex\", \"-1\", \"type\", \"button\", 3, \"icon\", \"svgIcon\", 4, \"ngIf\"], [\"kendoButton\", \"\", \"fillMode\", \"flat\", \"tabindex\", \"-1\", \"type\", \"button\", 1, \"k-event-collapse\", 3, \"icon\", \"svgIcon\"], [\"kendoCardSubtitle\", \"\"], [\"class\", \"k-card-description\", 4, \"ngIf\"], [1, \"k-card-description\"], [4, \"ngFor\", \"ngForOf\"], [\"kendoCardMedia\", \"\", 3, \"src\", \"alt\", 4, \"ngIf\"], [\"kendoCardMedia\", \"\", 3, \"src\", 4, \"ngIf\"], [\"kendoCardMedia\", \"\", 3, \"src\", \"alt\"], [\"kendoCardMedia\", \"\", 3, \"src\"], [\"class\", \"k-button k-button-md k-rounded-md k-button-flat k-button-flat-primary\", \"role\", \"button\", 3, \"href\", \"target\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"button\", 1, \"k-button\", \"k-button-md\", \"k-rounded-md\", \"k-button-flat\", \"k-button-flat-primary\", 3, \"click\", \"href\", \"target\"]],\n template: function TimelineCardComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-card\", 1);\n i0.ɵɵlistener(\"click\", function TimelineCardComponent_Template_kendo_card_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.toggle());\n });\n i0.ɵɵelement(1, \"span\", 2, 0);\n i0.ɵɵtemplate(3, TimelineCardComponent_div_3_Template, 7, 5, \"div\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(8, _c28, ctx.orientation === \"horizontal\" ? ctx.eventHeight + \"px\" : null))(\"width\", ctx.orientation === \"horizontal\" ? \"auto\" : ctx.eventWidth + \"px\");\n i0.ɵɵattribute(\"role\", ctx.role)(\"aria-live\", ctx.ariaLive)(\"aria-expanded\", ctx.ariaExpanded)(\"tabindex\", ctx.tabIndex);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(10, _c29, ctx.orientation === \"horizontal\", ctx.orientation === \"vertical\" && !ctx.reversed, ctx.orientation === \"vertical\" && ctx.reversed));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.event);\n }\n },\n dependencies: [CardComponent, NgStyle, NgClass, NgIf, CardHeaderComponent, NgTemplateOutlet, CardTitleDirective, ButtonComponent, CardSubtitleDirective, CardBodyComponent, NgFor, CardMediaDirective, CardActionsComponent],\n encapsulation: 2,\n data: {\n animation: [trigger('toggle', [state('collapsed', style({\n height: '0',\n 'overflow-y': 'hidden',\n display: 'none'\n })), state('expanded', style({\n height: '*',\n 'overflow-y': 'hidden',\n display: 'block'\n })), transition('collapsed <=> expanded', [animate('{{animationDuration}}ms')], {\n params: {\n animationDuration: '400'\n }\n })])]\n }\n });\n return TimelineCardComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_TAB_WIDTH = 200;\nconst SPACE_BETWEEN_TABS = 25;\nconst TRANSITION_EVENTS_COUNT = 3;\n/**\n * @hidden\n */\nlet TimelineHorizontalComponent = /*#__PURE__*/(() => {\n class TimelineHorizontalComponent {\n constructor(cdr, _zone, renderer, timelineService, localization) {\n this.cdr = cdr;\n this._zone = _zone;\n this.renderer = renderer;\n this.timelineService = timelineService;\n this.localization = localization;\n this.events = [];\n this.svgLeftIcon = caretAltLeftIcon;\n this.svgRightIcon = caretAltRightIcon;\n this.animationState = 'center';\n this.translateValue = 0;\n this.eventsInInterval = [0, 1, 2];\n this.selectedCardIndex = 0;\n this.tabWidth = DEFAULT_TAB_WIDTH;\n this.firstCircleInView = 0;\n this.visibleEvents = [];\n this.trackItems = [];\n this.previousTitle = 'previous';\n this.nextTitle = 'next';\n this.subscriptions = new Subscription();\n }\n get selectedEvent() {\n return this._selectedEvent;\n }\n set selectedEvent(value) {\n if (this._selectedEvent === value) {\n return;\n }\n const newSelectedIndex = this.events.findIndex(event => event === value);\n if (newSelectedIndex === -1 && value !== null) {\n return;\n }\n this._selectedEvent = value;\n this.selectedEventIndex = newSelectedIndex;\n this.calloutStyle = this.calloutOffset;\n }\n ngOnInit() {\n this._zone.runOutsideAngular(() => isDocumentAvailable() && this.subscriptions.add(fromEvent(window, 'resize').subscribe(this.handleWindowResize.bind(this))));\n this.l10nChange();\n this.subscriptions.add(this.localization.changes.subscribe(this.l10nChange.bind(this)));\n if (this.events.length > 0) {\n this.selectedEvent = this.events[0];\n }\n this.events.forEach(event => {\n if (event.flag) {\n this.trackItems.push({\n isFlag: event.flag\n });\n }\n this.trackItems.push(event);\n });\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.subscriptions.add(this.renderer.listen(this.trackElementRef.nativeElement, 'keydown', this.onKeyDown.bind(this)));\n this.trackWrapWidth = this.trackElementRef.nativeElement.getBoundingClientRect().width;\n this.scrollableTrackWidth = this.scrollableTrackElementRef.nativeElement.getBoundingClientRect().width;\n this._zone.runOutsideAngular(() => {\n this.onCirclesChange();\n this.subscriptions.add(this.circleElementRefs.changes.subscribe(this.onCirclesChange.bind(this)));\n this.subscriptions.add(this.cardElementRefs.changes.subscribe(this.onCardsChange.bind(this)));\n });\n if (this.events.length === 0) {\n return;\n }\n this.onCardsChange();\n if (this.cardComponents.get(this.selectedCardIndex)) {\n this.cardComponents.get(this.selectedCardIndex).calloutStyle = this.calloutOffset;\n this.focusTrackItem(0);\n }\n }\n ngOnChanges(changes) {\n if (isChanged('events', changes)) {\n if (!this.events || this.events.length === 0) {\n this.selectedEvent = null;\n this.trackItems = [];\n this.visibleEvents = [];\n } else {\n this.trackItems = [];\n this.events.forEach(event => {\n if (event.flag) {\n this.trackItems.push({\n isFlag: event.flag\n });\n }\n this.trackItems.push(event);\n });\n this.visibleEvents = this.trackItems.slice(this.firstCircleInView, this.firstCircleInView + this.visibleTabsCount).filter(event => !event.isFlag);\n this.selectedEvent = this.events[0];\n this.cdr.detectChanges();\n this.calloutStyle = this.calloutOffset;\n this.focusTrackItem(0);\n }\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n handleWindowResize() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.trackWrapWidth === this.trackElementRef.nativeElement.getBoundingClientRect().width) {\n return;\n }\n this.cardWidth = this.cardComponents.get(this.selectedCardIndex).element.nativeElement.offsetWidth;\n this.transformCards();\n this.trackWrapWidth = this.trackElementRef.nativeElement.getBoundingClientRect().width;\n this.scrollableTrackWidth = this.scrollableTrackElementRef.nativeElement.getBoundingClientRect().width;\n this.changeTabsCount();\n this._zone.run(() => {\n this.cardComponents.get(this.selectedCardIndex).calloutStyle = this.calloutOffset;\n });\n }\n onTransitionEnd() {\n this.cardElementRefs?.forEach(card => this.renderer.removeStyle(card.nativeElement, 'transition-duration'));\n this.cardComponents.get(this.selectedCardIndex).event = this.selectedEvent;\n this.calloutStyle = this.calloutOffset;\n }\n onTrackTransitionEnd() {\n this.calloutStyle = this.calloutOffset;\n }\n onSlideDone() {\n this.calloutStyle = this.calloutOffset;\n }\n previous() {\n if (this.firstCircleInView === 0) {\n return;\n }\n this.updateInterval(false);\n }\n previousClick() {\n this.previous();\n this.timelineService.onNavigate('previous');\n }\n next() {\n if (!this.visibleTabsCount || this.firstCircleInView + this.visibleTabsCount > this.trackItems.length) {\n return;\n }\n this.updateInterval(true);\n }\n nextClick() {\n this.next();\n this.timelineService.onNavigate('next');\n }\n open(index) {\n if (index < 0 || index >= this.events.length) {\n return;\n }\n if (this.visibleEvents.findIndex(event => event === this.events[index]) === -1) {\n // determine the start and end of the interval that the event belongs to, regardless of its position in the interval\n const trackItemIndex = this.trackItems.findIndex(event => event === this.events[index]);\n const start = Math.floor(trackItemIndex / this.visibleTabsCount) * this.visibleTabsCount;\n this.navigateToInterval(start, index);\n }\n this.selectedEvent = this.events[index];\n this.selectedCardIndex = this.getOtherSelectedCardIndex(index > this.selectedEventIndex);\n this.calloutStyle = this.calloutOffset;\n this.focusTrackItem(this.selectedEventIndex);\n this.animateCards();\n }\n navigateToEvent(index) {\n const eventIndex = this.events.findIndex(event => event === this.trackItems[index]);\n if (this.selectedEventIndex === eventIndex) {\n return;\n }\n this.selectedEvent = this.events[eventIndex];\n this.selectedCardIndex = this.getOtherSelectedCardIndex(index > eventIndex);\n this.calloutStyle = this.calloutOffset;\n this.animateCards();\n }\n getOtherSelectedCardIndex(forward) {\n // change the selected card which changes all cards' transform styles\n if (forward) {\n return this.selectedCardIndex === 0 ? TRANSITION_EVENTS_COUNT - 1 : this.selectedCardIndex - 1;\n }\n return this.selectedCardIndex === TRANSITION_EVENTS_COUNT - 1 ? 0 : this.selectedCardIndex + 1;\n }\n tabStyle() {\n if (!this.tabFlex) {\n return {};\n }\n return {\n 'flex': `1 0 ${this.tabFlex}%`\n };\n }\n getTransformation(width, position) {\n if (position === this.selectedCardIndex - 1 || position === this.selectedCardIndex + 2) {\n return `translate3d(${-width}px, 0, 0)`;\n }\n if (position === this.selectedCardIndex + 1 || position === this.selectedCardIndex - 2) {\n return `translate3d(${width}px, 0, 0)`;\n }\n return `translate3d(0, 0, 0)`;\n }\n getState(position) {\n if (position === this.selectedCardIndex) {\n return 'center';\n }\n if (position === this.selectedCardIndex - 1 || position === this.selectedCardIndex + 2) {\n return 'left';\n }\n return 'right';\n }\n get calloutOffset() {\n if (!isDocumentAvailable() || !this.circleElementRefs?.first || !this.trackElementRef || !isPresent$1(this.selectedEventIndex)) {\n return {};\n }\n const circleCenter = this.circleElementRefs.get(this.selectedEventIndex).nativeElement.getBoundingClientRect().left + this.circleElementRefs.get(this.selectedEventIndex).nativeElement.offsetWidth / 2;\n const trackOffset = this.trackElementRef.nativeElement.getBoundingClientRect().left;\n return {\n left: `${circleCenter - trackOffset}px`\n };\n }\n get isFirstRange() {\n return this.firstCircleInView === 0;\n }\n get isLastRange() {\n if (!this.circleElementRefs?.first && !this.flagElementRefs?.first) {\n return false;\n }\n return this.trackItems.length === 0 || this.firstCircleInView + this.visibleTabsCount >= this.trackItems.length;\n }\n onCardsChange() {\n if (this.cardElementRefs?.get(this.selectedCardIndex)) {\n this.cardWidth = this.cardElementRefs.get(this.selectedCardIndex).nativeElement.offsetWidth;\n this.transformCards();\n }\n }\n onCirclesChange() {\n if (!this.circleElementRefs?.first) {\n return;\n }\n this.circleElementRefs.map(element => element.nativeElement).forEach((element, index) => {\n this.subscriptions.add(this.renderer.listen(element, 'click', () => {\n this.focusTrackItem(index);\n }));\n });\n const width = this.circleElementRefs.first.nativeElement.getBoundingClientRect().width;\n if (width > DEFAULT_TAB_WIDTH) {\n this.tabWidth = this.circleElementRefs.first.nativeElement.getBoundingClientRect().width + SPACE_BETWEEN_TABS;\n }\n this.changeTabsCount();\n this.visibleEvents = this.trackItems.slice(this.firstCircleInView, this.firstCircleInView + this.visibleTabsCount).filter(event => !event.isFlag);\n }\n onKeyDown(event) {\n if (!this.navigable) {\n return;\n }\n event.preventDefault();\n if (event.keyCode === Keys.Home) {\n this.onHomeKey();\n } else if (event.keyCode === Keys.End) {\n this.onEndKey();\n } else if (event.keyCode === Keys.ArrowRight) {\n this.onArrowRightKey();\n } else if (event.keyCode === Keys.ArrowLeft) {\n this.onArrowLeftKey();\n }\n }\n focusTrackItem(index) {\n if (!isDocumentAvailable()) {\n return;\n }\n if (!this.circleElementRefs || index < 0 || index >= this.circleElementRefs.length) {\n return;\n }\n const selectedTrackItem = this.circleElementRefs.find(element => element.nativeElement.hasAttribute('aria-selected'));\n if (selectedTrackItem) {\n this.removeTrackItemAttributes(selectedTrackItem);\n this.removeCardsAttributes();\n }\n const newTrackItem = this.circleElementRefs.get(index).nativeElement;\n this.setTrackItemAttributes(newTrackItem, index);\n }\n setTrackItemAttributes(element, index) {\n if (!isDocumentAvailable()) {\n return;\n }\n const innerCard = this.cardComponents.get(this.selectedCardIndex).element.nativeElement.querySelector('.k-card');\n const selectedCircle = this.circleElementRefs.get(index).nativeElement;\n this.renderer.addClass(element, 'k-focus');\n this.renderer.setAttribute(element, 'aria-selected', 'true');\n this.assignAriaLabel(innerCard, selectedCircle);\n this.assignAriaDescribedBy(innerCard, selectedCircle);\n }\n removeTrackItemAttributes(element) {\n this.renderer.removeClass(element.nativeElement, 'k-focus');\n this.renderer.removeAttribute(element.nativeElement, 'aria-selected');\n this.renderer.removeAttribute(element.nativeElement, 'id');\n this.renderer.removeAttribute(element.nativeElement, 'aria-describedby');\n }\n removeCardsAttributes() {\n this.cardElementRefs.forEach(card => {\n this.renderer.removeAttribute(card.nativeElement.querySelector('.k-card'), 'id');\n this.renderer.removeAttribute(card.nativeElement.querySelector('.k-card'), 'aria-label');\n });\n }\n assignAriaLabel(cardElement, dateElement) {\n const dateLabelId = `k-${guid()}`;\n this.renderer.setAttribute(dateElement, 'id', dateLabelId);\n this.renderer.setAttribute(cardElement, 'aria-label', dateLabelId);\n }\n assignAriaDescribedBy(cardElement, dateElement) {\n const cardId = `k-${guid()}`;\n this.renderer.setAttribute(cardElement, 'id', cardId);\n this.renderer.setAttribute(dateElement, 'aria-describedby', cardId);\n }\n updateInterval(forward) {\n let start = forward ? this.firstCircleInView + this.visibleTabsCount : this.firstCircleInView - this.visibleTabsCount;\n if (start < 0 || start >= this.trackItems.length) {\n start = 0;\n }\n this.navigateToInterval(start, 0, forward, !forward);\n }\n onHomeKey() {\n if (this.selectedEvent === this.events[0]) {\n return;\n }\n this.navigateToFirstInterval();\n }\n onEndKey() {\n if (this.selectedEvent === this.events[this.events.length - 1]) {\n return;\n }\n this.navigateToLastInterval();\n }\n onArrowRightKey() {\n this.navigateToOtherEvent(true);\n }\n onArrowLeftKey() {\n this.navigateToOtherEvent(false);\n }\n navigateToFirstInterval() {\n this.navigateToInterval(0);\n }\n navigateToLastInterval() {\n const start = Math.floor((this.trackItems.length - 1) / this.visibleTabsCount) * this.visibleTabsCount;\n this.navigateToInterval(start, this.events.length - 1);\n }\n navigateToOtherEvent(direction) {\n const offset = direction ? 1 : -1;\n const newIndex = this.selectedEventIndex + offset;\n if (newIndex < 0 || newIndex >= this.events.length) {\n return;\n }\n if (this.visibleEvents.findIndex(event => event === this.events[newIndex]) === -1) {\n this.updateInterval(direction);\n } else {\n this.selectedEvent = this.events[newIndex];\n this.selectedCardIndex = this.getOtherSelectedCardIndex(direction);\n this.focusTrackItem(this.selectedEventIndex);\n this.animateCards();\n this.cdr.markForCheck();\n }\n }\n navigateToInterval(start, selectedIndex = 0, selectFirst = false, selectLast = false) {\n const end = start + this.visibleTabsCount < this.trackItems.length ? start + this.visibleTabsCount : undefined;\n const forward = this.firstCircleInView < start;\n this.firstCircleInView = start;\n const interval = Math.floor(start / this.visibleTabsCount);\n this.translateValue = interval * -100;\n this.animationState = forward ? 'right' : 'left';\n this.visibleEvents = this.trackItems.slice(this.firstCircleInView, end).filter(event => !event.isFlag);\n if (selectFirst) {\n this.selectedEvent = this.visibleEvents[0];\n } else if (selectLast) {\n this.selectedEvent = this.visibleEvents[this.visibleEvents.length - 1];\n } else {\n this.selectedEvent = this.events[selectedIndex];\n }\n this.selectedCardIndex = this.getOtherSelectedCardIndex(forward);\n this.cdr.detectChanges();\n this.focusTrackItem(this.selectedEventIndex);\n this.animateCards();\n this.calloutStyle = this.calloutOffset;\n this.cdr.markForCheck();\n }\n animateCards() {\n if (this.animationDuration) {\n this.cardComponents.get(this.selectedCardIndex).event = null;\n }\n this.cardElementRefs.forEach((card, index) => {\n this.renderer.setStyle(card.nativeElement, 'transform', this.getTransformation(this.cardWidth, index));\n this.renderer.setStyle(card.nativeElement, 'transition-duration', `${this.animationDuration || 0}ms`);\n });\n }\n transformCards() {\n this.cardElementRefs.forEach((card, index) => this.renderer.setStyle(card.nativeElement, 'transform', this.getTransformation(this.cardWidth, index)));\n }\n changeTabsCount() {\n this.visibleTabsCount = Math.round(this.scrollableTrackWidth / this.tabWidth);\n if (this.tabFlex !== 100 / this.visibleTabsCount) {\n this.tabFlex = 100 / this.visibleTabsCount;\n this.circleElementRefs.forEach(item => this.renderer.setStyle(item.nativeElement, 'flex', `1 0 ${this.tabFlex}%`));\n this.flagElementRefs.forEach(item => this.renderer.setStyle(item.nativeElement, 'flex', `1 0 ${this.tabFlex}%`));\n this.cdr.detectChanges();\n this.visibleEvents = this.trackItems.slice(this.firstCircleInView, this.firstCircleInView + this.visibleTabsCount).filter(event => !event.isFlag);\n if (!this.visibleEvents.find(event => event === this.selectedEvent)) {\n const trackItemIndex = this.trackItems.findIndex(event => event === this.selectedEvent);\n this.navigateToInterval(trackItemIndex, this.selectedEventIndex);\n }\n }\n }\n l10nChange() {\n if (this.localization.get('previous')) {\n this.previousTitle = this.localization.get('previous');\n }\n if (this.localization.get('next')) {\n this.nextTitle = this.localization.get('next');\n }\n this.cdr.markForCheck();\n }\n }\n TimelineHorizontalComponent.ɵfac = function TimelineHorizontalComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineHorizontalComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(TimelineService), i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n TimelineHorizontalComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TimelineHorizontalComponent,\n selectors: [[\"kendo-timeline-horizontal\"]],\n viewQuery: function TimelineHorizontalComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c32, 5);\n i0.ɵɵviewQuery(_c33, 5);\n i0.ɵɵviewQuery(_c34, 5, ElementRef);\n i0.ɵɵviewQuery(_c35, 5);\n i0.ɵɵviewQuery(_c36, 5);\n i0.ɵɵviewQuery(TimelineCardComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.trackElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scrollableTrackElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cardElementRefs = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.circleElementRefs = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.flagElementRefs = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cardComponents = _t);\n }\n },\n inputs: {\n events: \"events\",\n alterMode: \"alterMode\",\n collapsibleEvents: \"collapsibleEvents\",\n navigable: \"navigable\",\n showDateLabels: \"showDateLabels\",\n animationDuration: \"animationDuration\",\n eventHeight: \"eventHeight\",\n dateFormat: \"dateFormat\",\n headerTemplate: \"headerTemplate\",\n bodyTemplate: \"bodyTemplate\",\n actionsTemplate: \"actionsTemplate\"\n },\n exportAs: [\"kendoTimelineHorizontal\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 10,\n vars: 18,\n consts: [[\"track\", \"\"], [\"scrollableTrack\", \"\"], [\"trackFlag\", \"\"], [\"trackCircle\", \"\"], [\"card\", \"\"], [1, \"k-timeline-track-wrap\"], [\"kendoButton\", \"\", \"rounded\", \"full\", \"tabindex\", \"-1\", \"type\", \"button\", 1, \"k-timeline-arrow\", \"k-timeline-arrow-left\", 3, \"click\", \"svgIcon\", \"title\", \"disabled\"], [\"kendoButton\", \"\", \"rounded\", \"full\", \"tabindex\", \"-1\", \"type\", \"button\", 1, \"k-timeline-arrow\", \"k-timeline-arrow-right\", 3, \"click\", \"svgIcon\", \"title\", \"disabled\"], [1, \"k-timeline-track\"], [1, \"k-timeline-scrollable-wrap\", 3, \"transitionend\"], [4, \"ngFor\", \"ngForOf\"], [1, \"k-timeline-events-list\"], [\"class\", \"k-timeline-scrollable-wrap\", 3, \"ngStyle\", 4, \"ngIf\"], [\"class\", \"k-timeline-flag-wrap k-timeline-track-item\", 3, \"ngStyle\", 4, \"ngIf\"], [\"class\", \"k-timeline-track-item\", 3, \"ngStyle\", \"click\", 4, \"ngIf\"], [1, \"k-timeline-flag-wrap\", \"k-timeline-track-item\", 3, \"ngStyle\"], [1, \"k-timeline-flag\"], [1, \"k-timeline-track-item\", 3, \"click\", \"ngStyle\"], [1, \"k-timeline-date-wrap\"], [\"class\", \"k-timeline-date\", 4, \"ngIf\"], [1, \"k-timeline-circle\"], [1, \"k-timeline-date\"], [1, \"k-timeline-scrollable-wrap\", 3, \"ngStyle\"], [\"class\", \"k-timeline-event\", 3, \"transitionend\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-timeline-event\", 3, \"transitionend\"], [\"orientation\", \"horizontal\", 3, \"event\", \"expanded\", \"collapsible\", \"calloutStyle\", \"ngStyle\", \"tabIndex\", \"navigable\", \"index\", \"headerTemplate\", \"bodyTemplate\", \"actionsTemplate\", \"eventHeight\"]],\n template: function TimelineHorizontalComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 5, 0)(2, \"button\", 6);\n i0.ɵɵlistener(\"click\", function TimelineHorizontalComponent_Template_button_click_2_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.previousClick());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"button\", 7);\n i0.ɵɵlistener(\"click\", function TimelineHorizontalComponent_Template_button_click_3_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.nextClick());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"div\", 8)(5, \"ul\", 9, 1);\n i0.ɵɵlistener(\"@trackSlide.done\", function TimelineHorizontalComponent_Template_ul_animation_trackSlide_done_5_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onSlideDone());\n })(\"transitionend\", function TimelineHorizontalComponent_Template_ul_transitionend_5_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onTrackTransitionEnd());\n });\n i0.ɵɵtemplate(7, TimelineHorizontalComponent_ng_container_7_Template, 3, 2, \"ng-container\", 10);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(8, \"div\", 11);\n i0.ɵɵtemplate(9, TimelineHorizontalComponent_ul_9_Template, 2, 9, \"ul\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"svgIcon\", ctx.svgLeftIcon)(\"title\", ctx.previousTitle)(\"disabled\", ctx.isFirstRange);\n i0.ɵɵattribute(\"aria-hidden\", true);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx.svgRightIcon)(\"title\", ctx.nextTitle)(\"disabled\", ctx.isLastRange);\n i0.ɵɵattribute(\"aria-hidden\", true);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"@trackSlide\", i0.ɵɵpureFunction2(15, _c31, ctx.animationState, i0.ɵɵpureFunction1(13, _c37, ctx.translateValue)));\n i0.ɵɵattribute(\"role\", \"tablist\")(\"tabindex\", \"0\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx.trackItems);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.selectedEvent);\n }\n },\n dependencies: [ButtonComponent, NgFor, NgIf, NgStyle, TimelineCardComponent, DatePipe],\n encapsulation: 2,\n data: {\n animation: [trigger('trackSlide', [state('left', style({\n transform: `translateX({{transformValue}}%)`\n }), {\n params: {\n transformValue: '0'\n }\n }), state('right', style({\n transform: `translateX({{transformValue}}%)`\n }), {\n params: {\n transformValue: '0'\n }\n }), state('center', style({\n transform: `translateX(0)`\n }))]), trigger('eventsSlide', [transition('* => right', [animate('{{animationDuration}}ms', style({\n transform: `translateX(-100%)`\n }))], {\n params: {\n animationDuration: '400'\n }\n }), transition('* => left', [animate('{{animationDuration}}ms', style({\n transform: `translateX(100%)`\n }))], {\n params: {\n animationDuration: '400'\n }\n })])]\n }\n });\n return TimelineHorizontalComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet TimelineVerticalComponent = /*#__PURE__*/(() => {\n class TimelineVerticalComponent {\n constructor(renderer) {\n this.renderer = renderer;\n this.events = [];\n this.subscriptions = new Subscription();\n }\n ngAfterViewInit() {\n this.ariaDescribedByAllEvents();\n this.subscriptions.add(this.innerDateElementRefs.changes.subscribe(() => {\n if (this.innerDateElementRefs?.length > 0) {\n this.ariaDescribedByAllEvents();\n } else {\n this.removeAriaDescribedBy();\n }\n }));\n }\n expand(index) {\n if (index < 0 || index >= this.cards.length) {\n return;\n }\n this.cards.get(index).expand();\n }\n collapse(index) {\n if (index < 0 || index >= this.cards.length) {\n return;\n }\n this.cards.get(index).collapse();\n }\n ariaDescribedByAllEvents() {\n this.cards?.forEach((card, index) => {\n const innerCard = card.element.nativeElement.querySelector('.k-card');\n const innerDate = this.dateElementRefs.get(index).nativeElement.querySelector('.k-timeline-date');\n if (innerDate) {\n this.assignAriaDescribedBy(innerCard, innerDate);\n }\n });\n }\n removeAriaDescribedBy() {\n this.cards?.forEach(card => {\n const innerCard = card.element.nativeElement.querySelector('.k-card');\n this.renderer.removeAttribute(innerCard, 'aria-describedby');\n });\n }\n assignAriaDescribedBy(cardElement, dateElement) {\n const dateLabelId = `k-${guid()}`;\n this.renderer.setAttribute(dateElement, 'id', dateLabelId);\n this.renderer.setAttribute(cardElement, 'aria-describedby', dateLabelId);\n }\n }\n TimelineVerticalComponent.ɵfac = function TimelineVerticalComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineVerticalComponent)(i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n TimelineVerticalComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TimelineVerticalComponent,\n selectors: [[\"kendo-timeline-vertical\"]],\n viewQuery: function TimelineVerticalComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c34, 5);\n i0.ɵɵviewQuery(_c41, 5);\n i0.ɵɵviewQuery(_c42, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cards = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dateElementRefs = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.innerDateElementRefs = _t);\n }\n },\n inputs: {\n events: \"events\",\n alterMode: \"alterMode\",\n collapsibleEvents: \"collapsibleEvents\",\n navigable: \"navigable\",\n showDateLabels: \"showDateLabels\",\n animationDuration: \"animationDuration\",\n eventWidth: \"eventWidth\",\n dateFormat: \"dateFormat\",\n headerTemplate: \"headerTemplate\",\n bodyTemplate: \"bodyTemplate\",\n actionsTemplate: \"actionsTemplate\"\n },\n exportAs: [\"kendoTimelineVertical\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([]), i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[\"dateWrap\", \"\"], [\"card\", \"\"], [\"innerDate\", \"\"], [4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [\"class\", \"k-timeline-flag-wrap\", 4, \"ngIf\"], [1, \"k-timeline-event\", 3, \"ngClass\"], [1, \"k-timeline-date-wrap\"], [\"class\", \"k-timeline-date\", 4, \"ngIf\"], [1, \"k-timeline-circle\"], [\"orientation\", \"vertical\", 3, \"event\", \"expanded\", \"collapsible\", \"reversed\", \"tabIndex\", \"navigable\", \"animationDuration\", \"headerTemplate\", \"bodyTemplate\", \"actionsTemplate\", \"index\", \"eventWidth\"], [1, \"k-timeline-flag-wrap\"], [1, \"k-timeline-flag\"], [1, \"k-timeline-date\"]],\n template: function TimelineVerticalComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TimelineVerticalComponent_ul_0_Template, 2, 1, \"ul\", 3);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.events && ctx.events.length > 0);\n }\n },\n dependencies: [NgIf, NgFor, NgClass, TimelineCardComponent, DatePipe],\n encapsulation: 2\n });\n return TimelineVerticalComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalizedTimelineMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedTimelineMessagesDirective extends TimelineMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedTimelineMessagesDirective.ɵfac = function LocalizedTimelineMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedTimelineMessagesDirective)(i0.ɵɵdirectiveInject(i1.LocalizationService));\n };\n LocalizedTimelineMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedTimelineMessagesDirective,\n selectors: [[\"\", \"kendoTimelineLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: TimelineMessages,\n useExisting: forwardRef(() => LocalizedTimelineMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedTimelineMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DEFAULT_HORIZONTAL_ANIMATION_DURATION = 400;\nconst DEFAULT_VERTICAL_ANIMATION_DURATION = 300;\nconst DEFAULT_EVENT_WIDTH = 400;\nconst DEFAULT_EVENT_HEIGHT = 600;\nconst DEFAULT_DATE_FORMAT = 'MMMM dd, yyyy';\n/**\n * Represents the [Kendo UI Timeline component for Angular]({% slug overview_timeline %}).\n */\nlet TimelineComponent = /*#__PURE__*/(() => {\n class TimelineComponent {\n constructor(timelineService) {\n this.timelineService = timelineService;\n /**\n * Specifies the orientation of the axis.\n *\n * @default 'vertical'\n */\n this.orientation = 'vertical';\n /**\n * Specifies whether to render events alternatingly on both sides of the axis.\n * Applicable when `orientation` is set to `vertical`.\n *\n * @default false\n */\n this.alterMode = false;\n /**\n * Specifies whether the event cards can be collapsed.\n *\n * @default true\n */\n this.collapsibleEvents = true;\n /**\n * Specifies whether the user can use dedicated shortcuts to interact with the Timeline.\n *\n * @default true\n */\n this.navigable = true;\n /**\n * Specifies whether an event's date label will be visible.\n *\n * @default true\n */\n this.showDateLabels = true;\n this.hostClass = true;\n /**\n * Fires when a card is toggled.\n * This event is supported only in `vertical` mode.\n */\n this.onToggle = new EventEmitter();\n /**\n * Fires when a card's action is clicked.\n */\n this.onActionClick = new EventEmitter();\n /**\n * Fires when the left or right arrow is clicked.\n * This event is supported only in `horizontal` mode.\n */\n this.onNavigate = new EventEmitter();\n this._events = [];\n this._modelFields = defaultModelFields;\n this._eventWidth = DEFAULT_EVENT_WIDTH;\n this._eventHeight = DEFAULT_EVENT_HEIGHT;\n this._dateFormat = DEFAULT_DATE_FORMAT;\n this.originalData = [];\n this.subscriptions = new Subscription();\n this.timelineService.timeline = this;\n }\n /**\n * An array of event instances which will be shown by the Timeline.\n */\n set events(events) {\n if (!isPresent$1(events)) {\n return;\n }\n this.originalData = events;\n this._events = processItems(this.originalData, this.modelFields);\n this._events.sort((a, b) => {\n return a.date.getTime() - b.date.getTime();\n });\n if (this._events.length > 0) {\n let flag = this._events[0].date.getFullYear() - 1;\n this._events.forEach(event => {\n if (event.date.getFullYear() !== flag) {\n flag = event.date.getFullYear();\n event.flag = flag;\n }\n });\n }\n }\n get events() {\n return this._events;\n }\n /**\n * The names of the model fields from which the Timeline will read its data.\n */\n set modelFields(value) {\n this._modelFields = {\n ...defaultModelFields,\n ...value\n };\n if (this.originalData) {\n this.events = this.originalData;\n }\n }\n get modelFields() {\n return this._modelFields;\n }\n /**\n * Sets a specific width for the event.\n * This setting is supported only in `vertical` mode.\n *\n * @default 400\n */\n get eventWidth() {\n return this._eventWidth;\n }\n set eventWidth(value) {\n if (value) {\n this._eventWidth = value;\n } else {\n this._eventWidth = DEFAULT_EVENT_WIDTH;\n }\n }\n /**\n * Sets a specific height for the event.\n * This setting is supported only in `horizontal` mode.\n *\n * @default 600\n */\n get eventHeight() {\n return this._eventHeight;\n }\n set eventHeight(value) {\n if (value) {\n this._eventHeight = value;\n } else {\n this._eventHeight = DEFAULT_EVENT_HEIGHT;\n }\n }\n /**\n * @hidden\n */\n get animationDuration() {\n if (typeof this.animation === 'number') {\n return this.animation;\n }\n if (typeof this.animation === 'boolean' && this.animation || !isPresent$1(this.animation)) {\n return this.orientation === 'horizontal' ? DEFAULT_HORIZONTAL_ANIMATION_DURATION : DEFAULT_VERTICAL_ANIMATION_DURATION;\n }\n return 0;\n }\n /**\n * Specifies the date format for displaying the event date.\n *\n * @default 'MMMM dd, yyyy'\n */\n set dateFormat(value) {\n if (isPresent$1(value) && value !== '') {\n this._dateFormat = value;\n } else {\n this._dateFormat = DEFAULT_DATE_FORMAT;\n }\n }\n get dateFormat() {\n return this._dateFormat;\n }\n get verticalClass() {\n return this.orientation === 'vertical';\n }\n get horizontalClass() {\n return this.orientation === 'horizontal';\n }\n get alternatingClass() {\n return this.alterMode === true && this.orientation === 'vertical';\n }\n get collapsibleClass() {\n return this.collapsibleEvents === true && this.orientation === 'vertical';\n }\n ngAfterContentInit() {\n this.initTemplates();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n /**\n * Switches to the previous portion of events.\n * This method is supported only in `horizontal` mode.\n */\n previous() {\n this.timelineHorizontal?.previous();\n }\n /**\n * Switches to the next portion of events.\n * This method is supported only in `horizontal` mode.\n */\n next() {\n this.timelineHorizontal?.next();\n }\n /**\n * Open event details.\n * This method is supported only in `horizontal` mode.\n */\n open(index) {\n this.timelineHorizontal?.open(index);\n }\n /**\n * Expands an event.\n * This method is supported only in `vertical` mode.\n */\n expand(index) {\n this.timelineVertical?.expand(index);\n }\n /**\n * Collapses an event.\n * This method is supported only in `vertical` mode.\n */\n collapse(index) {\n this.timelineVertical?.collapse(index);\n }\n initTemplates() {\n this.headerTemplate = this.cardHeaderTemplate?.first;\n this.bodyTemplate = this.cardBodyTemplate?.first;\n this.actionsTemplate = this.cardActionsTemplate?.first;\n this.subscriptions.add(this.cardHeaderTemplate?.changes.subscribe(() => {\n this.headerTemplate = this.cardHeaderTemplate?.first || null;\n }));\n this.subscriptions.add(this.cardBodyTemplate?.changes.subscribe(() => {\n this.bodyTemplate = this.cardBodyTemplate?.first || null;\n }));\n this.subscriptions.add(this.cardActionsTemplate?.changes.subscribe(() => {\n this.actionsTemplate = this.cardActionsTemplate?.first || null;\n }));\n }\n }\n TimelineComponent.ɵfac = function TimelineComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineComponent)(i0.ɵɵdirectiveInject(TimelineService));\n };\n TimelineComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TimelineComponent,\n selectors: [[\"kendo-timeline\"]],\n contentQueries: function TimelineComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TimelineCardHeaderTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, TimelineCardBodyTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, TimelineCardActionsTemplateDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cardHeaderTemplate = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cardBodyTemplate = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cardActionsTemplate = _t);\n }\n },\n viewQuery: function TimelineComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TimelineHorizontalComponent, 5);\n i0.ɵɵviewQuery(TimelineVerticalComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineHorizontal = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timelineVertical = _t.first);\n }\n },\n hostVars: 10,\n hostBindings: function TimelineComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-timeline\", ctx.hostClass)(\"k-timeline-vertical\", ctx.verticalClass)(\"k-timeline-horizontal\", ctx.horizontalClass)(\"k-timeline-alternating\", ctx.alternatingClass)(\"k-timeline-collapsible\", ctx.collapsibleClass);\n }\n },\n inputs: {\n events: \"events\",\n modelFields: \"modelFields\",\n orientation: \"orientation\",\n alterMode: \"alterMode\",\n collapsibleEvents: \"collapsibleEvents\",\n navigable: \"navigable\",\n showDateLabels: \"showDateLabels\",\n animation: \"animation\",\n eventWidth: \"eventWidth\",\n eventHeight: \"eventHeight\",\n dateFormat: \"dateFormat\"\n },\n outputs: {\n onToggle: \"onToggle\",\n onActionClick: \"onActionClick\",\n onNavigate: \"onNavigate\"\n },\n exportAs: [\"kendoTimeline\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([TimelineService, LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.timeline'\n }]), i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 2,\n consts: () => {\n let i18n_5;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the previous button in horizontal orientation.\n * @meaning kendo.timeline.previous\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_5 = goog.getMsg(\"previous\");\n i18n_5 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_5;\n } else {\n i18n_5 = $localize`:kendo.timeline.previous|The title of the previous button in horizontal orientation.:previous`;\n }\n let i18n_6;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the next button in horizontal orientation.\n * @meaning kendo.timeline.next\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_6 = goog.getMsg(\"next\");\n i18n_6 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_LAYOUT_FESM2020_PROGRESS_KENDO_ANGULAR_LAYOUT_MJS_6;\n } else {\n i18n_6 = $localize`:kendo.timeline.next|The title of the next button in horizontal orientation.:next`;\n }\n return [[\"kendoTimelineLocalizedMessages\", \"\", \"previous\", i18n_5], [\"kendoTimelineLocalizedMessages\", \"\", \"next\", i18n_6], [3, \"events\", \"alterMode\", \"collapsibleEvents\", \"navigable\", \"showDateLabels\", \"animationDuration\", \"eventWidth\", \"dateFormat\", \"headerTemplate\", \"bodyTemplate\", \"actionsTemplate\", 4, \"ngIf\"], [3, \"events\", \"collapsibleEvents\", \"navigable\", \"showDateLabels\", \"animationDuration\", \"eventHeight\", \"dateFormat\", \"headerTemplate\", \"bodyTemplate\", \"actionsTemplate\", 4, \"ngIf\"], [3, \"events\", \"alterMode\", \"collapsibleEvents\", \"navigable\", \"showDateLabels\", \"animationDuration\", \"eventWidth\", \"dateFormat\", \"headerTemplate\", \"bodyTemplate\", \"actionsTemplate\"], [3, \"events\", \"collapsibleEvents\", \"navigable\", \"showDateLabels\", \"animationDuration\", \"eventHeight\", \"dateFormat\", \"headerTemplate\", \"bodyTemplate\", \"actionsTemplate\"]];\n },\n template: function TimelineComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 0)(1, 1);\n i0.ɵɵtemplate(2, TimelineComponent_kendo_timeline_vertical_2_Template, 1, 11, \"kendo-timeline-vertical\", 2)(3, TimelineComponent_kendo_timeline_horizontal_3_Template, 1, 10, \"kendo-timeline-horizontal\", 3);\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.orientation === \"vertical\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.orientation === \"horizontal\");\n }\n },\n dependencies: [LocalizedTimelineMessagesDirective, NgIf, TimelineVerticalComponent, TimelineHorizontalComponent],\n encapsulation: 2\n });\n return TimelineComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Utility array that contains all `Avatar` related components and directives.\n */\nconst KENDO_AVATAR = [AvatarComponent, AvatarCustomMessagesComponent];\n/**\n * Utility array that contains all `Card` related components and directives.\n */\nconst KENDO_CARD = [CardComponent, CardActionsComponent, CardBodyComponent, CardFooterComponent, CardHeaderComponent, CardMediaDirective, CardSeparatorDirective, CardSubtitleDirective, CardTitleDirective];\n/**\n * Utility array that contains all `Drawer` related components and directives.\n */\nconst KENDO_DRAWER = [DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerTemplateDirective, DrawerFooterTemplateDirective, DrawerHeaderTemplateDirective, DrawerItemTemplateDirective];\n/**\n * Utility array that contains all `ExpansionPanel` related components and directives.\n */\nconst KENDO_EXPANSIONPANEL = [ExpansionPanelComponent, ExpansionPanelTitleDirective];\n/**\n * Utility array that contains all `GridLayout` related components and directives.\n */\nconst KENDO_GRIDLAYOUT = [GridLayoutComponent, GridLayoutItemComponent];\n/**\n * Utility array that contains all `PanelBar` related components and directives.\n */\nconst KENDO_PANELBAR = [PanelBarComponent, PanelBarItemComponent, PanelBarContentDirective, PanelBarItemTemplateDirective, PanelBarItemTitleDirective];\n/**\n * Utility array that contains all `Splitter` related components and directives.\n */\nconst KENDO_SPLITTER = [SplitterComponent, SplitterPaneComponent];\n/**\n * Utility array that contains all `StackLayout` related components and directives.\n */\nconst KENDO_STACKLAYOUT = [StackLayoutComponent];\n/**\n * Utility array that contains all `Stepper` related components and directives.\n */\nconst KENDO_STEPPER = [StepperComponent, StepperCustomMessagesComponent, StepperIndicatorTemplateDirective, StepperLabelTemplateDirective, StepperStepTemplateDirective];\n/**\n * Utility array that contains all `TabStrip` related components and directives.\n */\nconst KENDO_TABSTRIP = [TabStripComponent, TabStripTabComponent, TabContentDirective, TabTitleDirective, TabStripCustomMessagesComponent];\n/**\n * Utility array that contains all `TileLayout` related components and directives.\n */\nconst KENDO_TILELAYOUT = [TileLayoutComponent, TileLayoutItemBodyComponent, TileLayoutItemComponent, TileLayoutItemHeaderComponent];\n/**\n * Utility array that contains all `Timeline` related components and directives\n */\nconst KENDO_TIMELINE = [TimelineComponent, TimelineCustomMessagesComponent, TimelineCardActionsTemplateDirective, TimelineCardBodyTemplateDirective, TimelineCardHeaderTemplateDirective];\n/**\n * Utility array that contains all `@progress/kendo-angular-layout` related components and directives.\n */\nconst KENDO_LAYOUT = [...KENDO_AVATAR, ...KENDO_CARD, ...KENDO_DRAWER, ...KENDO_EXPANSIONPANEL, ...KENDO_GRIDLAYOUT, ...KENDO_PANELBAR, ...KENDO_SPLITTER, ...KENDO_STACKLAYOUT, ...KENDO_STEPPER, ...KENDO_TABSTRIP, ...KENDO_TILELAYOUT, ...KENDO_TIMELINE];\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Avatar component.\n */\nlet AvatarModule = /*#__PURE__*/(() => {\n class AvatarModule {}\n AvatarModule.ɵfac = function AvatarModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AvatarModule)();\n };\n AvatarModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: AvatarModule\n });\n AvatarModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [KENDO_AVATAR]\n });\n return AvatarModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Card component.\n */\nlet CardModule = /*#__PURE__*/(() => {\n class CardModule {}\n CardModule.ɵfac = function CardModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CardModule)();\n };\n CardModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CardModule\n });\n CardModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CardComponent, CardActionsComponent, CardBodyComponent, CardFooterComponent, CardHeaderComponent]\n });\n return CardModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Drawer component.\n */\nlet DrawerModule = /*#__PURE__*/(() => {\n class DrawerModule {}\n DrawerModule.ɵfac = function DrawerModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DrawerModule)();\n };\n DrawerModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DrawerModule\n });\n DrawerModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [DrawerComponent, DrawerContainerComponent, DrawerContentComponent]\n });\n return DrawerModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Layout components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Layout module\n * import { LayoutModule } from '@progress/kendo-angular-layout';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, LayoutModule], // import Layout module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet LayoutModule = /*#__PURE__*/(() => {\n class LayoutModule {}\n LayoutModule.ɵfac = function LayoutModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LayoutModule)();\n };\n LayoutModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: LayoutModule\n });\n LayoutModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [AvatarComponent, AvatarCustomMessagesComponent, CardComponent, CardActionsComponent, CardBodyComponent, CardFooterComponent, CardHeaderComponent, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, ExpansionPanelComponent, GridLayoutComponent, GridLayoutItemComponent, PanelBarComponent, PanelBarItemComponent, SplitterComponent, SplitterPaneComponent, StackLayoutComponent, StepperComponent, StepperCustomMessagesComponent, TabStripComponent, TabStripTabComponent, TabStripCustomMessagesComponent, TileLayoutComponent, TileLayoutItemBodyComponent, TileLayoutItemComponent, TileLayoutItemHeaderComponent, TimelineComponent, TimelineCustomMessagesComponent]\n });\n return LayoutModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the PanelBar component.\n *\n * The module registers:\n * - `PanelBarComponent`—The `PanelBar` component class.\n * - `PanelBarItemComponent`—The `PanelBarItem` component class.\n * - `PanelBarContentComponent`—The `PanelBarContent` component class.\n * - `PanelBarItemTemplateDirective—The `PanelBarItemTemplate` directive.\n * - `PanelBarItemTitleDirective—The `PanelBarItemTitle` directive.\n */\nlet PanelBarModule = /*#__PURE__*/(() => {\n class PanelBarModule {}\n PanelBarModule.ɵfac = function PanelBarModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PanelBarModule)();\n };\n PanelBarModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PanelBarModule\n });\n PanelBarModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [PanelBarComponent, PanelBarItemComponent]\n });\n return PanelBarModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Splitter component.\n *\n * The module registers:\n * - `SplitterComponent`—The `Splitter` component class.\n * - `SplitterPaneComponent`—The `SplitterPane` component class.\n */\nlet SplitterModule = /*#__PURE__*/(() => {\n class SplitterModule {}\n SplitterModule.ɵfac = function SplitterModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SplitterModule)();\n };\n SplitterModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: SplitterModule\n });\n SplitterModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [KENDO_SPLITTER]\n });\n return SplitterModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Stepper component.\n */\nlet StepperModule = /*#__PURE__*/(() => {\n class StepperModule {}\n StepperModule.ɵfac = function StepperModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StepperModule)();\n };\n StepperModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StepperModule\n });\n StepperModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [StepperComponent, StepperCustomMessagesComponent]\n });\n return StepperModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the TabStrip component.\n *\n * The module registers:\n * - `TabStripComponent`—The `TabStrip` component class.\n * - `TabStripTabComponent`—The `TabStripTab` component class.\n * - `TabContentDirective`—The tab content directive used on the `` tag.\n * - `TabTitleDirective`—The tab title directive used on the `` tag.\n */\nlet TabStripModule = /*#__PURE__*/(() => {\n class TabStripModule {}\n TabStripModule.ɵfac = function TabStripModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TabStripModule)();\n };\n TabStripModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: TabStripModule\n });\n TabStripModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [TabStripComponent, TabStripTabComponent, TabStripCustomMessagesComponent]\n });\n return TabStripModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the ExpansionPanel component.\n */\nlet ExpansionPanelModule = /*#__PURE__*/(() => {\n class ExpansionPanelModule {}\n ExpansionPanelModule.ɵfac = function ExpansionPanelModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpansionPanelModule)();\n };\n ExpansionPanelModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ExpansionPanelModule\n });\n ExpansionPanelModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [ExpansionPanelComponent]\n });\n return ExpansionPanelModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the TileLayout component.\n *\n * The module registers:\n * - `TileLayoutComponent`—The `TileLayoutComponent` component class.\n * - `TileLayoutItemComponent`—The `TileLayoutItemComponent` component class.\n * - `TileLayoutItemHeaderComponent`—The `TileLayoutItemHeaderComponent` component class.\n * - `TileLayoutItemBodyComponent`—The `TileLayoutItemBodyComponent` component class.\n */\nlet TileLayoutModule = /*#__PURE__*/(() => {\n class TileLayoutModule {}\n TileLayoutModule.ɵfac = function TileLayoutModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TileLayoutModule)();\n };\n TileLayoutModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: TileLayoutModule\n });\n TileLayoutModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [KENDO_TILELAYOUT]\n });\n return TileLayoutModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the StackLayout component.\n */\nlet StackLayoutModule = /*#__PURE__*/(() => {\n class StackLayoutModule {}\n StackLayoutModule.ɵfac = function StackLayoutModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StackLayoutModule)();\n };\n StackLayoutModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: StackLayoutModule\n });\n StackLayoutModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [KENDO_STACKLAYOUT]\n });\n return StackLayoutModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the GridLayout component.\n */\nlet GridLayoutModule = /*#__PURE__*/(() => {\n class GridLayoutModule {}\n GridLayoutModule.ɵfac = function GridLayoutModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridLayoutModule)();\n };\n GridLayoutModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: GridLayoutModule\n });\n GridLayoutModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [KENDO_GRIDLAYOUT]\n });\n return GridLayoutModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Timeline component.\n *\n * The module registers:\n * - `TimelineComponent`—The `TimelineComponent` component class.\n */\nlet TimelineModule = /*#__PURE__*/(() => {\n class TimelineModule {}\n TimelineModule.ɵfac = function TimelineModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TimelineModule)();\n };\n TimelineModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: TimelineModule\n });\n TimelineModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [TimelineComponent, TimelineCustomMessagesComponent]\n });\n return TimelineModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AvatarComponent, AvatarCustomMessagesComponent, AvatarModule, CardAction, CardActionsComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CardMediaDirective, CardModule, CardSeparatorDirective, CardSubtitleDirective, CardTitleDirective, DrawerComponent, DrawerContainerComponent, DrawerContentComponent, DrawerFooterTemplateDirective, DrawerHeaderTemplateDirective, DrawerItemTemplateDirective, DrawerModule, DrawerSelectEvent, DrawerTemplateDirective, ExpansionPanelActionEvent, ExpansionPanelComponent, ExpansionPanelModule, ExpansionPanelTitleDirective, GridLayoutComponent, GridLayoutItemComponent, GridLayoutModule, KENDO_AVATAR, KENDO_CARD, KENDO_DRAWER, KENDO_EXPANSIONPANEL, KENDO_GRIDLAYOUT, KENDO_LAYOUT, KENDO_PANELBAR, KENDO_SPLITTER, KENDO_STACKLAYOUT, KENDO_STEPPER, KENDO_TABSTRIP, KENDO_TILELAYOUT, KENDO_TIMELINE, LayoutModule, LocalizedAvatarMessagesDirective, LocalizedStepperMessagesDirective, LocalizedTabStripMessagesDirective, PanelBarCollapseEvent, PanelBarComponent, PanelBarContentDirective, PanelBarExpandEvent, PanelBarExpandMode, PanelBarItemClickEvent, PanelBarItemComponent, PanelBarItemTemplateDirective, PanelBarItemTitleDirective, PanelBarModule, PanelBarSelectEvent, PanelBarStateChangeEvent, SelectEvent, SplitterComponent, SplitterModule, SplitterPaneComponent, StackLayoutComponent, StackLayoutModule, StepperActivateEvent, StepperComponent, StepperCustomMessagesComponent, StepperIndicatorTemplateDirective, StepperLabelTemplateDirective, StepperModule, StepperStepTemplateDirective, TabCloseEvent, TabComponent, TabContentDirective, TabStripComponent, TabStripCustomMessagesComponent, TabStripModule, TabStripTabComponent, TabTemplateDirective, TabTitleDirective, TileLayoutComponent, TileLayoutItemBodyComponent, TileLayoutItemComponent, TileLayoutItemHeaderComponent, TileLayoutModule, TileLayoutReorderEvent, TileLayoutResizeEvent, TileLayoutResizeHandleDirective, TimelineCardActionsTemplateDirective, TimelineCardBodyTemplateDirective, TimelineCardHeaderTemplateDirective, TimelineComponent, TimelineCustomMessagesComponent, TimelineModule };","export function saveAs(data, fileName, options = {}) {\n let save = postToProxy;\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n save(data, fileName, options);\n}\nconst anchor = () => document.createElement('a');\nconst canDownload = () => 'download' in anchor();\nfunction saveAsBlob(data, fileName) {\n let blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n const parts = data.split(';base64,');\n const contentType = parts[0];\n const base64 = atob(parts[1]);\n const array = new Uint8Array(base64.length);\n for (let idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n blob = new Blob([array.buffer], {\n type: contentType\n });\n }\n navigator.msSaveBlob(blob, fileName);\n}\nfunction saveAsDataURI(data, fileName) {\n let dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n const fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n const e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n fileSaver.dispatchEvent(e);\n setTimeout(() => URL.revokeObjectURL(dataURI));\n}\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n const form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n const formData = options.proxyData || {};\n formData.fileName = fileName;\n const parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n for (let name in formData) {\n if (formData.hasOwnProperty(name)) {\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n form.appendChild(input);\n }\n }\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}","const KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst fromCharCode = String.fromCharCode;\nexport function encodeBase64(plainText) {\n const input = encodeUTF8(plainText);\n let output = \"\";\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0;\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n return output;\n}\nfunction encodeUTF8(input) {\n let output = \"\";\n for (let i = 0; i < input.length; i++) {\n const c = input.charCodeAt(i);\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | c >>> 6);\n output += fromCharCode(0x80 | c & 0x3f);\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | c >>> 12);\n output += fromCharCode(0x80 | c >>> 6 & 0x3f);\n output += fromCharCode(0x80 | c & 0x3f);\n }\n }\n return output;\n}","let current = {\n compile: function (template) {\n return template;\n }\n};\nclass TemplateService {\n static register(userImplementation) {\n current = userImplementation;\n }\n static compile(template) {\n return current.compile(template);\n }\n}\nexport default TemplateService;","const FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nconst getterCache = {};\nconst UNDEFINED = 'undefined';\ngetterCache[UNDEFINED] = function (obj) {\n return obj;\n};\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n const fields = [];\n field.replace(FIELD_REGEX, function (match, index, indexAccessor, field) {\n fields.push(typeof index !== UNDEFINED ? index : indexAccessor || field);\n });\n getterCache[field] = function (obj) {\n let result = obj;\n for (let idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}","export default function map(array, func) {\n return array.reduce((result, el, i) => {\n const val = func(el, i);\n if (val != null) {\n result.push(val);\n }\n return result;\n }, []);\n}","import TemplateService from './services/template-service';\nimport getter from './utils/getter';\nimport map from './utils/map';\nfunction defaultGroupHeaderTemplate(data) {\n return `${data.title}: ${data.value}`;\n}\nfunction createArray(length, callback) {\n const result = [];\n for (let idx = 0; idx < length; idx++) {\n result.push(callback(idx));\n }\n return result;\n}\nfunction defaultItemId(item) {\n return item.id;\n}\nclass ExcelExporter {\n constructor(options) {\n options.columns = this._trimColumns(options.columns || []);\n this.allColumns = map(this._leafColumns(options.columns || []), this._prepareColumn);\n this.columns = this._visibleColumns(this.allColumns);\n this.options = options;\n this.data = options.data || [];\n this.aggregates = options.aggregates || {};\n this.groups = [].concat(options.groups || []);\n this.hasGroups = this.groups.length > 0;\n this.hierarchy = options.hierarchy;\n this.hasGroupHeaderColumn = this.columns.some(column => column.groupHeaderColumnTemplate);\n this.collapsible = this.options.collapsible;\n }\n workbook() {\n const workbook = {\n sheets: [{\n columns: this._columns(),\n rows: this.hierarchy ? this._hierarchyRows() : this._rows(),\n freezePane: this._freezePane(),\n filter: this._filter()\n }]\n };\n return workbook;\n }\n _trimColumns(columns) {\n return columns.filter(column => {\n let result = Boolean(column.field);\n if (!result && column.columns) {\n result = this._trimColumns(column.columns).length > 0;\n }\n return result;\n });\n }\n _leafColumns(columns) {\n let result = [];\n for (let idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n } else {\n result = result.concat(this._leafColumns(columns[idx].columns));\n }\n }\n return result;\n }\n _prepareColumn(column) {\n if (!column.field) {\n return null;\n }\n let value = function (dataItem) {\n return getter(column.field, true)(dataItem);\n };\n let values = null;\n if (column.values) {\n values = {};\n column.values.forEach(function (item) {\n values[item.value] = item.text;\n });\n value = function (dataItem) {\n return values[getter(column.field, true)(dataItem)];\n };\n }\n return Object.assign({}, column, {\n value: value,\n values: values,\n groupHeaderTemplate: column.groupHeaderTemplate ? TemplateService.compile(column.groupHeaderTemplate) : defaultGroupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate ? TemplateService.compile(column.groupHeaderColumnTemplate) : null,\n groupFooterTemplate: column.groupFooterTemplate ? TemplateService.compile(column.groupFooterTemplate) : null,\n footerTemplate: column.footerTemplate ? TemplateService.compile(column.footerTemplate) : null\n });\n }\n _filter() {\n if (!this.options.filterable) {\n return null;\n }\n const depth = this._depth();\n return {\n from: depth,\n to: depth + this.columns.length - 1\n };\n }\n _createPaddingCells(length) {\n return createArray(length, () => Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, this.options.paddingCellOptions));\n }\n _dataRow(dataItem, level, depth) {\n let cells = this._createPaddingCells(level);\n\n // grouped\n if (this.hasGroups && depth && dataItem.items) {\n cells = cells.concat(this._groupHeaderCells(dataItem, level, depth));\n const rows = this._dataRows(dataItem.items, level + 1);\n rows.unshift({\n type: \"group-header\",\n cells: cells,\n level: this.collapsible ? level : null\n });\n return rows.concat(this._footer(dataItem, level));\n }\n const dataCells = [];\n for (let cellIdx = 0; cellIdx < this.columns.length; cellIdx++) {\n dataCells[cellIdx] = this._cell(dataItem, this.columns[cellIdx]);\n }\n if (this.hierarchy) {\n dataCells[0].colSpan = depth - level + 1;\n }\n return [{\n type: \"data\",\n cells: cells.concat(dataCells),\n level: this.collapsible ? level : null\n }];\n }\n _groupHeaderCells(dataItem, level, depth) {\n const cells = [];\n const column = this.allColumns.filter(function (column) {\n return column.field === dataItem.field;\n })[0] || {};\n const title = column && column.title ? column.title : dataItem.field;\n const template = column ? column.groupHeaderTemplate || column.groupHeaderColumnTemplate : null;\n const group = Object.assign({\n title: title,\n field: dataItem.field,\n value: column && column.values ? column.values[dataItem.value] : dataItem.value,\n aggregates: dataItem.aggregates,\n items: dataItem.items\n }, dataItem.aggregates[dataItem.field]);\n const value = template ? template(group) : `${title}: ${dataItem.value}`;\n cells.push(Object.assign({\n value: value,\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: (this.hasGroupHeaderColumn ? 1 : this.columns.length) + depth - level\n }, column.groupHeaderCellOptions));\n if (this.hasGroupHeaderColumn) {\n this.columns.forEach(function (column, index) {\n if (index > 0) {\n cells.push(Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupHeaderColumnTemplate ? column.groupHeaderColumnTemplate(Object.assign({\n group: group\n }, group, dataItem.aggregates[column.field])) : undefined\n }, column.groupHeaderCellOptions));\n }\n });\n }\n return cells;\n }\n _dataRows(dataItems, level) {\n const depth = this._depth();\n const rows = [];\n for (let idx = 0; idx < dataItems.length; idx++) {\n rows.push.apply(rows, this._dataRow(dataItems[idx], level, depth));\n }\n return rows;\n }\n _hierarchyRows() {\n const depth = this._depth();\n const data = this.data;\n const itemLevel = this.hierarchy.itemLevel;\n const itemId = this.hierarchy.itemId || defaultItemId;\n const hasFooter = this._hasFooterTemplate();\n const rows = [];\n const parents = [];\n let previousLevel = 0;\n let previousItemId;\n if (!hasFooter) {\n this.collapsible = false;\n }\n for (let idx = 0; idx < data.length; idx++) {\n const item = data[idx];\n const level = itemLevel(item, idx);\n if (hasFooter) {\n if (level > previousLevel) {\n parents.push({\n id: previousItemId,\n level: previousLevel\n });\n } else if (level < previousLevel) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, level, depth));\n }\n previousLevel = level;\n previousItemId = itemId(item, idx);\n }\n rows.push.apply(rows, this._dataRow(item, level + 1, depth));\n }\n if (hasFooter) {\n rows.push.apply(rows, this._hierarchyFooterRows(parents, 0, depth));\n const rootAggregate = data.length ? this.aggregates[data[0].parentId] : {};\n rows.push(this._hierarchyFooter(rootAggregate, 0, depth));\n }\n this._prependHeaderRows(rows);\n return rows;\n }\n _hierarchyFooterRows(parents, currentLevel, depth) {\n const rows = [];\n while (parents.length && parents[parents.length - 1].level >= currentLevel) {\n const parent = parents.pop();\n rows.push(this._hierarchyFooter(this.aggregates[parent.id], parent.level + 1, depth));\n }\n return rows;\n }\n _hasFooterTemplate() {\n const columns = this.columns;\n for (let idx = 0; idx < columns.length; idx++) {\n if (columns[idx].footerTemplate) {\n return true;\n }\n }\n }\n _hierarchyFooter(aggregates, level, depth) {\n const cells = this.columns.map(function (column, index) {\n const colSpan = index ? 1 : depth - level + 1;\n if (column.footerTemplate) {\n const fieldAggregates = (aggregates || {})[column.field];\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan,\n value: column.footerTemplate(Object.assign({\n aggregates: aggregates\n }, fieldAggregates))\n }, column.footerCellOptions);\n }\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n colSpan: colSpan\n }, column.footerCellOptions);\n });\n return {\n type: \"footer\",\n cells: this._createPaddingCells(level).concat(cells),\n level: this.collapsible ? level : null\n };\n }\n _footer(dataItem, level) {\n const rows = [];\n const footer = this.columns.some(column => column.groupFooterTemplate);\n let templateData, group;\n if (footer) {\n group = {\n group: {\n items: dataItem.items,\n field: dataItem.field,\n value: dataItem.value\n }\n };\n templateData = {};\n Object.keys(dataItem.aggregates).forEach(key => {\n templateData[key] = Object.assign({}, dataItem.aggregates[key], group);\n });\n }\n const cells = this.columns.map(column => {\n if (column.groupFooterTemplate) {\n let data = Object.assign({}, templateData, dataItem.aggregates[column.field], group);\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.groupFooterTemplate(data)\n }, column.groupFooterCellOptions);\n }\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.groupFooterCellOptions);\n });\n if (footer) {\n rows.push({\n type: \"group-footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells),\n level: this.collapsible ? level : null\n });\n }\n return rows;\n }\n _isColumnVisible(column) {\n return this._visibleColumns([column]).length > 0 && (column.field || column.columns);\n }\n _visibleColumns(columns) {\n return columns.filter(column => {\n let exportable = column.exportable;\n if (typeof exportable === 'object') {\n exportable = column.exportable.excel;\n }\n const visibleInExport = !column.hidden && exportable !== false;\n const visibleInExportOnly = column.hidden && exportable === true;\n let visible = visibleInExport || visibleInExportOnly;\n if (visible && column.columns) {\n visible = this._visibleColumns(column.columns).length > 0;\n }\n return visible;\n });\n }\n _headerRow(row, groups) {\n const headers = row.cells.map(function (cell) {\n return Object.assign(cell, {\n colSpan: cell.colSpan > 1 ? cell.colSpan : 1,\n rowSpan: row.rowSpan > 1 && !cell.colSpan ? row.rowSpan : 1\n });\n });\n if (this.hierarchy && headers[0].firstCell) {\n headers[0].colSpan += this._depth();\n }\n return {\n type: \"header\",\n cells: createArray(groups.length, () => Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\"\n }, this.options.headerPaddingCellOptions)).concat(headers)\n };\n }\n _prependHeaderRows(rows) {\n const groups = this.groups;\n const headerRows = [{\n rowSpan: 1,\n cells: [],\n index: 0\n }];\n this._prepareHeaderRows(headerRows, this.options.columns);\n for (let idx = headerRows.length - 1; idx >= 0; idx--) {\n rows.unshift(this._headerRow(headerRows[idx], groups));\n }\n }\n _prepareHeaderRows(rows, columns, parentCell, parentRow) {\n const row = parentRow || rows[rows.length - 1];\n let childRow = rows[row.index + 1];\n let totalColSpan = 0;\n for (let idx = 0; idx < columns.length; idx++) {\n const column = columns[idx];\n if (this._isColumnVisible(column)) {\n const cell = Object.assign({\n background: \"#7a7a7a\",\n color: \"#fff\",\n value: column.title || column.field,\n colSpan: 0,\n firstCell: idx === 0 && (!parentCell || parentCell.firstCell)\n }, column.headerCellOptions);\n row.cells.push(cell);\n if (column.columns && column.columns.length) {\n if (!childRow) {\n childRow = {\n rowSpan: 0,\n cells: [],\n index: rows.length\n };\n rows.push(childRow);\n }\n cell.colSpan = this._trimColumns(this._visibleColumns(column.columns)).length;\n this._prepareHeaderRows(rows, column.columns, cell, childRow);\n totalColSpan += cell.colSpan - 1;\n row.rowSpan = rows.length - row.index;\n }\n }\n }\n if (parentCell) {\n parentCell.colSpan += totalColSpan;\n }\n }\n _rows() {\n const rows = this._dataRows(this.data, 0);\n if (this.columns.length) {\n this._prependHeaderRows(rows);\n let footer = false;\n const cells = this.columns.map(column => {\n if (column.footerTemplate) {\n footer = true;\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\",\n value: column.footerTemplate(Object.assign({}, this.aggregates, this.aggregates[column.field]))\n }, column.footerCellOptions);\n }\n return Object.assign({\n background: \"#dfdfdf\",\n color: \"#333\"\n }, column.footerCellOptions);\n });\n if (footer) {\n rows.push({\n type: \"footer\",\n cells: this._createPaddingCells(this.groups.length).concat(cells)\n });\n }\n }\n return rows;\n }\n _headerDepth(columns) {\n const result = 1;\n let max = 0;\n for (let idx = 0; idx < columns.length; idx++) {\n if (columns[idx].columns) {\n const temp = this._headerDepth(columns[idx].columns);\n if (temp > max) {\n max = temp;\n }\n }\n }\n return result + max;\n }\n _freezePane() {\n const columns = this._visibleColumns(this.options.columns || []);\n const colSplit = this._visibleColumns(this._trimColumns(this._leafColumns(columns.filter(function (column) {\n return column.locked;\n })))).length;\n return {\n rowSplit: this._headerDepth(columns),\n colSplit: colSplit ? colSplit + this.groups.length : 0\n };\n }\n _cell(dataItem, column) {\n return Object.assign({\n value: column.value(dataItem)\n }, column.cellOptions);\n }\n _depth() {\n let depth = 0;\n if (this.hierarchy) {\n depth = this.hierarchy.depth;\n } else {\n depth = this.groups.length;\n }\n return depth;\n }\n _columns() {\n const depth = this._depth();\n const columns = createArray(depth, () => ({\n width: 20\n }));\n return columns.concat(this.columns.map(function (column) {\n return {\n width: parseInt(column.width, 10),\n autoWidth: column.width ? false : true\n };\n }));\n }\n}\nexport default ExcelExporter;","let current = {\n toString: value => value\n};\nclass IntlService {\n static register(userImplementation) {\n current = userImplementation;\n }\n static toString(value, format) {\n return current.toString(value, format);\n }\n}\nexport default IntlService;","import { Deflate, Inflate } from '@progress/pako-esm';\n\n/**\n * Let the user use/change some implementations.\n */\nvar external = {\n Promise: Promise\n};\nconst support = {\n base64: true,\n array: true,\n string: true,\n nodebuffer: false,\n nodestream: false,\n get arraybuffer() {\n return typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n },\n // Returns true if JSZip can read/generate Uint8Array, false otherwise.\n get uint8array() {\n return typeof Uint8Array !== \"undefined\";\n },\n get blob() {\n return blob();\n }\n};\nlet blob = function () {\n let supported;\n if (typeof ArrayBuffer === \"undefined\") {\n supported = false;\n } else {\n const buffer = new ArrayBuffer(0);\n try {\n supported = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n } catch (e) {\n supported = false;\n }\n }\n blob = () => supported;\n return supported;\n};\n\n/* eslint-disable */\n\n// private property\nconst _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n// public method for encoding\nconst encode = function (input) {\n let output = [];\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n let i = 0,\n len = input.length,\n remainingBytes = len;\n let isArray = typeof input !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = remainingBytes > 1 ? (chr2 & 15) << 2 | chr3 >> 6 : 64;\n enc4 = remainingBytes > 2 ? chr3 & 63 : 64;\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n }\n return output.join(\"\");\n};\n\n// public method for decoding\nconst decode = function (input) {\n let chr1, chr2, chr3;\n let enc1, enc2, enc3, enc4;\n let i = 0,\n resultIndex = 0;\n let dataUrlPrefix = \"data:\";\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n let 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 letiant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n let output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength | 0);\n } else {\n output = new Array(totalLength | 0);\n }\n while (i < input.length) {\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output[resultIndex++] = chr1;\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n};\n\n/* eslint-disable */\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nconst newBlob = function (part, type) {\n checkSupport(\"blob\");\n\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n};\n\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\nfunction stringifyByChunk(array, type, chunk) {\n var result = [],\n k = 0,\n len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n } else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n}\n\n/**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction stringifyByChar(array) {\n var resultStr = \"\";\n for (var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n}\n\n/**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\nlet fromCharCodeSupportsTypedArrays = () => {\n let supported;\n try {\n supported = support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n supported = false;\n }\n fromCharCodeSupportsTypedArrays = () => supported;\n return supported;\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = fromCharCodeSupportsTypedArrays();\n }\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return stringifyByChar(array);\n}\nconst applyFromCharCode = arrayLikeToString;\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {\n // string to ?\n \"string\": {\n \"string\": identity,\n \"array\": function (input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function (input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function (input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n }\n },\n // array to ?\n \"array\": {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function (input) {\n return new Uint8Array(input).buffer;\n },\n \"uint8array\": function (input) {\n return new Uint8Array(input);\n }\n },\n // arraybuffer to ?\n \"arraybuffer\": {\n \"string\": function (input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function (input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function (input) {\n return new Uint8Array(input);\n }\n },\n // uint8array to ?\n \"uint8array\": {\n \"string\": arrayLikeToString,\n \"array\": function (input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function (input) {\n return input.buffer;\n },\n \"uint8array\": identity\n }\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nconst transformTo = function (outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n checkSupport(outputType);\n var inputType = getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nconst getTypeOf = function (input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nconst checkSupport = function (type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\nconst MAX_VALUE_16BITS = 65535;\nconst MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nconst pretty = function (str) {\n var res = '',\n code,\n i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nconst delay = function (callback, args, self) {\n setTimeout(function () {\n callback.apply(self || null, args || []);\n }, 0);\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nconst extend = function () {\n var result = {},\n i,\n attr;\n for (i = 0; i < arguments.length; i++) {\n // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (Object.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nconst prepareContent = function (name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function (data) {\n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function (e) {\n resolve(e.target.result);\n };\n reader.onerror = function (e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n return promise.then(function (data) {\n var dataType = getTypeOf(data);\n if (!dataType) {\n return external.Promise.reject(new Error(\"Can't read the data of '\" + name + \"'. Is it \" + \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"));\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = decode(data);\n } else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n\n/* eslint-disable */\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nclass GenericWorker {\n constructor(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data': [],\n 'end': [],\n 'error': []\n };\n // the previous worker, if any\n this.previous = null;\n }\n\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push(chunk) {\n this.emit(\"data\", chunk);\n }\n\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end() {\n if (this.isFinished) {\n return false;\n }\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n }\n\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error(e) {\n if (this.isFinished) {\n return false;\n }\n if (this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if (this.previous) {\n this.previous.error(e);\n }\n this.cleanUp();\n }\n return true;\n }\n\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on(name, listener) {\n this._listeners[name].push(listener);\n return this;\n }\n\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp() {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n }\n\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit(name, arg) {\n if (this._listeners[name]) {\n for (var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n }\n\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe(next) {\n return next.registerPrevious(this);\n }\n\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious(previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause() {\n if (this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n if (this.previous) {\n this.previous.pause();\n }\n return true;\n }\n\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume() {\n if (!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if (this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if (this.previous) {\n this.previous.resume();\n }\n return !withError;\n }\n\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush() {}\n\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk(chunk) {\n this.push(chunk);\n }\n\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo(key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n }\n\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo() {\n for (var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n }\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock() {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n }\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString() {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Returns the utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nlet utf8len = function (c) {\n const _utf8len = new Array(256);\n for (let i = 0; i < 256; i++) {\n _utf8len[i] = i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1;\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n // Memoize table after first call\n utf8len = function (c) {\n return _utf8len[c];\n };\n return _utf8len[c];\n};\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf,\n c,\n c2,\n m_pos,\n i,\n str_len = str.length,\n buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && m_pos + 1 < str_len) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + (c - 0xd800 << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | c >>> 6;\n buf[i++] = 0x80 | c & 0x3f;\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | c >>> 12;\n buf[i++] = 0x80 | c >>> 6 & 0x3f;\n buf[i++] = 0x80 | c & 0x3f;\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | c >>> 18;\n buf[i++] = 0x80 | c >>> 12 & 0x3f;\n buf[i++] = 0x80 | c >>> 6 & 0x3f;\n buf[i++] = 0x80 | c & 0x3f;\n }\n }\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function (buf, max) {\n var pos;\n max = max || buf.length;\n if (max > buf.length) {\n max = buf.length;\n }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) {\n pos--;\n }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) {\n return max;\n }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) {\n return max;\n }\n return pos + utf8len(buf[pos]) > max ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) {\n utf16buf[out++] = c;\n continue;\n }\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) {\n utf16buf[out++] = 0xfffd;\n i += c_len - 1;\n continue;\n }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = c << 6 | buf[i++] & 0x3f;\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) {\n utf16buf[out++] = 0xfffd;\n continue;\n }\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | c >> 10 & 0x3ff;\n utf16buf[out++] = 0xdc00 | c & 0x3ff;\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if (utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return applyFromCharCode(utf16buf);\n};\n\n// That's all for the pako functions.\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nconst utf8encode = function utf8encode(str) {\n return string2buf(str);\n};\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nconst utf8decode = function utf8decode(buf) {\n buf = transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nclass Utf8DecodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 decode\");\n\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n var data = transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if (support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n this.push({\n data: utf8decode(usableData),\n meta: chunk.meta\n });\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n if (this.leftOver && this.leftOver.length) {\n this.push({\n data: utf8decode(this.leftOver),\n meta: {}\n });\n this.leftOver = null;\n }\n }\n}\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nclass Utf8EncodeWorker extends GenericWorker {\n constructor() {\n super(\"utf-8 encode\");\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: utf8encode(chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nclass ConvertWorker extends GenericWorker {\n constructor(destType) {\n super(\"ConvertWorker to \" + destType);\n this.destType = destType;\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.push({\n data: transformTo(this.destType, chunk.data),\n meta: chunk.meta\n });\n }\n}\n\n/* eslint-disable */\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch (type) {\n case \"blob\":\n return newBlob(transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\":\n return encode(content);\n default:\n return transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat(type, dataArray) {\n var i,\n index = 0,\n res = null,\n totalLength = 0;\n for (i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch (type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for (i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject) {\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper.on('data', function (data, meta) {\n dataArray.push(data);\n if (updateCallback) {\n updateCallback(meta);\n }\n }).on('error', function (err) {\n dataArray = [];\n reject(err);\n }).on('end', function () {\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n }).resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nclass StreamHelper {\n constructor(worker, outputType, mimeType) {\n var internalType = outputType;\n switch (outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch (e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n }\n\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate(updateCb) {\n return accumulate(this, updateCb);\n }\n\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on(evt, fn) {\n var self = this;\n if (evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n delay(fn, arguments, self);\n });\n }\n return this;\n }\n\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume() {\n delay(this._worker.resume, [], this._worker);\n return this;\n }\n\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause() {\n this._worker.pause();\n return this;\n }\n}\nconst base64 = false;\nconst binary = false;\nconst dir = false;\nconst createFolders = true;\nconst date = null;\nconst compression = null;\nconst compressionOptions = null;\nconst comment = null;\nconst unixPermissions = null;\nconst dosPermissions = null;\nvar defaults = /*#__PURE__*/Object.freeze({\n __proto__: null,\n base64: base64,\n binary: binary,\n dir: dir,\n createFolders: createFolders,\n date: date,\n compression: compression,\n compressionOptions: compressionOptions,\n comment: comment,\n unixPermissions: unixPermissions,\n dosPermissions: dosPermissions\n});\n\n/* eslint-disable */\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nconst DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nclass DataWorker extends GenericWorker {\n constructor(dataP) {\n super(\"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n this._tickScheduled = false;\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = getTypeOf(data);\n if (!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n }\n\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this.data = null;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if (!super.resume()) {\n return false;\n }\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n delay(this._tickAndRepeat, [], this);\n }\n return true;\n }\n\n /**\n * Trigger a tick a schedule an other call to this function.\n */\n _tickAndRepeat() {\n this._tickScheduled = false;\n if (this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if (!this.isFinished) {\n delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n }\n /**\n * Read and push a chunk.\n */\n _tick() {\n if (this.isPaused || this.isFinished) {\n return false;\n }\n var size = DEFAULT_BLOCK_SIZE;\n var data = null,\n nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch (this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data: data,\n meta: {\n percent: this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n }\n}\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nclass DataLengthProbe extends GenericWorker {\n constructor(propName) {\n super(\"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n if (chunk) {\n const length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n super.processChunk(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\nlet makeTable = function () {\n // Use ordinary array, since untyped makes no boost here\n const table = [];\n for (let n = 0; n < 256; n++) {\n let c = n;\n for (let k = 0; k < 8; k++) {\n c = c & 1 ? 0xEDB88320 ^ c >>> 1 : c >>> 1;\n }\n table[n] = c;\n }\n\n // Memoize table on first call.\n makeTable = function () {\n return table;\n };\n return table;\n};\nfunction crc32(crc, buf, len, pos) {\n const t = makeTable();\n let end = pos + len;\n crc = crc ^ -1;\n for (let i = pos; i < end; i++) {\n crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 0xFF];\n }\n return crc ^ -1; // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n const t = makeTable();\n let end = pos + len;\n crc = crc ^ -1;\n for (let i = pos; i < end; i++) {\n crc = crc >>> 8 ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n return crc ^ -1; // >>> 0;\n}\nfunction crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n const isArray = getTypeOf(input) !== \"string\";\n if (isArray) {\n return crc32(crc | 0, input, input.length, 0);\n } else {\n return crc32str(crc | 0, input, input.length, 0);\n }\n}\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nclass Crc32Probe extends GenericWorker {\n constructor() {\n super(\"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.streamInfo.crc32 = crc32wrapper(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n }\n}\n\n/* eslint-disable */\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nclass CompressedObject {\n constructor(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n }\n\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker() {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new DataLengthProbe(\"data_length\"));\n var that = this;\n worker.on(\"end\", function () {\n if (this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n }\n\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker() {\n return new DataWorker(external.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\", this.compressedSize).withStreamInfo(\"uncompressedSize\", this.uncompressedSize).withStreamInfo(\"crc32\", this.crc32).withStreamInfo(\"compression\", this.compression);\n }\n\n /**\n * Chain the given worker with other workers to compress the content with the\n * given compression.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\n static createWorkerFrom(uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker.pipe(new Crc32Probe()).pipe(new DataLengthProbe(\"uncompressedSize\")).pipe(compression.compressWorker(compressionOptions)).pipe(new DataLengthProbe(\"compressedSize\")).withStreamInfo(\"compression\", compression);\n }\n}\n\n/* eslint-disable */\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nclass ZipObject {\n constructor(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression: options.compression,\n compressionOptions: options.compressionOptions\n };\n }\n\n /**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\n internalStream(type) {\n var result = null,\n outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n var isUnicodeString = !this._dataBinary;\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n return new StreamHelper(result, outputType, \"\");\n }\n\n /**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\n async(type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n }\n\n /**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\n _compressWorker(compression, compressionOptions) {\n if (this._data instanceof CompressedObject && this._data.compression.magic === compression.magic) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if (!this._dataBinary) {\n result = result.pipe(new Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n }\n\n /**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\n _decompressWorker() {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n }\n}\nlet arrayType = function () {\n const useTypedArray = typeof Uint8Array !== 'undefined' && typeof Uint16Array !== 'undefined' && typeof Uint32Array !== 'undefined';\n const resolved = useTypedArray ? \"uint8array\" : \"array\";\n arrayType = function () {\n return resolved;\n };\n};\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nclass FlateWorker extends GenericWorker {\n constructor(action, options) {\n super(\"FlateWorker/\" + action);\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n }\n\n /**\n * @see GenericWorker.processChunk\n */\n processChunk(chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(transformTo(arrayType(), chunk.data), false);\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n super.flush();\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n }\n /**\n * @see GenericWorker.cleanUp\n */\n cleanUp() {\n super.cleanUp();\n this._pako = null;\n }\n\n /**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\n _createPako() {\n const params = {\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n };\n this._pako = this._pakoAction === 'Deflate' ? new Deflate(params) : new Inflate(params);\n this._pako.onData = data => {\n this.push({\n data: data,\n meta: this.meta\n });\n };\n }\n}\nvar DEFLATE = {\n magic: \"\\x08\\x00\",\n compressWorker: function (compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n },\n uncompressWorker: function () {\n return new FlateWorker(\"Inflate\", {});\n }\n};\nconst STORE = {\n magic: \"\\x00\\x00\",\n compressWorker: function () {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker: function () {\n return new GenericWorker(\"STORE decompression\");\n }\n};\nvar compressions = {\n STORE,\n DEFLATE\n};\nconst LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nconst CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nconst CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nconst ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nconst ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nconst DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n\n/* eslint-disable */\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function (dec, bytes) {\n var hex = \"\",\n i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with information about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function (streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8encode,\n encodedFileName = transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = transformTo(\"string\", utf8encode(file.name)),\n comment = file.comment,\n encodedComment = transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = transformTo(\"string\", utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n var dataInfo = {\n crc32: 0,\n compressedSize: 0,\n uncompressedSize: 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if (platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else {\n // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | date.getUTCMonth() + 1;\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32wrapper(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n if (useUTF8ForComment) {\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32wrapper(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n var fileRecord = LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n var dirRecord = CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing information\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n return descriptor;\n};\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nclass ZipFileWorker extends GenericWorker {\n constructor(streamFiles, comment, platform, encodeFileName) {\n super(\"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emitted metadata.\n this.currentFile = null;\n this._sources = [];\n }\n\n /**\n * @see GenericWorker.push\n */\n push(chunk) {\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n if (this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n super.push({\n data: chunk.data,\n meta: {\n currentFile: this.currentFile,\n percent: entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n }\n\n /**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\n openedSource(streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if (streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data: record.fileRecord,\n meta: {\n percent: 0\n }\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n }\n\n /**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\n closedSource(streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.dirRecords.push(record.dirRecord);\n if (streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data: generateDataDescriptors(streamInfo),\n meta: {\n percent: 100\n }\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data: record.fileRecord,\n meta: {\n percent: 0\n }\n });\n while (this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n }\n\n /**\n * @see GenericWorker.flush\n */\n flush() {\n var localDirLength = this.bytesWritten;\n for (var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data: this.dirRecords[i],\n meta: {\n percent: 100\n }\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n this.push({\n data: dirEnd,\n meta: {\n percent: 100\n }\n });\n }\n\n /**\n * Prepare the next source to be read.\n */\n prepareNextSource() {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n }\n\n /**\n * @see GenericWorker.registerPrevious\n */\n registerPrevious(previous) {\n this._sources.push(previous);\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if (self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n }\n\n /**\n * @see GenericWorker.resume\n */\n resume() {\n if (!super.resume()) {\n return false;\n }\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n }\n\n /**\n * @see GenericWorker.error\n */\n error(e) {\n var sources = this._sources;\n if (!super.error(e)) {\n return false;\n }\n for (var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch (e) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n }\n\n /**\n * @see GenericWorker.lock\n */\n lock() {\n super.lock();\n var sources = this._sources;\n for (var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n }\n}\n\n/* eslint-disable */\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nconst generateWorker = function (zip, options, comment) {\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir,\n date = file.date;\n file._compressWorker(compression, compressionOptions).withStreamInfo(\"file\", {\n name: relativePath,\n dir: dir,\n date: date,\n comment: file.comment || \"\",\n unixPermissions: file.unixPermissions,\n dosPermissions: file.dosPermissions\n }).pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n return zipFileWorker;\n};\n\n/* eslint-disable */\n\nclass DataReader {\n constructor(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n }\n\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset(offset) {\n this.checkIndex(this.index + offset);\n }\n\n /**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + newIndex + \"). Corrupted zip ?\");\n }\n }\n\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n }\n\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip(n) {\n this.setIndex(this.index + n);\n }\n\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt(i) {\n // see implementations\n }\n\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n }\n\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString(size) {\n return transformTo(\"string\", this.readData(size));\n }\n\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData(size) {\n // see implementations\n }\n\n /**\n * Find the last occurrence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurrence, -1 if not found.\n */\n lastIndexOfSignature(sig) {\n // see implementations\n }\n\n /**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature(sig) {\n // see implementations\n }\n\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate() {\n var dostime = this.readInt(4);\n return new Date(Date.UTC((dostime >> 25 & 0x7f) + 1980,\n // year\n (dostime >> 21 & 0x0f) - 1,\n // month\n dostime >> 16 & 0x1f,\n // day\n dostime >> 11 & 0x1f,\n // hour\n dostime >> 5 & 0x3f,\n // minute\n (dostime & 0x1f) << 1)); // second\n }\n}\n\n/* eslint-disable */\n\nclass ArrayReader extends DataReader {\n constructor(data) {\n super(data);\n for (var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data[this.zero + i];\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n return -1;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if (size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\nclass StringReader extends DataReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.byteAt\n */\n byteAt(i) {\n return this.data.charCodeAt(this.zero + i);\n }\n\n /**\n * @see DataReader.lastIndexOfSignature\n */\n lastIndexOfSignature(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n }\n\n /**\n * @see DataReader.readAndCheckSignature\n */\n readAndCheckSignature(sig) {\n const data = this.readData(4);\n return sig === data;\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n const result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/* eslint-disable */\n\nclass Uint8ArrayReader extends ArrayReader {\n constructor(data) {\n super(data);\n }\n\n /**\n * @see DataReader.readData\n */\n readData(size) {\n this.checkOffset(size);\n if (size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n }\n}\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nfunction readerFor(data) {\n const type = getTypeOf(data);\n checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(transformTo(\"uint8array\", data));\n }\n return new ArrayReader(transformTo(\"array\", data));\n}\n\n/* eslint-disable */\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function (compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntry {\n constructor(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n }\n\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n }\n\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n }\n\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n compression = findCompression(this.compressionMethod);\n if (compression === null) {\n // no compression found\n throw new Error(\"Corrupted zip : compression \" + pretty(this.compressionMethod) + \" unknown (inner file : \" + transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart(reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n }\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes() {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n if (madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n if (madeBy === MADE_BY_UNIX) {\n this.unixPermissions = this.externalFileAttributes >> 16 & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n }\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField(reader) {\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n }\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields(reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n if (!this.extraFields) {\n this.extraFields = {};\n }\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8decode(this.fileName);\n this.fileCommentStr = utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n }\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32wrapper(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n return utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n }\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32wrapper(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n return utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n }\n}\n\n/* eslint-disable */\n\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nclass ZipEntries {\n constructor(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n }\n\n /**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature(expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + pretty(signature) + \", expected \" + pretty(expectedSignature) + \")\");\n }\n }\n\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n }\n\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n }\n\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n }\n\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n }\n\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n }\n\n /**\n * Read the central directory.\n */\n readCentralDir() {\n var file;\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n }\n }\n }\n\n /**\n * Read the end of central directory.\n */\n readEndOfCentral() {\n var offset = this.reader.lastIndexOfSignature(CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, LOCAL_FILE_HEADER);\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" + \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, CENTRAL_FILE_HEADER)) ;else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n }\n prepareReader(data) {\n this.reader = readerFor(data);\n }\n\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n}\n\n/* eslint-disable */\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n }).on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n }).resume();\n });\n}\nfunction load(data, options) {\n var zip = this;\n options = extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8decode\n });\n return prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64).then(function (data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n zip.file(input.fileNameStr, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment: input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions: input.unixPermissions,\n dosPermissions: input.dosPermissions,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n return zip;\n });\n}\n\n/* eslint-disable */\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function (name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = getTypeOf(data),\n parent;\n\n /*\n * Correct options.\n */\n\n var o = extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && o.unixPermissions & 0x4000) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && o.dosPermissions & 0x0010) {\n o.dir = true;\n }\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n var isCompressedEmpty = data instanceof CompressedObject && data.uncompressedSize === 0;\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else {\n zipObjectContent = prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return lastSlash > 0 ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function (path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function (name, createFolders$1) {\n createFolders$1 = typeof createFolders$1 !== 'undefined' ? createFolders$1 : createFolders;\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders$1\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nclass JSZip {\n constructor() {\n if (arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n // NOTE: we use a null prototype because we do not\n // want filenames like \"toString\" coming from a zip file\n // to overwrite methods and attributes in a normal Object.\n this.files = Object.create(null);\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function () {\n const newObj = new JSZip();\n for (const i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n }\n\n /**\n * @see loadAsync\n */\n load() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\n forEach(cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) {\n // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n }\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter(search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) {\n // the file matches the function\n result.push(entry);\n }\n });\n return result;\n }\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file(name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function (relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n } else {\n // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n } else {\n // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n }\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder(arg) {\n if (!arg) {\n return this;\n }\n if (isRegExp(arg)) {\n return this.filter(function (relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n }\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function (relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n return this;\n }\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate(options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n /**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\n generateInternalStream(options) {\n var worker,\n opts = {};\n try {\n opts = extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions: null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8encode\n });\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is preferred but the internals use \"string\".\n if (opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if (opts.platform === 'darwin' || opts.platform === 'freebsd' || opts.platform === 'linux' || opts.platform === 'sunos') {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n var comment = opts.comment || this.comment || \"\";\n worker = generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n }\n\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateAsync(options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n }\n loadAsync(data, options) {\n return load.apply(this, [data, options]);\n }\n static loadAsync(content, options) {\n return new JSZip().loadAsync(content, options);\n }\n static get support() {\n return support;\n }\n static get defaults() {\n return defaults;\n }\n static get version() {\n return \"3.2.2-esm\";\n }\n static get external() {\n return external;\n }\n}\nexport { JSZip as default };","import JSZip from '@progress/jszip-esm';\nexport default function createZip() {\n return new JSZip();\n}","// date packing utilities from Kendo Spreadsheet\n\n// Julian days algorithms from http://www.hermetic.ch/cal_stud/jdn.htm#comp\nfunction dateToJulianDays(y, m, d) {\n return (1461 * (y + 4800 + ((m - 13) / 12 | 0)) / 4 | 0) + (367 * (m - 1 - 12 * ((m - 13) / 12 | 0)) / 12 | 0) - (3 * ((y + 4900 + ((m - 13) / 12 | 0)) / 100 | 0) / 4 | 0) + d - 32075;\n}\n\n// This uses the Google Spreadsheet approach: treat 1899-12-31 as day 1, allowing to avoid\n// implementing the \"Leap Year Bug\" yet still be Excel compatible for dates starting 1900-03-01.\nconst BASE_DATE = dateToJulianDays(1900, 0, -1);\nfunction packDate(year, month, date) {\n return dateToJulianDays(year, month, date) - BASE_DATE;\n}\nfunction packTime(hh, mm, ss, ms) {\n return (hh + (mm + (ss + ms / 1000) / 60) / 60) / 24;\n}\nexport default function dateToSerial(date) {\n const time = packTime(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n const serial = packDate(date.getFullYear(), date.getMonth(), date.getDate());\n return serial < 0 ? serial - 1 + time : serial + time;\n}","import map from './utils/map';\nimport createZip from './utils/create-zip';\nimport IntlService from './services/intl-service';\nimport dateToSerial from './utils/time';\nconst MIME_TYPE = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\nconst DATA_URL_PREFIX = `data:${MIME_TYPE};base64,`;\nconst DATA_URL_OPTIONS = {\n compression: \"DEFLATE\",\n type: \"base64\"\n};\nconst BLOB_OPTIONS = {\n compression: \"DEFLATE\",\n type: \"blob\"\n};\nconst ARRAYBUFFER_OPTIONS = {\n compression: \"DEFLATE\",\n type: \"arraybuffer\"\n};\n\n/* eslint-disable key-spacing, no-confusing-arrow, no-constant-condition, indent, no-nested-ternary, consistent-return */\n\nfunction toDataURI(content) {\n return DATA_URL_PREFIX + content;\n}\nfunction indexOf(thing, array) {\n return array.indexOf(thing);\n}\nconst parseJSON = JSON.parse.bind(JSON);\nfunction ESC(val) {\n return String(val).replace(/&/g, \"&\").replace(//g, \">\").replace(/\\\"/g, \""\").replace(/\\'/g, \"'\");\n}\nfunction repeat(count, func) {\n let str = \"\";\n for (let i = 0; i < count; ++i) {\n str += func(i);\n }\n return str;\n}\nfunction foreach(arr, func) {\n let str = \"\";\n if (arr != null) {\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; ++i) {\n str += func(arr[i], i);\n }\n } else if (typeof arr == \"object\") {\n Object.keys(arr).forEach((key, i) => {\n str += func(arr[key], key, i);\n });\n }\n }\n return str;\n}\nconst XMLHEAD = '\\r';\nconst RELS = `${XMLHEAD}\n \n \n \n \n `;\nconst CORE = ({\n creator,\n lastModifiedBy,\n created,\n modified\n}) => `${XMLHEAD}\n \n ${ESC(creator)}\n ${ESC(lastModifiedBy)}\n ${ESC(created)}\n ${ESC(modified)}\n`;\nconst APP = ({\n sheets\n}) => `${XMLHEAD}\n\n Microsoft Excel\n 0\n false\n \n \n \n Worksheets\n \n \n ${sheets.length}\n \n \n \n \n ${foreach(sheets, (sheet, i) => sheet.options.title ? `${ESC(sheet.options.title)}` : `Sheet${i + 1}`)}\n \n false\n false\n false\n 14.0300\n`;\nconst CONTENT_TYPES = ({\n sheetCount,\n commentFiles,\n drawingFiles\n}) => `${XMLHEAD}\n\n \n \n \n \n \n \n \n \n \n ${repeat(sheetCount, idx => ``)}\n ${foreach(commentFiles, filename => ``)}\n ${foreach(drawingFiles, filename => ``)}\n \n \n`;\nconst WORKBOOK = ({\n sheets,\n filterNames,\n userNames\n}) => `${XMLHEAD}\n\n \n \n \n \n \n \n ${foreach(sheets, ({\n options\n}, i) => {\n const name = options.name || options.title || `Sheet${i + 1}`;\n const state = options.state || 'visible';\n return ``;\n})}\n \n ${filterNames.length || userNames.length ? `\n \n ${foreach(filterNames, f => `\n `)}\n ${foreach(userNames, f => `\n `)}\n ` : ''}\n \n`;\nconst WORKSHEET = ({\n frozenColumns,\n frozenRows,\n columns,\n defaults,\n data,\n index,\n mergeCells,\n autoFilter,\n filter,\n showGridLines,\n hyperlinks,\n validations,\n defaultCellStyleId,\n rtl,\n legacyDrawing,\n drawing,\n lastRow,\n lastCol,\n hasDisabledCells\n}) => `${XMLHEAD}\n\n ${lastRow && lastCol ? `` : \"\"}\n\n \n \n ${frozenRows || frozenColumns ? `\n ` : ''}\n \n \n\n \n\n ${defaultCellStyleId != null || columns && columns.length > 0 ? `\n \n ${!columns || !columns.length ? `\n ` : ''}\n ${foreach(columns, (column, ci) => {\n const columnIndex = typeof column.index === \"number\" ? column.index + 1 : ci + 1;\n if (column.width === 0) {\n return ``;\n }\n return ``;\n})}\n ` : ''}\n\n \n ${foreach(data, (row, ri) => {\n const rowIndex = typeof row.index === \"number\" ? row.index + 1 : ri + 1;\n return `\n \n ${foreach(row.data, cell => `\n \n ${cell.formula != null ? writeFormula(cell.formula) : ''}\n ${cell.value != null ? `${ESC(cell.value)}` : ''}\n `)}\n \n `;\n})}\n \n\n ${hasDisabledCells ? `` : ''}\n\n ${autoFilter ? `` : filter ? spreadsheetFilters(filter) : ''}\n\n ${mergeCells.length ? `\n \n ${foreach(mergeCells, ref => ``)}\n ` : ''}\n\n ${validations.length ? `\n \n ${foreach(validations, val => `\n \n ${val.formula1 ? `${ESC(val.formula1)}` : ''}\n ${val.formula2 ? `${ESC(val.formula2)}` : ''}\n `)}\n ` : ''}\n\n ${hyperlinks.length ? `\n \n ${foreach(hyperlinks, link => `\n `)}\n ` : ''}\n\n \n ${drawing ? `` : ''}\n ${legacyDrawing ? `` : ''}\n`;\nconst WORKBOOK_RELS = ({\n count\n}) => `${XMLHEAD}\n\n ${repeat(count, idx => `\n `)}\n \n \n`;\nconst WORKSHEET_RELS = ({\n hyperlinks,\n comments,\n sheetIndex,\n drawings\n}) => `${XMLHEAD}\n\n ${foreach(hyperlinks, link => `\n `)}\n ${!comments.length ? '' : `\n \n `}\n ${!drawings.length ? '' : `\n `}\n`;\nconst COMMENTS_XML = ({\n comments\n}) => `${XMLHEAD}\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n \n \n \n \n ${ESC(comment.text)}\n \n \n `)}\n \n`;\nconst LEGACY_DRAWING = ({\n comments\n}) => `\\\n\n \n \n \n \n ${foreach(comments, comment => `\n \n \n \n \n \n ${comment.anchor}\n False\n ${comment.row}\n ${comment.col}\n \n `)}\n`;\nconst DRAWINGS_XML = drawings => `${XMLHEAD}\n\n ${foreach(drawings, (drawing, index) => `\n \n \n ${drawing.col}\n ${drawing.colOffset}\n ${drawing.row}\n ${drawing.rowOffset}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `)}\n`;\nconst DRAWINGS_RELS_XML = rels => `${XMLHEAD}\n\n ${foreach(rels, rel => `\n `)}\n`;\nconst SHARED_STRINGS = ({\n count,\n uniqueCount,\n indexes\n}) => `${XMLHEAD}\n\n ${foreach(Object.keys(indexes), index => `\n ${ESC(index.substring(1))}`)}\n`;\nconst STYLES = ({\n formats,\n fonts,\n fills,\n borders,\n styles\n}) => `${XMLHEAD}\n\n \n ${foreach(formats, (format, fi) => `\n `)}\n \n \n \n \n \n \n \n \n \n ${foreach(fonts, font => `\n \n ${font.bold ? '' : ''}\n ${font.italic ? '' : ''}\n ${font.underline ? '' : ''}\n \n ${font.color ? `` : ''}\n ${font.fontFamily ? `\n \n \n ` : `\n \n \n \n `}\n `)}\n \n \n \n \n ${foreach(fills, fill => `\n ${fill.background ? `\n \n \n \n \n \n ` : ''}`)}\n \n \n \n ${foreach(borders, borderTemplate)}\n \n \n \n \n \n \n ${foreach(styles, style => `\n \n ${style.textAlign || style.verticalAlign || style.wrap ? `\n \n ` : ''}\n ${style.disabled != null ? `\n \n ` : ''}\n \n `)}\n \n \n \n \n \n \n`;\nfunction writeFormula(formula) {\n if (typeof formula == \"string\") {\n return `${ESC(formula)}`;\n }\n // array formulas\n return `${ESC(formula.src)}`;\n}\nfunction numChar(colIndex) {\n const letter = Math.floor(colIndex / 26) - 1;\n return (letter >= 0 ? numChar(letter) : \"\") + String.fromCharCode(65 + colIndex % 26);\n}\nfunction ref(rowIndex, colIndex) {\n return numChar(colIndex) + (rowIndex + 1);\n}\nfunction $ref(rowIndex, colIndex) {\n return \"$\" + numChar(colIndex) + \"$\" + (rowIndex + 1);\n}\nfunction filterRowIndex(options) {\n const frozenRows = options.frozenRows || (options.freezePane || {}).rowSplit || 1;\n return frozenRows - 1;\n}\nfunction toWidth(px) {\n const maximumDigitWidth = 7;\n return px / maximumDigitWidth - Math.floor(128 / maximumDigitWidth) / 256;\n}\nfunction toHeight(px) {\n return px * 0.75;\n}\nfunction stripFunnyChars(value) {\n return String(value).replace(/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F]/g, \"\") // leave CRLF in\n .replace(/\\r?\\n/g, \"\\r\\n\"); // make sure LF is preceded by CR\n}\nclass Worksheet {\n constructor(options, sharedStrings, styles, borders) {\n this.options = options;\n this._strings = sharedStrings;\n this._styles = styles;\n this._borders = borders;\n this._validations = {};\n this._comments = [];\n this._drawings = options.drawings || [];\n this._hyperlinks = (this.options.hyperlinks || []).map((link, i) => Object.assign({}, link, {\n rId: `link${i}`\n }));\n }\n relsToXML() {\n const hyperlinks = this._hyperlinks;\n const comments = this._comments;\n const drawings = this._drawings;\n if (hyperlinks.length || comments.length || drawings.length) {\n return WORKSHEET_RELS({\n hyperlinks: hyperlinks,\n comments: comments,\n sheetIndex: this.options.sheetIndex,\n drawings: drawings\n });\n }\n }\n toXML(index) {\n const mergeCells = this.options.mergedCells || [];\n const rows = this.options.rows || [];\n const data = inflate(rows, mergeCells);\n this._readCells(data);\n let autoFilter = this.options.filter;\n let filter;\n if (autoFilter && typeof autoFilter.from === \"number\" && typeof autoFilter.to === \"number\") {\n // Grid enables auto filter\n autoFilter = {\n from: ref(filterRowIndex(this.options), autoFilter.from),\n to: ref(filterRowIndex(this.options), autoFilter.to)\n };\n } else if (autoFilter && autoFilter.ref && autoFilter.columns) {\n // this is probably from the Spreadsheet\n filter = autoFilter;\n autoFilter = null;\n }\n const validations = [];\n for (let i in this._validations) {\n if (Object.prototype.hasOwnProperty.call(this._validations, i)) {\n validations.push(this._validations[i]);\n }\n }\n let defaultCellStyleId = null;\n let defaultCellStyle = this.options.defaultCellStyle;\n if (this._hasDisabledCells) {\n if (!defaultCellStyle) {\n defaultCellStyle = {\n disabled: false\n };\n } else {\n defaultCellStyle = Object.assign({\n disabled: false\n }, defaultCellStyle);\n }\n }\n if (defaultCellStyle) {\n defaultCellStyleId = this._lookupStyle(defaultCellStyle);\n }\n const freezePane = this.options.freezePane || {};\n const defaults = this.options.defaults || {};\n const lastRow = this.options.rows ? this._getLastRow() : 1;\n const lastCol = this.options.rows ? this._getLastCol() : 1;\n return WORKSHEET({\n frozenColumns: this.options.frozenColumns || freezePane.colSplit,\n frozenRows: this.options.frozenRows || freezePane.rowSplit,\n columns: this.options.columns,\n defaults: defaults,\n data: data,\n index: index,\n mergeCells: mergeCells,\n autoFilter: autoFilter,\n filter: filter,\n showGridLines: this.options.showGridLines,\n hyperlinks: this._hyperlinks,\n validations: validations,\n defaultCellStyleId: defaultCellStyleId,\n rtl: this.options.rtl !== undefined ? this.options.rtl : defaults.rtl,\n legacyDrawing: this._comments.length ? `vml${this.options.sheetIndex}` : null,\n drawing: this._drawings.length ? `drw${this.options.sheetIndex}` : null,\n lastRow: lastRow,\n lastCol: lastCol,\n hasDisabledCells: this._hasDisabledCells\n });\n }\n commentsXML() {\n if (this._comments.length) {\n return COMMENTS_XML({\n comments: this._comments\n });\n }\n }\n drawingsXML(images) {\n if (this._drawings.length) {\n let rels = {};\n let main = this._drawings.map(drw => {\n let ref = parseRef(drw.topLeftCell);\n let img = rels[drw.image];\n if (!img) {\n img = rels[drw.image] = {\n rId: `img${drw.image}`,\n target: images[drw.image].target\n };\n }\n return {\n col: ref.col,\n colOffset: pixelsToExcel(drw.offsetX),\n row: ref.row,\n rowOffset: pixelsToExcel(drw.offsetY),\n width: pixelsToExcel(drw.width),\n height: pixelsToExcel(drw.height),\n imageId: img.rId\n };\n });\n return {\n main: DRAWINGS_XML(main),\n rels: DRAWINGS_RELS_XML(rels)\n };\n }\n }\n legacyDrawing() {\n if (this._comments.length) {\n return LEGACY_DRAWING({\n comments: this._comments\n });\n }\n }\n _lookupString(value) {\n const key = \"$\" + value;\n const index = this._strings.indexes[key];\n let result;\n if (index !== undefined) {\n result = index;\n } else {\n result = this._strings.indexes[key] = this._strings.uniqueCount;\n this._strings.uniqueCount++;\n }\n this._strings.count++;\n return result;\n }\n _lookupStyle(style) {\n const json = JSON.stringify(style);\n if (json === \"{}\") {\n return 0;\n }\n let index = indexOf(json, this._styles);\n if (index < 0) {\n index = this._styles.push(json) - 1;\n }\n\n // There is one default style\n return index + 1;\n }\n _lookupBorder(border) {\n const json = JSON.stringify(border);\n if (json === \"{}\") {\n return;\n }\n let index = indexOf(json, this._borders);\n if (index < 0) {\n index = this._borders.push(json) - 1;\n }\n\n // There is one default border\n return index + 1;\n }\n _readCells(rowData) {\n for (let i = 0; i < rowData.length; i++) {\n const row = rowData[i];\n const cells = row.cells;\n row.data = [];\n for (let j = 0; j < cells.length; j++) {\n const cellData = this._cell(cells[j], row.index, j);\n if (cellData) {\n row.data.push(cellData);\n }\n }\n }\n }\n _cell(data, rowIndex, cellIndex) {\n if (!data || data === EMPTY_CELL) {\n return null;\n }\n let value = data.value;\n let border = {};\n if (data.borderLeft) {\n border.left = data.borderLeft;\n }\n if (data.borderRight) {\n border.right = data.borderRight;\n }\n if (data.borderTop) {\n border.top = data.borderTop;\n }\n if (data.borderBottom) {\n border.bottom = data.borderBottom;\n }\n if (data.dBorders) {\n border.diagonal = data.dBorders;\n }\n border = this._lookupBorder(border);\n const defStyle = this.options.defaultCellStyle || {};\n let style = {\n borderId: border\n };\n (add => {\n add(\"color\");\n add(\"background\");\n add(\"bold\");\n add(\"italic\");\n add(\"underline\");\n if (!add(\"fontFamily\")) {\n add(\"fontName\", \"fontFamily\");\n }\n add(\"fontSize\");\n add(\"format\");\n if (!add(\"textAlign\")) {\n add(\"hAlign\", \"textAlign\");\n }\n if (!add(\"verticalAlign\")) {\n add(\"vAlign\", \"verticalAlign\");\n }\n add(\"wrap\");\n add(\"indent\");\n if (!add(\"disabled\")) {\n if (add(\"enable\")) {\n style.disabled = !style.enable;\n delete style.enable;\n }\n }\n if (style.disabled) {\n this._hasDisabledCells = true;\n }\n })((prop, target) => {\n let val = data[prop];\n if (val === undefined) {\n val = defStyle[prop];\n }\n if (val !== undefined) {\n style[target || prop] = val;\n return true;\n }\n });\n const columns = this.options.columns || [];\n const column = columns[cellIndex];\n let type = typeof value;\n if (column && column.autoWidth && (!data.colSpan || data.colSpan === 1)) {\n let displayValue = value;\n\n // XXX: let's not bring kendo.toString in only for this.\n // better wait until the spreadsheet engine is available as a separate\n // component, then we can use a real Excel-like formatter.\n //\n if (type === \"number\") {\n // kendo.toString will not behave exactly like the Excel format\n // Still, it's the best we have available for estimating the character count.\n displayValue = IntlService.toString(value, data.format);\n }\n column.width = Math.max(column.width || 0, String(displayValue).length);\n }\n if (type === \"string\") {\n value = stripFunnyChars(value);\n value = this._lookupString(value);\n type = \"s\";\n } else if (type === \"number\") {\n type = \"n\";\n } else if (type === \"boolean\") {\n type = \"b\";\n value = Number(value);\n } else if (value && value.getTime) {\n type = null;\n value = dateToSerial(value);\n if (!style.format) {\n style.format = \"mm-dd-yy\";\n }\n } else {\n type = null;\n value = null;\n }\n style = this._lookupStyle(style);\n const cellName = ref(rowIndex, cellIndex);\n if (data.validation) {\n this._addValidation(data.validation, cellName);\n }\n if (data.comment) {\n let anchor = [cellIndex + 1,\n // start column\n 15,\n // start column offset\n rowIndex,\n // start row\n 10,\n // start row offset\n cellIndex + 3,\n // end column\n 15,\n // end column offset\n rowIndex + 3,\n // end row\n 4 // end row offset\n ];\n this._comments.push({\n ref: cellName,\n text: data.comment,\n row: rowIndex,\n col: cellIndex,\n anchor: anchor.join(\", \")\n });\n }\n return {\n value: value,\n formula: data.formula,\n type: type,\n style: style,\n ref: cellName\n };\n }\n _addValidation(v, ref) {\n const tmp = {\n showErrorMessage: v.type === \"reject\" ? 1 : 0,\n formula1: v.from,\n formula2: v.to,\n type: MAP_EXCEL_TYPE[v.dataType] || v.dataType,\n operator: MAP_EXCEL_OPERATOR[v.comparerType] || v.comparerType,\n allowBlank: v.allowNulls ? 1 : 0,\n showDropDown: v.showButton ? 0 : 1,\n // LOL, Excel!\n error: v.messageTemplate,\n errorTitle: v.titleTemplate\n };\n const json = JSON.stringify(tmp);\n if (!this._validations[json]) {\n this._validations[json] = tmp;\n tmp.sqref = [];\n }\n this._validations[json].sqref.push(ref);\n }\n _getLastRow() {\n return countData(this.options.rows);\n }\n _getLastCol() {\n let last = 0;\n this.options.rows.forEach(function (row) {\n if (row.cells) {\n last = Math.max(last, countData(row.cells));\n }\n });\n return last;\n }\n}\nfunction countData(data) {\n let last = data.length;\n data.forEach(function (el) {\n if (el.index && el.index >= last) {\n last = el.index + 1;\n }\n });\n return last;\n}\nconst MAP_EXCEL_OPERATOR = {\n // includes only what differs; key is our operator, value is Excel\n // operator.\n greaterThanOrEqualTo: \"greaterThanOrEqual\",\n lessThanOrEqualTo: \"lessThanOrEqual\"\n};\nconst MAP_EXCEL_TYPE = {\n // eslint-disable-next-line id-denylist\n number: \"decimal\"\n};\nconst defaultFormats = {\n \"General\": 0,\n \"0\": 1,\n \"0.00\": 2,\n \"#,##0\": 3,\n \"#,##0.00\": 4,\n \"0%\": 9,\n \"0.00%\": 10,\n \"0.00E+00\": 11,\n \"# ?/?\": 12,\n \"# ??/??\": 13,\n \"mm-dd-yy\": 14,\n \"d-mmm-yy\": 15,\n \"d-mmm\": 16,\n \"mmm-yy\": 17,\n \"h:mm AM/PM\": 18,\n \"h:mm:ss AM/PM\": 19,\n \"h:mm\": 20,\n \"h:mm:ss\": 21,\n \"m/d/yy h:mm\": 22,\n \"#,##0 ;(#,##0)\": 37,\n \"#,##0 ;[Red](#,##0)\": 38,\n \"#,##0.00;(#,##0.00)\": 39,\n \"#,##0.00;[Red](#,##0.00)\": 40,\n \"mm:ss\": 45,\n \"[h]:mm:ss\": 46,\n \"mmss.0\": 47,\n \"##0.0E+0\": 48,\n \"@\": 49,\n \"[$-404]e/m/d\": 27,\n \"m/d/yy\": 30,\n \"t0\": 59,\n \"t0.00\": 60,\n \"t#,##0\": 61,\n \"t#,##0.00\": 62,\n \"t0%\": 67,\n \"t0.00%\": 68,\n \"t# ?/?\": 69,\n \"t# ??/??\": 70\n};\nfunction maybeRGB(value) {\n function hex(val) {\n let x = parseInt(val, 10).toString(16);\n return x.length < 2 ? \"0\" + x : x;\n }\n let m = /^rgba?\\((\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+)\\s*)?\\)/i.exec(value.trim());\n if (m) {\n let opacity = (m[4] ? parseFloat(m[4]) : 1) * 255 | 0;\n return \"#\" + hex(opacity) + hex(m[1]) + hex(m[2]) + hex(m[3]);\n }\n return value;\n}\nfunction convertColor(value) {\n let color = maybeRGB(value);\n if (color.length < 6) {\n color = color.replace(/(\\w)/g, function ($0, $1) {\n return $1 + $1;\n });\n }\n color = color.substring(1).toUpperCase();\n if (color.length < 8) {\n color = \"FF\" + color;\n }\n return color;\n}\nclass Workbook {\n constructor(options) {\n this.options = options || {};\n this._strings = {\n indexes: {},\n count: 0,\n uniqueCount: 0\n };\n this._styles = [];\n this._borders = [];\n this._images = this.options.images;\n this._imgId = 0;\n this._sheets = map(this.options.sheets || [], (options, i) => {\n options.defaults = this.options;\n options.sheetIndex = i + 1;\n return new Worksheet(options, this._strings, this._styles, this._borders);\n });\n }\n imageFilename(mimeType) {\n const id = ++this._imgId;\n switch (mimeType) {\n case \"image/jpg\":\n case \"image/jpeg\":\n return `image${id}.jpg`;\n case \"image/png\":\n return `image${id}.png`;\n case \"image/gif\":\n return `image${id}.gif`;\n default:\n return `image${id}.bin`;\n // XXX: anything better to do here?\n }\n }\n toZIP() {\n const zip = createZip();\n const docProps = zip.folder(\"docProps\");\n docProps.file(\"core.xml\", CORE({\n creator: this.options.creator || \"Kendo UI\",\n lastModifiedBy: this.options.creator || \"Kendo UI\",\n created: this.options.date || new Date().toJSON(),\n modified: this.options.date || new Date().toJSON()\n }));\n const sheetCount = this._sheets.length;\n docProps.file(\"app.xml\", APP({\n sheets: this._sheets\n }));\n const rels = zip.folder(\"_rels\");\n rels.file(\".rels\", RELS);\n const xl = zip.folder(\"xl\");\n const xlRels = xl.folder(\"_rels\");\n xlRels.file(\"workbook.xml.rels\", WORKBOOK_RELS({\n count: sheetCount\n }));\n if (this._images) {\n const media = xl.folder(\"media\");\n Object.keys(this._images).forEach(id => {\n const img = this._images[id];\n const filename = this.imageFilename(img.type);\n media.file(filename, img.data);\n img.target = `../media/${filename}`;\n });\n }\n const sheetIds = {};\n xl.file(\"workbook.xml\", WORKBOOK({\n sheets: this._sheets,\n filterNames: map(this._sheets, function (sheet, index) {\n const options = sheet.options;\n const sheetName = options.name || options.title || \"Sheet\" + (index + 1);\n sheetIds[sheetName.toLowerCase()] = index;\n const filter = options.filter;\n if (filter) {\n if (filter.ref) {\n // spreadsheet provides `ref`\n let a = filter.ref.split(\":\");\n let from = parseRef(a[0]);\n let to = parseRef(a[1]);\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(from.row, from.col),\n to: $ref(to.row, to.col)\n };\n } else if (typeof filter.from !== \"undefined\" && typeof filter.to !== \"undefined\") {\n // grid does this\n return {\n localSheetId: index,\n name: sheetName,\n from: $ref(filterRowIndex(options), filter.from),\n to: $ref(filterRowIndex(options), filter.to)\n };\n }\n }\n }),\n userNames: map(this.options.names || [], function (def) {\n return {\n name: def.localName,\n localSheetId: def.sheet ? sheetIds[def.sheet.toLowerCase()] : null,\n value: def.value,\n hidden: def.hidden\n };\n })\n }));\n const worksheets = xl.folder(\"worksheets\");\n const drawings = xl.folder(\"drawings\");\n const drawingsRels = drawings.folder(\"_rels\");\n const sheetRels = worksheets.folder(\"_rels\");\n const commentFiles = [];\n const drawingFiles = [];\n for (let idx = 0; idx < sheetCount; idx++) {\n const sheet = this._sheets[idx];\n const sheetName = `sheet${idx + 1}.xml`;\n const sheetXML = sheet.toXML(idx); // must be called before relsToXML\n const relsXML = sheet.relsToXML();\n const commentsXML = sheet.commentsXML();\n const legacyDrawing = sheet.legacyDrawing();\n const drawingsXML = sheet.drawingsXML(this._images);\n if (relsXML) {\n sheetRels.file(sheetName + \".rels\", relsXML);\n }\n if (commentsXML) {\n let name = `comments${sheet.options.sheetIndex}.xml`;\n xl.file(name, commentsXML);\n commentFiles.push(name);\n }\n if (legacyDrawing) {\n drawings.file(`vmlDrawing${sheet.options.sheetIndex}.vml`, legacyDrawing);\n }\n if (drawingsXML) {\n let name = `drawing${sheet.options.sheetIndex}.xml`;\n drawings.file(name, drawingsXML.main);\n drawingsRels.file(`${name}.rels`, drawingsXML.rels);\n drawingFiles.push(name);\n }\n worksheets.file(sheetName, sheetXML);\n }\n const borders = map(this._borders, parseJSON);\n const styles = map(this._styles, parseJSON);\n const hasFont = function (style) {\n return style.underline || style.bold || style.italic || style.color || style.fontFamily || style.fontSize;\n };\n const convertFontSize = function (value) {\n let fontInPx = Number(value);\n let fontInPt;\n if (fontInPx) {\n fontInPt = fontInPx * 3 / 4;\n }\n return fontInPt;\n };\n const fonts = map(styles, function (style) {\n if (style.fontSize) {\n style.fontSize = convertFontSize(style.fontSize);\n }\n if (style.color) {\n style.color = convertColor(style.color);\n }\n if (hasFont(style)) {\n return style;\n }\n });\n const formats = map(styles, function (style) {\n if (style.format && defaultFormats[style.format] === undefined) {\n return style;\n }\n });\n const fills = map(styles, function (style) {\n if (style.background) {\n style.background = convertColor(style.background);\n return style;\n }\n });\n xl.file(\"styles.xml\", STYLES({\n fonts: fonts,\n fills: fills,\n formats: formats,\n borders: borders,\n styles: map(styles, function (style) {\n const result = {};\n if (hasFont(style)) {\n result.fontId = indexOf(style, fonts) + 1;\n }\n if (style.background) {\n result.fillId = indexOf(style, fills) + 2;\n }\n result.textAlign = style.textAlign;\n result.indent = style.indent;\n result.verticalAlign = style.verticalAlign;\n result.wrap = style.wrap;\n result.borderId = style.borderId;\n if (style.format) {\n if (defaultFormats[style.format] !== undefined) {\n result.numFmtId = defaultFormats[style.format];\n } else {\n result.numFmtId = 165 + indexOf(style, formats);\n }\n }\n if (style.disabled != null) {\n result.disabled = style.disabled;\n }\n return result;\n })\n }));\n xl.file(\"sharedStrings.xml\", SHARED_STRINGS(this._strings));\n zip.file(\"[Content_Types].xml\", CONTENT_TYPES({\n sheetCount: sheetCount,\n commentFiles: commentFiles,\n drawingFiles: drawingFiles\n }));\n return zip;\n }\n toDataURL() {\n const zip = this.toZIP();\n return zip.generateAsync ? zip.generateAsync(DATA_URL_OPTIONS).then(toDataURI) : toDataURI(zip.generate(DATA_URL_OPTIONS));\n }\n toBlob() {\n const zip = this.toZIP();\n if (zip.generateAsync) {\n return zip.generateAsync(BLOB_OPTIONS);\n }\n return new Blob([zip.generate(ARRAYBUFFER_OPTIONS)], {\n type: MIME_TYPE\n });\n }\n}\nfunction borderStyle(width) {\n let alias = \"thin\";\n if (width === 2) {\n alias = \"medium\";\n } else if (width === 3) {\n alias = \"thick\";\n }\n return alias;\n}\nfunction borderSideTemplate(name, style) {\n let result = \"\";\n if (style) {\n result += \"<\" + name + \" style=\\\"\" + borderStyle(style.size) + \"\\\">\";\n if (style.color) {\n result += \"\";\n }\n result += \"\";\n }\n return result;\n}\nfunction borderTemplate(border) {\n let diag = border.diagonal ? border.diagonal.type : 0;\n return `\n ${borderSideTemplate(\"left\", border.left)}\n ${borderSideTemplate(\"right\", border.right)}\n ${borderSideTemplate(\"top\", border.top)}\n ${borderSideTemplate(\"bottom\", border.bottom)}\n ${borderSideTemplate(\"diagonal\", border.diagonal)}\n `;\n}\nconst EMPTY_CELL = {};\nfunction inflate(rows, mergedCells) {\n const rowData = [];\n const rowsByIndex = [];\n indexRows(rows, function (row, index) {\n const data = {\n _source: row,\n index: index,\n height: row.height,\n level: row.level,\n cells: []\n };\n rowData.push(data);\n rowsByIndex[index] = data;\n });\n const sorted = sortByIndex(rowData).slice(0);\n const ctx = {\n rowData: rowData,\n rowsByIndex: rowsByIndex,\n mergedCells: mergedCells\n };\n for (let i = 0; i < sorted.length; i++) {\n fillCells(sorted[i], ctx);\n delete sorted[i]._source;\n }\n return sortByIndex(rowData);\n}\nfunction indexRows(rows, callback) {\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) {\n continue;\n }\n let index = row.index;\n if (typeof index !== \"number\") {\n index = i;\n }\n callback(row, index);\n }\n}\nfunction sortByIndex(items) {\n return items.sort(function (a, b) {\n return a.index - b.index;\n });\n}\nfunction pushUnique(array, el) {\n if (array.indexOf(el) < 0) {\n array.push(el);\n }\n}\nfunction getSpan(mergedCells, ref) {\n for (let i = 0; i < mergedCells.length; ++i) {\n const range = mergedCells[i];\n const a = range.split(\":\");\n let topLeft = a[0];\n if (topLeft === ref) {\n let bottomRight = a[1];\n topLeft = parseRef(topLeft);\n bottomRight = parseRef(bottomRight);\n return {\n rowSpan: bottomRight.row - topLeft.row + 1,\n colSpan: bottomRight.col - topLeft.col + 1\n };\n }\n }\n}\nfunction parseRef(ref) {\n function getcol(str) {\n let upperStr = str.toUpperCase();\n let col = 0;\n for (let i = 0; i < upperStr.length; ++i) {\n col = col * 26 + upperStr.charCodeAt(i) - 64;\n }\n return col - 1;\n }\n function getrow(str) {\n return parseInt(str, 10) - 1;\n }\n const m = /^([a-z]+)(\\d+)$/i.exec(ref);\n return {\n row: getrow(m[2]),\n col: getcol(m[1])\n };\n}\nfunction pixelsToExcel(px) {\n return Math.round(px * 9525);\n}\nfunction fillCells(data, ctx) {\n const row = data._source;\n const rowIndex = data.index;\n const cells = row.cells;\n const cellData = data.cells;\n if (!cells) {\n return;\n }\n for (let i = 0; i < cells.length; i++) {\n const cell = cells[i] || EMPTY_CELL;\n let rowSpan = cell.rowSpan || 1;\n let colSpan = cell.colSpan || 1;\n const cellIndex = insertCell(cellData, cell);\n const topLeftRef = ref(rowIndex, cellIndex);\n if (rowSpan === 1 && colSpan === 1) {\n // could still be merged: the spreadsheet does not send\n // rowSpan/colSpan, but mergedCells is already populated.\n // https://github.com/telerik/kendo-ui-core/issues/2401\n const tmp = getSpan(ctx.mergedCells, topLeftRef);\n if (tmp) {\n colSpan = tmp.colSpan;\n rowSpan = tmp.rowSpan;\n }\n }\n spanCell(cell, cellData, cellIndex, colSpan);\n if (rowSpan > 1 || colSpan > 1) {\n pushUnique(ctx.mergedCells, topLeftRef + \":\" + ref(rowIndex + rowSpan - 1, cellIndex + colSpan - 1));\n }\n if (rowSpan > 1) {\n for (let ri = rowIndex + 1; ri < rowIndex + rowSpan; ri++) {\n let nextRow = ctx.rowsByIndex[ri];\n if (!nextRow) {\n nextRow = ctx.rowsByIndex[ri] = {\n index: ri,\n cells: []\n };\n ctx.rowData.push(nextRow);\n }\n spanCell(cell, nextRow.cells, cellIndex - 1, colSpan + 1);\n }\n }\n }\n}\nfunction insertCell(data, cell) {\n let index;\n if (typeof cell.index === \"number\") {\n index = cell.index;\n insertCellAt(data, cell, cell.index);\n } else {\n index = appendCell(data, cell);\n }\n return index;\n}\nfunction insertCellAt(data, cell, index) {\n data[index] = cell;\n}\nfunction appendCell(data, cell) {\n let index = data.length;\n for (let i = 0; i < data.length + 1; i++) {\n if (!data[i]) {\n data[i] = cell;\n index = i;\n break;\n }\n }\n return index;\n}\nfunction spanCell(cell, row, startIndex, colSpan) {\n for (let i = 1; i < colSpan; i++) {\n const tmp = {\n borderTop: cell.borderTop,\n borderRight: cell.borderRight,\n borderBottom: cell.borderBottom,\n borderLeft: cell.borderLeft\n };\n insertCellAt(row, tmp, startIndex + i);\n }\n}\nconst SPREADSHEET_FILTERS = ({\n ref,\n columns,\n generators\n}) => `\n\n ${foreach(columns, col => `\n \n ${generators[col.filter](col)}\n \n `)}\n`;\nconst SPREADSHEET_CUSTOM_FILTER = ({\n logic,\n criteria\n}) => `\n\n${foreach(criteria, f => {\n let op = spreadsheetFilters.customOperator(f);\n let val = spreadsheetFilters.customValue(f);\n return ``;\n})}\n`;\nconst SPREADSHEET_DYNAMIC_FILTER = ({\n type\n}) => ``;\nconst SPREADSHEET_TOP_FILTER = ({\n type,\n value\n}) => ``;\nconst SPREADSHEET_VALUE_FILTER = ({\n blanks,\n values\n}) => `\n ${foreach(values, value => `\n `)}\n `;\nfunction spreadsheetFilters(filter) {\n return SPREADSHEET_FILTERS({\n ref: filter.ref,\n columns: filter.columns,\n generators: {\n custom: SPREADSHEET_CUSTOM_FILTER,\n dynamic: SPREADSHEET_DYNAMIC_FILTER,\n top: SPREADSHEET_TOP_FILTER,\n value: SPREADSHEET_VALUE_FILTER\n }\n });\n}\nspreadsheetFilters.customOperator = function (f) {\n return {\n eq: \"equal\",\n gt: \"greaterThan\",\n gte: \"greaterThanOrEqual\",\n lt: \"lessThan\",\n lte: \"lessThanOrEqual\",\n ne: \"notEqual\",\n // These are not in the spec, but seems to be how Excel does\n // it (see customValue below). For the non-negated versions,\n // the operator attribute is missing completely.\n doesnotstartwith: \"notEqual\",\n doesnotendwith: \"notEqual\",\n doesnotcontain: \"notEqual\",\n doesnotmatch: \"notEqual\"\n }[f.operator.toLowerCase()];\n};\nfunction quoteSheet(name) {\n if (/^\\'/.test(name)) {\n // assume already quoted, the Spreadsheet does it.\n return name;\n }\n if (/^[a-z_][a-z0-9_]*$/i.test(name)) {\n return name; // no need to quote it\n }\n return \"'\" + name.replace(/\\x27/g, \"\\\\'\") + \"'\";\n}\nspreadsheetFilters.customValue = function (f) {\n function esc(str) {\n return str.replace(/([*?])/g, \"~$1\");\n }\n switch (f.operator.toLowerCase()) {\n case \"startswith\":\n case \"doesnotstartwith\":\n return esc(f.value) + \"*\";\n case \"endswith\":\n case \"doesnotendwith\":\n return \"*\" + esc(f.value);\n case \"contains\":\n case \"doesnotcontain\":\n return \"*\" + esc(f.value) + \"*\";\n default:\n return f.value;\n }\n};\nspreadsheetFilters.dynamicFilterType = function (type) {\n return {\n quarter1: \"Q1\",\n quarter2: \"Q2\",\n quarter3: \"Q3\",\n quarter4: \"Q4\",\n january: \"M1\",\n february: \"M2\",\n march: \"M3\",\n april: \"M4\",\n may: \"M5\",\n june: \"M6\",\n july: \"M7\",\n august: \"M8\",\n september: \"M9\",\n october: \"M10\",\n november: \"M11\",\n december: \"M12\"\n }[type.toLowerCase()] || type;\n};\nexport { Workbook, Worksheet };","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Component, Input, ContentChildren, QueryList, Directive, Optional, forwardRef, SkipSelf, Host, ContentChild, NgModule } from '@angular/core';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { IntlService, ExcelExporter, Workbook } from '@progress/kendo-ooxml';\nexport * from '@progress/kendo-ooxml';\nimport { toString } from '@progress/kendo-intl';\nimport * as i1 from '@progress/kendo-angular-l10n';\nimport { LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { validatePackage } from '@progress/kendo-licensing';\nconst compileTemplate = (templateRef, context, updateContext) => {\n let embeddedView = templateRef.createEmbeddedView(context);\n const result = data => {\n updateContext(context, data);\n embeddedView.detectChanges();\n return embeddedView.rootNodes.reduce((content, rootNode) => {\n return content + rootNode.textContent;\n }, '').trim();\n };\n result.destroy = () => {\n embeddedView.destroy();\n embeddedView = null;\n };\n return result;\n};\nconst updateGroupHeaderContext = (context, data) => {\n context.$implicit = context.group = data;\n context.field = data.field;\n context.value = data.value;\n context.aggregates = data.aggregates;\n};\nconst updateGroupFooterContext = (context, data) => {\n context.group = data.group;\n context.$implicit = context.aggregates = data;\n};\nconst updateFooterContext = (context, data) => {\n context.aggregates = data.aggregates;\n};\n/**\n * @hidden\n */\nconst toExporterColumns = sourceColumns => {\n const exporterColumns = [];\n let columnIndex = 0;\n const addColumns = (columns, result, level) => {\n columns.forEach(column => {\n if (column.level === level) {\n const exporterColumn = new ExporterColumn(column, columnIndex);\n result.push(exporterColumn);\n if (column.children && column.children.some(c => c !== column)) {\n const children = exporterColumn.columns = [];\n addColumns(column.children, children, level + 1);\n } else {\n columnIndex++;\n }\n }\n });\n };\n addColumns(sourceColumns, exporterColumns, 0);\n return exporterColumns;\n};\n/**\n * @hidden\n */\nconst destroyColumns = columns => {\n if (columns) {\n columns.forEach(column => {\n column.destroy();\n });\n }\n};\n/**\n * @hidden\n */\nclass ExporterColumn {\n constructor(column, columnIndex) {\n this.title = column.title;\n this.field = column.field;\n this.hidden = column.hidden;\n this.locked = column.locked;\n this.width = column.width;\n this.headerCellOptions = column.headerCellOptions;\n this.cellOptions = column.cellOptions;\n this.groupHeaderCellOptions = column.groupHeaderCellOptions;\n this.groupFooterCellOptions = column.groupFooterCellOptions;\n this.footerCellOptions = column.footerCellOptions;\n if (column.footerTemplate) {\n this.footerTemplate = compileTemplate(column.footerTemplate.templateRef, {\n $implicit: column,\n column: column,\n columnIndex: columnIndex\n }, updateFooterContext);\n }\n if (column.groupFooterTemplate) {\n this.groupFooterTemplate = compileTemplate(column.groupFooterTemplate.templateRef, {\n column: column,\n field: column.field\n }, updateGroupFooterContext);\n }\n if (column.groupHeaderTemplate) {\n this.groupHeaderTemplate = compileTemplate(column.groupHeaderTemplate.templateRef, {}, updateGroupHeaderContext);\n }\n if (column.groupHeaderColumnTemplate) {\n this.groupHeaderColumnTemplate = compileTemplate(column.groupHeaderColumnTemplate.templateRef, {}, updateGroupHeaderContext);\n }\n }\n destroy() {\n if (this.footerTemplate) {\n this.footerTemplate.destroy();\n }\n if (this.groupFooterTemplate) {\n this.groupFooterTemplate.destroy();\n }\n if (this.groupHeaderTemplate) {\n this.groupHeaderTemplate.destroy();\n }\n if (this.groupHeaderColumnTemplate) {\n this.groupHeaderColumnTemplate.destroy();\n }\n destroyColumns(this.columns);\n }\n}\nIntlService.register({\n toString\n});\n/**\n *\n * @hidden\n */\nconst workbookOptions = options => {\n const columns = toExporterColumns(options.columns);\n const exporter = new ExcelExporter({\n columns: columns,\n data: options.data,\n filterable: options.filterable,\n groups: options.group,\n paddingCellOptions: options.paddingCellOptions,\n headerPaddingCellOptions: options.headerPaddingCellOptions,\n collapsible: options.collapsible,\n hierarchy: options.hierarchy,\n aggregates: options.aggregates\n });\n const result = exporter.workbook();\n result.creator = options.creator;\n result.date = options.date;\n result.rtl = options.rtl;\n destroyColumns(columns);\n return result;\n};\n/**\n * @hidden\n */\nconst toDataURL = options => {\n const workbook = new Workbook(options);\n return workbook.toDataURL();\n};\n/**\n * @hidden\n */\nconst isWorkbookOptions = value => {\n return value && value.sheets;\n};\n\n/**\n * @hidden\n */\nlet ColumnBase = /*#__PURE__*/(() => {\n class ColumnBase {\n constructor(parent) {\n this.parent = parent;\n }\n /**\n * @hidden\n */\n get level() {\n return this.parent ? this.parent.level + 1 : 0;\n }\n }\n ColumnBase.ɵfac = function ColumnBase_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnBase)(i0.ɵɵdirectiveInject(ColumnBase));\n };\n ColumnBase.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnBase,\n selectors: [[\"ng-component\"]],\n contentQueries: function ColumnBase_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnBase, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.children = _t);\n }\n },\n inputs: {\n title: \"title\",\n width: \"width\",\n locked: \"locked\",\n hidden: \"hidden\",\n headerCellOptions: \"headerCellOptions\"\n },\n decls: 0,\n vars: 0,\n template: function ColumnBase_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ColumnBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-excel-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621714,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\n\n// eslint-disable max-line-length\n/**\n * Represents the [Kendo UI Excel Export component for Angular]({% slug overview_excelexport %}).\n * Configures the settings for the Excel export of the Kendo UI Grid.\n */\nlet ExcelExportComponent = /*#__PURE__*/(() => {\n class ExcelExportComponent {\n constructor(localization, zone) {\n this.localization = localization;\n this.zone = zone;\n /**\n * Specifies the name of the file that is exported to Excel.\n * @default \"Export.xlsx\"\n */\n this.fileName = 'Export.xlsx';\n /**\n * @hidden\n */\n this.columns = new QueryList();\n validatePackage(packageMetadata);\n this.saveFile = this.saveFile.bind(this);\n }\n /**\n * Saves the data to Excel.\n *\n * @param exportData - An optional parameter. Can be the data that will be exported or [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}).\n */\n save(exportData) {\n this.toDataURL(exportData).then(this.saveFile);\n }\n /**\n * Based on the specified columns and data, returns\n * [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %})\n * ([see example]({% slug customrowsandcells_excelexport %})).\n *\n * @param exportData - The optional data to be exported.\n * @returns {WorkbookOptions} - The workbook options.\n */\n workbookOptions(exportData) {\n const currentData = this.getExportData(exportData);\n const options = workbookOptions({\n columns: this.columns,\n data: currentData.data,\n group: currentData.group,\n filterable: this.filterable,\n creator: this.creator,\n date: this.date,\n rtl: this.localization.rtl,\n paddingCellOptions: this.paddingCellOptions,\n headerPaddingCellOptions: this.headerPaddingCellOptions,\n collapsible: this.collapsible\n });\n return options;\n }\n /**\n * Returns a promise which will be resolved with the file data URI\n * ([see example]({% slug filesaving_excelexport %})).\n *\n * @param exportData - The optional data or [`WorkbookOptions`]({% slug api_excel-export_workbookoptions %}) that will be used to generate the data URI.\n * @returns {Promise} - The promise that will be resolved by the file data URI.\n */\n toDataURL(exportData) {\n const options = isWorkbookOptions(exportData) ? exportData : this.workbookOptions(exportData);\n return this.zone.runOutsideAngular(() => toDataURL(options));\n }\n getExportData(exportData) {\n let result;\n if (exportData) {\n if (Array.isArray(exportData)) {\n result = {\n data: exportData\n };\n } else {\n result = exportData;\n }\n } else {\n result = {\n data: this.data,\n group: this.group\n };\n }\n return result;\n }\n saveFile(dataURL) {\n saveAs(dataURL, this.fileName, {\n forceProxy: this.forceProxy,\n proxyURL: this.proxyURL\n });\n }\n }\n ExcelExportComponent.ɵfac = function ExcelExportComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExcelExportComponent)(i0.ɵɵdirectiveInject(i1.LocalizationService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n ExcelExportComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ExcelExportComponent,\n selectors: [[\"kendo-excelexport\"]],\n contentQueries: function ExcelExportComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnBase, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columns = _t);\n }\n },\n inputs: {\n fileName: \"fileName\",\n filterable: \"filterable\",\n collapsible: \"collapsible\",\n creator: \"creator\",\n date: \"date\",\n forceProxy: \"forceProxy\",\n proxyURL: \"proxyURL\",\n data: \"data\",\n group: \"group\",\n paddingCellOptions: \"paddingCellOptions\",\n headerPaddingCellOptions: \"headerPaddingCellOptions\"\n },\n exportAs: [\"kendoExcelExport\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([LocalizationService, {\n provide: L10N_PREFIX,\n useValue: 'kendo.excelexport'\n }]), i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ExcelExportComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ExcelExportComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the footer cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-footer-template)).\n * Enables you to customize the footer cell of the column.\n */\nlet FooterTemplateDirective = /*#__PURE__*/(() => {\n class FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n FooterTemplateDirective.ɵfac = function FooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n FooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FooterTemplateDirective,\n selectors: [[\"\", \"kendoExcelExportFooterTemplate\", \"\"]],\n standalone: true\n });\n return FooterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the group header cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-header-template)).\n * Enables you to customize the content of the group header item.\n */\nlet GroupHeaderTemplateDirective = /*#__PURE__*/(() => {\n class GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupHeaderTemplateDirective.ɵfac = function GroupHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n GroupHeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupHeaderTemplateDirective,\n selectors: [[\"\", \"kendoExcelExportGroupHeaderTemplate\", \"\"]],\n standalone: true\n });\n return GroupHeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the group header column template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-header-column-template)).\n */\nlet GroupHeaderColumnTemplateDirective = /*#__PURE__*/(() => {\n class GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupHeaderColumnTemplateDirective.ɵfac = function GroupHeaderColumnTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupHeaderColumnTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n GroupHeaderColumnTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupHeaderColumnTemplateDirective,\n selectors: [[\"\", \"kendoExcelExportGroupHeaderColumnTemplate\", \"\"]],\n standalone: true\n });\n return GroupHeaderColumnTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the group footer cell template of the Excel Export column component\n * ([see example]({% slug columns_excel-export %}#toc-group-footer-template)).\n * Enables you to customize the group footer cell of the column.\n */\nlet GroupFooterTemplateDirective = /*#__PURE__*/(() => {\n class GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupFooterTemplateDirective.ɵfac = function GroupFooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupFooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n GroupFooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupFooterTemplateDirective,\n selectors: [[\"\", \"kendoExcelExportGroupFooterTemplate\", \"\"]],\n standalone: true\n });\n return GroupFooterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the columns of the Kendo UI Excel Export component for Angular.\n */\nlet ColumnComponent = /*#__PURE__*/(() => {\n class ColumnComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n }\n }\n ColumnComponent.ɵfac = function ColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13));\n };\n ColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnComponent,\n selectors: [[\"kendo-excelexport-column\"]],\n contentQueries: function ColumnComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, GroupHeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupHeaderColumnTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupFooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupHeaderTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupHeaderColumnTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupFooterTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n }\n },\n inputs: {\n field: \"field\",\n cellOptions: \"cellOptions\",\n groupHeaderCellOptions: \"groupHeaderCellOptions\",\n groupFooterCellOptions: \"groupFooterCellOptions\",\n footerCellOptions: \"footerCellOptions\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ColumnComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column group component of the Kendo UI Excel Export component.\n */\nlet ColumnGroupComponent = /*#__PURE__*/(() => {\n class ColumnGroupComponent extends ColumnBase {\n constructor(parent) {\n super(parent);\n this.parent = parent;\n }\n }\n ColumnGroupComponent.ɵfac = function ColumnGroupComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnGroupComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13));\n };\n ColumnGroupComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnGroupComponent,\n selectors: [[\"kendo-excelexport-column-group\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ColumnGroupComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ColumnGroupComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Utility array that contains all `@progress/kendo-angular-excel-export` related components and directives\n */\nconst KENDO_EXCELEXPORT = [ExcelExportComponent, ColumnComponent, ColumnGroupComponent, FooterTemplateDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderTemplateDirective];\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Excel Export component.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the ExcelExportModule module\n * import { ExcelExportModule } from '@progress/kendo-angular-excel-export';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, ExcelExportModule], // import ExcelExportModule module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet ExcelExportModule = /*#__PURE__*/(() => {\n class ExcelExportModule {}\n ExcelExportModule.ɵfac = function ExcelExportModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExcelExportModule)();\n };\n ExcelExportModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ExcelExportModule\n });\n ExcelExportModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [ExcelExportComponent, ColumnComponent, ColumnGroupComponent]\n });\n return ExcelExportModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ColumnBase, ColumnComponent, ColumnGroupComponent, ExcelExportComponent, ExcelExportModule, FooterTemplateDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderTemplateDirective, KENDO_EXCELEXPORT, isWorkbookOptions, toDataURL, workbookOptions };","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, Optional, Component, Input, ContentChild, NgModule } from '@angular/core';\nimport { drawDOM, exportPDF } from '@progress/kendo-drawing';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { validatePackage } from '@progress/kendo-licensing';\n\n/**\n * @hidden\n */\nconst _c0 = [\"*\"];\nconst packageMetadata = {\n name: '@progress/kendo-angular-pdf-export',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621692,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\nlet PDFExportTemplateDirective = /*#__PURE__*/(() => {\n class PDFExportTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n PDFExportTemplateDirective.ɵfac = function PDFExportTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFExportTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n PDFExportTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PDFExportTemplateDirective,\n selectors: [[\"\", \"kendoPDFTemplate\", \"\"]],\n standalone: true\n });\n return PDFExportTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst FIELDS = ['bottom', 'left', 'right', 'top'];\n/**\n * Represents the Kendo UI PDFMargin component for Angular.\n */\nlet PDFExportMarginComponent = /*#__PURE__*/(() => {\n class PDFExportMarginComponent {\n /**\n * @hidden\n */\n get options() {\n const options = {};\n for (let idx = 0; idx < FIELDS.length; idx++) {\n const field = FIELDS[idx];\n const value = this[field];\n if (typeof value !== 'undefined') {\n options[field] = value;\n }\n }\n return options;\n }\n }\n PDFExportMarginComponent.ɵfac = function PDFExportMarginComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFExportMarginComponent)();\n };\n PDFExportMarginComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PDFExportMarginComponent,\n selectors: [[\"kendo-pdf-export-margin\"]],\n inputs: {\n left: \"left\",\n top: \"top\",\n right: \"right\",\n bottom: \"bottom\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function PDFExportMarginComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return PDFExportMarginComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst compileTemplate = templateRef => {\n const context = {};\n let embeddedView = templateRef.createEmbeddedView(context);\n const result = data => {\n Object.assign(context, data);\n embeddedView.detectChanges();\n const templateWrap = document.createElement('span');\n embeddedView.rootNodes.forEach(rootNode => {\n templateWrap.appendChild(rootNode.cloneNode(true));\n });\n return templateWrap;\n };\n result.destroy = () => {\n embeddedView.destroy();\n embeddedView = null;\n };\n return result;\n};\n\n/**\n * Represents the [Kendo UI PDF Export component for Angular]({% slug overview_pdfexport %}).\n *\n * @example\n * ```ts-preview\n * _@Component({\n * selector: 'my-app',\n * template: `\n *
\n * \n *
\n *\n * \n * Content goes here\n * \n * `\n * })\n * export class AppComponent {\n * }\n * ```\n */\nlet PDFExportComponent = /*#__PURE__*/(() => {\n class PDFExportComponent {\n constructor(element) {\n this.element = element;\n /**\n * The creator of the PDF document.\n * @default \"Kendo UI PDF Generator\"\n */\n this.creator = 'Kendo UI PDF Generator';\n /**\n * Specifies the name of the exported PDF file.\n * @default \"export.pdf\"\n */\n this.fileName = 'export.pdf';\n validatePackage(packageMetadata);\n }\n get drawMargin() {\n const marginComponent = this.marginComponent;\n let margin = this.margin;\n if (marginComponent) {\n margin = Object.assign(margin || {}, marginComponent.options);\n }\n return margin;\n }\n /**\n * Saves the content as a PDF file with the specified name.\n * @param fileName - The name of the exported file.\n */\n saveAs(fileName = this.fileName) {\n this.save(this.element.nativeElement, fileName);\n }\n /**\n * Exports the content as a `Group` for further processing.\n *\n * @return The root group of the exported scene.\n */\n export() {\n return this.exportElement(this.element.nativeElement);\n }\n save(element, fileName) {\n this.exportElement(element).then(group => this.exportGroup(group, this.pdfOptions())).then(dataUri => this.saveDataUri(dataUri, fileName, this.saveOptions()));\n }\n exportElement(element) {\n const promise = this.drawElement(element, this.drawOptions());\n const cleanup = this.cleanup.bind(this);\n promise.then(cleanup, cleanup);\n return promise;\n }\n cleanup() {\n if (this.pageTemplate) {\n this.pageTemplate.destroy();\n delete this.pageTemplate;\n }\n }\n drawOptions() {\n if (this.pageTemplateDirective) {\n this.pageTemplate = compileTemplate(this.pageTemplateDirective.templateRef);\n }\n return {\n avoidLinks: this.avoidLinks,\n forcePageBreak: this.forcePageBreak,\n keepTogether: this.keepTogether,\n margin: this.drawMargin,\n paperSize: this.paperSize,\n landscape: this.landscape,\n repeatHeaders: this.repeatHeaders,\n scale: this.scale,\n template: this.pageTemplate\n };\n }\n pdfOptions() {\n return {\n autoPrint: this.autoPrint,\n author: this.author,\n creator: this.creator,\n date: this.date,\n imgDPI: this.imageResolution,\n keywords: this.keywords,\n landscape: this.landscape,\n margin: this.drawMargin,\n multiPage: true,\n paperSize: this.paperSize,\n producer: this.producer,\n subject: this.subject,\n title: this.title\n };\n }\n saveOptions() {\n return {\n forceProxy: this.forceProxy,\n proxyData: this.proxyData,\n proxyTarget: this.proxyTarget,\n proxyURL: this.proxyURL\n };\n }\n drawElement(element, options) {\n return drawDOM(element, options);\n }\n exportGroup(group, options) {\n return exportPDF(group, options);\n }\n saveDataUri(dataUri, fileName, options) {\n saveAs(dataUri, fileName, options);\n }\n }\n PDFExportComponent.ɵfac = function PDFExportComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFExportComponent)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n PDFExportComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PDFExportComponent,\n selectors: [[\"kendo-pdf-export\"]],\n contentQueries: function PDFExportComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, PDFExportTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, PDFExportMarginComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageTemplateDirective = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.marginComponent = _t.first);\n }\n },\n inputs: {\n autoPrint: \"autoPrint\",\n author: \"author\",\n avoidLinks: \"avoidLinks\",\n forcePageBreak: \"forcePageBreak\",\n keepTogether: \"keepTogether\",\n creator: \"creator\",\n date: \"date\",\n imageResolution: \"imageResolution\",\n fileName: \"fileName\",\n forceProxy: \"forceProxy\",\n keywords: \"keywords\",\n landscape: \"landscape\",\n margin: \"margin\",\n paperSize: \"paperSize\",\n repeatHeaders: \"repeatHeaders\",\n scale: \"scale\",\n proxyData: \"proxyData\",\n proxyURL: \"proxyURL\",\n proxyTarget: \"proxyTarget\",\n producer: \"producer\",\n subject: \"subject\",\n title: \"title\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 2,\n vars: 0,\n template: function PDFExportComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵprojection(1);\n i0.ɵɵelementEnd();\n }\n },\n encapsulation: 2\n });\n return PDFExportComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Utility array that contains all `PDFExport` related components and directives\n */\nconst KENDO_PDFEXPORT = [PDFExportComponent, PDFExportMarginComponent, PDFExportTemplateDirective];\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi']) definition for the PDF Export directive.\n */\nlet PDFExportModule = /*#__PURE__*/(() => {\n class PDFExportModule {}\n PDFExportModule.ɵfac = function PDFExportModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFExportModule)();\n };\n PDFExportModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PDFExportModule\n });\n PDFExportModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [PDFExportComponent, PDFExportMarginComponent]\n });\n return PDFExportModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { KENDO_PDFEXPORT, PDFExportComponent, PDFExportMarginComponent, PDFExportModule, PDFExportTemplateDirective, compileTemplate };","const getRatio = (element, target) => {\n const elementRect = element.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const top = Math.max(targetRect.top, elementRect.top);\n const left = Math.max(targetRect.left, elementRect.left);\n const right = Math.min(targetRect.left + targetRect.width, elementRect.left + elementRect.width);\n const bottom = Math.min(targetRect.top + targetRect.height, elementRect.top + elementRect.height);\n const width = right - left;\n const height = bottom - top;\n if (left < right && top < bottom) {\n const targetArea = targetRect.width * targetRect.height;\n const entryArea = elementRect.width * elementRect.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n }\n return 0;\n};\n/** @hidden */\nexport const intersect = (element, candidates) => {\n let max = 0;\n let result = null;\n candidates.forEach(candidate => {\n if (candidate && element) {\n const ration = getRatio(element, candidate);\n if (ration > max) {\n max = ration;\n result = candidate;\n }\n }\n });\n return result;\n};","const detectBrowser = () => {\n const ua = window && window.navigator.userAgent;\n if (!ua) {\n return false;\n }\n let browser = false;\n let match = [];\n let browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.DOCUMENT_NODE || match[2], 10);\n break;\n }\n }\n }\n return browser;\n};\n/** @hidden */\nexport const getDocument = element => {\n return element ? element.ownerDocument || window.document : window.document;\n};\n/** @hidden */\nexport const getWindow = element => {\n const document = getDocument(element);\n return document ? document.defaultView || window : window;\n};\n/** @hidden */\nexport const scrollableRoot = element => {\n const support = {\n browser: detectBrowser()\n };\n const document = getDocument(element);\n return support.browser.edge || support.browser.safari ? document.body : document.documentElement;\n};\n/** @hidden */\nexport const isScrollable = el => {\n if (el && el.className && typeof el.className === 'string' && el.className.indexOf('k-auto-scrollable') > -1) {\n return true;\n }\n let overflow = window.getComputedStyle(el, 'overflow').overflow;\n return overflow.indexOf('auto') > -1 || overflow.indexOf('scroll') > -1;\n};\n/** @hidden */\nexport const getScrollableParent = el => {\n const root = scrollableRoot(el);\n if (!el || el === document.body || el === document.documentElement) {\n return root;\n }\n let parent = el;\n while (parent && parent !== document.body && parent.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && parent.nodeType !== Node.DOCUMENT_NODE && !isScrollable(parent)) {\n parent = parent.parentNode;\n }\n if (parent && (parent === document.body || parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE)) {\n return root;\n }\n return parent;\n};\n/** @hidden */\nexport const autoScrollVelocity = (mouseX, mouseY, rect) => {\n let velocity = {\n x: 0,\n y: 0\n };\n let AUTO_SCROLL_AREA = 50;\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n return velocity;\n};\n/** @hidden */\nexport const scrollableViewPort = (el, window) => {\n let root = scrollableRoot(el);\n if (el === root) {\n return {\n top: root.scrollTop,\n left: root.scrollLeft,\n bottom: root.scrollTop + window.innerHeight,\n right: root.scrollLeft + window.innerWidth\n };\n } else {\n const rect = el.getBoundingClientRect();\n return {\n bottom: rect.top + rect.height,\n right: rect.left + rect.width,\n left: rect.left,\n top: rect.top\n };\n }\n};\n/** @hidden */\nexport const isPointerInsideContainer = (x, y, container) => {\n const rect = container.getBoundingClientRect();\n return rect.top <= y && rect.left <= x && y <= rect.bottom && x <= rect.right;\n};","import { intersect } from \"./algorithms\";\nimport { getWindow, autoScrollVelocity, scrollableViewPort, getScrollableParent, isPointerInsideContainer, getDocument } from \"./utils\";\n/** @hidden */\nexport var DRAG_AND_DROP_DISPATCH_ACTION = /*#__PURE__*/function (DRAG_AND_DROP_DISPATCH_ACTION) {\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_DOWN\"] = \"pointerdown\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_MOVE\"] = \"pointermove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_UP\"] = \"pointerup\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_CANCEL\"] = \"pointercancel\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_DOWN\"] = \"mousedown\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_MOVE\"] = \"mousemove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_UP\"] = \"mouseup\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"CONTEXT_MENU\"] = \"contextmenu\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_START\"] = \"touchstart\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_MOVE\"] = \"touchmove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_END\"] = \"touchend\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_CANCEL\"] = \"touchcancel\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"SCROLL\"] = \"scroll\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"START\"] = \"KENDO_DRAG_AND_DROP_START\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOVE\"] = \"KENDO_DRAG_AND_DROP_MOVE\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"END\"] = \"KENDO_DRAG_AND_DROP_END\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"CANCEL\"] = \"KENDO_DRAG_AND_DROP_CANCEL\";\n return DRAG_AND_DROP_DISPATCH_ACTION;\n}(DRAG_AND_DROP_DISPATCH_ACTION || {});\nconst isTouchEvent = event => /^touch/.test(event.type);\nconst isScrollEvent = event => /^(scroll)/.test(event.type);\n/** @hidden */\nexport const normalizeEvent = (event, state) => isTouchEvent(event) ? {\n pageX: event.changedTouches[0].pageX,\n pageY: event.changedTouches[0].pageY,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n offsetX: state.offset.x,\n offsetY: state.offset.y,\n type: event.type,\n originalEvent: event,\n isTouch: true,\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n metaKey: false\n} : isScrollEvent(event) ? {\n pageX: state.pageOffset.x,\n pageY: state.pageOffset.y,\n clientX: state.clientOffset.x,\n clientY: state.clientOffset.y,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n offsetX: state.offset.x,\n offsetY: state.offset.y,\n type: event.type,\n originalEvent: event,\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n metaKey: false\n} : {\n pageX: event.pageX,\n pageY: event.pageY,\n clientX: event.clientX,\n clientY: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n type: event.type,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n originalEvent: event\n};\nconst noop = () => {};\n/** @hidden */\nexport const dispatchDragAndDrop = (state, action, callbacks = {}) => {\n const {\n onIsPressedChange = noop,\n onIsScrollingChange = noop,\n onVelocityChange = noop,\n onOffsetChange = noop,\n onPageOffsetChange = noop,\n onClientOffsetChange = noop,\n onScrollOffsetChange = noop,\n onInitialScrollOffsetChange = noop\n } = callbacks;\n const drag = action.payload;\n const element = drag.element;\n const hint = drag.hint;\n const autoScrollDirection = state.autoScrollDirection;\n const overrideScrollableParent = state.scrollableParent;\n const event = normalizeEvent(action.event, state);\n switch (event.type) {\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN && (!event.originalEvent.isPrimary || event.originalEvent.button !== 0)) {\n break;\n }\n // In rare cases where the `which` attribute is available in the mouse event\n // we check if the `left button` is explicitly clicked:\n // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/which#return_value\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN && event.originalEvent.which && event.originalEvent.which > 1 || state.ignoreMouse) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.START:\n {\n const scrollableParent = overrideScrollableParent || getScrollableParent(action.payload.element);\n onInitialScrollOffsetChange(scrollableParent instanceof Window ? {\n x: scrollableParent.scrollX,\n y: scrollableParent.scrollY\n } : {\n x: scrollableParent.scrollLeft,\n y: scrollableParent.scrollTop\n });\n onClientOffsetChange({\n x: event.clientX,\n y: event.clientY\n });\n onPageOffsetChange({\n x: event.pageX,\n y: event.pageY\n });\n onOffsetChange({\n x: event.offsetX,\n y: event.offsetY\n });\n onIsPressedChange(true);\n if (drag.onPress) {\n drag.onPress(event);\n }\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.SCROLL:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.SCROLL && !state.pressed) {\n break;\n }\n const scrollableParent = overrideScrollableParent || getScrollableParent(element);\n const scrollOffset = scrollableParent instanceof Window ? {\n x: scrollableParent.scrollX,\n y: scrollableParent.scrollY\n } : {\n x: scrollableParent.scrollLeft,\n y: scrollableParent.scrollTop\n };\n event.scrollX = scrollOffset.x - state.initialScrollOffset.x;\n event.scrollY = scrollOffset.y - state.initialScrollOffset.y;\n onScrollOffsetChange({\n x: event.scrollX,\n y: event.scrollY\n });\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE && !event.originalEvent.isPrimary) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_MOVE:\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOVE:\n {\n if (state.pressed) {\n if (state.autoScroll && event.originalEvent.type !== 'scroll') {\n if (element) {\n const document = getDocument(element);\n const scrollableParent = overrideScrollableParent || getScrollableParent(document.elementFromPoint(event.clientX, event.clientY));\n const newVelocity = autoScrollVelocity(event.clientX, event.clientY, scrollableViewPort(scrollableParent, getWindow(element)));\n onVelocityChange({\n x: autoScrollDirection && autoScrollDirection.horizontal === false ? 0 : newVelocity.x,\n y: autoScrollDirection && autoScrollDirection.vertical === false ? 0 : newVelocity.y\n });\n onIsScrollingChange(newVelocity.y !== 0 || newVelocity.x !== 0);\n }\n }\n if (!state.drag && drag.onDragStart) {\n drag.onDragStart(event);\n }\n if (drag.onDrag) {\n drag.onDrag(event);\n }\n const dropElement = intersect(hint || element, state.drops.map(drop => drop && drop.element).filter(d => d !== (hint || element)));\n const drop = state.drops.find(drop => drop.element === dropElement);\n if (drop && dropElement && isPointerInsideContainer(event.clientX, event.clientY, overrideScrollableParent || getScrollableParent(dropElement)) && dropElement !== element) {\n if ((state.drop && state.drop.element) !== dropElement) {\n if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n if (drop.onDragEnter) {\n drop.onDragEnter(event);\n }\n } else {\n if (drop.onDragOver) {\n drop.onDragOver(event);\n }\n }\n } else if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n }\n onClientOffsetChange({\n x: event.clientX,\n y: event.clientY\n });\n onPageOffsetChange({\n x: event.pageX,\n y: event.pageY\n });\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP && !event.originalEvent.isPrimary) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_UP:\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.END:\n {\n onIsPressedChange(false);\n onIsScrollingChange(false);\n onScrollOffsetChange({\n x: 0,\n y: 0\n });\n if (drag.onRelease) {\n drag.onRelease(event);\n }\n if (state.drop && state.drop.onDrop) {\n state.drop.onDrop(event);\n }\n if (state.drag && drag.onDragEnd) {\n drag.onDragEnd(event);\n }\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_CANCEL:\n case DRAG_AND_DROP_DISPATCH_ACTION.CONTEXT_MENU:\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_CANCEL:\n case DRAG_AND_DROP_DISPATCH_ACTION.CANCEL:\n {\n onIsPressedChange(false);\n onIsScrollingChange(false);\n onScrollOffsetChange({\n x: 0,\n y: 0\n });\n if (drag.onDragEnd) {\n drag.onDragEnd(event);\n }\n if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n break;\n }\n default:\n break;\n }\n};","import { scrollableRoot } from './utils';\n/** @hidden */\nexport const autoScroll = (scrollableParent, vel) => {\n if (!scrollableParent) {\n return;\n }\n let yIsScrollable;\n let xIsScrollable;\n const isRootNode = scrollableParent === scrollableRoot(scrollableParent);\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > window.innerHeight;\n xIsScrollable = document.body.scrollWidth > window.innerWidth;\n } else {\n yIsScrollable = scrollableParent.offsetHeight <= scrollableParent.scrollHeight;\n xIsScrollable = scrollableParent.offsetWidth <= scrollableParent.scrollWidth;\n }\n let yDelta = scrollableParent.scrollTop + vel.y;\n let yInBounds = yIsScrollable && yDelta > 0 && yDelta < scrollableParent.scrollHeight;\n let xDelta = scrollableParent.scrollLeft + vel.x;\n let xInBounds = xIsScrollable && xDelta > 0 && xDelta < scrollableParent.scrollWidth;\n if (yInBounds) {\n scrollableParent.scrollTop += vel.y;\n } else if (yIsScrollable && yDelta < 0) {\n scrollableParent.scrollTop = 0;\n }\n if (xInBounds) {\n scrollableParent.scrollLeft += vel.x;\n } else if (xIsScrollable && xDelta < 0) {\n scrollableParent.scrollLeft = 0;\n }\n};","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { Directive, HostBinding, Injectable, Component, Input, EventEmitter, isDevMode, Output, ContentChildren, NgModule } from '@angular/core';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { dispatchDragAndDrop, getScrollableParent, autoScroll } from '@progress/kendo-draggable-common';\nimport { PreventableEvent, contains, isDocumentAvailable, parseCSSClassNames } from '@progress/kendo-angular-common';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * Represents the Kendo UI DragHandle directive for Angular.\n * It is used to specify a concrete element within a drag target as a handle for dragging, instead the drag target itself.\n */\nconst _c0 = (a0, a1, a2) => ({\n $implicit: a0,\n index: a1,\n data: a2\n});\nfunction HintComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nlet DragHandleDirective = /*#__PURE__*/(() => {\n class DragHandleDirective {\n constructor(element) {\n this.element = element;\n this.cursorStyle = 'move';\n }\n }\n DragHandleDirective.ɵfac = function DragHandleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragHandleDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n DragHandleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DragHandleDirective,\n selectors: [[\"\", \"kendoDragHandle\", \"\"]],\n hostVars: 2,\n hostBindings: function DragHandleDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"cursor\", ctx.cursorStyle);\n }\n },\n exportAs: [\"kendoDragHandle\"],\n standalone: true\n });\n return DragHandleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-utils',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621710,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\nfunction isDocumentNode(container) {\n return container.nodeType === 9;\n}\n/**\n * @hidden\n */\nconst getAction = (event, draggable) => {\n return {\n event: event,\n payload: draggable\n };\n};\n/**\n * @hidden\n */\nconst dragTargetTransition = 'transform .3s ease-in-out';\n/**\n * @hidden\n */\nconst isPresent = value => value !== null && value !== undefined;\n/**\n * @hidden\n */\nfunction closestBySelector(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n const matches = Element.prototype.matches ? (el, sel) => el.matches(sel) : (el, sel) => el.msMatchesSelector(sel);\n let node = element;\n while (node && !isDocumentNode(node)) {\n if (matches(node, selector)) {\n return node;\n }\n node = node.parentNode;\n }\n}\n/**\n * @hidden\n */\nconst intersect = (element, candidates) => {\n let max = 0;\n let result = null;\n candidates.forEach(candidate => {\n if (candidate && element) {\n const ration = getRatio(element, candidate);\n if (ration > max) {\n max = ration;\n result = candidate;\n }\n }\n });\n return result;\n};\nconst getRatio = (element, target) => {\n const elementRect = element.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const top = Math.max(targetRect.top, elementRect.top);\n const left = Math.max(targetRect.left, elementRect.left);\n const right = Math.min(targetRect.left + targetRect.width, elementRect.left + elementRect.width);\n const bottom = Math.min(targetRect.top + targetRect.height, elementRect.top + elementRect.height);\n const width = right - left;\n const height = bottom - top;\n if (left < right && top < bottom) {\n const targetArea = targetRect.width * targetRect.height;\n const entryArea = elementRect.width * elementRect.height;\n const intersectionArea = width * height;\n const intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n }\n return 0;\n};\n/**\n * @hidden\n */\nconst setElementStyles = (renderer, elem, styles) => {\n const props = Object.keys(styles);\n props.forEach(p => {\n renderer.setStyle(elem, p, styles[p]);\n });\n};\n/**\n * @hidden\n */\nconst allPointerDownEvents = ['pointerdown', 'mousedown', 'touchstart'];\n/**\n * @hidden\n */\nconst allPointerMoveEvents = ['pointermove', 'mousemove', 'touchmove'];\n/**\n * @hidden\n */\nconst allPointerUpEvents = ['pointerup', 'pointercancel', 'mouseup', 'contextmenu', 'touchend', 'touchcancel'];\n\n/**\n * @hidden\n */\nlet DragStateService = /*#__PURE__*/(() => {\n class DragStateService {\n constructor() {\n this.dragTarget = null;\n this.dropTarget = null;\n this.dragTargets = [];\n this.dropTargets = [];\n this.pressed = false;\n this.ignoreMouse = false;\n this.autoScroll = true;\n this.isScrolling = false;\n this.scrollableParent = null;\n this.autoScrollDirection = {\n horizontal: true,\n vertical: true\n };\n this.initialClientOffset = {\n x: 0,\n y: 0\n };\n this.clientOffset = {\n x: 0,\n y: 0\n };\n this.initialScrollOffset = {\n x: 0,\n y: 0\n };\n this.scrollOffset = {\n x: 0,\n y: 0\n };\n this.offset = {\n x: 0,\n y: 0\n };\n this.pageOffset = {\n x: 0,\n y: 0\n };\n this.velocity = {\n x: 0,\n y: 0\n };\n this.dragIndex = null;\n this.dropIndex = null;\n this.callbacks = {};\n this.scrollInterval = null;\n this.setCallbacks();\n }\n handleDragAndDrop(action) {\n this.updateState();\n dispatchDragAndDrop(this.state, action, this.callbacks);\n }\n setPressed(pressed) {\n this.pressed = pressed;\n }\n setScrolling(isScrolling) {\n this.isScrolling = isScrolling;\n if (isScrolling) {\n const scrollableParent = getScrollableParent(document.elementFromPoint(this.clientOffset.x, this.clientOffset.y));\n window.clearInterval(this.scrollInterval);\n this.scrollInterval = window.setInterval(() => {\n autoScroll(scrollableParent, {\n x: this.velocity.x,\n y: this.velocity.y\n });\n }, 50);\n } else {\n if (this.scrollInterval) {\n window.clearInterval(this.scrollInterval);\n this.scrollInterval = null;\n }\n }\n }\n setVelocity(velocity) {\n this.velocity = velocity;\n }\n setOffset(offset) {\n this.offset = offset;\n }\n setClientOffset(clientOffset) {\n this.clientOffset = clientOffset;\n }\n setPageOffset(pageOffset) {\n this.pageOffset = pageOffset;\n }\n setInitialClientOffset(initialClientOffset) {\n this.initialClientOffset = initialClientOffset;\n }\n setScrollOffset(scrollOffset) {\n this.scrollOffset = scrollOffset;\n }\n setInitialScrollOffset(initialScrollOffset) {\n this.initialScrollOffset = initialScrollOffset;\n }\n get dragTargetPresent() {\n return isPresent(this.dragTarget?.element);\n }\n get dropTargetPresent() {\n return isPresent(this.dropTarget?.element);\n }\n updateState() {\n this.state = {\n drag: this.dragTarget,\n drop: this.dropTarget,\n drags: this.dragTargets,\n drops: this.dropTargets,\n pressed: this.pressed,\n ignoreMouse: this.ignoreMouse,\n autoScroll: this.autoScroll,\n isScrolling: this.isScrolling,\n scrollableParent: this.scrollableParent,\n autoScrollDirection: this.autoScrollDirection,\n initialClientOffset: this.initialClientOffset,\n clientOffset: this.clientOffset,\n initialScrollOffset: this.initialScrollOffset,\n scrollOffset: this.scrollOffset,\n offset: this.offset,\n pageOffset: this.pageOffset,\n velocity: this.velocity\n };\n }\n setCallbacks() {\n this.callbacks = {\n onVelocityChange: this.setVelocity.bind(this),\n onOffsetChange: this.setOffset.bind(this),\n onClientOffsetChange: this.setClientOffset.bind(this),\n onPageOffsetChange: this.setPageOffset.bind(this),\n onInitialClientOffsetChange: this.setInitialClientOffset.bind(this),\n onScrollOffsetChange: this.setScrollOffset.bind(this),\n onInitialScrollOffsetChange: this.setInitialScrollOffset.bind(this),\n onIsPressedChange: this.setPressed.bind(this),\n onIsScrollingChange: this.setScrolling.bind(this)\n };\n }\n ngOnDestroy() {\n if (this.scrollInterval) {\n window.clearInterval(this.scrollInterval);\n this.scrollInterval = null;\n }\n }\n }\n DragStateService.ɵfac = function DragStateService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragStateService)();\n };\n DragStateService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DragStateService,\n factory: DragStateService.ɵfac,\n providedIn: 'root'\n });\n return DragStateService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet HintComponent = /*#__PURE__*/(() => {\n class HintComponent {\n constructor(element) {\n this.element = element;\n this.pointerEvents = 'none';\n }\n }\n HintComponent.ɵfac = function HintComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HintComponent)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n HintComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: HintComponent,\n selectors: [[\"kendo-draghint\"]],\n hostVars: 2,\n hostBindings: function HintComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"pointer-events\", ctx.pointerEvents);\n }\n },\n inputs: {\n template: \"template\",\n directive: \"directive\",\n targetIndex: \"targetIndex\",\n contextData: \"contextData\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 6,\n consts: [[4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function HintComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, HintComponent_ng_container_0_Template, 1, 0, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(2, _c0, ctx.directive, ctx.targetIndex, ctx.contextData));\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2\n });\n return HintComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the press event of the DragTarget and DragTargetContainer.\n */\nclass DragTargetPressEvent {\n /**\n * @hidden\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get normalizedEvent() {\n return this.dragEvent;\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get hostElement() {\n return this.dragTarget;\n }\n}\n\n/**\n * Arguments for the dragReady event of the DragTarget and DragTargetContainer.\n */\nclass DragTargetDragReadyEvent {\n /**\n * @hidden\n */\n constructor(args) {\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the dragStart event of the DragTarget and DragTargetContainer.\n */\nclass DragTargetDragStartEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get normalizedEvent() {\n return this.dragEvent;\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get hostElement() {\n return this.dragTarget;\n }\n}\n\n/**\n * Arguments for the dragEnd event of the DragTarget and DragTargetContainer.\n */\nclass DragTargetDragEndEvent {\n /**\n * @hidden\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get normalizedEvent() {\n return this.dragEvent;\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get hostElement() {\n return this.dragTarget;\n }\n}\n\n/**\n * Arguments for the drag event of the DragTarget and DragTargetContainer.\n */\nclass DragTargetDragEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get normalizedEvent() {\n return this.dragEvent;\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get hostElement() {\n return this.dragTarget;\n }\n}\n\n/**\n * Arguments for the release event of the DragTarget and DragTargetContainer.\n */\nclass DragTargetReleaseEvent {\n /**\n * @hidden\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get normalizedEvent() {\n return this.dragEvent;\n }\n /**\n * Left for backward compatibility for the DragTarget deprecated events.\n * @hidden\n */\n get hostElement() {\n return this.dragTarget;\n }\n}\nlet isDragStartPrevented$1 = false;\nlet isDragPrevented$1 = false;\n/**\n * Represents the [Kendo UI DragTargetContainer directive for Angular]({% slug api_utils_dragtargetcontainerdirective %}).\n * Used to configure multiple elements as draggable.\n *\n * @example\n * ```ts-no-run\n *
    \n *
  • foo
  • \n *
\n * ```\n */\nlet DragTargetContainerDirective = /*#__PURE__*/(() => {\n class DragTargetContainerDirective {\n constructor(wrapper, ngZone, renderer, service, viewContainer, cdr) {\n this.wrapper = wrapper;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.service = service;\n this.viewContainer = viewContainer;\n this.cdr = cdr;\n /**\n * Defines whether a hint will be used for dragging. By default, the hint is a copy of the current drag target. ([see example]({% slug drag_hint %})).\n *\n * @default false\n */\n this.hint = false;\n /**\n * Defines the delay in milliseconds after which the drag will begin ([see example](slug:drag_target_container#toc-events)).\n *\n * @default 0\n */\n this.dragDelay = 0;\n /**\n * The number of pixels the pointer moves in any direction before the dragging starts ([see example]({% slug minimum_distance %})).\n *\n * @default 0\n */\n this.threshold = 0;\n /**\n * Specifies whether the default dragging behavior will be performed or the developer will manually handle the drag action.\n *\n * @default 'auto'\n */\n this.mode = 'auto';\n /**\n * Fires when a DragTarget's `dragDelay` has passed and the user is able to drag the element.\n */\n this.onDragReady = new EventEmitter();\n /**\n * Fires when the user presses a DragTarget element.\n */\n this.onPress = new EventEmitter();\n /**\n * Fires when the dragging of a DragTarget element begins.\n */\n this.onDragStart = new EventEmitter();\n /**\n * Fires while the user drags a DragTarget element.\n */\n this.onDrag = new EventEmitter();\n /**\n * Fires when the user releases a DragTarget element after being pressed.\n */\n this.onRelease = new EventEmitter();\n /**\n * Fires when the dragging of a DragTarget ends and the element is released.\n */\n this.onDragEnd = new EventEmitter();\n this.currentDragTarget = null;\n this.dragTimeout = null;\n this.pressed = false;\n this.dragStarted = false;\n this.hintComponent = null;\n this.defaultHint = null;\n this.currentDragTargetElement = null;\n this.scrollableParent = null;\n this.previousDragTargets = [];\n this.initialPosition = {\n x: 0,\n y: 0\n };\n this.position = {\n x: 0,\n y: 0\n };\n this.positionsMap = new Map();\n this._dragTargetFilter = null;\n this._dragDisabled = false;\n this._dragData = () => null;\n this._dragTargetId = () => null;\n validatePackage(packageMetadata);\n }\n /**\n * Specifies a selector for elements within a container which will be configured as draggable\n * ([see example]({% slug drag_target_container %})). The possible values include any\n * DOM `selector`.\n */\n set dragTargetFilter(value) {\n this._dragTargetFilter = value;\n if (!this.dragDisabled) {\n this.initializeDragTargets();\n }\n }\n get dragTargetFilter() {\n return this._dragTargetFilter;\n }\n /**\n * Defines a unique identifier for each drag target.\n * It exposes the current DragTarget HTML element and its index in the collection of drag targets as arguments.\n */\n set dragTargetId(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`dragTargetId must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._dragTargetId = fn;\n }\n get dragTargetId() {\n return this._dragTargetId;\n }\n /**\n * Defines a callback function which returns custom data passed to the DropTarget events.\n * It exposes the current DragTarget HTML element, its `dragTargetId` and its index in the collection of drag targets as arguments.\n */\n set dragData(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`dragData must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._dragData = fn;\n }\n get dragData() {\n return this._dragData;\n }\n /**\n * If set to true, the dragging of DragTargets within the container will be disabled.\n *\n * @default false\n */\n set dragDisabled(value) {\n this._dragDisabled = value;\n if (value) {\n this.clearPreviousTargets();\n this.unsubscribe();\n if (isPresent(this.hintElem)) {\n this.destroyHint();\n }\n } else {\n if (isPresent(this.wrapper) || isPresent(this.currentDragTarget)) {\n this.subscribe();\n }\n this.initializeDragTargets();\n }\n }\n get dragDisabled() {\n return this._dragDisabled;\n }\n /**\n * Used for notifying the DragTargetContainer that its content has changed.\n */\n notify() {\n this.cdr.detectChanges();\n this.initializeDragTargets();\n }\n get allDragTargets() {\n return this.queryHost(this.dragTargetFilter);\n }\n get dragHandles() {\n return this.isHandleSelectorValid ? this.queryHost(this.dragHandle) : null;\n }\n get hintTemplate() {\n return isPresent(this.hint) && typeof this.hint === 'object' ? this.hint.hintTemplate : null;\n }\n ngAfterViewInit() {\n const isTargetPresent = isPresent(this.wrapper) || isPresent(this.currentDragTarget);\n if (!this.dragDisabled && isTargetPresent) {\n this.subscribe();\n }\n !this.dragDisabled && this.initializeDragTargets();\n }\n onPointerDown(event) {\n if (isPresent(this.dragHandles) && !this.isDragHandle(event.target)) {\n return;\n }\n const action = getAction(event, this.currentDragTarget);\n this.service.handleDragAndDrop(action);\n this.subscribe();\n }\n onPointerMove(event) {\n event.preventDefault();\n const action = getAction(event, this.currentDragTarget);\n this.service.handleDragAndDrop(action);\n }\n onPointerUp(event) {\n event.preventDefault();\n const action = getAction(event, this.currentDragTarget);\n this.service.handleDragAndDrop(action);\n this.ngZone.runOutsideAngular(() => {\n this.subscribe();\n });\n }\n handlePress(event) {\n if (this.dragDelay > 0) {\n this.dragTimeout = window.setTimeout(() => {\n this.pressed = true;\n this.emitZoneAwareEvent('onDragReady', event);\n }, this.dragDelay);\n } else {\n this.pressed = true;\n }\n event.originalEvent.preventDefault();\n const eventTarget = event.originalEvent.target;\n this.currentDragTargetElement = closestBySelector(eventTarget, this.dragTargetFilter);\n this.currentDragTarget.element = this.currentDragTargetElement;\n this.service.dragIndex = this.getDragIndex();\n this.scrollableParent = this.hintTemplate ? document.body : this.currentDragTargetElement ? getScrollableParent(this.currentDragTargetElement) : null;\n this.emitZoneAwareEvent('onPress', event);\n }\n handleDragStart(event) {\n if (!this.pressed) {\n if (this.dragTimeout) {\n window.clearTimeout(this.dragTimeout);\n this.dragTimeout = null;\n }\n return;\n }\n isDragStartPrevented$1 = this.emitZoneAwareEvent('onDragStart', event).isDefaultPrevented();\n if (isDragStartPrevented$1) {\n return;\n }\n this.position = this.positionsMap.has(this.currentDragTargetElement) ? this.positionsMap.get(this.currentDragTargetElement) : {\n x: 0,\n y: 0\n };\n if (this.hint) {\n this.createHint();\n if (this.mode === 'auto') {\n this.renderer.setStyle(this.currentDragTargetElement, 'opacity', '0.7');\n }\n } else {\n this.initialPosition = {\n x: event.clientX - this.position.x,\n y: event.clientY - this.position.y\n };\n }\n this.dragStarted = this.threshold === 0;\n this.service.dragTarget = this.currentDragTarget;\n const targetIdArgs = {\n dragTarget: this.currentDragTargetElement,\n dragTargetIndex: this.service.dragIndex\n };\n this.service.dragTargetId = this.dragTargetId(targetIdArgs);\n const targetDataArgs = Object.assign({\n dragTargetId: this.service.dragTargetId\n }, targetIdArgs);\n this.service.dragData = this.dragData(targetDataArgs);\n }\n handleDrag(event) {\n if (!this.pressed || isDragStartPrevented$1) {\n return;\n }\n const elem = this.hint ? this.hintElem : this.currentDragTargetElement;\n this.position = this.calculatePosition(elem, event);\n const thresholdNotReached = Math.abs(this.position.x) < this.threshold && Math.abs(this.position.y) < this.threshold;\n if (!this.dragStarted && thresholdNotReached) {\n return;\n }\n if (!this.dragStarted && this.threshold > 0) {\n this.dragStarted = true;\n }\n isDragPrevented$1 = this.emitZoneAwareEvent('onDrag', event).isDefaultPrevented();\n if (isDragPrevented$1) {\n return;\n }\n if (this.mode === 'auto') {\n this.performDrag();\n } else {\n this.dragStarted = true;\n }\n }\n handleRelease(event) {\n if (this.dragStarted) {\n this.positionsMap.set(this.currentDragTargetElement, this.position);\n }\n if (this.dragTimeout) {\n clearTimeout(this.dragTimeout);\n this.dragTimeout = null;\n this.pressed = false;\n }\n this.emitZoneAwareEvent('onRelease', event);\n }\n handleDragEnd(event) {\n if (!this.dragStarted) {\n return;\n }\n if (this.mode === 'auto') {\n const isDroppedOverParentTarget = isPresent(this.service.dropTarget) && !contains(this.service.dropTarget?.element, this.service.dragTarget?.element, true);\n const elem = this.hint ? this.hintElem : this.currentDragTargetElement;\n if (isDroppedOverParentTarget || this.service.dropTargets.length > 0 && isPresent(elem)) {\n this.renderer.removeStyle(elem, 'transform');\n setElementStyles(this.renderer, elem, {\n transition: dragTargetTransition\n });\n this.positionsMap.delete(this.currentDragTargetElement);\n }\n }\n if (this.hint && isPresent(this.hintElem)) {\n this.destroyHint();\n if (this.mode === 'auto') {\n this.renderer.removeStyle(this.currentDragTargetElement, 'opacity');\n }\n }\n this.service.dragTarget = null;\n this.service.dragIndex = null;\n this.currentDragTarget.element = null;\n this.emitZoneAwareEvent('onDragEnd', event);\n if (isDragStartPrevented$1 || isDragPrevented$1) {\n return;\n }\n this.dragStarted = false;\n }\n get nativeElement() {\n return this.wrapper.nativeElement;\n }\n get hintElem() {\n return this.hintTemplate && isPresent(this.hintComponent) ? this.hintComponent.instance.element.nativeElement : this.defaultHint;\n }\n unsubscribe() {\n if (this.pointerDownSubscription) {\n this.pointerDownSubscription.unsubscribe();\n }\n if (this.pointerMoveSubscription) {\n this.pointerMoveSubscription.unsubscribe();\n }\n if (this.pointerUpSubscription) {\n this.pointerUpSubscription.unsubscribe();\n }\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n }\n }\n subscribe() {\n this.ngZone.runOutsideAngular(() => {\n this.unsubscribe();\n if (!(isDocumentAvailable() && isPresent(this.wrapper))) {\n return;\n }\n const element = this.nativeElement;\n if (this.service.pressed) {\n const pointerMoveStreams = allPointerMoveEvents.map(ev => fromEvent(document, ev));\n const pointerUpStreams = allPointerUpEvents.map(ev => fromEvent(document, ev));\n this.pointerMoveSubscription = merge(...pointerMoveStreams).pipe(filter(() => this.dragTargetFilter !== '')).subscribe(e => this.onPointerMove(e));\n this.pointerUpSubscription = merge(...pointerUpStreams).subscribe(e => this.onPointerUp(e));\n if (isPresent(this.scrollableParent)) {\n this.scrollSubscription = fromEvent(this.scrollableParent, 'scroll').subscribe(e => this.onPointerMove(e));\n }\n } else {\n const pointerDownStreams = allPointerDownEvents.map(ev => fromEvent(element, ev));\n this.pointerDownSubscription = merge(...pointerDownStreams).pipe(filter(() => this.dragTargetFilter !== '')).subscribe(e => {\n const filterElement = closestBySelector(e.target, this.isHandleSelectorValid ? this.dragHandle : this.dragTargetFilter);\n if (filterElement) {\n this.onPointerDown(e);\n }\n });\n }\n });\n }\n emitZoneAwareEvent(event, normalizedEvent) {\n const targetIdArgs = {\n dragTarget: this.currentDragTargetElement,\n dragTargetIndex: this.service.dragIndex\n };\n const eventProps = {\n dragTarget: this.currentDragTargetElement,\n dragEvent: normalizedEvent,\n dragTargetIndex: this.service.dragIndex,\n dragTargetId: this.dragTargetId(targetIdArgs)\n };\n if (this.hint && isPresent(this.hintElem)) {\n eventProps.hintElement = this.hintElem;\n }\n let eventArgs;\n switch (event) {\n case 'onDragReady':\n eventArgs = new DragTargetDragReadyEvent(eventProps);\n break;\n case 'onPress':\n eventArgs = new DragTargetPressEvent(eventProps);\n break;\n case 'onDragStart':\n eventArgs = new DragTargetDragStartEvent(eventProps);\n break;\n case 'onDrag':\n eventArgs = new DragTargetDragEvent(eventProps);\n break;\n case 'onRelease':\n eventArgs = new DragTargetReleaseEvent(eventProps);\n break;\n case 'onDragEnd':\n eventArgs = new DragTargetDragEndEvent(eventProps);\n break;\n default:\n break;\n }\n this.ngZone.run(() => {\n this[event].emit(eventArgs);\n });\n return eventArgs;\n }\n createHint() {\n if (!(isDocumentAvailable() && isPresent(this.wrapper))) {\n return;\n }\n if (isPresent(this.hint) && typeof this.hint === 'object') {\n if (isPresent(this.hint.hintTemplate)) {\n this.createCustomHint();\n } else {\n this.createDefaultHint();\n }\n } else {\n this.createDefaultHint();\n }\n this.currentDragTarget.hint = this.hintElem;\n if (typeof this.hint === 'object' && isPresent(this.hint.appendTo)) {\n this.hint.appendTo.element.nativeElement.appendChild(this.hintElem);\n } else {\n document.body.appendChild(this.hintElem);\n }\n }\n createDefaultHint() {\n this.defaultHint = this.currentDragTargetElement.cloneNode(true);\n if (typeof this.hint === 'object') {\n if (isPresent(this.hint.hintClass)) {\n const hintClasses = parseCSSClassNames(this.hint.hintClass);\n hintClasses.forEach(className => this.renderer.addClass(this.defaultHint, className));\n }\n }\n }\n createCustomHint() {\n if (isPresent(this.hint.appendTo)) {\n this.hintComponent = this.hint.appendTo.createComponent(HintComponent);\n } else {\n this.hintComponent = this.viewContainer.createComponent(HintComponent);\n }\n this.hintComponent.instance.template = this.hintTemplate;\n this.hintComponent.instance.directive = this;\n this.hintComponent.instance.targetIndex = this.service.dragIndex;\n const targetDataArgs = {\n dragTarget: this.currentDragTargetElement,\n dragTargetId: this.service.dragTargetId,\n dragTargetIndex: this.service.dragIndex\n };\n this.hintComponent.instance.contextData = this.dragData(targetDataArgs);\n this.hintComponent.changeDetectorRef.detectChanges();\n }\n destroyHint() {\n if (isPresent(this.hintTemplate)) {\n this.hintComponent.destroy();\n this.hintComponent.changeDetectorRef.detectChanges();\n this.hintComponent = null;\n } else {\n document.body.removeChild(this.defaultHint);\n this.defaultHint = null;\n }\n this.currentDragTarget.hint = null;\n }\n getDragIndex() {\n return this.allDragTargets.indexOf(this.currentDragTargetElement);\n }\n initializeDragTargets() {\n if (!isPresent(this.allDragTargets)) {\n if (this.previousDragTargets.length > 0) {\n this.clearPreviousTargets();\n }\n return;\n }\n this.allDragTargets.forEach(dragTargetEl => {\n const isDragTargetInitialized = this.service.dragTargets.find(dt => dt.element === dragTargetEl);\n if (!isDragTargetInitialized) {\n this.service.dragTargets.push({\n element: dragTargetEl,\n hint: null,\n onPress: this.handlePress.bind(this),\n onRelease: this.handleRelease.bind(this),\n onDragStart: this.handleDragStart.bind(this),\n onDrag: this.handleDrag.bind(this),\n onDragEnd: this.handleDragEnd.bind(this)\n });\n }\n });\n if (this.previousDragTargets.length > 0) {\n const dragTargetsToRemove = this.previousDragTargets.filter(dt => !this.allDragTargets.includes(dt));\n dragTargetsToRemove.forEach(dragTarget => {\n const idx = this.service.dragTargets.findIndex(serviceDragTarget => serviceDragTarget.element === dragTarget);\n if (idx > -1) {\n this.service.dragTargets.splice(idx, 1);\n }\n });\n }\n this.previousDragTargets = this.allDragTargets;\n this.currentDragTarget = {\n element: null,\n hint: null,\n onPress: this.handlePress.bind(this),\n onRelease: this.handleRelease.bind(this),\n onDragStart: this.handleDragStart.bind(this),\n onDrag: this.handleDrag.bind(this),\n onDragEnd: this.handleDragEnd.bind(this)\n };\n this.setCursorStyle();\n }\n isDragHandle(el) {\n return this.dragHandles.some(dh => contains(dh, el, true));\n }\n get isHandleSelectorValid() {\n return isPresent(this.dragHandle) && this.dragHandle !== '';\n }\n setCursorStyle() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (isPresent(this.dragHandle) && this.dragHandle !== '') {\n if (isPresent(this.dragHandles) && this.dragHandles.length > 0) {\n this.dragHandles.forEach(handle => {\n this.renderer.setStyle(handle, 'cursor', 'move');\n });\n }\n } else {\n this.allDragTargets.forEach(target => {\n this.renderer.setStyle(target, 'cursor', 'move');\n });\n }\n }\n queryHost(selector) {\n if (isPresent(selector) && selector !== \"\") {\n return Array.from(this.nativeElement.querySelectorAll(selector));\n }\n }\n clearPreviousTargets() {\n this.previousDragTargets.forEach(dragTarget => {\n const idx = this.service.dragTargets.findIndex(serviceDragTarget => serviceDragTarget.element === dragTarget);\n if (idx > -1) {\n this.service.dragTargets.splice(idx, 1);\n }\n });\n this.previousDragTargets = [];\n }\n performDrag() {\n const elem = this.hint ? this.hintElem : this.currentDragTargetElement;\n if (elem) {\n const styles = this.getStylesPerElement(elem);\n setElementStyles(this.renderer, elem, styles);\n }\n }\n calculatePosition(element, event) {\n let position = null;\n if (element === this.hintElem) {\n position = {\n x: event.clientX,\n y: event.clientY\n };\n } else {\n position = {\n x: event.clientX - this.initialPosition.x + event.scrollX,\n y: event.clientY - this.initialPosition.y + event.scrollY\n };\n }\n return position;\n }\n getStylesPerElement(element) {\n if (element === this.hintElem) {\n const hintCoordinates = {\n x: this.position.x - this.initialPosition.x,\n y: this.position.y - this.initialPosition.y\n };\n return {\n top: `${hintCoordinates.y}px`,\n left: `${hintCoordinates.x}px`,\n transition: 'none',\n position: 'absolute',\n zIndex: 1999\n };\n } else {\n const transform = `translate(${this.position.x}px, ${this.position.y}px)`;\n return {\n transform: transform,\n transition: 'none'\n };\n }\n }\n }\n DragTargetContainerDirective.ɵfac = function DragTargetContainerDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragTargetContainerDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(DragStateService), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n DragTargetContainerDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DragTargetContainerDirective,\n selectors: [[\"\", \"kendoDragTargetContainer\", \"\"]],\n inputs: {\n hint: \"hint\",\n dragTargetFilter: \"dragTargetFilter\",\n dragHandle: \"dragHandle\",\n dragDelay: \"dragDelay\",\n threshold: \"threshold\",\n dragTargetId: \"dragTargetId\",\n dragData: \"dragData\",\n dragDisabled: \"dragDisabled\",\n mode: \"mode\"\n },\n outputs: {\n onDragReady: \"onDragReady\",\n onPress: \"onPress\",\n onDragStart: \"onDragStart\",\n onDrag: \"onDrag\",\n onRelease: \"onRelease\",\n onDragEnd: \"onDragEnd\"\n },\n exportAs: [\"kendoDragTargetContainer\"],\n standalone: true\n });\n return DragTargetContainerDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet isDragStartPrevented = false;\nlet isDragPrevented = false;\n/**\n * Represents the Kendo UI DragTarget directive for Angular.\n */\nlet DragTargetDirective = /*#__PURE__*/(() => {\n class DragTargetDirective {\n constructor(element, renderer, ngZone, service, viewContainer) {\n this.element = element;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.service = service;\n this.viewContainer = viewContainer;\n /**\n * Defines whether a hint will be used for dragging. By default, the hint is a copy of the drag target. ([see example]({% slug drag_hint %})).\n *\n * @default false\n */\n this.hint = false;\n /**\n * The number of pixels the pointer moves in any direction before the dragging starts ([see example]({% slug minimum_distance %})). Applicable when `manualDrag` is set to `false`.\n *\n * @default 0\n */\n this.threshold = 0;\n /**\n * Defines the automatic container scrolling behavior when close to the edge ([see example]({% slug auto_scroll %})).\n *\n * @default true\n */\n this.autoScroll = true;\n /**\n * Defines the delay in milliseconds after which the drag will begin ([see example]({% slug drag_delay %})).\n *\n * @default 0\n */\n this.dragDelay = 0;\n /**\n * Specifies whether the default dragging behavior will be performed or the developer will manually handle the drag action.\n *\n * @default 'auto'\n */\n this.mode = 'auto';\n /**\n * Fires when the user presses the DragTarget element.\n */\n this.onPress = new EventEmitter();\n /**\n * Fires when the dragging of the DragTarget element begins.\n */\n this.onDragStart = new EventEmitter();\n /**\n * Fires while the user drags the DragTarget element.\n */\n this.onDrag = new EventEmitter();\n /**\n * Fires when the DragTarget's `dragDelay` has passed and the user is able to drag the element.\n */\n this.onDragReady = new EventEmitter();\n /**\n * Fires when the user releases the DragTarget element after being pressed.\n */\n this.onRelease = new EventEmitter();\n /**\n * Fires when the dragging of the DragTarget ends and the element is released.\n */\n this.onDragEnd = new EventEmitter();\n this.dragTarget = null;\n this.domSubscriptions = [];\n this.hintComponent = null;\n this.dragStarted = false;\n this.pressed = false;\n this.dragTimeout = null;\n this.initialPosition = {\n x: 0,\n y: 0\n };\n this.position = {\n x: 0,\n y: 0\n };\n this.scrollableParent = null;\n this.defaultHint = null;\n this._dragData = () => null;\n validatePackage(packageMetadata);\n }\n /**\n * Defines a callback function used for attaching custom data to the dragTarget.\n * The data will be available in the events of the respective [`DropTarget`]({% slug api_utils_droptargetdirective %}) or [`DropTargetContainer`]({% slug api_utils_droptargetcontainerdirective %}) directives.\n * The current DragTarget HTML element and its `dragTargetId` will be available as arguments.\n */\n set dragData(fn) {\n if (isDevMode && typeof fn !== 'function') {\n throw new Error(`dragData must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._dragData = fn;\n }\n get dragData() {\n return this._dragData;\n }\n get hintTemplate() {\n return isPresent(this.hint) && typeof this.hint === 'object' ? this.hint.hintTemplate : null;\n }\n get nativeElement() {\n return this.element.nativeElement;\n }\n get hintElem() {\n return this.hintTemplate && isPresent(this.hintComponent) ? this.hintComponent.instance.element.nativeElement : this.defaultHint;\n }\n onPointerDown(event) {\n if (this.dragHandles.length && !this.isDragHandle(event.target)) {\n return;\n }\n event.preventDefault();\n const action = getAction(event, this.dragTarget);\n this.service.handleDragAndDrop(action);\n this.service.autoScroll = typeof this.autoScroll === 'object' ? this.autoScroll.enabled !== false : this.autoScroll;\n this.service.scrollableParent = this.getAutoScrollContainer();\n this.service.autoScrollDirection = typeof this.autoScroll === 'object' ? this.autoScroll.direction : {\n horizontal: true,\n vertical: true\n };\n this.attachDomHandlers();\n }\n onPointerMove(event) {\n event.preventDefault();\n const action = getAction(event, this.dragTarget);\n this.service.handleDragAndDrop(action);\n }\n onPointerUp(event) {\n event.preventDefault();\n const action = getAction(event, this.dragTarget);\n this.service.handleDragAndDrop(action);\n this.attachDomHandlers();\n }\n ngOnInit() {\n this.initializeDragTarget();\n }\n ngAfterContentInit() {\n if (isPresent(this.element) || isPresent(this.dragTarget)) {\n this.attachDomHandlers();\n if (!this.dragHandles.length) {\n this.renderer.setStyle(this.nativeElement, 'cursor', 'move');\n }\n }\n this.service.dragTargets.push(this.dragTarget);\n }\n ngOnDestroy() {\n this.domSubscriptions.forEach(subscription => subscription());\n }\n handlePress(event) {\n if (this.dragDelay > 0) {\n this.dragTimeout = window.setTimeout(() => {\n this.pressed = true;\n this.emitZoneAwareEvent('onDragReady', event);\n }, this.dragDelay);\n } else {\n this.pressed = true;\n }\n this.scrollableParent = this.dragTarget.element ? getScrollableParent(this.dragTarget.element) : null;\n this.emitZoneAwareEvent('onPress', event);\n }\n handleDragStart(event) {\n if (!this.pressed) {\n if (this.dragTimeout) {\n window.clearTimeout(this.dragTimeout);\n this.dragTimeout = null;\n }\n return;\n }\n isDragStartPrevented = this.emitZoneAwareEvent('onDragStart', event).isDefaultPrevented();\n if (isDragStartPrevented) {\n return;\n }\n if (this.hint) {\n this.createHint();\n if (this.mode === 'auto') {\n this.renderer.setStyle(this.nativeElement, 'opacity', '0.7');\n }\n this.initialPosition = {\n x: event.offsetX,\n y: event.offsetY\n };\n } else {\n this.initialPosition = {\n x: event.clientX - this.position.x,\n y: event.clientY - this.position.y\n };\n }\n this.dragStarted = this.threshold === 0;\n this.service.dragTarget = this.dragTarget;\n this.service.dragTargetDirective = this;\n this.service.dragData = this.dragData({\n dragTarget: this.dragTarget.element,\n dragTargetId: this.dragTargetIdResult,\n dragTargetIndex: null\n });\n }\n handleDrag(event) {\n if (!this.pressed || isDragStartPrevented) {\n return;\n }\n const elem = this.hint ? this.hintElem : this.nativeElement;\n this.position = this.calculatePosition(elem, event);\n const thresholdNotReached = Math.abs(this.position.x) < this.threshold && Math.abs(this.position.y) < this.threshold;\n if (!this.dragStarted && thresholdNotReached) {\n return;\n }\n if (!this.dragStarted && this.threshold > 0) {\n this.dragStarted = true;\n }\n isDragPrevented = this.emitZoneAwareEvent('onDrag', event).isDefaultPrevented();\n if (isDragPrevented) {\n return;\n }\n if (this.mode === 'auto') {\n this.performDrag();\n } else {\n this.dragStarted = true;\n }\n }\n handleRelease(event) {\n if (this.dragTimeout) {\n clearTimeout(this.dragTimeout);\n this.dragTimeout = null;\n this.pressed = false;\n }\n this.emitZoneAwareEvent('onRelease', event);\n }\n handleDragEnd(event) {\n if (this.mode === 'auto') {\n const isDroppedOverParentTarget = isPresent(this.service.dropTarget) && !contains(this.service.dropTarget?.element, this.service.dragTarget?.element, true);\n const elem = this.hint ? this.hintElem : this.nativeElement;\n if (isDroppedOverParentTarget || this.service.dropTargets.length > 0 && isPresent(elem)) {\n this.renderer.removeStyle(elem, 'transform');\n setElementStyles(this.renderer, elem, {\n transition: dragTargetTransition\n });\n this.position = {\n x: 0,\n y: 0\n };\n }\n }\n if (this.hint && isPresent(this.hintElem)) {\n this.destroyHint();\n if (this.mode === 'auto') {\n this.renderer.removeStyle(this.nativeElement, 'opacity');\n }\n }\n this.service.dragTarget = null;\n this.service.dragTargetDirective = null;\n if (!this.dragStarted || isDragStartPrevented || isDragPrevented) {\n return;\n }\n this.emitZoneAwareEvent('onDragEnd', event);\n this.dragStarted = false;\n }\n initializeDragTarget() {\n this.dragTarget = {\n element: this.nativeElement,\n hint: null,\n onPress: this.handlePress.bind(this),\n onRelease: this.handleRelease.bind(this),\n onDragStart: this.handleDragStart.bind(this),\n onDrag: this.handleDrag.bind(this),\n onDragEnd: this.handleDragEnd.bind(this)\n };\n }\n attachDomHandlers() {\n this.ngZone.runOutsideAngular(() => {\n if (this.domSubscriptions.length > 0) {\n this.domSubscriptions.forEach(subscription => subscription());\n }\n if (!(isDocumentAvailable() && isPresent(this.element))) {\n return;\n }\n if (this.service.pressed) {\n this.onPointerMove = this.onPointerMove.bind(this);\n this.onPointerUp = this.onPointerUp.bind(this);\n this.domSubscriptions = [this.renderer.listen(document, 'pointermove', this.onPointerMove), this.renderer.listen(document, 'mousemove', this.onPointerMove), this.renderer.listen(document, 'touchmove', this.onPointerMove), this.renderer.listen(document, 'pointerup', this.onPointerUp), this.renderer.listen(document, 'pointercancel', this.onPointerUp), this.renderer.listen(document, 'mouseup', this.onPointerUp), this.renderer.listen(document, 'contextmenu', this.onPointerUp), this.renderer.listen(document, 'touchend', this.onPointerUp), this.renderer.listen(document, 'touchcancel', this.onPointerUp)];\n if (isPresent(this.scrollableParent)) {\n if (this.scrollableParent === document.getElementsByTagName('html')[0]) {\n this.scrollableParent = window;\n }\n this.domSubscriptions.push(this.renderer.listen(this.scrollableParent, 'scroll', this.onPointerMove));\n }\n } else {\n this.onPointerDown = this.onPointerDown.bind(this);\n const element = this.nativeElement;\n this.domSubscriptions = [this.renderer.listen(element, 'pointerdown', this.onPointerDown), this.renderer.listen(element, 'mousedown', this.onPointerDown), this.renderer.listen(element, 'touchstart', this.onPointerDown)];\n }\n });\n }\n isDragHandle(el) {\n return this.dragHandles.toArray().some(dh => contains(dh.element.nativeElement, el, true));\n }\n getAutoScrollContainer() {\n return typeof this.autoScroll === 'object' && this.autoScroll.boundaryElementRef && this.autoScroll.boundaryElementRef.nativeElement ? this.autoScroll.boundaryElementRef.nativeElement : null;\n }\n createHint() {\n if (!(isDocumentAvailable() && isPresent(this.element))) {\n return;\n }\n if (isPresent(this.hint) && typeof this.hint === 'object') {\n if (isPresent(this.hint.hintTemplate)) {\n this.createCustomHint();\n } else {\n this.createDefaultHint();\n }\n } else {\n this.createDefaultHint();\n }\n this.dragTarget.hint = this.hintElem;\n if (typeof this.hint === 'object' && isPresent(this.hint.appendTo)) {\n this.hint.appendTo.element.nativeElement.appendChild(this.hintElem);\n } else {\n document.body.appendChild(this.hintElem);\n }\n }\n createDefaultHint() {\n this.defaultHint = this.nativeElement.cloneNode(true);\n if (typeof this.hint === 'object') {\n if (isPresent(this.hint.hintClass)) {\n const hintClasses = parseCSSClassNames(this.hint.hintClass);\n hintClasses.forEach(className => this.renderer.addClass(this.defaultHint, className));\n }\n }\n }\n createCustomHint() {\n if (isPresent(this.hint.appendTo)) {\n this.hintComponent = this.hint.appendTo.createComponent(HintComponent);\n } else {\n this.hintComponent = this.viewContainer.createComponent(HintComponent);\n }\n this.hintComponent.instance.template = this.hintTemplate;\n this.hintComponent.instance.directive = this;\n this.hintComponent.changeDetectorRef.detectChanges();\n }\n destroyHint() {\n if (isPresent(this.hintTemplate)) {\n this.hintComponent.destroy();\n this.hintComponent.changeDetectorRef.detectChanges();\n this.hintComponent = null;\n } else {\n if (typeof this.hint === 'object' && isPresent(this.hint.appendTo)) {\n this.hint.appendTo.element.nativeElement.removeChild(this.defaultHint);\n } else {\n document.body.removeChild(this.defaultHint);\n }\n this.defaultHint = null;\n }\n this.dragTarget.hint = null;\n }\n emitZoneAwareEvent(event, normalizedEvent) {\n const eventProps = {\n dragTarget: this.nativeElement,\n dragEvent: normalizedEvent\n };\n if (this.hint && isPresent(this.hintElem)) {\n eventProps.hintElement = this.hintElem;\n }\n if (this.dragTargetId && this.dragTargetId !== '') {\n eventProps.dragTargetId = this.dragTargetIdResult;\n }\n let eventArgs;\n switch (event) {\n case 'onDragReady':\n eventArgs = new DragTargetDragReadyEvent(eventProps);\n break;\n case 'onPress':\n eventArgs = new DragTargetPressEvent(eventProps);\n break;\n case 'onDragStart':\n eventArgs = new DragTargetDragStartEvent(eventProps);\n break;\n case 'onDrag':\n eventArgs = new DragTargetDragEvent(eventProps);\n break;\n case 'onRelease':\n eventArgs = new DragTargetReleaseEvent(eventProps);\n break;\n case 'onDragEnd':\n eventArgs = new DragTargetDragEndEvent(eventProps);\n break;\n default:\n break;\n }\n this.ngZone.run(() => {\n this[event].emit(eventArgs);\n });\n return eventArgs;\n }\n get dragTargetIdResult() {\n if (this.dragTargetId && this.dragTargetId !== '') {\n return typeof this.dragTargetId === 'string' ? this.dragTargetId : this.dragTargetId({\n dragTarget: this.dragTarget.element,\n dragTargetIndex: null\n });\n }\n }\n performDrag() {\n const elem = this.hint ? this.hintElem : this.nativeElement;\n if (elem) {\n const styles = this.getStylesPerElement(elem);\n setElementStyles(this.renderer, elem, styles);\n }\n }\n calculatePosition(element, event) {\n let position = null;\n if (element === this.hintElem) {\n position = {\n x: event.clientX,\n y: event.clientY\n };\n } else {\n position = {\n x: event.clientX - this.initialPosition.x + event.scrollX,\n y: event.clientY - this.initialPosition.y + event.scrollY\n };\n }\n if (this.restrictByAxis === 'horizontal') {\n position.y = 0;\n } else if (this.restrictByAxis === 'vertical') {\n position.x = 0;\n }\n return position;\n }\n getStylesPerElement(element) {\n if (element === this.hintElem) {\n const hintCoordinates = {\n x: this.position.x - this.initialPosition.x,\n y: this.position.y - this.initialPosition.y\n };\n return {\n top: `${hintCoordinates.y}px`,\n left: `${hintCoordinates.x}px`,\n transition: 'none',\n position: 'absolute',\n zIndex: 1999\n };\n } else {\n const transform = `translate(${this.position.x}px, ${this.position.y}px)`;\n return {\n transform: transform,\n transition: 'none'\n };\n }\n }\n }\n DragTargetDirective.ɵfac = function DragTargetDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragTargetDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(DragStateService), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n };\n DragTargetDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DragTargetDirective,\n selectors: [[\"\", \"kendoDragTarget\", \"\"]],\n contentQueries: function DragTargetDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DragHandleDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dragHandles = _t);\n }\n },\n inputs: {\n hint: \"hint\",\n threshold: \"threshold\",\n autoScroll: \"autoScroll\",\n dragTargetId: \"dragTargetId\",\n dragDelay: \"dragDelay\",\n restrictByAxis: \"restrictByAxis\",\n mode: \"mode\",\n dragData: \"dragData\"\n },\n outputs: {\n onPress: \"onPress\",\n onDragStart: \"onDragStart\",\n onDrag: \"onDrag\",\n onDragReady: \"onDragReady\",\n onRelease: \"onRelease\",\n onDragEnd: \"onDragEnd\"\n },\n exportAs: [\"kendoDragTarget\"],\n standalone: true\n });\n return DragTargetDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the drag events of the DropTarget and DropTargetContainer directives.\n */\nclass DropTargetEvent {\n /**\n * @hidden\n */\n constructor(args) {\n Object.assign(this, args);\n }\n /**\n * Left for backward compatibility for the DropTarget deprecated events.\n * @hidden\n */\n get normalizedEvent() {\n return this.dragEvent;\n }\n /**\n * Left for backward compatibility for the DropTarget deprecated events.\n * @hidden\n */\n get hostElement() {\n return this.dropTarget;\n }\n}\n\n/**\n * Represents the [Kendo UI DropTargetContainer directive for Angular]({% slug api_utils_droptargetcontainerdirective %}).\n * Used to configure multiple elements as drop targets.\n *\n * @example\n * ```ts-no-run\n *
\n *
foo
\n *
\n * ```\n */\nlet DropTargetContainerDirective = /*#__PURE__*/(() => {\n class DropTargetContainerDirective {\n constructor(service, element, ngZone, cdr) {\n this.service = service;\n this.element = element;\n this.ngZone = ngZone;\n this.cdr = cdr;\n /**\n * Fires when a DragTarget element enters the DropTarget.\n */\n this.onDragEnter = new EventEmitter();\n /**\n * Fires when a DragTarget element is being dragged over the DropTarget.\n */\n this.onDragOver = new EventEmitter();\n /**\n * Fires when a DragTarget element leaves the DropTarget.\n */\n this.onDragLeave = new EventEmitter();\n /**\n * Fires when a DragTarget element is dropped over the DropTarget.\n */\n this.onDrop = new EventEmitter();\n this.currentDropTargetElement = null;\n this.previousDropTargets = [];\n this._dropTargetFilter = null;\n this._dropDisabled = false;\n validatePackage(packageMetadata);\n }\n /**\n * Specifies a selector for elements within a container which will be configured as drop targets\n * ([see example]({% slug drop_target_container %})). The possible values include any\n * DOM `selector`.\n */\n set dropTargetFilter(value) {\n this._dropTargetFilter = value;\n if (!this.dropDisabled) {\n this.initializeDropTargets();\n }\n }\n get dropTargetFilter() {\n return this._dropTargetFilter;\n }\n /**\n * Specifies whether the Drop Targets within the container will emit the corresponding events upon interaction with a Drag Target.\n */\n set dropDisabled(value) {\n this._dropDisabled = value;\n if (value) {\n this.clearPreviousTargets();\n } else {\n this.initializeDropTargets();\n }\n }\n get dropDisabled() {\n return this._dropDisabled;\n }\n /**\n * Used for notifying the DropTargetContainer that its content has changed.\n */\n notify() {\n this.cdr.detectChanges();\n this.initializeDropTargets();\n }\n get nativeElement() {\n return this.element.nativeElement;\n }\n ngAfterViewInit() {\n !this.dropDisabled && this.initializeDropTargets();\n }\n get allDropTargets() {\n if (isPresent(this.dropTargetFilter) && this.dropTargetFilter !== '') {\n return Array.from(this.nativeElement.querySelectorAll(this.dropTargetFilter));\n }\n }\n /**\n * @hidden\n */\n handleDragEnter(event) {\n if (!this.service.dragTargetPresent || this.service.dropTargetPresent) {\n return;\n }\n const eventTarget = event.originalEvent.target;\n const currDropTargetElem = intersect(eventTarget, this.allDropTargets);\n const currDropTarget = this.service.dropTargets.find(dt => dt.element === currDropTargetElem);\n if (!isPresent(currDropTargetElem) || !isPresent(currDropTarget)) {\n return;\n }\n this.currentDropTargetElement = currDropTargetElem;\n this.service.dropTarget = currDropTarget;\n this.service.dropIndex = this.getDropIndex();\n this.emitZoneAwareEvent('onDragEnter', event);\n }\n /**\n * @hidden\n */\n handleDragLeave(event) {\n if (!this.service.dragTargetPresent || !this.service.dropTargetPresent) {\n return;\n }\n this.emitZoneAwareEvent('onDragLeave', event);\n this.currentDropTargetElement = null;\n this.service.dropTarget = null;\n this.service.dropIndex = null;\n }\n /**\n * @hidden\n */\n handleDragOver(event) {\n if (!this.service.dragTargetPresent || !this.service.dropTargetPresent) {\n return;\n }\n this.emitZoneAwareEvent('onDragOver', event);\n }\n /**\n * @hidden\n */\n handleDrop(event) {\n if (!this.service.dragTargetPresent || !this.service.dropTargetPresent) {\n return;\n }\n this.emitZoneAwareEvent('onDrop', event);\n this.currentDropTargetElement = null;\n this.service.dropTarget = null;\n this.service.dropIndex = null;\n }\n initializeDropTargets() {\n if (!isPresent(this.allDropTargets)) {\n if (this.previousDropTargets.length > 0) {\n this.clearPreviousTargets();\n }\n return;\n }\n this.allDropTargets.forEach(dropTargetEl => {\n const isDropTargetInitialized = this.service.dropTargets.find(dt => dt.element === dropTargetEl);\n if (!isDropTargetInitialized) {\n this.service.dropTargets.push({\n element: dropTargetEl,\n onDragEnter: this.handleDragEnter.bind(this),\n onDragLeave: this.handleDragLeave.bind(this),\n onDragOver: this.handleDragOver.bind(this),\n onDrop: this.handleDrop.bind(this)\n });\n }\n });\n if (this.previousDropTargets.length > 0) {\n const dropTargetsToRemove = this.previousDropTargets.filter(dt => !this.allDropTargets.includes(dt));\n dropTargetsToRemove.forEach(dropTarget => {\n const idx = this.service.dropTargets.findIndex(serviceDropTarget => serviceDropTarget.element === dropTarget);\n if (idx > -1) {\n this.service.dropTargets.splice(idx, 1);\n }\n });\n }\n this.previousDropTargets = this.allDropTargets;\n }\n emitZoneAwareEvent(event, normalizedEvent) {\n const eventProps = {\n dragTarget: this.service.dragTarget?.element,\n dropTarget: this.currentDropTargetElement,\n dragData: this.service.dragData,\n dragEvent: normalizedEvent,\n dropTargetIndex: this.service.dropIndex\n };\n if (isPresent(this.service.dragTarget?.hint)) {\n eventProps.hintElement = this.service.dragTarget.hint;\n }\n const eventArgs = new DropTargetEvent(eventProps);\n this.ngZone.run(() => {\n this[event].emit(eventArgs);\n });\n }\n getDropIndex() {\n return this.allDropTargets.indexOf(this.currentDropTargetElement);\n }\n clearPreviousTargets() {\n this.previousDropTargets.forEach(dropTarget => {\n const idx = this.service.dropTargets.findIndex(serviceDropTarget => serviceDropTarget.element === dropTarget);\n if (idx > -1) {\n this.service.dropTargets.splice(idx, 1);\n }\n });\n this.previousDropTargets = [];\n }\n }\n DropTargetContainerDirective.ɵfac = function DropTargetContainerDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropTargetContainerDirective)(i0.ɵɵdirectiveInject(DragStateService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n DropTargetContainerDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DropTargetContainerDirective,\n selectors: [[\"\", \"kendoDropTargetContainer\", \"\"]],\n inputs: {\n dropTargetFilter: \"dropTargetFilter\",\n dropDisabled: \"dropDisabled\"\n },\n outputs: {\n onDragEnter: \"onDragEnter\",\n onDragOver: \"onDragOver\",\n onDragLeave: \"onDragLeave\",\n onDrop: \"onDrop\"\n },\n exportAs: [\"kendoDropTargetContainer\"],\n standalone: true\n });\n return DropTargetContainerDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the Kendo UI DropTarget directive for Angular.\n */\nlet DropTargetDirective = /*#__PURE__*/(() => {\n class DropTargetDirective {\n constructor(service, element, ngZone) {\n this.service = service;\n this.element = element;\n this.ngZone = ngZone;\n /**\n * Fires when a DragTarget element enters the DropTarget.\n */\n this.onDragEnter = new EventEmitter();\n /**\n * Fires when a DragTarget element is being dragged over the DropTarget.\n */\n this.onDragOver = new EventEmitter();\n /**\n * Fires when a DragTarget element leaves the DropTarget.\n */\n this.onDragLeave = new EventEmitter();\n /**\n * Fires when a DragTarget element is dropped over the DropTarget.\n */\n this.onDrop = new EventEmitter();\n validatePackage(packageMetadata);\n }\n ngOnInit() {\n this.initializeDropTarget();\n this.service.dropTargets.push(this.dropTarget);\n }\n /**\n * @hidden\n */\n handleDragEnter(event) {\n if (!this.service.dragTarget) {\n return;\n }\n this.service.dropTarget = this.dropTarget;\n this.emitZoneAwareEvent('onDragEnter', event);\n }\n /**\n * @hidden\n */\n handleDragLeave(event) {\n this.service.dropTarget = null;\n if (!this.service.dragTarget) {\n return;\n }\n this.emitZoneAwareEvent('onDragLeave', event);\n }\n /**\n * @hidden\n */\n handleDragOver(event) {\n if (!this.service.dragTarget) {\n return;\n }\n this.emitZoneAwareEvent('onDragOver', event);\n }\n /**\n * @hidden\n */\n handleDrop(event) {\n this.emitZoneAwareEvent('onDrop', event);\n this.service.dropTarget = null;\n }\n initializeDropTarget() {\n this.dropTarget = {\n element: this.element.nativeElement,\n onDragEnter: this.handleDragEnter.bind(this),\n onDragLeave: this.handleDragLeave.bind(this),\n onDragOver: this.handleDragOver.bind(this),\n onDrop: this.handleDrop.bind(this)\n };\n }\n emitZoneAwareEvent(event, normalizedEvent) {\n const eventProps = {\n dropTarget: this.element.nativeElement,\n dragTarget: this.service.dragTarget?.element,\n dragEvent: normalizedEvent,\n dragData: this.service.dragData\n };\n if (isPresent(this.service.dragTarget?.hint)) {\n eventProps.hintElement = this.service.dragTarget.element;\n }\n const eventArgs = new DropTargetEvent(eventProps);\n this.ngZone.run(() => {\n this[event].emit(eventArgs);\n });\n }\n }\n DropTargetDirective.ɵfac = function DropTargetDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropTargetDirective)(i0.ɵɵdirectiveInject(DragStateService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n DropTargetDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DropTargetDirective,\n selectors: [[\"\", \"kendoDropTarget\", \"\"]],\n outputs: {\n onDragEnter: \"onDragEnter\",\n onDragOver: \"onDragOver\",\n onDragLeave: \"onDragLeave\",\n onDrop: \"onDrop\"\n },\n exportAs: [\"kendoDropTarget\"],\n standalone: true\n });\n return DropTargetDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Utility array that contains all `Drag and Drop` related components and directives\n */\nconst KENDO_DRAGANDDROP = [DragTargetDirective, DragHandleDirective, DropTargetDirective, DragTargetContainerDirective, DropTargetContainerDirective, HintComponent];\n/**\n* Utility array that contains all `@progress/kendo-angular-utils` related components and directives.\n* > As of now, `KENDO_UTILS` includes only the `KENDO_DRAGANDDROP` utility array and their usage is equivalent.\n*/\nconst KENDO_UTILS = [...KENDO_DRAGANDDROP];\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmodules'])\n * definition for the Utils components.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the Utils module\n * import { UtilsModule } from '@progress/kendo-angular-utils';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, UtilsModule], // import Utils module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet UtilsModule = /*#__PURE__*/(() => {\n class UtilsModule {}\n UtilsModule.ɵfac = function UtilsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || UtilsModule)();\n };\n UtilsModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: UtilsModule\n });\n UtilsModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [HintComponent]\n });\n return UtilsModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmodules'])\n * definition for the Drag and Drop directives.\n *\n * @example\n *\n * ```ts-no-run\n * // Import the DragAndDrop module\n * import { DragAndDropModule } from '@progress/kendo-angular-utils';\n *\n * // The browser platform with a compiler\n * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n *\n * import { NgModule } from '@angular/core';\n *\n * // Import the app component\n * import { AppComponent } from './app.component';\n *\n * // Define the app module\n * _@NgModule({\n * declarations: [AppComponent], // declare app component\n * imports: [BrowserModule, DragAndDropModule], // import DragAndDropModule module\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * // Compile and launch the module\n * platformBrowserDynamic().bootstrapModule(AppModule);\n *\n * ```\n */\nlet DragAndDropModule = /*#__PURE__*/(() => {\n class DragAndDropModule {}\n DragAndDropModule.ɵfac = function DragAndDropModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragAndDropModule)();\n };\n DragAndDropModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DragAndDropModule\n });\n DragAndDropModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [HintComponent]\n });\n return DragAndDropModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DragAndDropModule, DragHandleDirective, DragTargetContainerDirective, DragTargetDirective, DragTargetDragEndEvent, DragTargetDragEvent, DragTargetDragReadyEvent, DragTargetDragStartEvent, DragTargetPressEvent, DragTargetReleaseEvent, DropTargetContainerDirective, DropTargetDirective, DropTargetEvent, HintComponent, KENDO_DRAGANDDROP, KENDO_UTILS, UtilsModule };","/**-----------------------------------------------------------------------------------------\n* Copyright © 2024 Progress Software Corporation. All rights reserved.\n* Licensed under commercial license. See LICENSE.md in the project root for more information\n*-------------------------------------------------------------------------------------------*/\nimport * as i0 from '@angular/core';\nimport { EventEmitter, Injectable, SecurityContext, InjectionToken, Optional, Inject, Directive, SkipSelf, Input, Host, Output, HostBinding, QueryList, isDevMode, Component, ContentChildren, ContentChild, forwardRef, Pipe, TemplateRef, ChangeDetectionStrategy, ViewChildren, ViewChild, Self, NgZone, HostListener, ElementRef, ViewEncapsulation, NgModule } from '@angular/core';\nimport { merge, of, Subject, from, Subscription, interval, fromEvent, Observable, zip as zip$1, BehaviorSubject } from 'rxjs';\nimport * as i9 from '@progress/kendo-angular-common';\nimport { isDocumentAvailable, Keys, anyChanged, TemplateContextDirective, DraggableDirective, EventsOutsideAngularDirective, isChanged as isChanged$1, KendoInput, guid, hasObservers, ResizeSensorComponent, isPresent as isPresent$1, closest as closest$1, isFocusable as isFocusable$1, shouldShowValidationUI, WatermarkOverlayComponent, ResizeBatchService, DraggableModule } from '@progress/kendo-angular-common';\nimport * as i1 from '@angular/platform-browser';\nimport * as i1$1 from '@progress/kendo-angular-icons';\nimport { IconWrapperComponent, IconsService, KENDO_ICONS } from '@progress/kendo-angular-icons';\nimport { plusIcon, cancelIcon, lockIcon, unlockIcon, caretAltDownIcon, caretAltRightIcon, caretAltLeftIcon, arrowLeftIcon, arrowRightIcon, sortDescSmallIcon, sortAscSmallIcon, filterClearIcon, filterIcon, columnsIcon, displayInlineFlexIcon, maxWidthIcon, stickIcon, unstickIcon, setColumnPositionIcon, slidersIcon, moreVerticalIcon, reorderIcon, minusIcon, caretAltToLeftIcon, caretAltToRightIcon, insertMiddleIcon } from '@progress/kendo-svg-icons';\nimport { switchMap, take, map, filter, takeUntil, switchMapTo, delay, tap, throttleTime, debounceTime, distinctUntilChanged, auditTime, bufferCount } from 'rxjs/operators';\nimport * as i1$2 from '@progress/kendo-angular-l10n';\nimport { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';\nimport { orderBy, isCompositeFilterDescriptor, groupBy, process, filterBy } from '@progress/kendo-data-query';\nimport { NgFor, NgIf, NgTemplateOutlet, NgSwitch, NgSwitchCase, NgClass, NgStyle, NgSwitchDefault } from '@angular/common';\nimport { getter } from '@progress/kendo-common';\nimport * as i1$3 from '@progress/kendo-angular-intl';\nimport * as i5 from '@progress/kendo-angular-popup';\nimport { PopupService, KENDO_POPUP } from '@progress/kendo-angular-popup';\nimport * as i17 from '@progress/kendo-angular-buttons';\nimport { ChipListComponent, ChipComponent, ButtonComponent, Button, KENDO_CHIPLIST } from '@progress/kendo-angular-buttons';\nimport * as i1$4 from '@progress/kendo-angular-dropdowns';\nimport { DropDownListComponent, AutoCompleteComponent } from '@progress/kendo-angular-dropdowns';\nimport * as i4 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule, FormControl, FormGroup } from '@angular/forms';\nimport * as i1$5 from '@progress/kendo-angular-inputs';\nimport { TextBoxDirective, NumericTextBoxComponent, NumericTextBoxCustomMessagesComponent, RadioButtonDirective, TextBoxComponent } from '@progress/kendo-angular-inputs';\nimport { DatePickerComponent, DatePickerCustomMessagesComponent, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService as NavigationService$1 } from '@progress/kendo-angular-dateinputs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { TabStripComponent, TabStripTabComponent, TabTitleDirective, TabContentDirective } from '@progress/kendo-angular-layout';\nimport { saveAs } from '@progress/kendo-file-saver';\nimport { workbookOptions, toDataURL, ColumnBase as ColumnBase$1, ExcelExportModule } from '@progress/kendo-angular-excel-export';\nimport { PDFExportMarginComponent, PDFExportTemplateDirective, PDFExportComponent } from '@progress/kendo-angular-pdf-export';\nimport { LabelComponent } from '@progress/kendo-angular-label';\nimport { validatePackage } from '@progress/kendo-licensing';\nimport { DragTargetContainerDirective, DropTargetContainerDirective } from '@progress/kendo-angular-utils';\nimport { DialogContainerService, DialogService, WindowService, WindowContainerService } from '@progress/kendo-angular-dialog';\n\n/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nconst _c0 = [\"kendoGridColGroup\", \"\"];\nfunction ColGroupComponent_col_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"col\");\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-group-col\", true);\n }\n}\nfunction ColGroupComponent_col_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"col\");\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-hierarchy-col\", true);\n }\n}\nfunction ColGroupComponent_col_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"col\");\n }\n if (rf & 2) {\n const column_r1 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"width\", column_r1.width, \"px\");\n i0.ɵɵclassProp(\"k-sorted\", ctx_r1.isSorted(ctx_r1.getColumnComponent(column_r1)));\n }\n}\nconst _c1 = [\"kendoGridLoading\", \"\"];\nfunction LoadingComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 1);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(3, \"div\", 2)(4, \"div\", 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r0.loadingText);\n }\n}\nfunction LoadingComponent_1_ng_template_0_Template(rf, ctx) {}\nfunction LoadingComponent_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, LoadingComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.loadingTemplate == null ? null : ctx_r0.loadingTemplate.templateRef);\n }\n}\nconst _c2 = [\"kendoGridGroupHeader\", \"\"];\nconst _c3 = (a0, a1, a2, a3, a4, a5, a6, a7) => ({\n templateRef: a0,\n group: a1,\n aggregates: a2,\n value: a3,\n field: a4,\n index: a5,\n expanded: a6,\n $implicit: a7\n});\nconst _c4 = (a0, a1, a2, a3, a4, a5) => ({\n group: a0,\n aggregates: a1,\n value: a2,\n field: a3,\n index: a4,\n $implicit: a5\n});\nfunction GroupHeaderComponent_ng_container_0_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 3);\n }\n}\nfunction GroupHeaderComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, GroupHeaderComponent_ng_container_0_td_1_Template, 1, 0, \"td\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.prefixGroupCell(ctx_r0.item));\n }\n}\nfunction GroupHeaderComponent_td_1_ng_container_2_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵpipe(2, \"valueOf\");\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx_r0.groupTitle(ctx_r0.item), \": \", i0.ɵɵpipeBind3(2, 2, ctx_r0.item.data, \"value\", ctx_r0.formatForGroup(ctx_r0.item)), \" \");\n }\n}\nfunction GroupHeaderComponent_td_1_ng_container_2_ng_template_4_Template(rf, ctx) {}\nfunction GroupHeaderComponent_td_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"a\", 6);\n i0.ɵɵlistener(\"click\", function GroupHeaderComponent_td_1_ng_container_2_Template_a_click_1_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r0.toggleGroup(ctx_r0.item));\n });\n i0.ɵɵelement(2, \"kendo-icon-wrapper\", 7);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, GroupHeaderComponent_td_1_ng_container_2_ng_container_3_Template, 3, 6, \"ng-container\", 0)(4, GroupHeaderComponent_td_1_ng_container_2_ng_template_4_Template, 0, 0, \"ng-template\", 8);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"title\", ctx_r0.groupButtonTitle)(\"aria-label\", ctx_r0.groupButtonTitle);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r0.arrowIcon)(\"svgIcon\", ctx_r0.arrowSVGIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.groupHeaderTemplate(ctx_r0.item));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction8(6, _c3, ctx_r0.groupHeaderTemplate(ctx_r0.item), ctx_r0.item.data, ctx_r0.item.data == null ? null : ctx_r0.item.data.aggregates, ctx_r0.item.data == null ? null : ctx_r0.item.data.value, ctx_r0.item.data == null ? null : ctx_r0.item.data.field, ctx_r0.item.index, ctx_r0.isExpanded, ctx_r0.item.data));\n }\n}\nfunction GroupHeaderComponent_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 4)(1, \"p\", 5);\n i0.ɵɵtemplate(2, GroupHeaderComponent_td_1_ng_container_2_Template, 5, 15, \"ng-container\", 0);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex)(\"logicalColIndex\", 0)(\"logicalSlaveCell\", ctx_r0.skipGroupDecoration)(\"groupItem\", ctx_r0.item)(\"colSpan\", ctx_r0.logicalColSpan());\n i0.ɵɵattribute(\"colspan\", ctx_r0.groupSpan(ctx_r0.item))(\"role\", ctx_r0.ariaRole())(\"aria-expanded\", ctx_r0.isExpanded);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.skipGroupDecoration);\n }\n}\nfunction GroupHeaderComponent_ng_container_2_td_1_1_ng_template_0_Template(rf, ctx) {}\nfunction GroupHeaderComponent_ng_container_2_td_1_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, GroupHeaderComponent_ng_container_2_td_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n }\n if (rf & 2) {\n const column_r3 = i0.ɵɵnextContext().$implicit;\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", column_r3.groupHeaderColumnTemplateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction6(2, _c4, ctx_r0.item.data, ctx_r0.item.data == null ? null : ctx_r0.item.data.aggregates, ctx_r0.item.data == null ? null : ctx_r0.item.data.value, ctx_r0.item.data == null ? null : ctx_r0.item.data.field, ctx_r0.item.index, ctx_r0.item.data));\n }\n}\nfunction GroupHeaderComponent_ng_container_2_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 10);\n i0.ɵɵtemplate(1, GroupHeaderComponent_ng_container_2_td_1_1_Template, 1, 9, null, 0);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r3 = ctx.$implicit;\n const index_r4 = ctx.index;\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex)(\"logicalColIndex\", index_r4 + 1)(\"logicalSlaveCell\", false)(\"groupItem\", ctx_r0.item)(\"colSpan\", 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", column_r3.groupHeaderColumnTemplateRef);\n }\n}\nfunction GroupHeaderComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, GroupHeaderComponent_ng_container_2_td_1_Template, 2, 6, \"td\", 9);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.groupHeaderColumns);\n }\n}\nconst _c5 = [\"defaultTemplate\"];\nconst _c6 = () => ({\n lastTarget: true\n});\nconst _c7 = (a0, a1, a2) => ({\n field: a0,\n type: \"groupIndicator\",\n hint: a1,\n target: a2\n});\nconst _c8 = (a0, a1) => ({\n keydown: a0,\n click: a1\n});\nfunction GroupPanelComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"context\", i0.ɵɵpureFunction0(2, _c6));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.text, \" \");\n }\n}\nfunction GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-chip\", 7, 1);\n i0.ɵɵlistener(\"contentClick\", function GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template_kendo_chip_contentClick_0_listener() {\n const group_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const ctx_r0 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r0.directionChange(group_r3));\n })(\"remove\", function GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template_kendo_chip_remove_0_listener() {\n const group_r3 = i0.ɵɵrestoreView(_r2).$implicit;\n const ctx_r0 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r0.remove(group_r3));\n })(\"menuToggle\", function GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template_kendo_chip_menuToggle_0_listener() {\n const ctx_r3 = i0.ɵɵrestoreView(_r2);\n const group_r3 = ctx_r3.$implicit;\n const first_r5 = ctx_r3.first;\n const last_r6 = ctx_r3.last;\n const chip_r7 = i0.ɵɵreference(1);\n const ctx_r0 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r0.toggleMenu(chip_r7, first_r5, last_r6, group_r3.field));\n })(\"keydown.alt.arrowdown\", function GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template_kendo_chip_keydown_alt_arrowdown_0_listener($event) {\n const ctx_r7 = i0.ɵɵrestoreView(_r2);\n const group_r3 = ctx_r7.$implicit;\n const first_r5 = ctx_r7.first;\n const last_r6 = ctx_r7.last;\n const chip_r7 = i0.ɵɵreference(1);\n const ctx_r0 = i0.ɵɵnextContext(2);\n $event.preventDefault();\n return i0.ɵɵresetView(ctx_r0.toggleMenu(chip_r7, first_r5, last_r6, group_r3.field));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const group_r3 = ctx.$implicit;\n const index_r9 = ctx.index;\n const chip_r7 = i0.ɵɵreference(1);\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"title\", ctx_r0.getTitle(group_r3))(\"enableDrag\", true)(\"context\", i0.ɵɵpureFunction3(11, _c7, group_r3.field, ctx_r0.groupTitles[index_r9], chip_r7))(\"label\", ctx_r0.groupTitles[index_r9])(\"removable\", true)(\"hasMenu\", true)(\"icon\", ctx_r0.getDirectionIcon(group_r3))(\"svgIcon\", ctx_r0.getDirectionSvgIcon(group_r3));\n i0.ɵɵattribute(\"aria-haspopup\", \"menu\")(\"aria-expanded\", ctx_r0.isChipMenuOpen)(\"aria-controls\", ctx_r0.gridId);\n }\n}\nfunction GroupPanelComponent_kendo_chiplist_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-chiplist\", 5);\n i0.ɵɵtemplate(1, GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template, 2, 15, \"kendo-chip\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"navigable\", ctx_r0.navigable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.groups);\n }\n}\nfunction GroupPanelComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵtext(1, \"\\xA0\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"context\", i0.ɵɵpureFunction0(1, _c6));\n }\n}\nfunction GroupPanelComponent_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"ul\", 8)(1, \"li\", 9)(2, \"span\", 10);\n i0.ɵɵelement(3, \"kendo-icon-wrapper\", 11);\n i0.ɵɵelementStart(4, \"span\", 12);\n i0.ɵɵtext(5);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(6, \"li\", 9)(7, \"span\", 10);\n i0.ɵɵelement(8, \"kendo-icon-wrapper\", 11);\n i0.ɵɵelementStart(9, \"span\", 12);\n i0.ɵɵtext(10);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction2(13, _c8, ctx_r0.handleKeyDown, ctx_r0.handleClick));\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"aria-disabled\", ctx_r0.first);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"k-disabled\", ctx_r0.first);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r0.rtl ? \"arrow-right\" : \"arrow-left\")(\"svgIcon\", ctx_r0.rtl ? ctx_r0.arrowRightIcon : ctx_r0.arrowLeftIcon);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r0.messageFor(\"groupChipMenuPrevious\"));\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"aria-disabled\", ctx_r0.last);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"k-disabled\", ctx_r0.last);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r0.rtl ? \"arrow-left\" : \"arrow-right\")(\"svgIcon\", ctx_r0.rtl ? ctx_r0.arrowLeftIcon : ctx_r0.arrowRightIcon);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r0.messageFor(\"groupChipMenuNext\"));\n }\n}\nconst _c9 = [\"dropdown\"];\nconst _c10 = () => ({\n width: \"auto\"\n});\nfunction FilterCellOperatorsComponent_kendo_dropdownlist_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3, 0);\n i0.ɵɵlistener(\"valueChange\", function FilterCellOperatorsComponent_kendo_dropdownlist_0_Template_kendo_dropdownlist_valueChange_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onChange($event));\n })(\"keydown\", function FilterCellOperatorsComponent_kendo_dropdownlist_0_Template_kendo_dropdownlist_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.dropdownKeydown($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"data\", ctx_r1.operators)(\"value\", ctx_r1.value)(\"svgIcon\", ctx_r1.filterSVGIcon)(\"valuePrimitive\", true)(\"popupSettings\", i0.ɵɵpureFunction0(7, _c10))(\"size\", ctx_r1.size);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.column && ctx_r1.columnLabel);\n }\n}\nfunction FilterCellOperatorsComponent_button_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 4);\n i0.ɵɵlistener(\"click\", function FilterCellOperatorsComponent_button_1_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearClick());\n })(\"keydown\", function FilterCellOperatorsComponent_button_1_Template_button_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.clearKeydown($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"svgIcon\", ctx_r1.filterClearIcon)(\"title\", ctx_r1.clearText)(\"size\", ctx_r1.size);\n }\n}\nconst _c11 = [\"*\"];\nfunction StringFilterMenuComponent_kendo_dropdownlist_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3);\n i0.ɵɵlistener(\"valueChange\", function StringFilterMenuComponent_kendo_dropdownlist_1_Template_kendo_dropdownlist_valueChange_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.logicChange($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx_r1.filterMenuDropDownLabel)(\"data\", ctx_r1.logicOperators)(\"valuePrimitive\", true)(\"value\", ctx_r1.filter == null ? null : ctx_r1.filter.logic);\n }\n}\nfunction StringFilterMenuComponent_kendo_grid_string_filter_menu_input_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-string-filter-menu-input\", 4);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"operators\", ctx_r1.operators)(\"currentFilter\", ctx_r1.secondFilter)(\"filterService\", ctx_r1.filterService)(\"column\", ctx_r1.column)(\"filter\", ctx_r1.filter)(\"menuTabbingService\", ctx_r1.menuTabbingService);\n }\n}\nfunction NumericFilterMenuComponent_kendo_dropdownlist_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3);\n i0.ɵɵlistener(\"valueChange\", function NumericFilterMenuComponent_kendo_dropdownlist_1_Template_kendo_dropdownlist_valueChange_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.logicChange($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx_r1.filterMenuDropDownLabel)(\"data\", ctx_r1.logicOperators)(\"valuePrimitive\", true)(\"value\", ctx_r1.filter == null ? null : ctx_r1.filter.logic);\n }\n}\nfunction NumericFilterMenuComponent_kendo_grid_numeric_filter_menu_input_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-numeric-filter-menu-input\", 4);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"operators\", ctx_r1.operators)(\"currentFilter\", ctx_r1.secondFilter)(\"filterService\", ctx_r1.filterService)(\"column\", ctx_r1.column)(\"filter\", ctx_r1.filter)(\"format\", ctx_r1.format)(\"decimals\", ctx_r1.decimals)(\"spinners\", ctx_r1.spinners)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"step\", ctx_r1.step)(\"menuTabbingService\", ctx_r1.menuTabbingService);\n }\n}\nfunction DateFilterMenuComponent_kendo_dropdownlist_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-dropdownlist\", 3);\n i0.ɵɵlistener(\"valueChange\", function DateFilterMenuComponent_kendo_dropdownlist_1_Template_kendo_dropdownlist_valueChange_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.logicChange($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx_r1.filterMenuDropDownLabel)(\"data\", ctx_r1.logicOperators)(\"valuePrimitive\", true)(\"value\", ctx_r1.filter == null ? null : ctx_r1.filter.logic);\n }\n}\nfunction DateFilterMenuComponent_kendo_grid_date_filter_menu_input_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-date-filter-menu-input\", 4);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"operators\", ctx_r1.operators)(\"currentFilter\", ctx_r1.secondFilter)(\"filterService\", ctx_r1.filterService)(\"column\", ctx_r1.column)(\"filter\", ctx_r1.filter)(\"activeView\", ctx_r1.activeView)(\"bottomView\", ctx_r1.bottomView)(\"topView\", ctx_r1.topView)(\"format\", ctx_r1.format)(\"formatPlaceholder\", ctx_r1.formatPlaceholder)(\"placeholder\", ctx_r1.placeholder)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"weekNumber\", ctx_r1.weekNumber)(\"menuTabbingService\", ctx_r1.menuTabbingService);\n }\n}\nfunction BooleanFilterMenuComponent_li_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\")(1, \"input\", 3, 0);\n i0.ɵɵlistener(\"change\", function BooleanFilterMenuComponent_li_1_Template_input_change_1_listener() {\n const item_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const input_r3 = i0.ɵɵreference(2);\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.onChange(item_r2.value, input_r3));\n })(\"keydown.shift.tab\", function BooleanFilterMenuComponent_li_1_Template_input_keydown_shift_tab_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.onShiftTab($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"label\", 4);\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const item_r2 = ctx.$implicit;\n const ctx_r3 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columnLabel\", ctx_r3.columnLabel)(\"name\", ctx_r3.idPrefix)(\"checked\", ctx_r3.isSelected(item_r2.value));\n i0.ɵɵattribute(\"id\", ctx_r3.radioId(item_r2.value));\n i0.ɵɵadvance(2);\n i0.ɵɵattribute(\"for\", ctx_r3.radioId(item_r2.value));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(item_r2.text);\n }\n}\nconst _c12 = [\"resetButton\"];\nconst _c13 = [\"filterButton\"];\nfunction FilterMenuContainerComponent_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementContainer(1, 9);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"filterService\", ctx_r1.childService)(\"column\", ctx_r1.column)(\"filter\", ctx_r1.childFilter)(\"menuTabbingService\", ctx_r1.menuTabbingService);\n }\n}\nfunction FilterMenuContainerComponent_ng_container_4_1_ng_template_0_Template(rf, ctx) {}\nfunction FilterMenuContainerComponent_ng_container_4_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, FilterMenuContainerComponent_ng_container_4_1_ng_template_0_Template, 0, 0, \"ng-template\", 11);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.column.filterMenuTemplateRef)(\"ngTemplateOutletContext\", ctx_r1.templateContext);\n }\n}\nfunction FilterMenuContainerComponent_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, FilterMenuContainerComponent_ng_container_4_1_Template, 1, 2, null, 10);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.column.filterMenuTemplateRef);\n }\n}\nconst _c14 = [\"anchor\"];\nconst _c15 = [\"template\"];\nfunction FilterMenuComponent_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-filter-menu-container\", 4);\n i0.ɵɵlistener(\"close\", function FilterMenuComponent_ng_template_3_Template_kendo_grid_filter_menu_container_close_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.close());\n })(\"keydown.escape\", function FilterMenuComponent_ng_template_3_Template_kendo_grid_filter_menu_container_keydown_escape_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.close());\n })(\"keydown.enter\", function FilterMenuComponent_ng_template_3_Template_kendo_grid_filter_menu_container_keydown_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"column\", ctx_r4.column)(\"filter\", ctx_r4.filter);\n }\n}\nconst _c16 = [\"kendoGridFilterCell\", \"\"];\nfunction FilterCellComponent_ng_container_0_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementContainer(1, 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"column\", ctx_r0.column)(\"filter\", ctx_r0.filter);\n }\n}\nfunction FilterCellComponent_ng_container_0_ng_container_3_1_ng_template_0_Template(rf, ctx) {}\nfunction FilterCellComponent_ng_container_0_ng_container_3_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, FilterCellComponent_ng_container_0_ng_container_3_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.column.filterCellTemplateRef)(\"ngTemplateOutletContext\", ctx_r0.templateContext);\n }\n}\nfunction FilterCellComponent_ng_container_0_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, FilterCellComponent_ng_container_0_ng_container_3_1_Template, 1, 2, null, 0);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.column.filterCellTemplateRef);\n }\n}\nfunction FilterCellComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0)(1, 1);\n i0.ɵɵtemplate(2, FilterCellComponent_ng_container_0_ng_container_2_Template, 2, 2, \"ng-container\", 2)(3, FilterCellComponent_ng_container_0_ng_container_3_Template, 2, 1, \"ng-container\", 2);\n i0.ɵɵelementContainerEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitch\", ctx_r0.hasTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", false);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", true);\n }\n}\nconst _c17 = [\"kendoGridFilterRow\", \"\"];\nfunction FilterRowComponent_td_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-group-cell\", true);\n }\n}\nfunction FilterRowComponent_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 3);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-hierarchy-cell\", true);\n }\n}\nfunction FilterRowComponent_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 4);\n }\n if (rf & 2) {\n const column_r1 = ctx.$implicit;\n const columnIndex_r2 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-grid-header-sticky\", column_r1.sticky);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2.addStickyStyles(column_r1))(\"ngClass\", column_r1.filterClass)(\"column\", column_r1)(\"filter\", ctx_r2.filter)(\"logicalRowIndex\", ctx_r2.logicalRowIndex)(\"logicalColIndex\", ctx_r2.getLogicalColIndex(columnIndex_r2));\n i0.ɵɵattribute(\"aria-label\", ctx_r2.filterLabel(column_r1));\n }\n}\nconst _c18 = [\"applyButton\"];\nfunction ColumnListComponent_label_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"label\", 5);\n i0.ɵɵelement(1, \"input\", 6);\n i0.ɵɵelementStart(2, \"span\", 7);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const column_r1 = ctx.$implicit;\n const index_r2 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"kendoColumnMenuChooserItemChecked\", !column_r1.hidden);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"checked\", !column_r1.hidden)(\"disabled\", ctx_r2.isDisabled(column_r1));\n i0.ɵɵattribute(\"data-index\", index_r2)(\"aria-hidden\", true);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(column_r1.displayTitle);\n }\n}\nfunction ColumnListComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 8)(1, \"button\", 9, 0);\n i0.ɵɵlistener(\"click\", function ColumnListComponent_div_2_Template_button_click_1_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.applyChanges());\n })(\"keydown.enter\", function ColumnListComponent_div_2_Template_button_keydown_enter_1_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext();\n $event.preventDefault();\n $event.stopPropagation;\n return i0.ɵɵresetView(ctx_r2.applyChanges());\n })(\"keydown.space\", function ColumnListComponent_div_2_Template_button_keydown_space_1_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext();\n $event.preventDefault();\n $event.stopPropagation;\n return i0.ɵɵresetView(ctx_r2.applyChanges());\n });\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"button\", 10, 1);\n i0.ɵɵlistener(\"keydown.tab\", function ColumnListComponent_div_2_Template_button_keydown_tab_4_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.onTab($event));\n })(\"click\", function ColumnListComponent_div_2_Template_button_click_4_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.cancelChanges());\n })(\"keydown.enter\", function ColumnListComponent_div_2_Template_button_keydown_enter_4_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext();\n $event.preventDefault();\n $event.stopPropagation;\n return i0.ɵɵresetView(ctx_r2.cancelChanges());\n })(\"keydown.space\", function ColumnListComponent_div_2_Template_button_keydown_space_4_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext();\n $event.preventDefault();\n $event.stopPropagation;\n return i0.ɵɵresetView(ctx_r2.cancelChanges());\n });\n i0.ɵɵtext(6);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r2.actionsClass);\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx_r2.applyText);\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx_r2.resetText);\n }\n}\nconst _c19 = [\"columnList\"];\nfunction ColumnChooserComponent_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"kendo-grid-columnlist\", 5, 2);\n i0.ɵɵlistener(\"apply\", function ColumnChooserComponent_ng_template_2_Template_kendo_grid_columnlist_apply_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.onApply($event));\n })(\"columnChange\", function ColumnChooserComponent_ng_template_2_Template_kendo_grid_columnlist_columnChange_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.onChange($event));\n })(\"keydown.shift.tab\", function ColumnChooserComponent_ng_template_2_Template_kendo_grid_columnlist_keydown_shift_tab_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.onShiftTab($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r4.ctx.localization.get(\"columns\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columns\", ctx_r4.columns)(\"ariaLabel\", ctx_r4.ctx.localization.get(\"columns\"))(\"isLast\", true)(\"applyText\", ctx_r4.ctx.localization.get(\"columnsApply\"))(\"resetText\", ctx_r4.ctx.localization.get(\"columnsReset\"))(\"autoSync\", ctx_r4.autoSync)(\"allowHideAll\", ctx_r4.allowHideAll);\n }\n}\nfunction ColumnMenuItemComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵelementContainer(1, 4);\n i0.ɵɵelement(2, \"div\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"overflow\", \"hidden\");\n i0.ɵɵproperty(\"@state\", ctx_r0.contentState);\n i0.ɵɵattribute(\"id\", ctx_r0.contentId);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.contentTemplate.templateRef);\n }\n}\nfunction ColumnMenuAutoSizeAllColumnsComponent_kendo_grid_columnmenu_item_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 1);\n i0.ɵɵlistener(\"itemClick\", function ColumnMenuAutoSizeAllColumnsComponent_kendo_grid_columnmenu_item_0_Template_kendo_grid_columnmenu_item_itemClick_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.autoSizeAllColumns());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"text\", ctx_r1.ctx.localization.get(\"autosizeAllColumns\"))(\"svgIcon\", ctx_r1.displayInlineFlexIcon);\n }\n}\nfunction ColumnMenuAutoSizeColumnComponent_kendo_grid_columnmenu_item_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 1);\n i0.ɵɵlistener(\"itemClick\", function ColumnMenuAutoSizeColumnComponent_kendo_grid_columnmenu_item_0_Template_kendo_grid_columnmenu_item_itemClick_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.autoSizeColumn());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"text\", ctx_r1.ctx.localization.get(\"autosizeThisColumn\"))(\"svgIcon\", ctx_r1.maxWidthIcon);\n }\n}\nfunction ColumnMenuChooserComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnlist\", 2);\n i0.ɵɵlistener(\"apply\", function ColumnMenuChooserComponent_ng_template_1_Template_kendo_grid_columnlist_apply_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onApply($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"applyText\", ctx_r1.ctx.localization.get(\"columnsApply\"))(\"resetText\", ctx_r1.ctx.localization.get(\"columnsReset\"))(\"ariaLabel\", ctx_r1.ctx.localization.get(\"columns\"))(\"columns\", ctx_r1.columns)(\"autoSync\", false)(\"allowHideAll\", false)(\"actionsClass\", ctx_r1.actionsClass)(\"isLast\", ctx_r1.isLast)(\"isExpanded\", ctx_r1.expanded)(\"service\", ctx_r1.service);\n }\n}\nfunction ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-lock\", 3);\n i0.ɵɵlistener(\"keydown.tab\", function ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template_kendo_grid_columnmenu_lock_keydown_tab_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onTab($event, !ctx_r1.showStick));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"service\", ctx_r1.service);\n }\n}\nfunction ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-stick\", 3);\n i0.ɵɵlistener(\"keydown.tab\", function ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template_kendo_grid_columnmenu_stick_keydown_tab_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onTab($event, true));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"service\", ctx_r1.service);\n }\n}\nfunction ColumnMenuPositionComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template, 1, 1, \"kendo-grid-columnmenu-lock\", 2)(1, ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template, 1, 1, \"kendo-grid-columnmenu-stick\", 2);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showLock);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showStick);\n }\n}\nfunction ColumnMenuFilterComponent_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-filter-menu-container\", 2);\n i0.ɵɵlistener(\"keydown.shift.tab\", function ColumnMenuFilterComponent_ng_template_1_Template_kendo_grid_filter_menu_container_keydown_shift_tab_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n })(\"close\", function ColumnMenuFilterComponent_ng_template_1_Template_kendo_grid_filter_menu_container_close_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.close());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"column\", ctx_r1.service.column)(\"menuTabbingService\", ctx_r1.service.menuTabbingService)(\"filter\", ctx_r1.service.filter)(\"actionsClass\", ctx_r1.actionsClass)(\"isLast\", ctx_r1.isLast)(\"isExpanded\", ctx_r1.expanded);\n }\n}\nconst _c20 = [\"tabbedInterfaceTemplate\"];\nconst _c21 = a0 => ({\n \"k-active\": a0\n});\nconst _c22 = (a0, a1) => ({\n service: a0,\n column: a1\n});\nfunction ColumnMenuComponent_ng_template_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-container\", 15);\n i0.ɵɵlistener(\"keydown.escape\", function ColumnMenuComponent_ng_template_3_Template_kendo_grid_columnmenu_container_keydown_escape_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.close(true));\n })(\"keydown.enter\", function ColumnMenuComponent_ng_template_3_Template_kendo_grid_columnmenu_container_keydown_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵelementContainer(1, 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext();\n const defaultTemplate_r6 = i0.ɵɵreference(6);\n const tabbedInterfaceTemplate_r7 = i0.ɵɵreference(8);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.column.columnMenuTemplateRef || ctx_r4.columnMenuTemplate || (ctx_r4.settings.view === \"tabbed\" ? tabbedInterfaceTemplate_r7 : defaultTemplate_r6))(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c22, ctx_r4.service, ctx_r4.column));\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_sort_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-sort\", 23, 4);\n }\n if (rf & 2) {\n const sortItem_r9 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", sortItem_r9)(\"service\", ctx_r4.service);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_lock_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-lock\", 23, 5);\n }\n if (rf & 2) {\n const lockItem_r10 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", lockItem_r10)(\"service\", ctx_r4.service);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_stick_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-stick\", 23, 6);\n }\n if (rf & 2) {\n const stickItem_r11 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", stickItem_r11)(\"service\", ctx_r4.service);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_position_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-position\", 24, 7);\n }\n if (rf & 2) {\n const positionItem_r12 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"showLock\", ctx_r4.hasLock)(\"showStick\", ctx_r4.hasStick)(\"kendoGridColumnMenuItem\", positionItem_r12)(\"service\", ctx_r4.service)(\"expanded\", ctx_r4.expandedPosition);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_span_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 25);\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"border-color\", \"rgba(0, 0, 0, 0.08)\");\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_chooser_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-chooser\", 26, 8);\n }\n if (rf & 2) {\n const chooserItem_r13 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", chooserItem_r13)(\"service\", ctx_r4.service)(\"expanded\", ctx_r4.expandedColumns);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_column_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-autosize-column\", 27, 9);\n }\n if (rf & 2) {\n const autoSizeColumnItem_r14 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"service\", ctx_r4.service)(\"kendoGridColumnMenuItem\", autoSizeColumnItem_r14)(\"column\", ctx_r4.column);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_all_columns_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-autosize-all-columns\", 28, 10);\n }\n if (rf & 2) {\n const autoSizeAllColumnsItem_r15 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"service\", ctx_r4.service)(\"kendoGridColumnMenuItem\", autoSizeAllColumnsItem_r15);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_span_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 25);\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"border-color\", \"rgba(0, 0, 0, 0.08)\");\n }\n}\nfunction ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_filter_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-filter\", 26, 11);\n }\n if (rf & 2) {\n const filterItem_r16 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", filterItem_r16)(\"service\", ctx_r4.service)(\"expanded\", ctx_r4.expandedFilter);\n }\n}\nfunction ColumnMenuComponent_ng_template_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-container\", 15);\n i0.ɵɵlistener(\"keydown.escape\", function ColumnMenuComponent_ng_template_5_Template_kendo_grid_columnmenu_container_keydown_escape_0_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.close(true));\n })(\"keydown.enter\", function ColumnMenuComponent_ng_template_5_Template_kendo_grid_columnmenu_container_keydown_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵtemplate(1, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_sort_1_Template, 2, 2, \"kendo-grid-columnmenu-sort\", 17)(2, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_lock_2_Template, 2, 2, \"kendo-grid-columnmenu-lock\", 17)(3, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_stick_3_Template, 2, 2, \"kendo-grid-columnmenu-stick\", 17)(4, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_position_4_Template, 2, 5, \"kendo-grid-columnmenu-position\", 18)(5, ColumnMenuComponent_ng_template_5_span_5_Template, 1, 2, \"span\", 19)(6, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_chooser_6_Template, 2, 3, \"kendo-grid-columnmenu-chooser\", 20)(7, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_column_7_Template, 2, 3, \"kendo-grid-columnmenu-autosize-column\", 21)(8, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_all_columns_8_Template, 2, 2, \"kendo-grid-columnmenu-autosize-all-columns\", 22)(9, ColumnMenuComponent_ng_template_5_span_9_Template, 1, 2, \"span\", 19)(10, ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_filter_10_Template, 2, 3, \"kendo-grid-columnmenu-filter\", 20);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasSort);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasLock && !ctx_r4.hasPosition);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasStick && !ctx_r4.hasPosition);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasPosition);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasColumnChooser || ctx_r4.hasAutoSizeColumn || ctx_r4.hasAutoSizeAllColumns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasColumnChooser);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasAutoSizeColumn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasAutoSizeAllColumns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasColumnChooser || ctx_r4.hasAutoSizeColumn || ctx_r4.hasAutoSizeAllColumns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasFilter);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 33);\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"svgIcon\", ctx_r4.filterIcon);\n i0.ɵɵattribute(\"title\", ctx_r4.ctx.localization.get(\"columnMenuFilterTabTitle\"));\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r18 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-filter-menu-container\", 34);\n i0.ɵɵlistener(\"keydown.shift.tab\", function ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_2_Template_kendo_grid_filter_menu_container_keydown_shift_tab_0_listener($event) {\n i0.ɵɵrestoreView(_r18);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n })(\"close\", function ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_2_Template_kendo_grid_filter_menu_container_close_0_listener() {\n i0.ɵɵrestoreView(_r18);\n const ctx_r4 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r4.close());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"column\", ctx_r4.service.column)(\"menuTabbingService\", ctx_r4.service.menuTabbingService)(\"filter\", ctx_r4.service.filter)(\"actionsClass\", ctx_r4.actionsClass);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-tabstrip-tab\");\n i0.ɵɵtemplate(1, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_1_Template, 1, 2, \"ng-template\", 31)(2, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_2_Template, 1, 4, \"ng-template\", 32);\n i0.ɵɵelementEnd();\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 35);\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"svgIcon\", ctx_r4.slidersIcon);\n i0.ɵɵattribute(\"title\", ctx_r4.ctx.localization.get(\"columnMenuGeneralTabTitle\"));\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_sort_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-sort\", 23, 4);\n }\n if (rf & 2) {\n const sortItem_r19 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", sortItem_r19)(\"service\", ctx_r4.service);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 25);\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"border-color\", \"rgba(0, 0, 0, 0.08)\");\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_lock_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-lock\", 23, 5);\n }\n if (rf & 2) {\n const lockItem_r20 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", lockItem_r20)(\"service\", ctx_r4.service);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_stick_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-stick\", 23, 6);\n }\n if (rf & 2) {\n const stickItem_r21 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"kendoGridColumnMenuItem\", stickItem_r21)(\"service\", ctx_r4.service);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 25);\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"border-color\", \"rgba(0, 0, 0, 0.08)\");\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_position_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-position\", 24, 7);\n }\n if (rf & 2) {\n const positionItem_r22 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"showLock\", ctx_r4.hasLock)(\"showStick\", ctx_r4.hasStick)(\"kendoGridColumnMenuItem\", positionItem_r22)(\"service\", ctx_r4.service)(\"expanded\", ctx_r4.expandedPosition);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 25);\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"border-color\", \"rgba(0, 0, 0, 0.08)\");\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_column_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-autosize-column\", 27, 9);\n }\n if (rf & 2) {\n const autoSizeColumnItem_r23 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"service\", ctx_r4.service)(\"kendoGridColumnMenuItem\", autoSizeColumnItem_r23)(\"column\", ctx_r4.column);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_all_columns_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-columnmenu-autosize-all-columns\", 28, 10);\n }\n if (rf & 2) {\n const autoSizeAllColumnsItem_r24 = i0.ɵɵreference(1);\n const ctx_r4 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"service\", ctx_r4.service)(\"kendoGridColumnMenuItem\", autoSizeAllColumnsItem_r24);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_sort_0_Template, 2, 2, \"kendo-grid-columnmenu-sort\", 17)(1, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_1_Template, 1, 2, \"span\", 19)(2, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_lock_2_Template, 2, 2, \"kendo-grid-columnmenu-lock\", 17)(3, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_stick_3_Template, 2, 2, \"kendo-grid-columnmenu-stick\", 17)(4, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_4_Template, 1, 2, \"span\", 19)(5, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_position_5_Template, 2, 5, \"kendo-grid-columnmenu-position\", 18)(6, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_6_Template, 1, 2, \"span\", 19)(7, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_column_7_Template, 2, 3, \"kendo-grid-columnmenu-autosize-column\", 21)(8, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_all_columns_8_Template, 2, 2, \"kendo-grid-columnmenu-autosize-all-columns\", 22);\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasSort);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasSort && (ctx_r4.hasLock || ctx_r4.hasStick || ctx_r4.hasPosition || ctx_r4.hasAutoSizeColumn || ctx_r4.hasAutoSizeAllColumns));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasLock && !ctx_r4.hasPosition);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasStick && !ctx_r4.hasPosition);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", (ctx_r4.hasLock || ctx_r4.hasStick) && !ctx_r4.hasPosition && (ctx_r4.hasAutoSizeColumn || ctx_r4.hasAutoSizeAllColumns));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasPosition);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasPosition && (ctx_r4.hasAutoSizeColumn || ctx_r4.hasAutoSizeAllColumns));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasAutoSizeColumn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasAutoSizeAllColumns);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-tabstrip-tab\");\n i0.ɵɵtemplate(1, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_1_Template, 1, 2, \"ng-template\", 31)(2, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_Template, 9, 9, \"ng-template\", 32);\n i0.ɵɵelementEnd();\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 36);\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"svgIcon\", ctx_r4.columnsIcon);\n i0.ɵɵattribute(\"title\", ctx_r4.ctx.localization.get(\"columnMenuColumnsTabTitle\"));\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r25 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-columnlist\", 37);\n i0.ɵɵlistener(\"apply\", function ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_2_Template_kendo_grid_columnlist_apply_0_listener($event) {\n i0.ɵɵrestoreView(_r25);\n const ctx_r4 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r4.onApply($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"applyText\", ctx_r4.ctx.localization.get(\"columnsApply\"))(\"resetText\", ctx_r4.ctx.localization.get(\"columnsReset\"))(\"columns\", ctx_r4.columns)(\"autoSync\", false)(\"allowHideAll\", false)(\"actionsClass\", ctx_r4.actionsClass)(\"service\", ctx_r4.service);\n }\n}\nfunction ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-tabstrip-tab\");\n i0.ɵɵtemplate(1, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_1_Template, 1, 2, \"ng-template\", 31)(2, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_2_Template, 1, 7, \"ng-template\", 32);\n i0.ɵɵelementEnd();\n }\n}\nfunction ColumnMenuComponent_ng_template_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r17 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-tabstrip\", 29, 12);\n i0.ɵɵlistener(\"keydown.escape\", function ColumnMenuComponent_ng_template_7_Template_kendo_tabstrip_keydown_escape_0_listener() {\n i0.ɵɵrestoreView(_r17);\n const ctx_r4 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r4.close(true));\n });\n i0.ɵɵtemplate(2, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_Template, 3, 0, \"kendo-tabstrip-tab\", 30)(3, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_Template, 3, 0, \"kendo-tabstrip-tab\", 30)(4, ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_Template, 3, 0, \"kendo-tabstrip-tab\", 30);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasFilter);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.showGeneralTab);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r4.hasColumnChooser);\n }\n}\nconst _c23 = [\"kendoGridExcelCommand\", \"\"];\nfunction ExcelCommandDirective_kendo_icon_wrapper_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.icon)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction ExcelCommandDirective_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵelement(1, \"img\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"src\", ctx_r0.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction ExcelCommandDirective_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n }\n}\nconst _c24 = [\"kendoGridPDFCommand\", \"\"];\nfunction PDFCommandDirective_kendo_icon_wrapper_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.icon)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction PDFCommandDirective_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵelement(1, \"img\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"src\", ctx_r0.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction PDFCommandDirective_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n }\n}\nconst _c25 = [\"kendoGridHeader\", \"\"];\nconst _c26 = (a0, a1, a2, a3) => ({\n field: a0,\n type: \"column\",\n column: a1,\n hint: a2,\n lastColumn: a3\n});\nconst _c27 = (a0, a1, a2, a3) => ({\n templateRef: a0,\n columnIndex: a1,\n column: a2,\n $implicit: a3\n});\nconst _c28 = (a0, a1, a2) => ({\n type: \"columnGroup\",\n column: a0,\n hint: a1,\n lastColumn: a2\n});\nfunction HeaderComponent_tr_1_th_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"th\", 7);\n }\n}\nfunction HeaderComponent_tr_1_th_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"th\", 8);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_template_3_Template(rf, ctx) {}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 19);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(column_r2.displayTitle);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_filter_menu_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-filter-menu\", 20);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"column\", ctx_r2.getColumnComponent(column_r2))(\"filter\", ctx_r2.filter)(\"tabIndex\", ctx_r2.tabIndex);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_column_menu_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-column-menu\", 21);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"standalone\", false)(\"settings\", ctx_r2.columnMenuSettings)(\"column\", column_r2)(\"columnMenuTemplate\", ctx_r2.columnMenuTemplate)(\"sort\", ctx_r2.sort)(\"filter\", ctx_r2.filter)(\"sortable\", ctx_r2.sortable)(\"tabIndex\", ctx_r2.tabIndex);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 14)(2, \"span\", 15);\n i0.ɵɵtemplate(3, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_template_3_Template, 0, 0, \"ng-template\", 16)(4, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_container_4_Template, 3, 1, \"ng-container\", 12);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_filter_menu_5_Template, 1, 3, \"kendo-grid-filter-menu\", 17)(6, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_column_menu_6_Template, 1, 8, \"kendo-grid-column-menu\", 18);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction4(4, _c27, column_r2.headerTemplateRef, column_r2.leafIndex, column_r2, column_r2));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r2.headerTemplateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showFilterMenu && ctx_r2.isFilterable(ctx_r2.getColumnComponent(column_r2)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showColumnMenu(column_r2));\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_template_4_Template(rf, ctx) {}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_container_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 19);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(column_r2.displayTitle);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_icon_wrapper_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 26);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵpropertyInterpolate1(\"name\", \"sort-\", ctx_r2.sortDescriptor(ctx_r2.getColumnComponent(column_r2).field).dir, \"-small\");\n i0.ɵɵproperty(\"svgIcon\", ctx_r2.sortDescriptor(ctx_r2.getColumnComponent(column_r2).field).dir === \"asc\" ? ctx_r2.sortAscSmallIcon : ctx_r2.sortDescSmallIcon);\n i0.ɵɵattribute(\"aria-label\", ctx_r2.sortableLabel);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_span_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 27);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r2.sortOrder(ctx_r2.getColumnComponent(column_r2).field));\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_filter_menu_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-filter-menu\", 20);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"column\", ctx_r2.getColumnComponent(column_r2))(\"filter\", ctx_r2.filter)(\"tabIndex\", ctx_r2.tabIndex);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_column_menu_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-column-menu\", 21);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"standalone\", false)(\"settings\", ctx_r2.columnMenuSettings)(\"column\", column_r2)(\"columnMenuTemplate\", ctx_r2.columnMenuTemplate)(\"sort\", ctx_r2.sort)(\"filter\", ctx_r2.filter)(\"sortable\", ctx_r2.sortable)(\"tabIndex\", ctx_r2.tabIndex);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 14)(2, \"span\", 22, 0);\n i0.ɵɵlistener(\"click\", function HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_Template_span_click_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const link_r5 = i0.ɵɵreference(3);\n const column_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onSortClick(ctx_r2.getColumnComponent(column_r2), $event, link_r5));\n });\n i0.ɵɵtemplate(4, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_template_4_Template, 0, 0, \"ng-template\", 16)(5, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_container_5_Template, 3, 1, \"ng-container\", 12);\n i0.ɵɵelementStart(6, \"span\", 23);\n i0.ɵɵtemplate(7, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_icon_wrapper_7_Template, 1, 4, \"kendo-icon-wrapper\", 24);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(8, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_span_8_Template, 2, 1, \"span\", 25);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_filter_menu_9_Template, 1, 3, \"kendo-grid-filter-menu\", 17)(10, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_column_menu_10_Template, 1, 8, \"kendo-grid-column-menu\", 18);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction4(6, _c27, column_r2.headerTemplateRef, column_r2.leafIndex, column_r2, column_r2));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r2.headerTemplateRef);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.sortDescriptor(ctx_r2.getColumnComponent(column_r2).field).dir);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showSortNumbering(ctx_r2.getColumnComponent(column_r2)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showFilterMenu && ctx_r2.isFilterable(ctx_r2.getColumnComponent(column_r2)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showColumnMenu(column_r2));\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 28);\n i0.ɵɵelement(2, \"input\", 29);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance(2);\n i0.ɵɵattribute(\"id\", ctx_r2.selectAllCheckboxId())(\"aria-label\", ctx_r2.selectAllCheckboxLabel);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_span_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 30);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"column\", column_r2)(\"columns\", ctx_r2.columns);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"th\", 11);\n i0.ɵɵlistener(\"keydown\", function HeaderComponent_tr_1_ng_container_3_th_1_Template_th_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const column_r2 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onHeaderKeydown(ctx_r2.getColumnComponent(column_r2), $event));\n });\n i0.ɵɵtemplate(1, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_Template, 7, 9, \"ng-container\", 12)(2, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_Template, 11, 11, \"ng-container\", 12)(3, HeaderComponent_tr_1_ng_container_3_th_1_ng_container_3_Template, 3, 2, \"ng-container\", 12)(4, HeaderComponent_tr_1_ng_container_3_th_1_span_4_Template, 1, 2, \"span\", 13);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext();\n const column_r2 = ctx_r5.$implicit;\n const columnIndex_r7 = ctx_r5.index;\n const last_r8 = ctx_r5.last;\n const levelIndex_r9 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-sorted\", !!ctx_r2.sortState(ctx_r2.getColumnComponent(column_r2)))(\"k-filterable\", ctx_r2.showFilterMenu && ctx_r2.isFilterable(ctx_r2.getColumnComponent(column_r2)) || ctx_r2.showColumnMenu(column_r2))(\"k-first\", ctx_r2.isFirstOnRow(ctx_r2.getColumnComponent(column_r2), columnIndex_r7))(\"k-grid-header-sticky\", column_r2.sticky);\n i0.ɵɵproperty(\"logicalRowIndex\", levelIndex_r9)(\"logicalColIndex\", ctx_r2.logicalColumnIndex(column_r2))(\"headerLabelText\", column_r2.title || ctx_r2.getColumnComponent(column_r2).field)(\"colSpan\", column_r2.colspan)(\"rowSpan\", column_r2.rowspan(ctx_r2.totalColumnLevels))(\"enableDrag\", ctx_r2.shouldActivate(column_r2))(\"context\", i0.ɵɵpureFunction4(27, _c26, ctx_r2.getColumnComponent(column_r2).field, column_r2, column_r2.title || ctx_r2.getColumnComponent(column_r2).field, last_r8 && columnIndex_r7 === 0))(\"ngClass\", column_r2.headerClass)(\"ngStyle\", column_r2.sticky ? ctx_r2.addStickyStyles(column_r2) : column_r2.headerStyle);\n i0.ɵɵattribute(\"aria-sort\", ctx_r2.sortState(ctx_r2.getColumnComponent(column_r2)))(\"rowspan\", column_r2.rowspan(ctx_r2.totalColumnLevels))(\"colspan\", column_r2.colspan)(\"aria-haspopup\", ctx_r2.isNavigable && (ctx_r2.showFilterMenu || ctx_r2.showColumnMenu(column_r2)) ? \"dialog\" : undefined)(\"aria-expanded\", ctx_r2.isNavigable && (ctx_r2.showFilterMenu || ctx_r2.showColumnMenu(column_r2)) ? false : undefined)(\"aria-keyshortcuts\", ctx_r2.isNavigable ? \"Alt + ArrowDown\" : undefined);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.isSortable(ctx_r2.getColumnComponent(column_r2)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.isSortable(ctx_r2.getColumnComponent(column_r2)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.isCheckboxColumn(column_r2) && !column_r2.headerTemplateRef && column_r2.showSelectAll);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.resizable);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_2_ng_template_3_Template(rf, ctx) {}\nfunction HeaderComponent_tr_1_ng_container_3_th_2_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 19);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(column_r2.displayTitle);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_2_kendo_grid_column_menu_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-column-menu\", 34);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"standalone\", false)(\"settings\", ctx_r2.columnMenuSettings)(\"column\", column_r2)(\"columnMenuTemplate\", ctx_r2.columnMenuTemplate);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_2_span_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 30);\n }\n if (rf & 2) {\n const column_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"column\", column_r2)(\"columns\", ctx_r2.columns);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_th_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\", 31)(1, \"span\", 14)(2, \"span\", 32);\n i0.ɵɵtemplate(3, HeaderComponent_tr_1_ng_container_3_th_2_ng_template_3_Template, 0, 0, \"ng-template\", 16)(4, HeaderComponent_tr_1_ng_container_3_th_2_ng_container_4_Template, 3, 1, \"ng-container\", 12);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, HeaderComponent_tr_1_ng_container_3_th_2_kendo_grid_column_menu_5_Template, 1, 4, \"kendo-grid-column-menu\", 33);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, HeaderComponent_tr_1_ng_container_3_th_2_span_6_Template, 1, 2, \"span\", 13);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r5 = i0.ɵɵnextContext();\n const column_r2 = ctx_r5.$implicit;\n const columnIndex_r7 = ctx_r5.index;\n const last_r8 = ctx_r5.last;\n const levelIndex_r9 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-first\", ctx_r2.isFirstOnRow(ctx_r2.getColumnComponent(column_r2), columnIndex_r7))(\"k-filterable\", ctx_r2.showColumnMenu(column_r2))(\"k-grid-content-sticky\", column_r2.sticky);\n i0.ɵɵproperty(\"logicalRowIndex\", levelIndex_r9)(\"logicalColIndex\", ctx_r2.logicalColumnIndex(column_r2))(\"rowSpan\", column_r2.rowspan(ctx_r2.totalColumnLevels))(\"colSpan\", column_r2.colspan)(\"headerLabelText\", column_r2.title || ctx_r2.getColumnComponent(column_r2).field)(\"enableDrag\", ctx_r2.shouldActivate(column_r2))(\"context\", i0.ɵɵpureFunction3(21, _c28, column_r2, column_r2.title, last_r8 && columnIndex_r7 === 0))(\"ngClass\", column_r2.headerClass)(\"ngStyle\", column_r2.headerStyle);\n i0.ɵɵattribute(\"rowspan\", column_r2.rowspan(ctx_r2.totalColumnLevels))(\"colspan\", column_r2.colspan);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction4(25, _c27, column_r2.headerTemplateRef, ctx_r2.lockedColumnsCount + columnIndex_r7, column_r2, column_r2));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !column_r2.headerTemplateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showColumnMenu(column_r2));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.resizable);\n }\n}\nfunction HeaderComponent_tr_1_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, HeaderComponent_tr_1_ng_container_3_th_1_Template, 5, 32, \"th\", 9)(2, HeaderComponent_tr_1_ng_container_3_th_2_Template, 7, 30, \"th\", 10);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.isColumnGroupComponent(column_r2));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.isColumnGroupComponent(column_r2));\n }\n}\nfunction HeaderComponent_tr_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\", 3);\n i0.ɵɵtemplate(1, HeaderComponent_tr_1_th_1_Template, 1, 0, \"th\", 4)(2, HeaderComponent_tr_1_th_2_Template, 1, 0, \"th\", 5)(3, HeaderComponent_tr_1_ng_container_3_Template, 3, 2, \"ng-container\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const levelIndex_r9 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"logicalRowIndex\", levelIndex_r9)(\"logicalSlaveRow\", ctx_r2.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r2.columns.length)(\"logicalSlaveCellsCount\", ctx_r2.unlockedColumnsCount)(\"totalColumns\", ctx_r2.totalColumns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.groups);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.detailTemplate == null ? null : ctx_r2.detailTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.columnsForLevel(levelIndex_r9))(\"ngForTrackBy\", ctx_r2.trackByIndex);\n }\n}\nfunction HeaderComponent_tr_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"tr\", 35);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"columns\", ctx_r2.leafColumns)(\"filter\", ctx_r2.filter)(\"groups\", ctx_r2.groups)(\"detailTemplate\", ctx_r2.detailTemplate)(\"lockedColumnsCount\", ctx_r2.lockedColumnsCount)(\"logicalRowIndex\", ctx_r2.totalColumnLevels + 1)(\"logicalSlaveRow\", ctx_r2.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r2.columns.length)(\"logicalSlaveCellsCount\", ctx_r2.unlockedColumnsCount)(\"totalColumns\", ctx_r2.totalColumns);\n }\n}\nconst _c29 = [\"kendoGridFooter\", \"\"];\nfunction FooterComponent_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 4);\n }\n}\nfunction FooterComponent_td_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 5);\n }\n}\nfunction FooterComponent_ng_container_4_td_1_ng_template_1_Template(rf, ctx) {}\nfunction FooterComponent_ng_container_4_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 7);\n i0.ɵɵtemplate(1, FooterComponent_ng_container_4_td_1_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r1 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-grid-footer-sticky\", column_r1.sticky);\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r1.logicalRowIndex)(\"logicalColIndex\", ctx_r1.logicalColumnIndex(column_r1))(\"ngClass\", column_r1.footerClass)(\"ngStyle\", column_r1.sticky ? ctx_r1.addStickyStyles(column_r1) : column_r1.footerStyle);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction4(7, _c27, column_r1.footerTemplateRef, column_r1.leafIndex, column_r1, column_r1));\n }\n}\nfunction FooterComponent_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, FooterComponent_ng_container_4_td_1_Template, 2, 12, \"td\", 6);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const column_r1 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.isColumnGroupComponent(column_r1));\n }\n}\nconst _c30 = [\"kendoGridCell\", \"\"];\nconst _c31 = a0 => ({\n $implicit: a0\n});\nfunction CellComponent_ng_container_1_ng_container_1_1_ng_template_0_Template(rf, ctx) {}\nfunction CellComponent_ng_container_1_ng_container_1_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CellComponent_ng_container_1_ng_container_1_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.column.templateRef)(\"ngTemplateOutletContext\", ctx_r0.templateContext);\n }\n}\nfunction CellComponent_ng_container_1_ng_container_1_ng_container_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵpipe(2, \"valueOf\");\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const childColumn_r2 = ctx.$implicit;\n const ctx_r0 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", i0.ɵɵpipeBind3(2, 1, ctx_r0.dataItem, childColumn_r2.field, childColumn_r2.format), \" \");\n }\n}\nfunction CellComponent_ng_container_1_ng_container_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CellComponent_ng_container_1_ng_container_1_ng_container_2_ng_container_1_Template, 3, 5, \"ng-container\", 6);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.childColumns);\n }\n}\nfunction CellComponent_ng_container_1_ng_container_1_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵpipe(2, \"valueOf\");\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, ctx_r0.dataItem, ctx_r0.column.field, ctx_r0.column.format));\n }\n}\nfunction CellComponent_ng_container_1_ng_container_1_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 7);\n i0.ɵɵelement(2, \"input\", 8);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"kendoGridSelectionCheckbox\", ctx_r0.rowIndex);\n i0.ɵɵattribute(\"id\", ctx_r0.selectionCheckboxId)(\"aria-label\", ctx_r0.selectionCheckboxLabel);\n }\n}\nfunction CellComponent_ng_container_1_ng_container_1_ng_container_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 9);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"svgIcon\", ctx_r0.reorderIcon);\n }\n}\nfunction CellComponent_ng_container_1_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CellComponent_ng_container_1_ng_container_1_1_Template, 1, 2, null, 4)(2, CellComponent_ng_container_1_ng_container_1_ng_container_2_Template, 2, 1, \"ng-container\", 4)(3, CellComponent_ng_container_1_ng_container_1_ng_container_3_Template, 3, 5, \"ng-container\", 4)(4, CellComponent_ng_container_1_ng_container_1_ng_container_4_Template, 3, 3, \"ng-container\", 4)(5, CellComponent_ng_container_1_ng_container_1_ng_container_5_Template, 2, 1, \"ng-container\", 4);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.column.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isSpanColumn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isBoundColumn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isCheckboxColumn && !ctx_r0.isNew);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isRowReorderColumn && !ctx_r0.isNew);\n }\n}\nfunction CellComponent_ng_container_1_ng_template_2_0_ng_template_0_Template(rf, ctx) {}\nfunction CellComponent_ng_container_1_ng_template_2_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CellComponent_ng_container_1_ng_template_2_0_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.loadingTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c31, ctx_r0.column));\n }\n}\nfunction CellComponent_ng_container_1_ng_template_2_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 11);\n }\n}\nfunction CellComponent_ng_container_1_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CellComponent_ng_container_1_ng_template_2_0_Template, 1, 4, null, 4)(1, CellComponent_ng_container_1_ng_template_2_div_1_Template, 1, 0, \"div\", 10);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.loadingTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.loadingTemplate);\n }\n}\nfunction CellComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CellComponent_ng_container_1_ng_container_1_Template, 6, 5, \"ng-container\", 3)(2, CellComponent_ng_container_1_ng_template_2_Template, 2, 2, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const loading_r3 = i0.ɵɵreference(3);\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.showLoading)(\"ngIfElse\", loading_r3);\n }\n}\nfunction CellComponent_ng_container_2_1_ng_template_0_Template(rf, ctx) {}\nfunction CellComponent_ng_container_2_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CellComponent_ng_container_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.column.editTemplateRef)(\"ngTemplateOutletContext\", ctx_r0.editTemplateContext);\n }\n}\nfunction CellComponent_ng_container_2_ng_container_2_kendo_numerictextbox_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-numerictextbox\", 16);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"format\", ctx_r0.format)(\"formControl\", ctx_r0.formGroup.get(ctx_r0.column.field));\n }\n}\nfunction CellComponent_ng_container_2_ng_container_2_kendo_datepicker_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-datepicker\", 16);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"format\", ctx_r0.format)(\"formControl\", ctx_r0.formGroup.get(ctx_r0.column.field));\n }\n}\nfunction CellComponent_ng_container_2_ng_container_2_input_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"input\", 17);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"formControl\", ctx_r0.formGroup.get(ctx_r0.column.field));\n }\n}\nfunction CellComponent_ng_container_2_ng_container_2_input_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"input\", 18);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"formControl\", ctx_r0.formGroup.get(ctx_r0.column.field));\n }\n}\nfunction CellComponent_ng_container_2_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0, 1);\n i0.ɵɵtemplate(1, CellComponent_ng_container_2_ng_container_2_kendo_numerictextbox_1_Template, 1, 2, \"kendo-numerictextbox\", 13)(2, CellComponent_ng_container_2_ng_container_2_kendo_datepicker_2_Template, 1, 2, \"kendo-datepicker\", 13);\n i0.ɵɵelementStart(3, \"span\", 7);\n i0.ɵɵtemplate(4, CellComponent_ng_container_2_ng_container_2_input_4_Template, 1, 1, \"input\", 14);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, CellComponent_ng_container_2_ng_container_2_input_5_Template, 1, 1, \"input\", 15);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngSwitch\", ctx_r0.column.editor);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", \"numeric\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", \"date\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngSwitchCase\", \"boolean\");\n }\n}\nfunction CellComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, CellComponent_ng_container_2_1_Template, 1, 2, null, 4)(2, CellComponent_ng_container_2_ng_container_2_Template, 6, 4, \"ng-container\", 12);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.column.editTemplateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.column.editTemplateRef);\n }\n}\nconst _c32 = [\"kendoGridTableBody\", \"\"];\nconst _c33 = a0 => ({\n templateRef: a0\n});\nconst _c34 = (a0, a1) => ({\n dataItem: a0,\n index: a1\n});\nconst _c35 = (a0, a1, a2) => ({\n dataItem: a0,\n rowIndex: a1,\n $implicit: a2\n});\nconst _c36 = (a0, a1, a2, a3, a4, a5) => ({\n templateRef: a0,\n group: a1,\n field: a2,\n column: a3,\n aggregates: a4,\n $implicit: a5\n});\nfunction TableBodyComponent_ng_container_0_ng_container_2_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 8);\n }\n}\nfunction TableBodyComponent_ng_container_0_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_0_ng_container_2_td_1_Template, 1, 0, \"td\", 7);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.groups);\n }\n}\nfunction TableBodyComponent_ng_container_0_td_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 9);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.addRowLogicalIndex())(\"logicalColIndex\", 0);\n }\n}\nfunction TableBodyComponent_ng_container_0_td_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 10);\n }\n if (rf & 2) {\n const column_r2 = ctx.$implicit;\n const columnIndex_r3 = ctx.index;\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"left\", column_r2.sticky ? \"0\" : undefined);\n i0.ɵɵclassProp(\"k-grid-content-sticky\", column_r2.sticky);\n i0.ɵɵproperty(\"rowIndex\", -1)(\"columnIndex\", ctx_r0.lockedColumnsCount + columnIndex_r3)(\"isNew\", true)(\"column\", column_r2)(\"dataItem\", ctx_r0.newDataItem)(\"ngClass\", column_r2.cssClass)(\"ngStyle\", column_r2.sticky ? ctx_r0.addStickyColumnStyles(column_r2) : column_r2.style)(\"logicalRowIndex\", ctx_r0.addRowLogicalIndex())(\"logicalColIndex\", ctx_r0.logicalColIndex(column_r2))(\"colSpan\", column_r2.colspan);\n i0.ɵɵattribute(\"colspan\", column_r2.colspan)(\"role\", column_r2.tableCellsRole);\n }\n}\nfunction TableBodyComponent_ng_container_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"tr\", 4);\n i0.ɵɵtemplate(2, TableBodyComponent_ng_container_0_ng_container_2_Template, 2, 1, \"ng-container\", 0)(3, TableBodyComponent_ng_container_0_td_3_Template, 1, 2, \"td\", 5)(4, TableBodyComponent_ng_container_0_td_4_Template, 1, 16, \"td\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.addRowLogicalIndex())(\"logicalSlaveRow\", ctx_r0.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx_r0.columns.length)(\"logicalSlaveCellsCount\", ctx_r0.unlockedColumnsCount())(\"totalColumns\", ctx_r0.totalColumns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.skipGroupDecoration);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.columns)(\"ngForTrackBy\", ctx_r0.trackByColumns);\n }\n}\nfunction TableBodyComponent_tr_1_2_ng_template_0_Template(rf, ctx) {}\nfunction TableBodyComponent_tr_1_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TableBodyComponent_tr_1_2_ng_template_0_Template, 0, 0, \"ng-template\", 13);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction1(1, _c33, ctx_r0.noRecordsTemplate == null ? null : ctx_r0.noRecordsTemplate.templateRef));\n }\n}\nfunction TableBodyComponent_tr_1_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.noRecordsText, \" \");\n }\n}\nfunction TableBodyComponent_tr_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\", 11)(1, \"td\", 12);\n i0.ɵɵtemplate(2, TableBodyComponent_tr_1_2_Template, 1, 3, null, 0)(3, TableBodyComponent_tr_1_ng_container_3_Template, 2, 1, \"ng-container\", 0);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"colspan\", ctx_r0.colSpan);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.noRecordsTemplate == null ? null : ctx_r0.noRecordsTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(ctx_r0.noRecordsTemplate == null ? null : ctx_r0.noRecordsTemplate.templateRef));\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"tr\", 18);\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n const item_r5 = ctx_r3.$implicit;\n const rowIndex_r6 = ctx_r3.index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"columns\", ctx_r0.columns)(\"groups\", ctx_r0.groups)(\"item\", item_r5)(\"hasDetails\", !!(ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef))(\"skipGroupDecoration\", ctx_r0.skipGroupDecoration)(\"hasGroupHeaderColumn\", ctx_r0.hasGroupHeaderColumn)(\"groupHeaderColumns\", ctx_r0.groupHeaderColumns)(\"rowIndex\", rowIndex_r6 + 1)(\"totalColumnsCount\", ctx_r0.totalColumnsCount)(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6))(\"logicalSlaveRow\", ctx_r0.lockedColumnsCount > 0)(\"totalColumns\", ctx_r0.totalColumns)(\"logicalCellsCount\", ctx_r0.columns.length)(\"logicalSlaveCellsCount\", ctx_r0.groupHeaderSlaveCellsCount);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_2_ng_container_1_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 8);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_2_ng_container_1_td_1_Template, 1, 0, \"td\", 7);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.groups);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_2_td_2_a_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"a\", 24);\n i0.ɵɵlistener(\"click\", function TableBodyComponent_ng_container_2_tr_2_td_2_a_1_Template_a_click_0_listener() {\n i0.ɵɵrestoreView(_r7);\n const item_r5 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.toggleRow(item_r5.index, item_r5.data));\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 25);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r5 = i0.ɵɵnextContext(3).$implicit;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵattribute(\"title\", ctx_r0.detailButtonTitle(item_r5))(\"aria-label\", ctx_r0.detailButtonTitle(item_r5));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx_r0.detailButtonIconName(item_r5))(\"svgIcon\", ctx_r0.detailButtonSvgIcon(item_r5));\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_2_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 22);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_2_td_2_a_1_Template, 2, 4, \"a\", 23);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext(2);\n const item_r5 = ctx_r3.$implicit;\n const rowIndex_r6 = ctx_r3.index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6))(\"logicalColIndex\", 0)(\"dataRowIndex\", item_r5.index)(\"dataItem\", item_r5.data)(\"detailExpandCell\", true);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.detailTemplate.showIf(item_r5.data, item_r5.index));\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_2_td_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 26);\n }\n if (rf & 2) {\n const column_r8 = ctx.$implicit;\n const columnIndex_r9 = ctx.index;\n const ctx_r3 = i0.ɵɵnextContext(2);\n const item_r5 = ctx_r3.$implicit;\n const rowIndex_r6 = ctx_r3.index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-grid-content-sticky\", column_r8.sticky)(\"k-touch-action-none\", ctx_r0.isSelectable() && ctx_r0.selectable.drag)(\"k-touch-action-auto\", !(ctx_r0.isSelectable() && ctx_r0.selectable.drag))(\"k-grid-edit-cell\", ctx_r0.isEditingCell(item_r5.index, column_r8))(\"k-selected\", ctx_r0.isSelectable && ctx_r0.cellSelectionService.isCellSelected(item_r5, column_r8));\n i0.ɵɵproperty(\"rowIndex\", item_r5.index)(\"columnIndex\", ctx_r0.lockedColumnsCount + columnIndex_r9)(\"column\", column_r8)(\"dataItem\", item_r5.data)(\"isLoading\", ctx_r0.isLoading)(\"isVirtual\", ctx_r0.isVirtual)(\"loadingTemplate\", ctx_r0.cellLoadingTemplate)(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6))(\"logicalColIndex\", ctx_r0.logicalColIndex(column_r8))(\"dataRowIndex\", item_r5.index)(\"dataItem\", item_r5.data)(\"colIndex\", columnIndex_r9)(\"colSpan\", column_r8.colspan)(\"ngClass\", column_r8.cssClass)(\"ngStyle\", column_r8.sticky ? ctx_r0.addStickyColumnStyles(column_r8) : column_r8.style);\n i0.ɵɵattribute(\"data-kendo-grid-column-index\", ctx_r0.lockedColumnsCount + columnIndex_r9)(\"role\", column_r8.tableCellsRole)(\"aria-selected\", ctx_r0.lockedColumnsCount < 1 && ctx_r0.isSelectable() ? ctx_r0.isAriaSelected(item_r5, column_r8) : undefined)(\"colspan\", column_r8.colspan);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\", 19);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_2_ng_container_1_Template, 2, 1, \"ng-container\", 0)(2, TableBodyComponent_ng_container_2_tr_2_td_2_Template, 2, 6, \"td\", 20)(3, TableBodyComponent_ng_container_2_tr_2_td_3_Template, 1, 29, \"td\", 21);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n const item_r5 = ctx_r3.$implicit;\n const rowIndex_r6 = ctx_r3.index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r0.isOdd(item_r5) ? \"k-alt k-table-alt-row\" : \"\");\n i0.ɵɵclassProp(\"k-grid-row-sticky\", ctx_r0.rowSticky ? ctx_r0.rowSticky(i0.ɵɵpureFunction2(25, _c34, item_r5.data, item_r5.index)) : false)(\"k-master-row\", true)(\"k-grid-edit-row\", ctx_r0.isEditingRow(item_r5.index))(\"k-selected\", ctx_r0.isSelectable() && ctx_r0.isRowSelected(item_r5));\n i0.ɵɵproperty(\"dataRowIndex\", item_r5.index)(\"dataItem\", item_r5.data)(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6))(\"logicalSlaveRow\", ctx_r0.lockedColumnsCount > 0)(\"totalColumns\", ctx_r0.totalColumns)(\"logicalCellsCount\", ctx_r0.columns.length)(\"logicalSlaveCellsCount\", ctx_r0.unlockedColumnsCount(item_r5))(\"ngClass\", ctx_r0.rowClass(i0.ɵɵpureFunction2(28, _c34, item_r5.data, item_r5.index)));\n i0.ɵɵattribute(\"aria-selected\", ctx_r0.lockedColumnsCount < 1 ? ctx_r0.isSelectable() && ctx_r0.isRowSelected(item_r5) : undefined)(\"data-kendo-grid-item-index\", item_r5.index);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.skipGroupDecoration);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.columns)(\"ngForTrackBy\", ctx_r0.trackByColumns);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_3_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 32);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_3_ng_template_4_Template(rf, ctx) {}\nfunction TableBodyComponent_ng_container_2_tr_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\", 27);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_3_td_1_Template, 1, 0, \"td\", 28);\n i0.ɵɵelement(2, \"td\", 29);\n i0.ɵɵelementStart(3, \"td\", 30);\n i0.ɵɵtemplate(4, TableBodyComponent_ng_container_2_tr_3_ng_template_4_Template, 0, 0, \"ng-template\", 31);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n const item_r5 = ctx_r3.$implicit;\n const rowIndex_r6 = ctx_r3.index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"k-alt\", ctx_r0.isOdd(item_r5));\n i0.ɵɵproperty(\"dataRowIndex\", item_r5.index)(\"dataItem\", item_r5.data)(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6) + 1)(\"logicalSlaveRow\", false)(\"logicalCellsCount\", 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.groups);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6) + 1)(\"logicalColIndex\", 0)(\"dataRowIndex\", item_r5.index)(\"dataItem\", item_r5.data)(\"colIndex\", 0)(\"colSpan\", ctx_r0.allColumnsSpan + 1);\n i0.ɵɵattribute(\"colspan\", ctx_r0.columnsSpan);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.detailTemplate.templateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(17, _c35, item_r5.data, item_r5.index, item_r5.data));\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_4_ng_container_1_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 32);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_4_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_4_ng_container_1_td_1_Template, 1, 0, \"td\", 28);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.groups);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_4_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"td\", 9);\n }\n if (rf & 2) {\n const rowIndex_r6 = i0.ɵɵnextContext(2).index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6))(\"logicalColIndex\", 0);\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_4_td_3_ng_template_1_Template(rf, ctx) {}\nfunction TableBodyComponent_ng_container_2_tr_4_td_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 35);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_4_td_3_ng_template_1_Template, 0, 0, \"ng-template\", 13);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r10 = ctx.$implicit;\n const ctx_r3 = i0.ɵɵnextContext(2);\n const item_r5 = ctx_r3.$implicit;\n const rowIndex_r6 = ctx_r3.index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6))(\"logicalColIndex\", ctx_r0.logicalColIndex(column_r10));\n i0.ɵɵattribute(\"data-skip\", ctx_r0.skipGroupDecoration);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"templateContext\", i0.ɵɵpureFunction6(4, _c36, column_r10.groupFooterTemplateRef, item_r5.data, column_r10.field, column_r10, item_r5.data == null ? null : item_r5.data.aggregates, item_r5.data == null ? null : item_r5.data.aggregates));\n }\n}\nfunction TableBodyComponent_ng_container_2_tr_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\", 33);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_4_ng_container_1_Template, 2, 1, \"ng-container\", 0)(2, TableBodyComponent_ng_container_2_tr_4_td_2_Template, 1, 2, \"td\", 5)(3, TableBodyComponent_ng_container_2_tr_4_td_3_Template, 2, 11, \"td\", 34);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = i0.ɵɵnextContext();\n const item_r5 = ctx_r3.$implicit;\n const rowIndex_r6 = ctx_r3.index;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.logicalRowIndex(rowIndex_r6))(\"logicalSlaveRow\", ctx_r0.lockedColumnsCount > 0)(\"totalColumns\", ctx_r0.totalColumns)(\"logicalCellsCount\", ctx_r0.columns.length)(\"logicalSlaveCellsCount\", ctx_r0.unlockedColumnsCount(item_r5));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.skipGroupDecoration);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r0.footerColumns)(\"ngForTrackBy\", ctx_r0.trackByColumns);\n }\n}\nfunction TableBodyComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, TableBodyComponent_ng_container_2_tr_1_Template, 1, 14, \"tr\", 14)(2, TableBodyComponent_ng_container_2_tr_2_Template, 4, 31, \"tr\", 15)(3, TableBodyComponent_ng_container_2_tr_3_Template, 5, 21, \"tr\", 16)(4, TableBodyComponent_ng_container_2_tr_4_Template, 4, 9, \"tr\", 17);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const item_r5 = ctx.$implicit;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isGroup(item_r5) && ctx_r0.isParentGroupExpanded(item_r5) && ctx_r0.showGroupHeader(item_r5));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isDataItem(item_r5) && (!item_r5.group || ctx_r0.isDataItemInExpandedGroup(item_r5)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isDataItem(item_r5) && (!item_r5.group || ctx_r0.isDataItemInExpandedGroup(item_r5)) && (ctx_r0.detailTemplate == null ? null : ctx_r0.detailTemplate.templateRef) && ctx_r0.detailTemplate.showIf(item_r5.data, item_r5.index) && ctx_r0.isExpanded(item_r5));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isFooter(item_r5) && item_r5.group && (ctx_r0.isFooterItemInExpandedGroup(item_r5) || ctx_r0.showGroupFooters && ctx_r0.isParentGroupExpanded(item_r5.group)) && !item_r5.data.hideFooter);\n }\n}\nfunction TableBodyComponent_kendo_resize_sensor_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r11 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 36);\n i0.ɵɵlistener(\"resize\", function TableBodyComponent_kendo_resize_sensor_3_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r11);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.resizeHandler());\n });\n i0.ɵɵelementEnd();\n }\n}\nconst _c37 = [\"kendoGridEditCommand\", \"\"];\nfunction EditCommandDirective_kendo_icon_wrapper_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.icon)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction EditCommandDirective_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵelement(1, \"img\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"src\", ctx_r0.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction EditCommandDirective_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n }\n}\nconst _c38 = [\"kendoGridCancelCommand\", \"\"];\nfunction CancelCommandDirective_kendo_icon_wrapper_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.icon)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction CancelCommandDirective_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵelement(1, \"img\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"src\", ctx_r0.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction CancelCommandDirective_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n }\n}\nconst _c39 = [\"kendoGridSaveCommand\", \"\"];\nfunction SaveCommandDirective_kendo_icon_wrapper_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.icon)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction SaveCommandDirective_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵelement(1, \"img\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"src\", ctx_r0.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction SaveCommandDirective_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n }\n}\nconst _c40 = [\"kendoGridRemoveCommand\", \"\"];\nfunction RemoveCommandDirective_kendo_icon_wrapper_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.icon)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction RemoveCommandDirective_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵelement(1, \"img\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"src\", ctx_r0.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction RemoveCommandDirective_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n }\n}\nconst _c41 = [\"kendoGridAddCommand\", \"\"];\nfunction AddCommandDirective_kendo_icon_wrapper_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.icon)(\"svgIcon\", ctx_r0.svgIcon);\n }\n}\nfunction AddCommandDirective_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 5);\n i0.ɵɵelement(1, \"img\", 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"src\", ctx_r0.imageUrl, i0.ɵɵsanitizeUrl);\n }\n}\nfunction AddCommandDirective_span_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 7);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", ctx_r0.iconClass);\n }\n}\nconst _c42 = [\"select\"];\nconst _c43 = [\"numbers\"];\nconst _c44 = (a0, a1) => ({\n \"k-picker-sm\": a0,\n \"k-picker-md\": a1\n});\nconst _c45 = a0 => ({\n \"k-selected\": a0\n});\nfunction PagerNumericButtonsComponent_option_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 10);\n i0.ɵɵtext(1, \"... \");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"selected\", false);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.pageLabel(ctx_r1.start - 1));\n }\n}\nfunction PagerNumericButtonsComponent_option_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 11);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const num_r3 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"value\", num_r3.toString())(\"selected\", num_r3 === ctx_r1.currentPage)(\"ngClass\", i0.ɵɵpureFunction1(6, _c45, ctx_r1.currentPage === num_r3));\n i0.ɵɵattribute(\"aria-label\", ctx_r1.pageLabel(num_r3))(\"aria-current\", ctx_r1.currentPage === num_r3 ? \"page\" : undefined);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", num_r3, \" \");\n }\n}\nfunction PagerNumericButtonsComponent_option_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 12);\n i0.ɵɵtext(1, \"... \");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"selected\", false);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.pageLabel(ctx_r1.end + 1));\n }\n}\nfunction PagerNumericButtonsComponent_button_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 13);\n i0.ɵɵlistener(\"click\", function PagerNumericButtonsComponent_button_7_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.changePage(ctx_r1.start - 2));\n });\n i0.ɵɵtext(1, \"...\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"size\", ctx_r1.size);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.pageLabel(ctx_r1.start - 1))(\"title\", ctx_r1.pageLabel(ctx_r1.start - 1));\n }\n}\nfunction PagerNumericButtonsComponent_button_8_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 14);\n i0.ɵɵlistener(\"click\", function PagerNumericButtonsComponent_button_8_Template_button_click_0_listener() {\n const num_r6 = i0.ɵɵrestoreView(_r5).$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.changePage(num_r6 - 1));\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const num_r6 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"selected\", ctx_r1.currentPage === num_r6);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.pageLabel(num_r6))(\"title\", ctx_r1.pageLabel(num_r6))(\"aria-current\", ctx_r1.currentPage === num_r6 ? \"page\" : undefined);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", num_r6, \" \");\n }\n}\nfunction PagerNumericButtonsComponent_button_9_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 13);\n i0.ɵɵlistener(\"click\", function PagerNumericButtonsComponent_button_9_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.changePage(ctx_r1.end));\n });\n i0.ɵɵtext(1, \"...\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"size\", ctx_r1.size);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.pageLabel(ctx_r1.end + 1))(\"title\", ctx_r1.pageLabel(ctx_r1.end + 1));\n }\n}\nconst _c46 = (a0, a1) => ({\n keydown: a0,\n focusout: a1\n});\nfunction PagerComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵlistener(\"focusin\", function PagerComponent_div_0_Template_div_focusin_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onInnerFocusIn($event, \"start\"));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"tabindex\", ctx_r1.focusTrapTabIndex);\n i0.ɵɵattribute(\"aria-hidden\", true);\n }\n}\nfunction PagerComponent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0, 5);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template.templateRef)(\"ngTemplateOutletContext\", ctx_r1.templateContext);\n }\n}\nfunction PagerComponent_ng_container_2_kendo_pager_prev_buttons_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-pager-prev-buttons\", 10);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"size\", ctx_r1.size);\n }\n}\nfunction PagerComponent_ng_container_2_kendo_pager_numeric_buttons_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-pager-numeric-buttons\", 11);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"buttonCount\", ctx_r1.settings.buttonCount);\n }\n}\nfunction PagerComponent_ng_container_2_kendo_pager_input_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-pager-input\", 10);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"size\", ctx_r1.size);\n }\n}\nfunction PagerComponent_ng_container_2_kendo_pager_next_buttons_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-pager-next-buttons\", 10);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"size\", ctx_r1.size);\n }\n}\nfunction PagerComponent_ng_container_2_kendo_pager_info_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-pager-info\");\n }\n}\nfunction PagerComponent_ng_container_2_kendo_pager_page_sizes_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-pager-page-sizes\", 12);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"size\", ctx_r1.size)(\"pageSizes\", ctx_r1.settings.pageSizes);\n }\n}\nfunction PagerComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"div\", 6);\n i0.ɵɵtemplate(2, PagerComponent_ng_container_2_kendo_pager_prev_buttons_2_Template, 1, 1, \"kendo-pager-prev-buttons\", 7)(3, PagerComponent_ng_container_2_kendo_pager_numeric_buttons_3_Template, 1, 2, \"kendo-pager-numeric-buttons\", 8)(4, PagerComponent_ng_container_2_kendo_pager_input_4_Template, 1, 1, \"kendo-pager-input\", 7)(5, PagerComponent_ng_container_2_kendo_pager_next_buttons_5_Template, 1, 1, \"kendo-pager-next-buttons\", 7);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, PagerComponent_ng_container_2_kendo_pager_info_6_Template, 1, 0, \"kendo-pager-info\", 2)(7, PagerComponent_ng_container_2_kendo_pager_page_sizes_7_Template, 1, 2, \"kendo-pager-page-sizes\", 9);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.settings.previousNext);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.settings.type === \"numeric\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.settings.type === \"input\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.settings.previousNext);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.settings.info);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.settings.pageSizes);\n }\n}\nfunction PagerComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵlistener(\"focusin\", function PagerComponent_div_3_Template_div_focusin_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onInnerFocusIn($event, \"end\"));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"tabindex\", ctx_r1.focusTrapTabIndex);\n i0.ɵɵattribute(\"aria-hidden\", true);\n }\n}\nfunction PagerComponent_kendo_resize_sensor_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-resize-sensor\", 13);\n i0.ɵɵlistener(\"resize\", function PagerComponent_kendo_resize_sensor_4_Template_kendo_resize_sensor_resize_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.resizeHandler());\n });\n i0.ɵɵelementEnd();\n }\n}\nconst _c47 = a0 => ({\n aggregates: a0\n});\nfunction StatusBarComponent_0_ng_template_0_Template(rf, ctx) {}\nfunction StatusBarComponent_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, StatusBarComponent_0_ng_template_0_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.statusBarTemplate == null ? null : ctx_r0.statusBarTemplate.templateRef)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c47, ctx_r0.aggregates));\n }\n}\nconst _c48 = [\"container\"];\nconst _c49 = [\"lockedContainer\"];\nconst _c50 = [\"lockedTable\"];\nconst _c51 = [\"table\"];\nconst _c52 = () => [];\nconst _c53 = (a0, a1, a2, a3) => ({\n keydown: a0,\n scroll: a1,\n mousewheel: a2,\n DOMMouseScroll: a3\n});\nfunction ListComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 13, 2)(2, \"div\", 6)(3, \"table\", 14, 3);\n i0.ɵɵelement(5, \"colgroup\", 8)(6, \"tbody\", 15);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(7, \"kendo-resize-sensor\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"div\", 11);\n i0.ɵɵelement(9, \"div\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n i0.ɵɵproperty(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction4(31, _c53, ctx_r0.lockedKeydown, ctx_r0.lockedScroll, ctx_r0.lockedMousewheel, ctx_r0.lockedMousewheel))(\"scope\", ctx_r0);\n i0.ɵɵadvance(3);\n i0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n i0.ɵɵproperty(\"locked\", true)(\"size\", ctx_r0.size);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"groups\", ctx_r0.groups)(\"columns\", ctx_r0.lockedLeafColumns)(\"detailTemplate\", ctx_r0.detailTemplate)(\"sort\", ctx_r0.sort);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"groups\", ctx_r0.groups)(\"isLocked\", true)(\"data\", ctx_r0.data)(\"noRecordsText\", \"\")(\"columns\", ctx_r0.lockedLeafColumns)(\"totalColumnsCount\", ctx_r0.leafColumns.length)(\"totalColumns\", ctx_r0.columns)(\"detailTemplate\", ctx_r0.detailTemplate)(\"showGroupFooters\", ctx_r0.showFooter)(\"skip\", ctx_r0.skip)(\"selectable\", ctx_r0.selectable)(\"trackBy\", ctx_r0.trackBy)(\"filterable\", ctx_r0.filterable)(\"rowClass\", ctx_r0.rowClass)(\"isLoading\", ctx_r0.loading)(\"isVirtual\", ctx_r0.isVirtual)(\"cellLoadingTemplate\", ctx_r0.cellLoadingTemplate);\n i0.ɵɵadvance(3);\n i0.ɵɵstyleProp(\"height\", ctx_r0.totalHeight, \"px\");\n }\n}\nfunction ListComponent_kendo_resize_sensor_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-resize-sensor\");\n }\n}\nfunction ListComponent_kendo_resize_sensor_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-resize-sensor\");\n }\n}\nfunction ListComponent_div_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 16);\n i0.ɵɵelement(1, \"div\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"width\", ctx_r0.totalWidth, \"px\");\n }\n}\nfunction ToolbarComponent_0_ng_template_0_Template(rf, ctx) {}\nfunction ToolbarComponent_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ToolbarComponent_0_ng_template_0_Template, 0, 0, \"ng-template\", 1);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.toolbarTemplateRef)(\"ngTemplateOutletContext\", ctx_r0.context);\n }\n}\nconst _c54 = [\"lockedHeader\"];\nconst _c55 = [\"header\"];\nconst _c56 = [\"ariaRoot\"];\nconst _c57 = [\"footer\"];\nconst _c58 = a0 => ({\n hintTemplate: a0\n});\nfunction GridComponent_kendo_grid_toolbar_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-toolbar\", 17);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"size\", ctx_r0.size)(\"navigable\", ctx_r0.navigation.toolbarEnabled);\n i0.ɵɵattribute(\"aria-label\", ctx_r0.messageFor(\"topToolbarLabel\"))(\"aria-controls\", ctx_r0.ariaRootId);\n }\n}\nfunction GridComponent_kendo_pager_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-pager\", 18);\n i0.ɵɵlistener(\"pageChange\", function GridComponent_kendo_pager_3_Template_kendo_pager_pageChange_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.notifyPageChange(\"pager\", $event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"tabindex\", ctx_r0.navigation.pagerEnabled ? \"0\" : \"-1\")(\"template\", ctx_r0.pagerTemplate)(\"pageSize\", ctx_r0.pageSize)(\"total\", ctx_r0.view.total)(\"skip\", ctx_r0.skip)(\"size\", ctx_r0.size)(\"options\", ctx_r0.pageable);\n i0.ɵɵattribute(\"role\", ctx_r0.navigation.pagerEnabled ? \"application\" : undefined);\n }\n}\nfunction GridComponent_kendo_grid_group_panel_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-group-panel\", 19);\n i0.ɵɵlistener(\"change\", function GridComponent_kendo_grid_group_panel_4_Template_kendo_grid_group_panel_change_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.groupChange.emit($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"navigable\", ctx_r0.navigation.toolbarEnabled)(\"text\", ctx_r0.groupableEmptyText)(\"groups\", ctx_r0.group);\n i0.ɵɵattribute(\"aria-label\", ctx_r0.messageFor(\"groupPanelLabel\"))(\"aria-controls\", ctx_r0.ariaRootId);\n }\n}\nfunction GridComponent_ng_container_7_div_1_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 30, 3)(2, \"table\", 31);\n i0.ɵɵelement(3, \"colgroup\", 27)(4, \"thead\", 32);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n i0.ɵɵproperty(\"locked\", true)(\"size\", ctx_r0.size);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columns\", ctx_r0.lockedLeafColumns)(\"groups\", ctx_r0.group)(\"detailTemplate\", ctx_r0.detailTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"resizable\", ctx_r0.resizable)(\"scrollable\", true)(\"columns\", ctx_r0.lockedColumns)(\"totalColumnLevels\", ctx_r0.totalColumnLevels)(\"sort\", ctx_r0.sort)(\"groups\", ctx_r0.group)(\"filter\", ctx_r0.filter)(\"filterable\", ctx_r0.filterable)(\"groupable\", ctx_r0.showGroupPanel)(\"reorderable\", ctx_r0.reorderable)(\"sortable\", ctx_r0.sortable)(\"columnMenu\", ctx_r0.columnMenuOptions)(\"columnMenuTemplate\", ctx_r0.columnMenuTemplate)(\"totalColumnsCount\", ctx_r0.leafColumns.length)(\"totalColumns\", ctx_r0.columnsContainer)(\"detailTemplate\", ctx_r0.detailTemplate)(\"tabIndex\", ctx_r0.navigation.tableEnabled ? \"-1\" : \"0\");\n }\n}\nfunction GridComponent_ng_container_7_div_1_div_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 33);\n i0.ɵɵelement(1, \"div\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"width\", ctx_r0.columnsContainer.unlockedWidth, \"px\");\n }\n}\nfunction GridComponent_ng_container_7_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 23);\n i0.ɵɵtemplate(1, GridComponent_ng_container_7_div_1_div_1_Template, 5, 26, \"div\", 24);\n i0.ɵɵelementStart(2, \"div\", 25, 2)(4, \"table\", 26);\n i0.ɵɵelement(5, \"colgroup\", 27)(6, \"thead\", 28);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(7, GridComponent_ng_container_7_div_1_div_7_Template, 2, 2, \"div\", 29);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"padding\", ctx_r0.headerPadding);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isLocked);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"kendoGridResizableContainer\", ctx_r0.lockedLeafColumns.length > 0)(\"lockedWidth\", ctx_r0.lockedWidth + ctx_r0.scrollbarWidth + 2);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"width\", ctx_r0.nonLockedWidth, \"px\");\n i0.ɵɵproperty(\"virtualColumns\", ctx_r0.virtualColumns)(\"size\", ctx_r0.size);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columns\", ctx_r0.headerLeafColumns)(\"groups\", ctx_r0.isLocked ? i0.ɵɵpureFunction0(31, _c52) : ctx_r0.group)(\"detailTemplate\", ctx_r0.detailTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"resizable\", ctx_r0.resizable)(\"scrollable\", true)(\"columns\", ctx_r0.headerColumns)(\"totalColumnLevels\", ctx_r0.totalColumnLevels)(\"sort\", ctx_r0.sort)(\"filter\", ctx_r0.filter)(\"filterable\", ctx_r0.filterable)(\"groupable\", ctx_r0.showGroupPanel)(\"reorderable\", ctx_r0.reorderable)(\"groups\", ctx_r0.isLocked ? i0.ɵɵpureFunction0(32, _c52) : ctx_r0.group)(\"sortable\", ctx_r0.sortable)(\"columnMenu\", ctx_r0.columnMenuOptions)(\"columnMenuTemplate\", ctx_r0.columnMenuTemplate)(\"lockedColumnsCount\", ctx_r0.lockedLeafColumns.length)(\"totalColumnsCount\", ctx_r0.leafColumns.length)(\"totalColumns\", ctx_r0.columnsContainer)(\"detailTemplate\", ctx_r0.detailTemplate)(\"tabIndex\", ctx_r0.navigation.tableEnabled ? \"-1\" : \"0\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.virtualColumns);\n }\n}\nfunction GridComponent_ng_container_7_div_3_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 39)(1, \"table\", 40);\n i0.ɵɵelement(2, \"colgroup\", 27)(3, \"tfoot\", 41);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"width\", ctx_r0.lockedWidth, \"px\");\n i0.ɵɵproperty(\"locked\", true)(\"size\", ctx_r0.size);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columns\", ctx_r0.lockedLeafColumns)(\"groups\", ctx_r0.group)(\"detailTemplate\", ctx_r0.detailTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"scrollable\", true)(\"groups\", ctx_r0.group)(\"columns\", ctx_r0.lockedLeafColumns)(\"detailTemplate\", ctx_r0.detailTemplate)(\"logicalRowIndex\", ctx_r0.ariaRowCount)(\"totalColumns\", ctx_r0.columnsContainer);\n }\n}\nfunction GridComponent_ng_container_7_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtemplate(1, GridComponent_ng_container_7_div_3_div_1_Template, 4, 15, \"div\", 35);\n i0.ɵɵelementStart(2, \"div\", 36, 4)(4, \"table\", 37);\n i0.ɵɵelement(5, \"colgroup\", 27)(6, \"tfoot\", 38);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵstyleProp(\"padding\", ctx_r0.headerPadding);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.lockedLeafColumns.length);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"kendoGridResizableContainer\", ctx_r0.lockedLeafColumns.length > 0)(\"lockedWidth\", ctx_r0.lockedWidth + ctx_r0.scrollbarWidth + 3);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"width\", ctx_r0.nonLockedWidth, \"px\");\n i0.ɵɵproperty(\"size\", ctx_r0.size);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columns\", ctx_r0.headerLeafColumns)(\"groups\", ctx_r0.isLocked ? i0.ɵɵpureFunction0(18, _c52) : ctx_r0.group)(\"detailTemplate\", ctx_r0.detailTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"logicalRowIndex\", ctx_r0.ariaRowCount)(\"scrollable\", true)(\"groups\", ctx_r0.isLocked ? i0.ɵɵpureFunction0(19, _c52) : ctx_r0.group)(\"columns\", ctx_r0.headerColumns)(\"lockedColumnsCount\", ctx_r0.lockedLeafColumns.length)(\"detailTemplate\", ctx_r0.detailTemplate)(\"totalColumns\", ctx_r0.columnsContainer);\n }\n}\nfunction GridComponent_ng_container_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, GridComponent_ng_container_7_div_1_Template, 8, 33, \"div\", 20);\n i0.ɵɵelementStart(2, \"kendo-grid-list\", 21);\n i0.ɵɵlistener(\"onPress\", function GridComponent_ng_container_7_Template_kendo_grid_list_onPress_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.handleReorderEvents($event, \"press\"));\n })(\"onDragStart\", function GridComponent_ng_container_7_Template_kendo_grid_list_onDragStart_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.handleReorderEvents($event, \"dragStart\"));\n })(\"onDrag\", function GridComponent_ng_container_7_Template_kendo_grid_list_onDrag_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.handleReorderEvents($event, \"drag\"));\n })(\"onDragEnter\", function GridComponent_ng_container_7_Template_kendo_grid_list_onDragEnter_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.handleReorderEvents($event, \"dragEnter\"));\n })(\"onDragLeave\", function GridComponent_ng_container_7_Template_kendo_grid_list_onDragLeave_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.handleReorderEvents($event, \"dragLeave\"));\n })(\"onDragEnd\", function GridComponent_ng_container_7_Template_kendo_grid_list_onDragEnd_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.handleReorderEvents($event, \"dragEnd\"));\n })(\"onDrop\", function GridComponent_ng_container_7_Template_kendo_grid_list_onDrop_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.handleReorderEvents($event, \"drop\"));\n })(\"pageChange\", function GridComponent_ng_container_7_Template_kendo_grid_list_pageChange_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.notifyPageChange(\"list\", $event));\n })(\"scrollBottom\", function GridComponent_ng_container_7_Template_kendo_grid_list_scrollBottom_2_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.notifyScrollBottom());\n })(\"contentScroll\", function GridComponent_ng_container_7_Template_kendo_grid_list_contentScroll_2_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.contentScroll.emit($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, GridComponent_ng_container_7_div_3_Template, 7, 20, \"div\", 22);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const defaultHint_r5 = i0.ɵɵreference(14);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.hideHeader);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"dragDisabled\", !ctx_r0.rowReorderable)(\"dropDisabled\", !ctx_r0.rowReorderable)(\"dragTargetFilter\", ctx_r0.getDefaultSelectors(\"dragTarget\"))(\"dropTargetFilter\", ctx_r0.getDefaultSelectors(\"dropTarget\"))(\"dragHandle\", ctx_r0.getDefaultSelectors(\"handle\"))(\"hint\", i0.ɵɵpureFunction1(33, _c58, defaultHint_r5))(\"dragData\", ctx_r0.gridData)(\"data\", ctx_r0.view)(\"rowHeight\", ctx_r0.rowHeight)(\"detailRowHeight\", ctx_r0.detailRowHeight)(\"total\", ctx_r0.totalCount)(\"take\", ctx_r0.pageSize)(\"groups\", ctx_r0.group)(\"groupable\", ctx_r0.groupable)(\"skip\", ctx_r0.skip)(\"trackBy\", ctx_r0.trackBy)(\"columns\", ctx_r0.columnsContainer)(\"selectable\", ctx_r0.selectable)(\"filterable\", ctx_r0.filterable)(\"detailTemplate\", ctx_r0.detailTemplate)(\"noRecordsTemplate\", ctx_r0.noRecordsTemplate)(\"size\", ctx_r0.size)(\"rowClass\", ctx_r0.rowClass)(\"rowSticky\", ctx_r0.rowSticky)(\"loading\", ctx_r0.loading)(\"isVirtual\", ctx_r0.isVirtual)(\"cellLoadingTemplate\", ctx_r0.cellLoadingTemplate == null ? null : ctx_r0.cellLoadingTemplate.templateRef)(\"loadingTemplate\", ctx_r0.loadingTemplate == null ? null : ctx_r0.loadingTemplate.templateRef)(\"virtualColumns\", ctx_r0.virtualColumns)(\"enableDrag\", ctx_r0.marqueeSelection)(\"sort\", ctx_r0.sort);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.showFooter);\n }\n}\nfunction GridComponent_ng_container_8_thead_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"thead\", 46);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"resizable\", ctx_r0.resizable)(\"scrollable\", false)(\"columns\", ctx_r0.visibleColumns)(\"totalColumnLevels\", ctx_r0.totalColumnLevels)(\"totalColumns\", ctx_r0.columnsContainer)(\"groups\", ctx_r0.group)(\"groupable\", ctx_r0.showGroupPanel)(\"reorderable\", ctx_r0.reorderable)(\"sort\", ctx_r0.sort)(\"sortable\", ctx_r0.sortable)(\"filter\", ctx_r0.filter)(\"filterable\", ctx_r0.filterable)(\"columnMenu\", ctx_r0.columnMenuOptions)(\"columnMenuTemplate\", ctx_r0.columnMenuTemplate)(\"detailTemplate\", ctx_r0.detailTemplate)(\"tabIndex\", ctx_r0.navigation.tableEnabled ? \"-1\" : \"0\");\n }\n}\nfunction GridComponent_ng_container_8_tfoot_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"tfoot\", 47);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"scrollable\", false)(\"logicalRowIndex\", ctx_r0.ariaRowCount)(\"groups\", ctx_r0.group)(\"columns\", ctx_r0.leafColumns)(\"detailTemplate\", ctx_r0.detailTemplate)(\"totalColumns\", ctx_r0.columnsContainer);\n }\n}\nfunction GridComponent_ng_container_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"table\", 42);\n i0.ɵɵelement(2, \"colgroup\", 27);\n i0.ɵɵtemplate(3, GridComponent_ng_container_8_thead_3_Template, 1, 16, \"thead\", 43);\n i0.ɵɵelement(4, \"tbody\", 44);\n i0.ɵɵtemplate(5, GridComponent_ng_container_8_tfoot_5_Template, 1, 6, \"tfoot\", 45);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"table-layout\", ctx_r0.resizable ? \"fixed\" : null);\n i0.ɵɵproperty(\"size\", ctx_r0.size);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columns\", ctx_r0.leafColumns)(\"groups\", ctx_r0.group)(\"detailTemplate\", ctx_r0.detailTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.hideHeader);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"isLoading\", ctx_r0.loading)(\"groups\", ctx_r0.group)(\"data\", ctx_r0.view)(\"skip\", ctx_r0.skip)(\"columns\", ctx_r0.leafColumns)(\"selectable\", ctx_r0.selectable)(\"filterable\", ctx_r0.filterable)(\"noRecordsTemplate\", ctx_r0.noRecordsTemplate)(\"detailTemplate\", ctx_r0.detailTemplate)(\"showGroupFooters\", ctx_r0.showGroupFooters)(\"trackBy\", ctx_r0.trackBy)(\"rowClass\", ctx_r0.rowClass)(\"enableDrag\", ctx_r0.marqueeSelection);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.showFooter);\n }\n}\nfunction GridComponent_div_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 48);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"loadingTemplate\", ctx_r0.loadingTemplate);\n }\n}\nfunction GridComponent_kendo_grid_status_bar_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-status-bar\", 49);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"statusBarTemplate\", ctx_r0.statusBarTemplate);\n }\n}\nfunction GridComponent_kendo_pager_11_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-pager\", 50);\n i0.ɵɵlistener(\"pageChange\", function GridComponent_kendo_pager_11_Template_kendo_pager_pageChange_0_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.notifyPageChange(\"pager\", $event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"tabindex\", ctx_r0.navigation.pagerEnabled ? \"0\" : \"-1\")(\"template\", ctx_r0.pagerTemplate)(\"pageSize\", ctx_r0.pageSize)(\"total\", ctx_r0.view.total)(\"skip\", ctx_r0.skip)(\"size\", ctx_r0.size)(\"options\", ctx_r0.pageable);\n i0.ɵɵattribute(\"role\", ctx_r0.navigation.pagerEnabled ? \"application\" : undefined);\n }\n}\nfunction GridComponent_kendo_grid_toolbar_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-toolbar\", 51);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"size\", ctx_r0.size)(\"navigable\", ctx_r0.navigation.toolbarEnabled);\n i0.ɵɵattribute(\"aria-label\", ctx_r0.messageFor(\"bottomToolbarLabel\"))(\"aria-controls\", ctx_r0.ariaRootId);\n }\n}\nfunction GridComponent_ng_template_13_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-icon-wrapper\", 52);\n i0.ɵɵtext(1);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"name\", ctx_r0.getHintSettings(\"hintIcon\"))(\"svgIcon\", ctx_r0.getHintSettings(\"hintSVGIcon\"));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.hintText, \" \");\n }\n}\nfunction GridComponent_div_15_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 53);\n }\n}\nconst append = element => {\n if (!isDocumentAvailable()) {\n return;\n }\n let appended = false;\n return () => {\n if (!appended) {\n document.body.appendChild(element);\n appended = true;\n }\n return element;\n };\n};\n/**\n * @hidden\n */\nconst getDocument$1 = element => element.ownerDocument.documentElement;\n/**\n * @hidden\n */\nconst getWindow$1 = element => element.ownerDocument.defaultView;\n/**\n * @hidden\n */\nconst offset = element => {\n const {\n clientTop,\n clientLeft\n } = getDocument$1(element);\n const {\n pageYOffset,\n pageXOffset\n } = getWindow$1(element);\n const {\n top,\n left\n } = element.getBoundingClientRect();\n return {\n top: top + pageYOffset - clientTop,\n left: left + pageXOffset - clientLeft\n };\n};\n/**\n * @hidden\n * If the target is before the draggable element, returns `true`.\n *\n * DOCUMENT_POSITION_FOLLOWING = 4\n */\nconst isTargetBefore = (draggable, target) => (target.compareDocumentPosition(draggable) & 4) !== 0;\n/**\n * @hidden\n * If the container and the element are the same\n * or if the container holds (contains) the element, returns `true`.\n *\n * DOCUMENT_POSITION_CONTAINED_BY = 16\n */\nconst contains$2 = (element, container) => element === container || (container.compareDocumentPosition(element) & 16) !== 0;\n/**\n * @hidden\n */\nconst position = (target, before) => {\n const targetRect = offset(target);\n const {\n offsetWidth,\n offsetHeight\n } = target;\n const left = targetRect.left + (before ? 0 : offsetWidth);\n const top = targetRect.top;\n const height = offsetHeight;\n return {\n left,\n top,\n height\n };\n};\n\n/**\n * @hidden\n */\nlet DragAndDropService = /*#__PURE__*/(() => {\n class DragAndDropService {\n constructor() {\n this.changes = new EventEmitter();\n this.register = [];\n this.lastTarget = null;\n }\n add(target) {\n this.register.push(target);\n }\n remove(target) {\n this.register = this.register.filter(current => current !== target);\n }\n notifyDrag(draggable, element, mouseEvent) {\n const target = this.targetFor(element);\n if (this.lastTarget === target) {\n return;\n }\n this.changes.next({\n draggable,\n mouseEvent,\n target: this.lastTarget,\n type: 'leave'\n });\n if (target) {\n this.changes.next({\n draggable,\n mouseEvent,\n target,\n type: 'enter'\n });\n }\n this.lastTarget = target;\n }\n notifyDrop(draggable, mouseEvent) {\n this.changes.next({\n draggable,\n mouseEvent,\n target: this.lastTarget,\n type: 'drop'\n });\n this.lastTarget = null;\n }\n targetFor(element) {\n const comparer = contains$2.bind(null, element);\n return this.register.find(({\n element: {\n nativeElement\n }\n }) => comparer(nativeElement));\n }\n }\n DragAndDropService.ɵfac = function DragAndDropService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragAndDropService)();\n };\n DragAndDropService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DragAndDropService,\n factory: DragAndDropService.ɵfac\n });\n return DragAndDropService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst updateClass = (element, valid, svg) => {\n const icon = element.querySelector('.k-icon');\n if (svg) {\n const svg = icon.firstElementChild;\n svg.removeChild(svg.firstElementChild);\n const path = valid ? plusIcon.content : cancelIcon.content;\n icon.firstElementChild.innerHTML = path + icon.firstElementChild.innerHTML;\n }\n icon.setAttribute('class', icon.getAttribute('class').replace(/(plus|cancel)/, valid ? 'plus' : 'cancel'));\n};\nconst updateLock = (element, locked = null, svg) => {\n const icon = element.querySelectorAll('.k-icon')[1];\n const value = locked === null ? '' : locked ? `k${svg ? '-svg' : ''}-i-lock` : `k${svg ? '-svg' : ''}-i-unlock`;\n if (svg) {\n icon.setAttribute('class', icon.getAttribute('class').replace(/(k-svg-i-unlock|k-svg-i-lock)/, '').trim() + ` ${value}`);\n icon.firstElementChild.innerHTML = locked ? lockIcon.content : unlockIcon.content;\n } else {\n icon.setAttribute('class', icon.getAttribute('class').replace(/(k-i-unlock|k-i-lock)/, '').trim() + ` ${value}`);\n }\n};\nconst decorate = element => {\n element.className = 'k-header k-drag-clue';\n element.style.position = 'absolute';\n element.style.zIndex = '20000';\n};\nconst svgIconsMarkup = (viewBox, content, safeTitle) => `\n \n \n ${content}\n \n \n \n \n \n \n ${safeTitle}`;\nconst fontIconsMarkup = safeTitle => `\n \n \n \n ${safeTitle}`;\n/**\n * @hidden\n */\nlet DragHintService = /*#__PURE__*/(() => {\n class DragHintService {\n constructor(santizer, iconsService) {\n this.santizer = santizer;\n this.iconsService = iconsService;\n this.cancelIcon = cancelIcon;\n }\n create(title) {\n if (!isDocumentAvailable()) {\n return;\n }\n this.dom = document.createElement(\"div\");\n decorate(this.dom);\n const safeTitle = this.santizer.sanitize(SecurityContext.HTML, title);\n const innerHtml = this.isSVG ? svgIconsMarkup(this.cancelIcon.viewBox, this.cancelIcon.content, safeTitle) : fontIconsMarkup(safeTitle);\n this.dom.innerHTML = innerHtml;\n }\n attach() {\n return append(this.dom);\n }\n remove() {\n if (this.dom && this.dom.parentNode) {\n (function (el) {\n setTimeout(() => document.body.removeChild(el));\n })(this.dom); // hack for IE + pointer events!\n this.dom = null;\n }\n }\n show() {\n this.dom.style.display = \"\";\n }\n hide() {\n this.dom.style.display = \"none\";\n }\n enable() {\n updateClass(this.dom, true, this.isSVG);\n }\n disable() {\n updateClass(this.dom, false, this.isSVG);\n }\n removeLock() {\n updateLock(this.dom, false, this.isSVG);\n }\n toggleLock(locked) {\n updateLock(this.dom, locked, this.isSVG);\n }\n move(move) {\n this.dom.style.top = move.pageY + 'px';\n this.dom.style.left = move.pageX + 'px';\n }\n get isSVG() {\n return (this.iconsService.iconSettings?.type || this.iconsService.changes.value.type) === 'svg';\n }\n }\n DragHintService.ɵfac = function DragHintService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DragHintService)(i0.ɵɵinject(i1.DomSanitizer), i0.ɵɵinject(i1$1.IconsService));\n };\n DragHintService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DragHintService,\n factory: DragHintService.ɵfac\n });\n return DragHintService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DropCueService = /*#__PURE__*/(() => {\n class DropCueService {\n create() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.dom = document.createElement(\"div\");\n this.dom.className = 'k-grouping-dropclue';\n this.hide();\n }\n attach() {\n return append(this.dom);\n }\n remove() {\n if (this.dom && this.dom.parentElement) {\n document.body.removeChild(this.dom);\n this.dom = null;\n }\n }\n hide() {\n this.dom.style.display = \"none\";\n }\n position({\n left,\n top,\n height\n }) {\n this.dom.style.display = 'block';\n this.dom.style.height = height + 'px';\n this.dom.style.top = top + 'px';\n const width = this.dom.offsetWidth / 2;\n this.dom.style.left = left - width + 'px';\n }\n }\n DropCueService.ɵfac = function DropCueService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropCueService)();\n };\n DropCueService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DropCueService,\n factory: DropCueService.ɵfac\n });\n return DropCueService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst EMPTY_REGEX = /^\\s*$/;\n/**\n * @hidden\n */\nconst isPresent = value => value !== null && value !== undefined;\n/**\n * @hidden\n */\nconst isBlank = value => value === null || value === undefined;\n/**\n * @hidden\n */\nconst isArray = value => Array.isArray(value);\n/**\n * @hidden\n */\nconst isTruthy = value => !!value;\n/**\n * @hidden\n */\nconst isNullOrEmptyString = value => isBlank(value) || EMPTY_REGEX.test(value);\n/**\n * @hidden\n */\nconst observe = list => merge(of(list), list.changes);\n/**\n * @hidden\n */\nconst isUniversal = () => typeof document === 'undefined';\n/**\n * @hidden\n */\nconst isString = value => typeof value === 'string';\n/**\n * @hidden\n */\nconst isNumber = value => typeof value === \"number\" && !isNaN(value);\n/**\n * @hidden\n */\nconst extractFormat = format => {\n if (isString(format) && !isNullOrEmptyString(format) && format.startsWith('{0:')) {\n return format.slice(3, format.length - 1);\n }\n return format;\n};\n/**\n * @hidden\n */\nconst not = fn => (...args) => !fn(...args);\n/**\n * @hidden\n */\nconst or = (...conditions) => value => conditions.reduce((acc, x) => acc || x(value), false);\n/**\n * @hidden\n */\nconst and = (...conditions) => value => conditions.reduce((acc, x) => acc && x(value), true);\n/**\n * @hidden\n */\nconst Skip = new InjectionToken(\"Skip\");\n/**\n * @hidden\n */\nconst createPromise = () => {\n let resolveFn, rejectFn;\n const promise = new Promise((resolve, reject) => {\n resolveFn = data => {\n resolve(data);\n return promise;\n };\n rejectFn = data => {\n reject(data);\n return promise;\n };\n });\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n return promise;\n};\n/** @hidden */\nconst iterator = getIterator$1();\n// TODO: Move to kendo-common\nfunction getIterator$1() {\n if (typeof Symbol === 'function' && Symbol.iterator) {\n return Symbol.iterator;\n }\n const keys = Object.getOwnPropertyNames(Map.prototype);\n const proto = Map.prototype;\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (key !== 'entries' && key !== 'size' && proto[key] === proto.entries) {\n return key;\n }\n }\n}\nconst FRAME_DURATION = 1000 / 60;\nconst wnd = typeof window !== 'undefined' ? window : {};\n/** @hidden */\nconst requestAnimationFrame = wnd.requestAnimationFrame || wnd.msRequestAnimationFrame || (callback => setTimeout(callback, FRAME_DURATION));\n/** @hidden */\nconst cancelAnimationFrame = wnd.cancelAnimationFrame || wnd.msCancelRequestAnimationFrame || clearTimeout;\n/**\n * @hidden\n */\nconst detectIE = () => {\n if (!isDocumentAvailable()) {\n return;\n }\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf('MSIE ');\n const trident = ua.indexOf('Trident/');\n return msie > 0 || trident > 0;\n};\n/**\n * @hidden\n */\nconst nodesToArray = nodes => [].slice.call(nodes);\n/**\n * @hidden\n */\nconst replaceMessagePlaceholder = (message, name, value) => message.replace(new RegExp(`\\{\\\\s*${name}\\\\s*\\}`, 'g'), value);\n/**\n * @hidden\n */\nconst recursiveFlatMap = item => isGroupResult(item) ? item.items.flatMap(recursiveFlatMap) : [{\n ...item\n}];\n/**\n * @hidden\n */\nconst isGroupResult = obj => {\n return 'aggregates' in obj && 'items' in obj && 'field' in obj && 'value' in obj;\n};\n\n/**\n * @hidden\n */\nconst FOCUS_ROOT_ACTIVE = new InjectionToken('focus-root-initial-active-state');\n/**\n * @hidden\n */\nlet FocusRoot = /*#__PURE__*/(() => {\n class FocusRoot {\n constructor(active = false) {\n this.active = active;\n this.groups = new Set();\n }\n registerGroup(group) {\n if (this.active) {\n this.groups.add(group);\n }\n }\n unregisterGroup(group) {\n if (this.active) {\n this.groups.delete(group);\n }\n }\n activate() {\n if (this.active) {\n this.groups.forEach(f => f.activate());\n }\n }\n deactivate() {\n if (this.active) {\n this.groups.forEach(f => f.deactivate());\n }\n }\n }\n FocusRoot.ɵfac = function FocusRoot_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FocusRoot)(i0.ɵɵinject(FOCUS_ROOT_ACTIVE, 8));\n };\n FocusRoot.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FocusRoot,\n factory: FocusRoot.ɵfac\n });\n return FocusRoot;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;\nconst NODE_NAME_PREDICATES = {};\nconst toClassList = classNames => String(classNames).trim().split(' ');\n/**\n * @hidden\n */\nconst hasClasses = (element, classNames) => {\n const namesList = toClassList(classNames);\n return Boolean(toClassList(element.className).find(className => namesList.indexOf(className) >= 0));\n};\n/**\n * @hidden\n */\nconst matchesClasses = classNames => element => hasClasses(element, classNames);\n/**\n * @hidden\n */\nconst matchesNodeName = nodeName => {\n if (!NODE_NAME_PREDICATES[nodeName]) {\n NODE_NAME_PREDICATES[nodeName] = element => String(element.nodeName).toLowerCase() === nodeName.toLowerCase();\n }\n return NODE_NAME_PREDICATES[nodeName];\n};\n/**\n * @hidden\n */\nconst closest = (node, predicate) => {\n while (node && !predicate(node)) {\n node = node.parentNode;\n }\n return node;\n};\n/**\n * @hidden\n */\nconst closestInScope = (node, predicate, scope) => {\n while (node && node !== scope && !predicate(node)) {\n node = node.parentNode;\n }\n if (node !== scope) {\n return node;\n }\n};\n/**\n * @hidden\n */\nconst contains$1 = (parent, node, matchSelf = false) => {\n const outside = !closest(node, child => child === parent);\n if (outside) {\n return false;\n }\n const el = closest(node, child => child === node);\n return el && (matchSelf || el !== parent);\n};\n/**\n * @hidden\n */\nconst isVisible = element => {\n if (!isDocumentAvailable()) {\n return;\n }\n const rect = element.getBoundingClientRect();\n const hasSize = rect.width > 0 && rect.height > 0;\n const hasPosition = rect.x !== 0 && rect.y !== 0;\n // Elements can have zero size due to styling, but they will still count as visible.\n // For example, the selection checkbox has no size, but is made visible through styling.\n return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';\n};\n/**\n * @hidden\n */\nconst isFocusable = element => {\n if (!element.tagName) {\n return false;\n }\n const tagName = element.tagName.toLowerCase();\n const hasTabIndex = Boolean(element.getAttribute('tabIndex'));\n const focusable = !element.disabled && focusableRegex.test(tagName);\n return focusable || hasTabIndex;\n};\n/**\n * @hidden\n */\nconst isFocusableWithTabKey = (element, checkVisibility = true) => {\n if (!isFocusable(element)) {\n return false;\n }\n const visible = !checkVisibility || isVisible(element);\n const ariaHidden = element.getAttribute('aria-hidden') === 'true';\n const tabIndex = element.getAttribute('tabIndex');\n return visible && !ariaHidden && tabIndex !== '-1';\n};\n/**\n * @hidden\n */\nconst findElement = (node, predicate, matchSelf = true) => {\n if (!node) {\n return;\n }\n if (matchSelf && predicate(node)) {\n return node;\n }\n node = node.firstChild;\n while (node) {\n if (node.nodeType === 1) {\n const element = findElement(node, predicate);\n if (element) {\n return element;\n }\n }\n node = node.nextSibling;\n }\n};\n/**\n * @hidden\n */\nconst findLastElement = (node, predicate, matchSelf = true) => {\n let last = null;\n findElement(node, node => {\n if (predicate(node)) {\n last = node;\n }\n return false;\n }, matchSelf);\n return last;\n};\n/**\n * @hidden\n */\nconst findFocusable = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusableWithTabKey(node, checkVisibility));\n};\n/**\n * @hidden\n */\nconst findFocusableChild = (element, checkVisibility = true) => {\n return findElement(element, node => isFocusableWithTabKey(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nconst findLastFocusableChild = (element, checkVisibility = true) => {\n return findLastElement(element, node => isFocusableWithTabKey(node, checkVisibility), false);\n};\n/**\n * @hidden\n */\nfunction rtlScrollPosition(position, element, initial) {\n let result = position;\n if (initial < 0) {\n result = -position;\n } else if (initial > 0) {\n result = element.scrollWidth - element.offsetWidth - position;\n }\n return result;\n}\nconst isButton = matchesNodeName('button');\nconst isInputTag = matchesNodeName('input');\nconst navigableRegex = /(button|checkbox|color|file|radio|reset|submit)/i;\nconst isNavigableInput = element => isInputTag(element) && navigableRegex.test(element.type);\nconst isNavigable = element => !element.disabled && (isButton(element) || isNavigableInput(element));\n/**\n * @hidden\n */\nclass DefaultFocusableElement {\n constructor(host, renderer) {\n this.renderer = renderer;\n this.element = host.nativeElement;\n this.focusable = findFocusable(this.element, false) || this.element;\n }\n get enabled() {\n return this.focusable && !this.focusable.disabled;\n }\n get visible() {\n return this.focusable && isVisible(this.focusable);\n }\n isNavigable() {\n return this.canFocus() && isNavigable(this.element);\n }\n toggle(active) {\n this.renderer.setAttribute(this.focusable, 'tabIndex', active ? '0' : '-1');\n }\n focus() {\n if (this.focusable) {\n this.focusable.focus();\n }\n }\n canFocus() {\n return this.visible && this.enabled;\n }\n hasFocus() {\n return isDocumentAvailable() && document.activeElement !== this.element && closest(document.activeElement, e => e === this.element);\n }\n}\n\n/**\n * @hidden\n */\nconst CELL_CONTEXT = new InjectionToken('grid-cell-context');\n/**\n * @hidden\n */\nconst EMPTY_CELL_CONTEXT = {};\n\n/**\n * @hidden\n */\nlet GridToolbarNavigationService = /*#__PURE__*/(() => {\n class GridToolbarNavigationService {\n constructor(renderer) {\n this.renderer = renderer;\n this.navigableElements = [];\n this.currentActiveIndex = 0;\n this.defaultFocusableSelector = `\n [kendogridtoolbarfocusable],\n [kendogridaddcommand],\n [kendogridcancelcommand],\n [kendogrideditcommand],\n [kendogridremovecommand],\n [kendogridsavecommand],\n [kendogridexcelcommand],\n [kendogridpdfcommand]\n `;\n }\n notify() {\n // ensure focusable elements are in the same order as in the DOM\n this.navigableElements = this.navigableElements.length && Array.from(this.navigableElements[0].parentElement.querySelectorAll(this.defaultFocusableSelector)) || [];\n this.currentActiveIndex = 0;\n this.updateFocus();\n }\n focus() {\n this.navigableElements[this.currentActiveIndex]?.focus();\n }\n updateFocus() {\n if (!this.navigableElements.length) {\n return;\n }\n this.navigableElements.forEach(el => {\n this.renderer.setAttribute(el, 'tabindex', '-1');\n });\n this.renderer.setAttribute(this.navigableElements[this.currentActiveIndex], 'tabindex', '0');\n if (isDocumentAvailable() && document.activeElement.closest('.k-toolbar')) {\n this.navigableElements[this.currentActiveIndex].focus();\n }\n }\n }\n GridToolbarNavigationService.ɵfac = function GridToolbarNavigationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridToolbarNavigationService)(i0.ɵɵinject(i0.Renderer2));\n };\n GridToolbarNavigationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: GridToolbarNavigationService,\n factory: GridToolbarNavigationService.ɵfac\n });\n return GridToolbarNavigationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * The Context service is used to provide common\n * services and DI tokens for a Grid instance.\n *\n * This keeps the constructor parameters stable\n * and a avoids dependency cycles between components.\n */\nlet ContextService = /*#__PURE__*/(() => {\n class ContextService {\n constructor(renderer, localization) {\n this.renderer = renderer;\n this.localization = localization;\n this.topToolbarNavigation = new GridToolbarNavigationService(this.renderer);\n this.bottomToolbarNavigation = new GridToolbarNavigationService(this.renderer);\n }\n }\n ContextService.ɵfac = function ContextService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ContextService)(i0.ɵɵinject(i0.Renderer2), i0.ɵɵinject(i1$2.LocalizationService));\n };\n ContextService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContextService,\n factory: ContextService.ɵfac\n });\n return ContextService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive that controls the way focusable elements receive\n * [focus in a navigable Grid]({% slug keyboard_navigation_grid %}).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet FocusableDirective = /*#__PURE__*/(() => {\n class FocusableDirective {\n constructor(cellContext, hostElement, renderer, ctx) {\n this.cellContext = cellContext;\n this.hostElement = hostElement;\n this.renderer = renderer;\n this.ctx = ctx;\n this.active = true;\n this._enabled = true;\n if (this.cellContext) {\n this.group = this.cellContext.focusGroup;\n }\n if (this.group) {\n this.group.registerElement(this);\n }\n }\n /**\n * @hidden\n */\n set enabled(value) {\n if (value === '') {\n value = true;\n } else {\n value = Boolean(value);\n }\n if (value !== this.enabled) {\n this._enabled = value;\n if (this.element) {\n this.element.toggle(this.active && value);\n }\n }\n }\n get enabled() {\n return this._enabled;\n }\n ngAfterViewInit() {\n if (!this.element && this.ctx.navigable) {\n this.element = new DefaultFocusableElement(this.hostElement, this.renderer);\n }\n if (this.group && this.element) {\n this.toggle(this.group.isActive);\n }\n }\n ngOnDestroy() {\n if (this.group) {\n this.group.unregisterElement(this);\n }\n }\n /**\n * @hidden\n */\n toggle(active) {\n if (this.element && active !== this.active) {\n this.element.toggle(this.enabled && active);\n this.active = active;\n }\n }\n /**\n * @hidden\n */\n canFocus() {\n return this.enabled && this.element && this.element.canFocus();\n }\n /**\n * @hidden\n */\n isNavigable() {\n return this.enabled && this.element && this.element.isNavigable();\n }\n /**\n * @hidden\n */\n focus() {\n if (this.enabled && this.element) {\n this.element.focus();\n }\n }\n /**\n * @hidden\n */\n hasFocus() {\n return this.enabled && this.element && this.element.hasFocus();\n }\n /**\n * @hidden\n */\n registerElement(element) {\n this.element = element;\n }\n }\n FocusableDirective.ɵfac = function FocusableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FocusableDirective)(i0.ɵɵdirectiveInject(CELL_CONTEXT, 12), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService));\n };\n FocusableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FocusableDirective,\n selectors: [[\"\", \"kendoGridFocusable\", \"\"], [\"\", \"kendoGridEditCommand\", \"\"], [\"\", \"kendoGridRemoveCommand\", \"\"], [\"\", \"kendoGridSaveCommand\", \"\"], [\"\", \"kendoGridCancelCommand\", \"\"], [\"\", \"kendoGridSelectionCheckbox\", \"\"]],\n inputs: {\n enabled: [0, \"kendoGridFocusable\", \"enabled\"]\n },\n standalone: true\n });\n return FocusableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass GridFocusableElement {\n constructor(navigationService) {\n this.navigationService = navigationService;\n }\n focus() {\n this.navigationService.focusCell();\n }\n toggle(active) {\n this.navigationService.toggle(active);\n }\n canFocus() {\n return true;\n }\n hasFocus() {\n return this.navigationService.hasFocus();\n }\n isNavigable() {\n return false;\n }\n}\n\n/**\n * @hidden\n */\nclass NavigationCursor {\n constructor(model) {\n this.model = model;\n this.changes = new Subject();\n this.activeRow = 0;\n this.activeCol = 0;\n this.virtualCol = 0;\n this.virtualRow = 0;\n }\n set metadata(value) {\n this._metadata = value;\n if (isPresent(value)) {\n const newActiveCol = value.hasDetailTemplate ? 1 : 0;\n const shouldChange = this.activeRow < value.headerRows && this.activeCol === 0;\n if (shouldChange && newActiveCol !== this.activeCol) {\n this.activeCol = newActiveCol;\n this.reset();\n }\n }\n }\n get metadata() {\n return this._metadata;\n }\n get row() {\n return this.model.findRow(this.activeRow);\n }\n get cell() {\n const row = this.row;\n if (row) {\n return this.model.findCell(this.activeCol, row);\n }\n }\n get dataRowIndex() {\n const row = this.row;\n if (row) {\n return row.dataRowIndex;\n }\n return -1;\n }\n /**\n * Assumes and announces a new cursor position.\n */\n reset(rowIndex = this.activeRow, colIndex = this.activeCol, force = true) {\n if (this.activate(rowIndex, colIndex, force)) {\n this.virtualRow = rowIndex;\n this.virtualCol = colIndex;\n }\n }\n activate(rowIndex, colIndex, force) {\n if (!force && this.isActiveRange(rowIndex, colIndex)) {\n return false;\n }\n const prevColIndex = this.activeCol;\n const prevRowIndex = this.activeRow;\n this.activeCol = colIndex;\n this.activeRow = rowIndex;\n this.changes.next({\n colIndex,\n prevColIndex,\n prevRowIndex,\n rowIndex\n });\n return true;\n }\n isActiveRange(rowIndex, colIndex) {\n if (this.activeRow !== rowIndex) {\n return false;\n }\n const cell = this.cell;\n const {\n start,\n end\n } = this.model.cellRange(cell);\n return !cell || start <= colIndex && colIndex <= end;\n }\n /**\n * Assumes a new cursor position without announcing it.\n */\n assume(rowIndex = this.activeRow, colIndex = this.activeCol) {\n this.virtualRow = rowIndex;\n this.virtualCol = colIndex;\n this.activeCol = colIndex;\n this.activeRow = rowIndex;\n }\n /**\n * Announces a current cursor position to subscribers.\n */\n announce() {\n this.changes.next({\n colIndex: this.activeCol,\n prevColIndex: this.activeCol,\n prevRowIndex: this.activeRow,\n rowIndex: this.activeRow\n });\n }\n activateVirtualCell(cell) {\n const rowRange = this.model.rowRange(cell);\n const cellRange = this.model.cellRange(cell);\n const activeCol = this.activeCol;\n const activeRow = this.activeRow;\n if (rowRange.start <= activeRow && activeRow <= rowRange.end && cellRange.start <= activeCol && activeCol <= cellRange.end) {\n this.activeRow = cell.rowIndex;\n this.activeCol = cell.colIndex;\n return true;\n }\n }\n isActive(rowIndex, colIndex) {\n return this.activeCol === colIndex && this.activeRow === rowIndex;\n }\n moveUp(offset = 1) {\n return this.offsetRow(-offset);\n }\n moveDown(offset = 1) {\n return this.offsetRow(offset);\n }\n moveLeft(offset = 1) {\n return this.offsetCol(-offset);\n }\n moveRight(offset = 1) {\n return this.offsetCol(offset);\n }\n lastCellIndex(row) {\n return this.metadata.columns.leafColumnsToRender.length - 1 + (this.metadata.hasDetailTemplate && (!row || !row.groupItem) ? 1 : 0);\n }\n offsetCol(offset) {\n const prevRow = this.model.findRow(this.virtualRow);\n const lastIndex = this.lastCellIndex(prevRow);\n const virtualCol = this.virtualCol;\n this.virtualCol = Math.max(0, Math.min(virtualCol + offset, lastIndex));\n let nextColIndex = this.virtualCol;\n const nextRowIndex = this.virtualRow;\n let cell = this.model.findCell(this.virtualCol, prevRow);\n if (!cell && this.metadata.virtualColumns) {\n return this.activate(nextRowIndex, nextColIndex);\n }\n if (!cell && this.metadata.hasDetailTemplate) {\n this.virtualCol += 1;\n return false;\n }\n if (cell.colSpan > 1 && cell.colIndex <= virtualCol && virtualCol < cell.colIndex + cell.colSpan) {\n nextColIndex = offset > 0 ? Math.min(cell.colIndex + cell.colSpan, lastIndex) : Math.max(0, cell.colIndex + offset);\n const nextCell = this.model.findCell(nextColIndex, prevRow);\n if (cell !== nextCell) {\n cell = nextCell;\n this.virtualCol = cell.colIndex;\n } else {\n this.virtualCol = virtualCol;\n }\n }\n return this.activate(cell.rowIndex, cell.colIndex);\n }\n offsetRow(offset) {\n let nextColIndex = this.virtualCol;\n if (this.metadata && this.metadata.isVirtual) {\n const maxIndex = this.metadata.maxLogicalRowIndex;\n let nextIndex = Math.max(0, Math.min(this.activeRow + offset, maxIndex));\n if (this.metadata.hasDetailTemplate && !this.model.findRow(nextIndex)) {\n nextIndex = offset > 0 ? nextIndex + 1 : nextIndex - 1;\n nextIndex = Math.max(0, Math.min(nextIndex, maxIndex));\n }\n if (this.metadata.hasDetailTemplate && nextIndex === maxIndex) {\n if (this.model.lastRow.index !== maxIndex) {\n // Don't attempt to navigate past the last collapsed row.\n nextIndex--;\n }\n }\n const nextRow = this.model.findRow(nextIndex);\n if (nextRow) {\n // remove duplication\n let cell = this.model.findCell(this.virtualCol, nextRow);\n if (!cell) {\n return;\n }\n if (cell.rowIndex <= this.virtualRow && offset > 0 && cell.rowSpan > 1) {\n cell = this.model.findCell(this.virtualCol, this.model.findRow(cell.rowIndex + cell.rowSpan - 1 + offset));\n }\n nextIndex = cell.rowIndex;\n nextColIndex = cell.colIndex;\n }\n this.virtualRow = nextIndex;\n return this.activate(nextIndex, nextColIndex);\n }\n const nextRow = this.model.findRow(this.virtualRow + offset) || this.model.nextRow(this.virtualRow, offset);\n if (!nextRow) {\n return false;\n }\n let cell = this.model.findCell(this.virtualCol, nextRow);\n if (cell && cell.rowIndex <= this.virtualRow && offset > 0 && cell.rowSpan > 1) {\n // spanned cell go to next\n const nextPos = cell.rowIndex + cell.rowSpan - 1 + offset;\n cell = this.model.findCell(this.virtualCol, this.model.findRow(nextPos));\n }\n if (!cell && (this.metadata.virtualColumns || this.metadata.hasDetailTemplate)) {\n return this.activate(this.virtualRow + offset, this.virtualCol);\n }\n this.virtualRow = cell.rowIndex;\n return this.activate(this.virtualRow, cell.colIndex);\n }\n}\n\n/**\n * @hidden\n */\nclass ItemMap {\n constructor() {\n this.count = 0;\n this.items = {};\n }\n get first() {\n if (this.count > 0) {\n let result;\n this.forEach(item => {\n result = item;\n return true;\n });\n return result;\n }\n }\n get last() {\n if (this.count > 0) {\n const keys = Object.keys(this.items);\n return this.items[keys[keys.length - 1]];\n }\n }\n removeItem(key) {\n if (this.items[key]) {\n delete this.items[key];\n this.count--;\n }\n }\n setItem(key, item) {\n if (!this.items[key]) {\n this.count++;\n }\n this.items[key] = item;\n }\n getItem(key) {\n return this.items[key];\n }\n toArray() {\n const result = [];\n this.forEach(item => {\n result.push(item);\n });\n return result;\n }\n forEach(callback) {\n for (const key in this.items) {\n if (this.items.hasOwnProperty(key) && callback(this.items[key])) {\n return this.items[key];\n }\n }\n }\n find(callback) {\n return this.forEach(callback);\n }\n}\n\n/**\n * @hidden\n *\n * Contains information for the currently rendered rows and cells.\n */\nclass NavigationModel {\n constructor() {\n this.rows = new ItemMap();\n }\n get firstRow() {\n return this.rows.first;\n }\n get lastRow() {\n return this.rows.last;\n }\n registerCell(cell) {\n const row = this.rows.getItem(cell.logicalRowIndex);\n if (!row) {\n return;\n }\n const colIndex = cell.logicalColIndex;\n const modelCell = {\n uid: cell.uid,\n colIndex,\n rowIndex: row.index,\n colSpan: cell.colSpan,\n rowSpan: cell.rowSpan,\n detailExpandCell: cell.detailExpandCell,\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex,\n focusGroup: cell.focusGroup\n };\n row.cells.setItem(colIndex, modelCell);\n if (cell.groupItem) {\n row.groupItem = cell.groupItem;\n }\n return modelCell;\n }\n unregisterCell(index, rowIndex, cell) {\n const row = this.rows.getItem(rowIndex);\n if (row) {\n const match = row.cells.getItem(index);\n if (match && match.uid === cell.uid) {\n row.cells.removeItem(index);\n }\n }\n }\n registerRow(row) {\n const modelRow = {\n uid: row.uid,\n index: row.logicalRowIndex,\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex,\n cells: new ItemMap()\n };\n this.rows.setItem(row.logicalRowIndex, modelRow);\n }\n updateRow(row) {\n const current = this.rows.getItem(row.logicalRowIndex);\n if (current) {\n Object.assign(current, {\n dataItem: row.dataItem,\n dataRowIndex: row.dataRowIndex\n });\n }\n }\n unregisterRow(index, row) {\n const match = this.rows.getItem(index);\n if (match && match.uid === row.uid) {\n this.rows.removeItem(index);\n }\n }\n cellRange(cell) {\n if (cell) {\n const start = cell.colIndex;\n const end = cell.colIndex + (cell.colSpan || 1) - 1;\n return {\n start,\n end\n };\n }\n return {};\n }\n rowRange(cell) {\n if (cell) {\n const start = cell.rowIndex;\n const end = cell.rowIndex + (cell.rowSpan || 1) - 1;\n return {\n start,\n end\n };\n }\n return {};\n }\n nextRow(rowIndex, offset) {\n const rows = this.rows.toArray();\n const row = this.rows.getItem(rowIndex);\n const position = rows.indexOf(row);\n const next = rows[position + offset];\n return next;\n }\n findRow(index) {\n return this.rows.getItem(index);\n }\n findCell(index, row) {\n if (!row) {\n return;\n }\n const rowIndex = row.index;\n let cell = row.cells.getItem(index);\n let currentIndex = rowIndex;\n while (!cell && row) {\n row = this.rows.getItem(currentIndex);\n cell = this.rowCell(index, row);\n currentIndex--;\n }\n if (cell && rowIndex <= row.index + (cell.rowSpan || 1) - 1) {\n return cell;\n }\n }\n rowCell(index, row) {\n if (!row || !row.cells.count) {\n return;\n }\n const firstCell = row.cells.first;\n let cell,\n currentIndex = index;\n while (!cell && currentIndex >= firstCell.colIndex) {\n cell = row.cells.getItem(currentIndex);\n currentIndex--;\n }\n if (cell && index <= cell.colIndex + (cell.colSpan || 1) - 1) {\n return cell;\n }\n }\n}\n\n/**\n * @hidden\n */\nlet DomEventsService = /*#__PURE__*/(() => {\n class DomEventsService {\n constructor() {\n this.cellClick = new EventEmitter();\n this.cellMousedown = new EventEmitter();\n this.cellMouseup = new EventEmitter();\n this.click = new EventEmitter();\n this.keydown = new EventEmitter();\n this.focus = new EventEmitter();\n this.focusIn = new EventEmitter();\n this.focusOut = new EventEmitter();\n this.windowBlur = new EventEmitter();\n this.paste = new EventEmitter();\n }\n }\n DomEventsService.ɵfac = function DomEventsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DomEventsService)();\n };\n DomEventsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DomEventsService,\n factory: DomEventsService.ɵfac\n });\n return DomEventsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass PreventableEvent {\n constructor() {\n this.prevented = false;\n }\n /**\n * Prevents the default action for a specified event.\n * In this way, the source component suppresses\n * the built-in behavior that follows the event.\n */\n preventDefault() {\n this.prevented = true;\n }\n /**\n * Returns a respective boolean if the event was prevented\n * by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n isDefaultPrevented() {\n return this.prevented;\n }\n}\n\n/**\n * Arguments for the `cellClose` event.\n */\nclass CellCloseEvent extends PreventableEvent {\n constructor(options) {\n super();\n /**\n * @hidden\n */\n this.action = 'cellClose';\n Object.assign(this, options);\n }\n}\n\n/**\n * @hidden\n */\nconst isEqual = index => item => item.index === index;\n/**\n * @hidden\n */\nconst isNotEqual = index => item => item.index !== index;\n/**\n * @hidden\n */\nconst isNewRow = index => index === -1 || index === undefined;\n/**\n * @hidden\n */\nlet EditService = /*#__PURE__*/(() => {\n class EditService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new EventEmitter();\n this.editedIndices = [];\n this.keepEditCell = false;\n this.closingCell = false;\n this.changedSource = new Subject();\n this.changed = this.changedSource.asObservable().pipe(switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1))));\n }\n editRow(index, group = undefined) {\n this.editedIndices.push({\n index,\n group\n });\n this.onChanged();\n }\n addRow(group) {\n this.newItemGroup = {\n group\n };\n this.onChanged();\n }\n editCell(rowIndex, column, group) {\n if (isNewRow(rowIndex) || column.editable === false || !(column.editTemplate || column.field)) {\n return;\n }\n this.preventCellClose();\n if (!this.closeCell()) {\n this.editRow(rowIndex, group);\n this.column = column;\n this.onChanged();\n }\n }\n isEditing() {\n return this.editedIndices.length > 0;\n }\n isEditingCell() {\n return this.isEditing() && this.column !== undefined;\n }\n get hasNewItem() {\n return isPresent(this.newItemGroup);\n }\n get newDataItem() {\n if (this.hasNewItem) {\n return this.newItemGroup.group.value;\n }\n return {};\n }\n close(index) {\n if (isNewRow(index)) {\n this.newItemGroup = undefined;\n return;\n }\n this.editedIndices = this.editedIndices.filter(isNotEqual(index));\n delete this.column;\n this.onChanged();\n }\n closeCell(originalEvent) {\n if (this.column && !this.closingCell) {\n return this.ngZone.run(() => {\n const {\n index,\n group\n } = this.editedIndices[0];\n const args = new CellCloseEvent({\n column: this.column,\n formGroup: group,\n originalEvent: originalEvent,\n rowIndex: index\n });\n this.closingCell = true;\n this.changes.emit(args);\n this.closingCell = false;\n if (!args.isDefaultPrevented()) {\n this.cancelCell();\n }\n return args.isDefaultPrevented();\n });\n }\n }\n cancelCell() {\n if (this.column) {\n this.editedIndices = [];\n delete this.column;\n this.onChanged();\n }\n }\n shouldCloseCell() {\n return this.column && !this.keepEditCell;\n }\n preventCellClose() {\n this.ngZone.runOutsideAngular(() => {\n window.clearTimeout(this.keepCellTimeout);\n this.keepEditCell = true;\n this.keepCellTimeout = window.setTimeout(() => {\n this.keepEditCell = false;\n }, 0);\n });\n }\n context(index) {\n if (isNewRow(index)) {\n return this.newItemGroup;\n }\n return this.findByIndex(index);\n }\n columnContext(index, column) {\n if (isNewRow(index)) {\n return this.newItemGroup;\n }\n if (!this.column || column === this.column) {\n return this.findByIndex(index);\n }\n }\n isEdited(index) {\n if (isNewRow(index) && isPresent(this.newItemGroup)) {\n return true;\n }\n return !this.column && isPresent(this.findByIndex(index));\n }\n hasEdited(index) {\n return isPresent(this.context(index));\n }\n isEditedColumn(index, column) {\n if (this.column && this.column === column) {\n return isPresent(this.findByIndex(index));\n }\n return false;\n }\n beginEdit(rowIndex) {\n this.changes.emit({\n action: 'edit',\n rowIndex\n });\n }\n beginAdd() {\n this.changes.emit({\n action: 'add'\n });\n }\n endEdit(rowIndex) {\n const {\n group: formGroup\n } = this.context(rowIndex);\n this.changes.emit({\n action: 'cancel',\n rowIndex,\n formGroup,\n isNew: isNewRow(rowIndex)\n });\n }\n save(rowIndex) {\n const {\n group: formGroup\n } = this.context(rowIndex);\n this.changes.emit({\n action: 'save',\n rowIndex,\n formGroup,\n isNew: isNewRow(rowIndex)\n });\n }\n remove(rowIndex) {\n this.changes.emit({\n action: 'remove',\n rowIndex\n });\n }\n findByIndex(index) {\n return this.editedIndices.find(isEqual(index));\n }\n onChanged() {\n this.ngZone.runOutsideAngular(() => {\n this.changedSource.next();\n });\n }\n }\n EditService.ɵfac = function EditService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EditService)(i0.ɵɵinject(i0.NgZone));\n };\n EditService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EditService,\n factory: EditService.ɵfac\n });\n return EditService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst getGroupRowArgs = groupItem => {\n if (!isPresent(groupItem)) {\n return null;\n }\n return {\n group: groupItem.data,\n groupIndex: groupItem.index,\n parentGroup: getGroupRowArgs(groupItem.parentGroup)\n };\n};\nconst isChildIndex = (targetIndex, parentIndex) => {\n const sameIndex = parentIndex === targetIndex;\n const lastSeparatorIndex = targetIndex.lastIndexOf('_');\n const sameSubGroupIndex = targetIndex.substring(0, lastSeparatorIndex) === parentIndex;\n return !sameIndex && sameSubGroupIndex;\n};\n/**\n * @hidden\n */\nlet GroupsService = /*#__PURE__*/(() => {\n class GroupsService {\n constructor() {\n this.changes = new Subject();\n this.rowState = new Set();\n }\n reset() {\n this.rowState.clear();\n }\n ngOnDestroy() {\n this.reset();\n }\n isExpanded(groupArgs) {\n if (this.userCallback) {\n return this.userCallback(groupArgs);\n }\n return !this.rowState.has(groupArgs.groupIndex);\n }\n isInExpandedGroup(groupItem) {\n let expanded = true;\n while (groupItem && expanded) {\n expanded = this.isExpanded({\n group: groupItem.data,\n groupIndex: groupItem.index,\n parentGroup: getGroupRowArgs(groupItem.parentGroup)\n });\n groupItem = groupItem.parentGroup;\n }\n return expanded;\n }\n toggleRow(groupItem, emit = true) {\n const parentGroup = getGroupRowArgs(groupItem.parentGroup);\n const expand = !this.isExpanded({\n group: groupItem.data,\n groupIndex: groupItem.index,\n parentGroup\n });\n this.changes.next({\n group: groupItem.data,\n expand,\n groupIndex: groupItem.index,\n parentGroup,\n emit\n });\n // if usercallback is given, the rowState should be ignored\n if (this.userCallback) {\n return;\n }\n if (expand) {\n this.rowState.delete(groupItem.index);\n } else {\n this.rowState.add(groupItem.index);\n }\n }\n expandChildren(parentIndex) {\n this.rowState.forEach(index => isChildIndex(index, parentIndex) && this.rowState.delete(index));\n }\n }\n GroupsService.ɵfac = function GroupsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupsService)();\n };\n GroupsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: GroupsService,\n factory: GroupsService.ɵfac\n });\n return GroupsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass PagerContextService {\n constructor() {\n this.changes = new Subject();\n this.pageChange = new Subject();\n }\n get currentPage() {\n return this.skip / this.pageSize;\n }\n notifyChanges(changes) {\n this.total = changes.total;\n this.pageSize = changes.pageSize;\n this.skip = changes.skip;\n this.changes.next(changes);\n }\n changePage(page) {\n this.pageChange.next({\n skip: page * this.pageSize,\n take: this.pageSize\n });\n }\n changePageSize(value) {\n this.pageChange.next({\n skip: 0,\n take: value\n });\n }\n nextPage() {\n const nextPage = this.currentPage + 1;\n if (nextPage * this.pageSize < this.total) {\n this.changePage(nextPage);\n }\n }\n prevPage() {\n const prevPage = this.currentPage - 1;\n if (prevPage * this.pageSize >= 0) {\n this.changePage(prevPage);\n }\n }\n}\n\n/**\n * Arguments for the `detailCollapse` event.\n */\nclass DetailCollapseEvent extends PreventableEvent {\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * Arguments for the `detailExpand` event.\n */\nclass DetailExpandEvent extends PreventableEvent {\n constructor(args) {\n super();\n Object.assign(this, args);\n }\n}\n\n/**\n * @hidden\n */\nlet DetailsService = /*#__PURE__*/(() => {\n class DetailsService {\n constructor() {\n this.changes = new Subject();\n this.rowState = new Set();\n }\n ngOnDestroy() {\n this.rowState.clear();\n }\n isExpanded(index, dataItem) {\n if (this.userCallback) {\n return this.userCallback({\n index,\n dataItem\n });\n }\n return this.rowState.has(index);\n }\n toggleRow(index, dataItem) {\n if (this.isExpanded(index, dataItem)) {\n this.collapseRow(index, dataItem);\n } else {\n this.expandRow(index, dataItem);\n }\n }\n expandRow(index, dataItem) {\n const prevented = this.emitEvent({\n dataItem,\n index,\n expand: true\n });\n if (!prevented && !this.userCallback) {\n this.rowState.add(index);\n }\n }\n collapseRow(index, dataItem) {\n const prevented = this.emitEvent({\n dataItem,\n index,\n expand: false\n });\n if (!prevented && !this.userCallback) {\n this.rowState.delete(index);\n }\n }\n emitEvent(args) {\n const eventArg = new (args.expand ? DetailExpandEvent : DetailCollapseEvent)(args);\n this.changes.next(eventArg);\n return eventArg.isDefaultPrevented();\n }\n }\n DetailsService.ɵfac = function DetailsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DetailsService)();\n };\n DetailsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DetailsService,\n factory: DetailsService.ɵfac\n });\n return DetailsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ScrollRequestService = /*#__PURE__*/(() => {\n class ScrollRequestService {\n constructor() {\n this.requests = new Subject();\n }\n scrollTo(request, adjustIndex = true) {\n this.requests.next({\n request,\n adjustIndex\n });\n }\n scrollToItem(request) {\n this.requests.next({\n request\n });\n }\n }\n ScrollRequestService.ɵfac = function ScrollRequestService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ScrollRequestService)();\n };\n ScrollRequestService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollRequestService,\n factory: ScrollRequestService.ɵfac\n });\n return ScrollRequestService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst isInSameGrid = (element, gridElement) => closest(element, matchesNodeName('kendo-grid')) === gridElement;\nconst matchHeaderCell = matchesNodeName('th');\nconst matchDataCell = matchesNodeName('td');\nconst matchFooterCell = matchesNodeName('.k-grid-footer td');\nconst matchCell = element => matchDataCell(element) || matchHeaderCell(element) || matchFooterCell(element);\nconst gridCell = (element, gridElement) => {\n let target = closest(element, matchCell);\n while (target && !isInSameGrid(target, gridElement)) {\n target = closest(target.parentElement, matchCell);\n }\n return target;\n};\nconst targetCell = (target, gridElement) => {\n const cell = gridCell(target, gridElement);\n const row = closest(cell, matchesNodeName('tr'));\n if (cell && row) {\n let rowIndex = row.getAttribute('aria-rowindex') || row.getAttribute('data-kendo-grid-row-index');\n rowIndex = rowIndex ? parseInt(rowIndex, 10) - 1 : null;\n let colIndex = cell.getAttribute('aria-colindex');\n colIndex = colIndex ? parseInt(colIndex, 10) - 1 : null;\n if (rowIndex !== null && colIndex !== null) {\n return {\n colIndex,\n rowIndex,\n element: cell\n };\n }\n }\n};\nconst isArrowKey = keyCode => keyCode === Keys.ArrowLeft || keyCode === Keys.ArrowRight || keyCode === Keys.ArrowUp || keyCode === Keys.ArrowDown;\nconst isNavigationKey = keyCode => isArrowKey(keyCode) || keyCode === Keys.PageUp || keyCode === Keys.PageDown || keyCode === Keys.Home || keyCode === Keys.End;\nconst isInput = matchesNodeName('input');\nconst isTextInput = element => element && isInput(element) && element.type.toLowerCase() === 'text';\nconst isPrintableCharacter = str => str.length === 1 && str.match(/\\S/);\n/**\n * @hidden\n */\nclass NavigationViewport {\n constructor(firstItemIndex, lastItemIndex) {\n this.firstItemIndex = firstItemIndex;\n this.lastItemIndex = lastItemIndex;\n }\n containsRow(dataRowIndex) {\n const headerRow = dataRowIndex < 0;\n return headerRow || dataRowIndex >= this.firstItemIndex && dataRowIndex <= this.lastItemIndex;\n }\n intersects(start, end) {\n return start <= this.firstItemIndex && this.lastItemIndex <= end || this.firstItemIndex <= start && start <= this.lastItemIndex || this.firstItemIndex <= end && end <= this.lastItemIndex;\n }\n}\n/**\n * @hidden\n */\nlet NavigationService = /*#__PURE__*/(() => {\n class NavigationService {\n constructor(zone, domEvents, pagerContextService, scrollRequestService, groupsService, detailsService, focusRoot, editService, cd, ctx, focusableParent) {\n this.zone = zone;\n this.domEvents = domEvents;\n this.pagerContextService = pagerContextService;\n this.scrollRequestService = scrollRequestService;\n this.groupsService = groupsService;\n this.detailsService = detailsService;\n this.focusRoot = focusRoot;\n this.editService = editService;\n this.cd = cd;\n this.ctx = ctx;\n this.focusableParent = focusableParent;\n this.cellKeydown = new EventEmitter();\n this.activeRowIndex = 0;\n this.alive = false;\n this.active = true;\n this.mode = 0 /* NavigationMode.Standby */;\n this.model = new NavigationModel();\n this.cursor = new NavigationCursor(this.model);\n this.pagerIsNavigable = false;\n this.tableIsNavigable = false;\n this.toolbarIsNavigable = false;\n this.changes = this.cursor.changes;\n }\n set metadata(value) {\n this.meta = value;\n this.cursor.metadata = value;\n }\n get metadata() {\n return this.meta;\n }\n get enabled() {\n return this.alive;\n }\n get pagerEnabled() {\n return this.alive && this.pagerIsNavigable;\n }\n get tableEnabled() {\n return this.alive && this.tableIsNavigable;\n }\n get toolbarEnabled() {\n return this.alive && this.toolbarIsNavigable;\n }\n get activeCell() {\n if (this.mode !== 0 /* NavigationMode.Standby */) {\n return this.cursor.cell;\n }\n }\n get activeRow() {\n if (this.mode !== 0 /* NavigationMode.Standby */) {\n return Object.assign({}, this.cursor.row, {\n cells: this.cursor.row.cells.toArray()\n });\n }\n }\n get activeDataRow() {\n return Math.max(0, this.activeRowIndex - this.meta.headerRows);\n }\n init(meta, navigableOptions) {\n this.setActiveSections(navigableOptions);\n this.alive = true;\n this.focusRoot.active = true;\n this.metadata = meta;\n const onStableSubscriber = (...operators) => args => this.zone.isStable ? from([true]).pipe(map(() => args)) : this.zone.onStable.pipe(take(1), map(() => args), ...operators);\n const onStable = onStableSubscriber();\n this.subs = new Subscription();\n this.subs.add(this.cursor.changes.subscribe(args => this.onCursorChanges(args)));\n this.subs.add(this.domEvents.focus.pipe(switchMap(onStable)).subscribe(args => this.navigateTo(args.target)));\n this.subs.add(this.domEvents.focusOut.pipe(filter(() => this.mode !== 0 /* NavigationMode.Standby */), switchMap(onStableSubscriber(takeUntil(this.domEvents.focus)))).subscribe(args => this.onFocusOut(args)));\n this.subs.add(this.domEvents.windowBlur.pipe(filter(() => this.mode !== 0 /* NavigationMode.Standby */)).subscribe(() => this.onWindowBlur()));\n this.subs.add(\n // Closing the editor will not always trigger focusout in Firefox.\n // To get around this, we ensure that the cell is closed after editing.\n this.editService.changes.pipe(filter(e => e.action !== 'edit' && this.mode === 2 /* NavigationMode.Content */), filter(e => e.action === 'cellClose' && !e.prevented), switchMap(onStable)).subscribe(() => this.leaveCell()));\n this.subs.add(this.pagerContextService.pageChange.subscribe(() => this.cursor.reset(0, 0)));\n this.subs.add(this.domEvents.keydown.subscribe(args => this.onKeydown(args)));\n this.subs.add(this.domEvents.keydown.pipe(filter(args => args.keyCode === Keys.Tab && this.mode === 2 /* NavigationMode.Content */), switchMapTo(this.domEvents.focusOut.pipe(takeUntil(\n // Timeout if focusOut doesn't fire very soon\n interval(0).pipe(take(1)))))).subscribe(() => this.onTabout()));\n if (this.focusableParent) {\n const element = new GridFocusableElement(this);\n this.focusableParent.registerElement(element);\n }\n this.deactivateElements();\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n this.alive = false;\n }\n registerCell(cell) {\n if (cell.logicalRowIndex !== this.pendingRowIndex) {\n const modelCell = this.model.registerCell(cell);\n if (this.virtualCell && this.cursor.activateVirtualCell(modelCell)) {\n this.virtualCell = false;\n }\n }\n }\n registerCellOnCurrentRow(cell) {\n if (cell.logicalRowIndex === this.pendingRowIndex) {\n this.model.registerCell(cell);\n }\n }\n unregisterCell(index, rowIndex, cell) {\n this.model.unregisterCell(index, rowIndex, cell);\n }\n registerRow(row) {\n this.model.registerRow(row);\n this.pendingRowIndex = row.logicalRowIndex;\n }\n updateRow(row) {\n this.model.updateRow(row);\n }\n unregisterRow(index, row) {\n this.model.unregisterRow(index, row);\n const lastRow = this.model.lastRow;\n if (lastRow && this.mode === 0 /* NavigationMode.Standby */) {\n const maxIndex = this.needsViewport() && this.viewport ? this.viewport.lastItemIndex : lastRow.index;\n if (this.activeRowIndex > maxIndex) {\n this.cursor.reset(0, 0);\n }\n }\n }\n isCellFocusable(cell) {\n return this.alive && this.active && this.mode !== 2 /* NavigationMode.Content */ && this.cursor.isActive(cell.logicalRowIndex, cell.logicalColIndex);\n }\n isCellFocused(cell) {\n return this.mode === 1 /* NavigationMode.Cursor */ && this.isCellFocusable(cell);\n }\n navigateTo(el) {\n if (!this.alive || !isDocumentAvailable()) {\n return;\n }\n const cell = targetCell(el, this.meta.gridElement.nativeElement);\n if (!cell) {\n return;\n }\n const oldMode = this.mode;\n const focusInCell = contains$1(cell.element, document.activeElement);\n const focusInActiveRowContent = this.mode === 2 /* NavigationMode.Content */ && this.activeRowIndex === cell.rowIndex && el !== cell.element;\n if (focusInCell) {\n this.mode = 2 /* NavigationMode.Content */;\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n this.activateRow();\n } else if (!focusInActiveRowContent) {\n this.mode = 1 /* NavigationMode.Cursor */;\n this.deactivateElements();\n const alreadyActive = this.cursor.isActive(cell.rowIndex, cell.colIndex);\n const isCursor = oldMode === 1 /* NavigationMode.Cursor */ && alreadyActive;\n if (!isCursor) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n }\n }\n }\n tryFocus(el) {\n this.activateElements();\n const focusable = findFocusableChild(el);\n if (focusable) {\n const cell = targetCell(focusable, this.meta.gridElement.nativeElement);\n if (cell) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n this.deactivateElements();\n this.enterCell();\n }\n focusable.focus();\n } else {\n this.deactivateElements();\n }\n return !!focusable;\n }\n needsViewport() {\n return this.meta && this.meta.isVirtual;\n }\n setViewport(firstItemIndex, lastItemIndex) {\n this.viewport = new NavigationViewport(firstItemIndex, lastItemIndex);\n if (this.meta && this.meta.isVirtual && this.activeDataRow > -1) {\n const dataRowIndex = this.activeDataRow;\n const ahead = firstItemIndex - dataRowIndex;\n const behind = dataRowIndex - lastItemIndex;\n if (ahead > 0) {\n this.cursor.reset(firstItemIndex + this.meta.headerRows);\n } else if (behind > 0) {\n this.cursor.reset(lastItemIndex - this.meta.headerRows);\n }\n }\n }\n setColumnViewport(firstItemIndex, lastItemIndex) {\n this.columnViewport = new NavigationViewport(firstItemIndex, lastItemIndex);\n if (this.meta && this.meta.isVirtual && this.activeDataRow > -1) {\n const activeColumnIndex = this.cursor.cell ? this.cursor.cell.colIndex : 0;\n const ahead = firstItemIndex - activeColumnIndex;\n const behind = activeColumnIndex - lastItemIndex;\n if (ahead > 0) {\n this.cursor.reset(undefined, firstItemIndex, false);\n } else if (behind > 0) {\n this.cursor.reset(undefined, lastItemIndex, false);\n }\n }\n }\n focusCell(rowIndex = undefined, colIndex = undefined) {\n this.mode = 1 /* NavigationMode.Cursor */;\n this.cursor.reset(rowIndex, colIndex);\n return this.activeCell;\n }\n focusCellByElement(el) {\n const cell = targetCell(el, this.meta.gridElement.nativeElement);\n if (cell) {\n return this.focusCell(cell.rowIndex, cell.colIndex);\n }\n }\n focusNextCell(wrap = true) {\n return this.focusAdjacentCell(true, wrap);\n }\n focusPrevCell(wrap = true) {\n return this.focusAdjacentCell(false, wrap);\n }\n toggle(active) {\n this.active = active;\n this.cursor.announce();\n }\n hasFocus() {\n return this.mode === 1 /* NavigationMode.Cursor */ || this.mode === 2 /* NavigationMode.Content */;\n }\n autoFocusCell(start, end) {\n return !this.meta.virtualColumns || end < this.meta.columns.lockedLeafColumns.length || this.columnViewport.intersects(start, end);\n }\n setActiveSections(navigableOptions) {\n this.pagerIsNavigable = navigableOptions.includes('pager');\n this.tableIsNavigable = navigableOptions.includes('table');\n this.toolbarIsNavigable = navigableOptions.includes('toolbar');\n }\n focusAdjacentCell(fwd, wrap) {\n this.focusCell();\n let success = fwd ? this.moveCursorFwd() : this.moveCursorBwd();\n if (wrap && !success) {\n success = fwd ? this.cursor.moveDown(1) : this.cursor.moveUp(1);\n if (success) {\n const row = this.cursor.row;\n const colIdx = fwd ? 0 : this.cursor.lastCellIndex(row);\n this.cursor.reset(row.index, colIdx);\n }\n }\n if (success) {\n return this.activeCell;\n } else {\n this.mode = 0 /* NavigationMode.Standby */;\n this.cursor.announce();\n }\n return null;\n }\n enterCell() {\n const cell = this.cursor.cell;\n if (!cell) {\n return;\n }\n const group = cell.focusGroup;\n const focusable = group && group.canFocus();\n this.mode = focusable ? 2 /* NavigationMode.Content */ : 1 /* NavigationMode.Cursor */;\n this.cursor.announce();\n if (focusable) {\n this.activateRow();\n group.focus();\n }\n }\n leaveCell() {\n const cell = this.cursor.cell;\n if (!cell) {\n return;\n }\n const group = cell.focusGroup;\n const focusable = group && group.canFocus();\n if (!focusable) {\n this.deactivateElements();\n }\n this.mode = 1 /* NavigationMode.Cursor */;\n this.cursor.announce();\n }\n activateElements() {\n this.focusRoot.activate();\n }\n deactivateElements() {\n this.focusRoot.deactivate();\n }\n activateRow() {\n this.cursor.row.cells.forEach(cell => cell.focusGroup && cell.focusGroup.activate());\n }\n moveCursorFwd() {\n return this.ctx.localization.rtl ? this.cursor.moveLeft() : this.cursor.moveRight();\n }\n moveCursorBwd() {\n return this.ctx.localization.rtl ? this.cursor.moveRight() : this.cursor.moveLeft();\n }\n onCursorKeydown(args) {\n let preventDefault = false;\n const modifier = args.ctrlKey || args.metaKey;\n const step = modifier ? 5 : 1;\n if (!this.onCellKeydown(args)) {\n return;\n }\n const row = this.cursor.row;\n switch (args.keyCode) {\n case Keys.ArrowDown:\n preventDefault = this.cursor.moveDown(step);\n break;\n case Keys.ArrowUp:\n preventDefault = this.cursor.moveUp(step);\n break;\n case Keys.ArrowRight:\n preventDefault = this.moveCursorFwd();\n break;\n case Keys.ArrowLeft:\n preventDefault = this.moveCursorBwd();\n break;\n case Keys.PageDown:\n if (this.metadata.isVirtual && this.viewport) {\n let nextItemIndex = this.meta.headerRows + this.viewport.lastItemIndex + 1;\n if (this.metadata.hasDetailTemplate) {\n nextItemIndex++;\n }\n nextItemIndex = Math.min(this.meta.maxLogicalRowIndex, nextItemIndex);\n this.cursor.reset(nextItemIndex);\n preventDefault = true;\n } else if (this.metadata.hasPager) {\n this.zone.run(() => this.pagerContextService.nextPage());\n preventDefault = true;\n }\n break;\n case Keys.PageUp:\n if (this.metadata.isVirtual && this.viewport) {\n const viewportSize = this.viewport.lastItemIndex - this.viewport.firstItemIndex;\n const firstItemIndex = this.viewport.firstItemIndex;\n const nextItemIndex = Math.max(this.meta.headerRows, firstItemIndex - viewportSize - 1);\n this.cursor.reset(nextItemIndex);\n preventDefault = true;\n } else if (this.metadata.hasPager) {\n this.zone.run(() => this.pagerContextService.prevPage());\n preventDefault = true;\n }\n break;\n case Keys.Home:\n if (modifier) {\n if (this.meta.isVirtual) {\n this.cursor.reset(this.meta.headerRows, 0, false);\n } else {\n this.cursor.reset(this.model.firstRow.index, 0, false);\n }\n } else {\n let firstColumnIndex = 0;\n if (this.meta.hasDetailTemplate && row.index < this.meta.headerRows) {\n firstColumnIndex = 1;\n }\n this.cursor.reset(row.index, firstColumnIndex, false);\n }\n preventDefault = true;\n break;\n case Keys.End:\n if (modifier) {\n if (this.meta.isVirtual) {\n let lastRowIndex = this.meta.maxLogicalRowIndex;\n if (this.meta.hasDetailTemplate) {\n lastRowIndex--;\n }\n this.cursor.reset(lastRowIndex, this.cursor.lastCellIndex(), false);\n } else {\n this.cursor.reset(this.model.lastRow.index, this.cursor.lastCellIndex(this.model.lastRow), false);\n }\n } else {\n const lastIndex = this.cursor.lastCellIndex(row);\n const cell = this.model.findCell(lastIndex, row);\n if (cell) {\n this.cursor.reset(cell.rowIndex, cell.colIndex);\n } else {\n this.cursor.reset(row.index, lastIndex);\n }\n }\n preventDefault = true;\n break;\n case Keys.Enter:\n case Keys.F2:\n {\n const groupItem = row.groupItem;\n if (groupItem) {\n this.zone.run(() => this.groupsService.toggleRow(groupItem));\n } else if (this.cursor.cell.detailExpandCell) {\n this.zone.run(() => this.detailsService.toggleRow(row.dataRowIndex, row.dataItem));\n } else {\n this.enterCell();\n if (!this.cursor.cell.focusGroup.isNavigable()) {\n preventDefault = true;\n }\n }\n break;\n }\n default:\n if (!args.ctrlKey && !args.altKey && isPrintableCharacter(args.key)) {\n this.enterCell();\n }\n }\n if (preventDefault) {\n args.preventDefault();\n }\n }\n onContentKeydown(args) {\n if (!this.onCellKeydown(args)) {\n return;\n }\n const confirm = !args.defaultPrevented && args.keyCode === Keys.Enter && isTextInput(args.srcElement);\n if (args.keyCode === Keys.Escape || args.keyCode === Keys.F2 || confirm) {\n this.leaveCell();\n this.cursor.reset();\n args.stopPropagation();\n } else if (isNavigationKey(args.keyCode) && this.cursor.cell.focusGroup.isNavigable()) {\n this.onCursorKeydown(args);\n if (args.defaultPrevented) {\n this.leaveCell();\n }\n }\n }\n onCellKeydown(args) {\n if (this.editService.isEditingCell()) {\n const confirm = args.keyCode === Keys.Enter;\n const cancel = args.keyCode === Keys.Escape;\n const navigate = isNavigationKey(args.keyCode);\n if (confirm) {\n this.editService.closeCell(args);\n } else if (cancel) {\n this.editService.closeCell(args);\n this.cd.detectChanges();\n } else if (navigate) {\n return false;\n }\n }\n this.cellKeydown.emit(args);\n return true;\n }\n onCursorChanges(args) {\n this.activeRowIndex = args.rowIndex;\n const dataRowIndex = this.activeDataRow;\n if (this.meta && this.meta.isVirtual && args.rowIndex >= this.meta.headerRows && this.viewport && !this.viewport.containsRow(dataRowIndex) && dataRowIndex > -1) {\n this.scrollRequestService.scrollTo({\n row: dataRowIndex\n });\n }\n if (this.meta.virtualColumns && args.colIndex >= this.meta.columns.lockedLeafColumns.length) {\n const cell = this.activeCell;\n const {\n start,\n end\n } = this.model.cellRange(cell);\n if (!cell) {\n this.virtualCell = true;\n }\n if (!cell && this.mode !== 0 /* NavigationMode.Standby */ || cell && !this.columnViewport.intersects(start, end)) {\n this.scrollRequestService.scrollTo({\n column: args.colIndex - (this.metadata.hasDetailTemplate ? 1 : 0)\n });\n }\n }\n }\n onFocusOut(args) {\n if (isVisible(args.target)) {\n this.mode = 0 /* NavigationMode.Standby */;\n } else {\n // Focused target is no longer visible,\n // reset to cursor mode and recapture focus.\n this.mode = 1 /* NavigationMode.Cursor */;\n }\n this.deactivateElements();\n this.cursor.announce();\n }\n onWindowBlur() {\n this.mode = 0 /* NavigationMode.Standby */;\n this.deactivateElements();\n this.cursor.announce();\n }\n onKeydown(args) {\n if (this.mode === 1 /* NavigationMode.Cursor */) {\n this.onCursorKeydown(args);\n } else if (this.mode === 2 /* NavigationMode.Content */) {\n this.onContentKeydown(args);\n }\n }\n onTabout() {\n // Tabbed out of the last focusable content element\n // reset to cursor mode and recapture focus.\n if (this.cursor.cell.focusGroup.isNavigable()) {\n // Unless the cell has a single focusable element,\n // otherwise we'd return to Content mode and enter an endless loop\n return;\n }\n this.leaveCell();\n this.cursor.reset();\n }\n }\n NavigationService.ɵfac = function NavigationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NavigationService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DomEventsService), i0.ɵɵinject(PagerContextService), i0.ɵɵinject(ScrollRequestService), i0.ɵɵinject(GroupsService), i0.ɵɵinject(DetailsService), i0.ɵɵinject(FocusRoot), i0.ɵɵinject(EditService), i0.ɵɵinject(i0.ChangeDetectorRef), i0.ɵɵinject(ContextService), i0.ɵɵinject(FocusableDirective, 8));\n };\n NavigationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NavigationService,\n factory: NavigationService.ɵfac\n });\n return NavigationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst preventOnDblClick$1 = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\nconst hasClass = className => el => new RegExp(`(^| )${className}( |$)`).test(el.className);\nconst isDeleteButton = or(hasClass('k-i-x'), hasClass('k-svg-i-x'), hasClass('k-icon-button'));\nconst isSortIcon = or(hasClass('k-i-sort-asc-small'), hasClass('k-i-sort-desc-small'), hasClass('k-svg-i-sort-asc-small'), hasClass('k-svg-i-sort-desc-small'));\nconst skipButtons = and(not(isDeleteButton), not(isSortIcon), not(isFocusableWithTabKey), not(matchesNodeName('label')));\nconst elementUnderCursor = ({\n clientX,\n clientY\n}) => isDocumentAvailable() && document.elementFromPoint(clientX, clientY);\nconst hideThenShow = (element, cont) => {\n element.style.display = 'none';\n const result = cont();\n element.style.display = 'block';\n return result;\n};\n/**\n * @hidden\n */\nlet DraggableColumnDirective = /*#__PURE__*/(() => {\n class DraggableColumnDirective {\n constructor(draggable, element, zone, service, hint, cue, nav, renderer) {\n this.draggable = draggable;\n this.element = element;\n this.zone = zone;\n this.service = service;\n this.hint = hint;\n this.cue = cue;\n this.nav = nav;\n this.renderer = renderer;\n this.context = {};\n this.drag = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n set enableDrag(enabled) {\n this.enabled = enabled;\n this.updateTouchAction();\n }\n get hostClass() {\n return this.enabled;\n }\n ngOnInit() {\n this.subscriptions.add(this.zone.runOutsideAngular(() => this.draggable.kendoPress.pipe(filter(_ => this.enabled), filter(({\n originalEvent: {\n target\n }\n }) => target === this.element.nativeElement || skipButtons(target)), tap(e => {\n const originalEvent = e.originalEvent;\n if (!e.isTouch) {\n originalEvent.preventDefault();\n }\n this.nav.navigateTo(originalEvent.target);\n }), switchMap(preventOnDblClick$1(this.draggable.kendoRelease)), tap(_ => {\n this.hint.create(this.context.hint);\n this.cue.create();\n }), switchMap(down => this.draggable.kendoDrag.pipe(tap(e => {\n if (e.isTouch) {\n e.originalEvent.preventDefault();\n }\n }), tap(this.hint.attach()), tap(this.cue.attach()), takeUntil(this.draggable.kendoRelease), map(move => ({\n move,\n down\n })))), tap(this.performDrag.bind(this)), switchMapTo(this.draggable.kendoRelease)).subscribe(this.drop.bind(this))));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n drop(upEvent) {\n this.hint.remove();\n this.cue.remove();\n this.service.notifyDrop(this, upEvent);\n }\n performDrag({\n move\n }) {\n this.hint.move(move);\n const cursorElement = this.elementUnderCursor(move);\n if (cursorElement) {\n this.service.notifyDrag(this, cursorElement, move);\n }\n this.drag.emit({\n draggable: this,\n mouseEvent: move\n });\n }\n elementUnderCursor(mouseEvent) {\n this.hint.hide();\n let target = elementUnderCursor(mouseEvent);\n if (target && /k-grouping-dropclue/.test(target.className)) {\n target = hideThenShow(target, elementUnderCursor.bind(this, mouseEvent));\n }\n this.hint.show();\n return target;\n }\n updateTouchAction() {\n if (!this.element) {\n return;\n }\n // eslint-disable-next-line no-unused-expressions\n this.enabled ? this.renderer.addClass(this.element.nativeElement, 'k-touch-action-none') : this.renderer.removeClass(this.element.nativeElement, 'k-touch-action-none');\n }\n }\n DraggableColumnDirective.ɵfac = function DraggableColumnDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DraggableColumnDirective)(i0.ɵɵdirectiveInject(i9.DraggableDirective, 1), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(DragAndDropService), i0.ɵɵdirectiveInject(DragHintService), i0.ɵɵdirectiveInject(DropCueService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n DraggableColumnDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DraggableColumnDirective,\n selectors: [[\"\", \"kendoDraggableColumn\", \"\"]],\n hostVars: 2,\n hostBindings: function DraggableColumnDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grid-draggable-header\", ctx.hostClass);\n }\n },\n inputs: {\n context: \"context\",\n enableDrag: \"enableDrag\"\n },\n outputs: {\n drag: \"drag\"\n },\n standalone: true\n });\n return DraggableColumnDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DropTargetDirective = /*#__PURE__*/(() => {\n class DropTargetDirective {\n constructor(element, service) {\n this.element = element;\n this.service = service;\n this.context = {};\n this.enter = new EventEmitter();\n this.leave = new EventEmitter();\n this.drop = new EventEmitter();\n this.subscriptions = new Subscription();\n }\n ngOnInit() {\n this.service.add(this);\n const changes = this.service.changes.pipe(filter(({\n target\n }) => target === this));\n this.subscriptions.add(changes.pipe(filter(({\n type\n }) => type === 'leave')).subscribe(e => {\n this.leave.next(this.eventArgs(e));\n }));\n this.subscriptions.add(changes.pipe(filter(({\n type\n }) => type === 'enter')).subscribe(e => {\n this.enter.next(this.eventArgs(e));\n }));\n this.subscriptions.add(changes.pipe(filter(({\n type\n }) => type === 'drop')).subscribe(e => {\n this.drop.next(this.eventArgs(e));\n }));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n eventArgs(e) {\n return {\n target: this,\n mouseEvent: e.mouseEvent,\n draggable: e.draggable\n };\n }\n }\n DropTargetDirective.ɵfac = function DropTargetDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DropTargetDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DragAndDropService));\n };\n DropTargetDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DropTargetDirective,\n selectors: [[\"\", \"kendoDropTarget\", \"\"]],\n inputs: {\n context: \"context\"\n },\n outputs: {\n enter: \"enter\",\n leave: \"leave\",\n drop: \"drop\"\n },\n standalone: true\n });\n return DropTargetDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column cell template of the Grid.\n * Helps to customize the content of the cells. To define the cell template, nest an `` tag with the\n * `kendoGridCellTemplate` directive inside a `` tag [see example](slug:templates_columns_grid#toc-cell-template).\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `columnIndex`—The current column index. Use it as an alias for a template variable by utilizing the `let-columnIndex=\"columnIndex\"` syntax.\n * - `rowIndex`—The current data row index. Use it as an alias for a template variable by utilizing the `let-rowIndex=\"rowIndex\"` syntax.\n * - `dataItem`—The current data item. Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax—for example, `let-dataItem`.\n * - `column`—The current column instance. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n *\n * @example\n * ```html\n * \n * \n * \n * Data Row: {{rowIndex}}\n * \n * \n * \n * ```\n */\nlet CellTemplateDirective = /*#__PURE__*/(() => {\n class CellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n CellTemplateDirective.ɵfac = function CellTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CellTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n CellTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CellTemplateDirective,\n selectors: [[\"\", \"kendoGridCellTemplate\", \"\"]],\n standalone: true\n });\n return CellTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the group-header cell template of the Grid which helps to customize the content of the group header item.\n * To define the group header template, nest an `` tag with the `kendoGridGroupHeaderTemplate`\n * directive inside ``. ([See example](slug:grouping_grid_templates#toc-header-template)).\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `group`—The current group item.\n * - `field`—The name of the field by which data is grouped.\n * - `value`—The current group value.\n * - `aggregates`—All aggregate values for the current group.\n * - `index`—The index of the current group.\n * - `expanded`—A boolean value indicating if the group is currently expanded.\n *\n * @example\n * ```html\n * \n * \n * \n * {{field}}: {{value}}\n * \n * \n * \n * ```\n */\nlet GroupHeaderTemplateDirective = /*#__PURE__*/(() => {\n class GroupHeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupHeaderTemplateDirective.ɵfac = function GroupHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n GroupHeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupHeaderTemplateDirective,\n selectors: [[\"\", \"kendoGridGroupHeaderTemplate\", \"\"]],\n standalone: true\n });\n return GroupHeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the group-header column template of the Grid which helps to customize the content of the group headers.\n * To define the group header template, nest an `` tag with the `kendoGridGroupHeaderColumnTemplate`\n * directive inside ``. ([See example](slug:grouping_grid_templates#toc-header-column-template)).\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `group`—The current group item.\n * - `field`—The name of the field by which data is grouped.\n * - `value`—The current group value.\n * - `aggregates`—All aggregate values for the current group.\n *\n * @example\n * ```html\n * \n * \n * \n * Count: {{ aggregates.Discontinued.count }}\n * \n * \n * \n * ```\n */\nlet GroupHeaderColumnTemplateDirective = /*#__PURE__*/(() => {\n class GroupHeaderColumnTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupHeaderColumnTemplateDirective.ɵfac = function GroupHeaderColumnTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupHeaderColumnTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n GroupHeaderColumnTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupHeaderColumnTemplateDirective,\n selectors: [[\"\", \"kendoGridGroupHeaderColumnTemplate\", \"\"]],\n standalone: true\n });\n return GroupHeaderColumnTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column edit-cell template of the Grid ([see example](slug:custom_reactive_editing_grid#toc-setting-up-custom-inputs)).\n * Helps to customize the content of the edited cells. To define the cell template, nest an ``\n * tag with the `kendoGridEditTemplate` directive inside a `` tag.\n *\n * The template context is set to the current form group and the following additional fields are passed:\n * - `formGroup`—The current [FormGroup](link:site.data.urls.angular['formgroupapi']). Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax, for example, `let-formGroup`. If you use the Grid inside [Template-Driven Forms](link:site.data.urls.angular['forms']), it will be `undefined`.\n * - `rowIndex`—The current data row index. If inside a new item row, `rowIndex` is `-1`. Use it as an alias for a template variable by utilizing the `let-rowIndex=\"rowIndex\"` syntax.\n * - `dataItem`—The current data item. Use it as an alias for a template variable by utilizing the `let-dataItem=\"dataItem\"` syntax.\n * - `column`—The current column instance. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n * - `isNew`—The state of the current item. Use it as an alias for a template variable by utilizing the `let-isNew=\"isNew\"` syntax.\n */\nlet EditTemplateDirective = /*#__PURE__*/(() => {\n class EditTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n EditTemplateDirective.ɵfac = function EditTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EditTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n EditTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: EditTemplateDirective,\n selectors: [[\"\", \"kendoGridEditTemplate\", \"\"]],\n standalone: true\n });\n return EditTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column group footer cell template of the Grid which helps to customize the group footer cell for the column.\n * To define the group footer template, nest an `` tag with the `kendoGridGroupFooterTemplate` directive\n * inside ``.\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `column`—Defines an instance of the `ColumnComponent` option.\n * - `field`—The current column field name.\n * - `group`—The current group data item.\n * - `aggregates`—All aggregate values for the current group.\n *\n * @example\n * ```html\n * \n * \n * \n * Count: {{aggregates[field].count}}\n * \n * \n * \n * ```\n */\nlet GroupFooterTemplateDirective = /*#__PURE__*/(() => {\n class GroupFooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n GroupFooterTemplateDirective.ɵfac = function GroupFooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupFooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n GroupFooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupFooterTemplateDirective,\n selectors: [[\"\", \"kendoGridGroupFooterTemplate\", \"\"]],\n standalone: true\n });\n return GroupFooterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column header cell template of the Grid\n * ([more information and example]({% slug templates_columns_grid %}#toc-header-template)).\n * Helps to customize the table header cell for the column.\n * To define a header template, nest an `` tag with the\n * `kendoGridHeaderTemplate` directive inside the `` tag.\n *\n * The template context is set to the current column and then the following additional fields are passed:\n * * `column`—Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.\n * * `columnIndex`—Defines the current column index.\n *\n * @example\n * ```html\n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * ```\n */\nlet HeaderTemplateDirective = /*#__PURE__*/(() => {\n class HeaderTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n HeaderTemplateDirective.ɵfac = function HeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n HeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: HeaderTemplateDirective,\n selectors: [[\"\", \"kendoGridHeaderTemplate\", \"\"]],\n standalone: true\n });\n return HeaderTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column footer cell template of the Grid\n * ([more information and example]({% slug templates_columns_grid %}#toc-footer-template)).\n * Helps to customize the table footer cell for the column.\n * To define a footer template, nest an `` tag with the\n * [kendoGridFooterTemplate]({% slug api_grid_footertemplatedirective %}) directive inside the `` tag.\n *\n * The template context is set to the current column and the following additional fields are passed:\n * * `column`—Defines an instance of the [ColumnComponent]({% slug api_grid_columncomponent %}) option.\n * * `columnIndex`—Defines the current column index.\n *\n * For more information on how to display aggregates in the footer of the Grid,\n * refer to the article on [aggregates]({% slug groupable_grid_with_aggregates %}).\n *\n * @example\n * ```html\n * \n * \n * \n * {{column.field}}({{columnIndex}})\n * \n * \n * \n * ```\n */\nlet FooterTemplateDirective = /*#__PURE__*/(() => {\n class FooterTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n FooterTemplateDirective.ɵfac = function FooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n FooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FooterTemplateDirective,\n selectors: [[\"\", \"kendoGridFooterTemplate\", \"\"]],\n standalone: true\n });\n return FooterTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the template for the column menu in the Grid. Provides an option for\n * customizing the content of the column menu for all or for specific columns.\n * To define the content template, nest an `` tag with the\n * `kendoGridColumnMenuTemplate` directive inside the `` or the `` component.\n *\n * The template context is passes through the following fields:\n * - `service`—Represents the [ColumnMenuService]({% slug api_grid_columnmenuservice %}).\n * - `column`—Represents the Grid column.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuTemplateDirective = /*#__PURE__*/(() => {\n class ColumnMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n ColumnMenuTemplateDirective.ɵfac = function ColumnMenuTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n ColumnMenuTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColumnMenuTemplateDirective,\n selectors: [[\"\", \"kendoGridColumnMenuTemplate\", \"\"]],\n standalone: true\n });\n return ColumnMenuTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Incremented each time the service is instantiated.\nlet sequence = 0;\n/**\n * @hidden\n */\nlet IdService = /*#__PURE__*/(() => {\n class IdService {\n constructor() {\n this.prefix = `k-grid${sequence++}`;\n }\n gridId() {\n return this.prefix;\n }\n cellId(rowIndex, colIndex) {\n return `${this.prefix}-r${rowIndex}c${colIndex}`;\n }\n selectionCheckboxId(itemIndex) {\n return `${this.prefix}-checkbox${itemIndex}`;\n }\n selectAllCheckboxId() {\n return `${this.prefix}-select-all`;\n }\n }\n IdService.ɵfac = function IdService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IdService)();\n };\n IdService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IdService,\n factory: IdService.ɵfac\n });\n return IdService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst ColumnMenuErrorMessages = {\n autoSizeColumn: `The auto size column does not work with enabled virtual columns.\n See https://www.telerik.com/kendo-angular-ui/components/grid/accessories/column-menu/#toc-autosize-column-item.`,\n autoSizeAllColumns: `The auto size all columns does not work with enabled virtual columns.\n See https://www.telerik.com/kendo-angular-ui/components/grid/accessories/column-menu/#toc-autosize-all-columns-item.`,\n serviceInput: `The service input of the predefined column menu components is mandatory.\n See https://www.telerik.com/kendo-angular-ui/components/grid/accessories/column-menu/#toc-customizing-the-content.`\n};\n/**\n * @hidden\n */\nconst ClipboardErrorMessages = {\n activeCellNavigable: `Grid must be navigable to use \"activeCell\" as clipboard target type.\n See https://www.telerik.com/kendo-angular-ui/components/grid/accessories/clipboard/#toc-active-cell.`,\n selectionSelectable: `Grid must be selectable to use \"selection\" as clipboard target type.\n See https://www.telerik.com/kendo-angular-ui/components/grid/accessories/clipboard/#toc-current-selection.`\n};\n/**\n * @hidden\n */\nconst ColumnConfigurationErrorMessages = {\n fieldName: field => `Grid column field name '${field}' does not look like a valid JavaScript identifier.\n Identifiers can contain only alphanumeric characters (including \"$\" or \"_\"), and may not start with a digit.\n Please use only valid identifier names to ensure error-free operation.`,\n width: (value, parsedValue) => `Expected numeric value for column width, but got a string \"${value}\". Treating as ${parsedValue}px.`,\n invalidColumn: column => `Invalid column ${column}.`,\n requiredWidth: columnType => `${columnType} columns feature requires all columns to have set width.\n See https://www.telerik.com/kendo-angular-ui/components/grid/columns/${columnType.toLowerCase()}.`,\n requiredScroll: columnType => `${columnType} columns are only supported when scrolling is enabled.\n See https://www.telerik.com/kendo-angular-ui/components/grid/columns/${columnType.toLowerCase()}/`,\n groupColumnContent: 'ColumnGroupComponent should contain ColumnComponent or CommandColumnComponent.',\n lockedParent: 'Locked child columns require their parent columns to be locked.',\n columnNested: 'Columns can be nested only inside ColumnGroupComponent',\n nestedInside: (nestedColumnNameType, parentColumnType) => `${nestedColumnNameType} cannot be nested inside ${parentColumnType}.`\n};\n/**\n * @hidden\n */\nconst GridConfigurationErrorMessages = {\n functionType: (propName, fn) => `${propName} must be a function, but received ${JSON.stringify(fn)}.`,\n incompatibleFeatures: (feat1Name, feat2Name) => `'Having both ${feat1Name} and ${feat2Name} is not supported.'`,\n nonLockedColumnPresent: 'There should be at least one non-locked column. See https://www.telerik.com/kendo-angular-ui/components/grid/columns/locked/#toc-known-limitations',\n rowHeightVirtual: `The virtual scrolling functionality requires setting the rowHeight (and detailRowHeight when there are detail rows).\n Row height and detail row height settings should be set only when virtual scrolling mode is enabled.\n See https://www.telerik.com/kendo-angular-ui/components/grid/scroll-modes/virtual/#toc-getting-started.`,\n focusNavigable: 'The Grid should be configured as navigable to control focus. See https://www.telerik.com/kendo-angular-ui/components/grid/keyboard-navigation/.',\n expandCollapseMethods: (expandMethodName, collapseMethodName, directiveName, callbackName) => `The ${expandMethodName} and ${collapseMethodName} methods should not be called\n when using the ${directiveName} directive or the ${callbackName} callback.\n These methods are provided only for backwards compatibility with legacy versions.`,\n requiredEditService: `The default edit service of the editing directives works only when binding to plain array.\n Please provide an editService. See https://www.telerik.com/kendo-angular-ui/components/grid/editing/editing-directives/#toc-custom-editing-service.`,\n requiredModule: (exportedType, moduleName, componentSelector) => `Creating ${exportedType} requires including the ${moduleName} and adding the ${componentSelector} component.`,\n groupBindingDirectives: `Using the \"kendoGridGroupBinding\" directive in combination with the \"kendoGridExpandGroupBy\" directive\n or the \"isGroupExpanded\" callback is not supported. To use grouping with the \"kendoGridGroupBinding\" directive,\n set the Grid \"groupable\" property to \"true\".`,\n unsupportedMethod: (methodName, suggestedMethodName) => `Using ${methodName} in this context is not supported. Use ${suggestedMethodName} instead.`\n};\n\n/**\n * @hidden\n */\nconst isSpanColumn = column => column.isSpanColumn;\n/**\n * @hidden\n */\nconst isCheckboxColumn = column => column.isCheckboxColumn;\n/**\n * @hidden\n */\nconst isRowReorderColumn = column => column.isRowReorderColumn;\nconst isColumnContainer = column => column.isColumnGroup || isSpanColumn(column);\n/**\n * The base class for the column components of the Grid.\n */\nlet ColumnBase = /*#__PURE__*/(() => {\n class ColumnBase {\n /**\n * @hidden\n */\n constructor(parent, idService) {\n this.parent = parent;\n /**\n * @hidden\n */\n this.matchesMedia = true;\n /**\n * The column index after reordering. The `orderIndex` is a read-only property. Setting this field does not affect column order.\n *\n * @default 0\n */\n this.orderIndex = 0;\n /**\n * @hidden\n */\n this.isColumnGroup = false;\n /**\n * @hidden\n */\n this.isSpanColumn = false;\n /**\n * Indicates whether the column is resizable.\n * @default true\n */\n this.resizable = true;\n /**\n * Indicates whether the column is reorderable.\n * @default true\n */\n this.reorderable = true;\n /**\n * The width (in pixels) below which the user is not able to resize the column by using the UI ([see example]({% slug resizing_columns_grid %}#toc-limiting-the-resizing)).\n * The `autoFitColumn` and `autoFitColumns` methods have higher priority.\n * @default 10\n */\n this.minResizableWidth = 10;\n this._locked = false;\n /**\n * Determines whether the column will be always visible when scrolling the Grid horizontally.\n *\n * @default false\n */\n this.sticky = false;\n /**\n * Specifies if the column can be locked or unlocked from the column menu or by reordering the columns.\n * @default true\n */\n this.lockable = true;\n /**\n * Specifies if the column can be stuck or unstuck from the column menu.\n * @default true\n */\n this.stickable = true;\n /**\n * Specifies if the column menu will be shown for the column.\n * @default true\n */\n this.columnMenu = true;\n /**\n * Specifies if the column will be included in the column-chooser list.\n * @default true\n */\n this.includeInChooser = true;\n /**\n * Allows setting the `role` attribute for the table cells (excluding the footer and header ones) of the column.\n * @default \"gridcell\"\n */\n this.tableCellsRole = 'gridcell';\n /**\n * @hidden\n */\n this.headerTemplates = new QueryList();\n /**\n * @hidden\n */\n this.columnMenuTemplates = new QueryList();\n this.idService = idService;\n if (parent && idService && parent.idService.gridId() === idService.gridId() && !isColumnContainer(parent)) {\n throw new Error(ColumnConfigurationErrorMessages.columnNested);\n }\n }\n /**\n * @hidden\n */\n set leafIndex(value) {\n this._leafIndex = value;\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this._leafIndex;\n }\n /**\n * The width of the column (in pixels).\n */\n set width(value) {\n if (typeof value === 'string') {\n const parsedValue = this._width = parseInt(value, 10);\n if (isDevMode()) {\n console.warn(ColumnConfigurationErrorMessages.width(value, parsedValue));\n }\n } else {\n this._width = value;\n }\n }\n get width() {\n return this._width;\n }\n /**\n * Toggles the locked (frozen) state of the columns ([more information and example]({% slug locked_columns_grid %})).\n *\n * @default false\n *\n */\n set locked(value) {\n this._locked = value;\n }\n get locked() {\n return this._locked;\n }\n /**\n * @hidden\n */\n get level() {\n if (this.parent && isSpanColumn(this.parent)) {\n return this.parent.level;\n }\n return this.parent ? this.parent.level + 1 : 0;\n }\n /**\n * @hidden\n */\n get isLocked() {\n return this.parent ? this.parent.isLocked : this.locked;\n }\n /**\n * @hidden\n */\n get colspan() {\n return 1;\n }\n /**\n * @hidden\n */\n rowspan(totalColumnLevels) {\n return this.level < totalColumnLevels ? totalColumnLevels - this.level + 1 : 1;\n }\n /**\n * @hidden\n */\n get headerTemplateRef() {\n const template = this.headerTemplates.first;\n return template ? template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get footerTemplateRef() {\n return this.footerTemplate ? this.footerTemplate.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get columnMenuTemplateRef() {\n const template = this.columnMenuTemplates.first;\n return template ? template.templateRef : null;\n }\n /**\n * @hidden\n */\n get displayTitle() {\n return this.title;\n }\n /**\n * @hidden\n */\n get isVisible() {\n return !this.hidden && this.matchesMedia;\n }\n }\n ColumnBase.ɵfac = function ColumnBase_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnBase)(i0.ɵɵdirectiveInject(ColumnBase), i0.ɵɵdirectiveInject(IdService));\n };\n ColumnBase.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnBase,\n selectors: [[\"kendo-grid-column-base\"]],\n contentQueries: function ColumnBase_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, FooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, HeaderTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, ColumnMenuTemplateDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplates = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnMenuTemplates = _t);\n }\n },\n inputs: {\n resizable: \"resizable\",\n reorderable: \"reorderable\",\n minResizableWidth: \"minResizableWidth\",\n maxResizableWidth: \"maxResizableWidth\",\n title: \"title\",\n width: \"width\",\n autoSize: \"autoSize\",\n locked: \"locked\",\n sticky: \"sticky\",\n hidden: \"hidden\",\n media: \"media\",\n lockable: \"lockable\",\n stickable: \"stickable\",\n columnMenu: \"columnMenu\",\n includeInChooser: \"includeInChooser\",\n tableCellsRole: \"tableCellsRole\",\n style: \"style\",\n headerStyle: \"headerStyle\",\n filterStyle: \"filterStyle\",\n footerStyle: \"footerStyle\",\n cssClass: [0, \"class\", \"cssClass\"],\n headerClass: \"headerClass\",\n filterClass: \"filterClass\",\n footerClass: \"footerClass\"\n },\n decls: 0,\n vars: 0,\n template: function ColumnBase_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ColumnBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the filter-cell template.\n * Helps to customize the content of the filter cell. To define the filter cell template, nest an `` tag with the\n * `kendoGridFilterCellTemplate` directive inside a `` tag ([see example]({% slug filter_row %}#toc-custom-filters)).\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `column`—Defines an instance of the [`ColumnComponent`]({% slug api_grid_columncomponent %}) option. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n * - `filter`—The provided filter descriptors. Use it as an alias for a template variable by utilizing the `let-filter=\"filter\"` syntax.\n *\n * ```html\n * \n * \n * ...\n * \n * ...\n * \n * ```\n */\nlet FilterCellTemplateDirective = /*#__PURE__*/(() => {\n class FilterCellTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n FilterCellTemplateDirective.ɵfac = function FilterCellTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterCellTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n FilterCellTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterCellTemplateDirective,\n selectors: [[\"\", \"kendoGridFilterCellTemplate\", \"\"]],\n standalone: true\n });\n return FilterCellTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the filter-menu template.\n * Helps to customize the content of the filter menu. To define the filter menu template, nest an `` tag with the\n * `kendoGridFilterMenuTemplate` directive inside a `` tag\n * ([see example]({% slug filter_menu %}#toc-custom-filters)).\n *\n * The template context is set to the current data item and the following additional fields are passed:\n * - `column`—Defines an instance of the [`ColumnComponent`]({% slug api_grid_columncomponent %}) option. Use it as an alias for a template variable by utilizing the `let-column=\"column\"` syntax.\n * - `filter`—The provided filter descriptors. Use it as an alias for a template variable by utilizing the `let-filter=\"filter\"` syntax.\n * - `filterService`—Represents the [`FilterService`]({% slug api_grid_filterservice %}). Use it as an alias for a template variable by utilizing the `let-filterService=\"filterService\"` syntax.\n *\n * ```html\n * \n * \n * ...\n * \n * \n * ```\n */\nlet FilterMenuTemplateDirective = /*#__PURE__*/(() => {\n class FilterMenuTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n FilterMenuTemplateDirective.ɵfac = function FilterMenuTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterMenuTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n FilterMenuTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterMenuTemplateDirective,\n selectors: [[\"\", \"kendoGridFilterMenuTemplate\", \"\"]],\n standalone: true\n });\n return FilterMenuTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nfunction isColumnComponent(column) {\n return isPresent(column.field);\n}\n/**\n * Represents the column of the Grid. [See example](slug:columns_config#toc-using-the-column-component)\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnComponent = /*#__PURE__*/(() => {\n class ColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n /**\n * Allows the user to click the column headers and emits the `sortChange` event. [See example](slug:sorting_grid).\n *\n * @default true\n */\n this.sortable = true;\n /**\n * Determines if the column can be dragged to the group panel.\n * If set to `false`, you can group the columns by the column field by using the API of the Grid.\n *\n * @default true\n */\n this.groupable = true;\n /**\n * Defines the editor type. [See example](slug:inline_editing_grid#toc-using-reactive-forms).\n * Used when the column enters the edit mode.\n *\n * @default 'text'\n */\n this.editor = 'text';\n /**\n * Defines the filter type that is displayed inside the filter row. [See example](slug:filtering_grid#toc-filter-data-types).\n *\n * @default 'text'\n */\n this.filter = 'text';\n /**\n * Defines if a filter UI will be displayed for this column. [See example](slug:filtering_grid).\n *\n * @default true\n */\n this.filterable = true;\n /**\n * Defines whether the column is editable. [See example](slug:make_fields_uneditable_grid).\n *\n * @default true\n */\n this.editable = true;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n get groupHeaderTemplateRef() {\n return this.groupHeaderTemplate ? this.groupHeaderTemplate.templateRef : undefined;\n }\n get groupHeaderColumnTemplateRef() {\n return this.groupHeaderColumnTemplate ? this.groupHeaderColumnTemplate.templateRef : undefined;\n }\n get groupFooterTemplateRef() {\n return this.groupFooterTemplate ? this.groupFooterTemplate.templateRef : undefined;\n }\n get editTemplateRef() {\n return this.editTemplate ? this.editTemplate.templateRef : undefined;\n }\n get filterCellTemplateRef() {\n return this.filterCellTemplate ? this.filterCellTemplate.templateRef : undefined;\n }\n get filterMenuTemplateRef() {\n return this.filterMenuTemplate ? this.filterMenuTemplate.templateRef : undefined;\n }\n get displayTitle() {\n return this.title === undefined ? this.field : this.title;\n }\n }\n ColumnComponent.ɵfac = function ColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13), i0.ɵɵdirectiveInject(IdService, 8));\n };\n ColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnComponent,\n selectors: [[\"kendo-grid-column\"]],\n contentQueries: function ColumnComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupHeaderTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupHeaderColumnTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, GroupFooterTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, EditTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FilterCellTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, FilterMenuTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupHeaderTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupHeaderColumnTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupFooterTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterCellTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterMenuTemplate = _t.first);\n }\n },\n inputs: {\n field: \"field\",\n format: \"format\",\n sortable: \"sortable\",\n groupable: \"groupable\",\n editor: \"editor\",\n filter: \"filter\",\n filterable: \"filterable\",\n editable: \"editable\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ColumnComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nfunction isSpanColumnComponent(column) {\n return column.isSpanColumn;\n}\n/**\n * Represents a column which can be spanned over multiple data cells while the individual\n * header and footer cells are retained ([see example]({% slug spanned_columns_grid %})).\n * Enables you to achieve more flexible layout while keeping the built-in UI element for\n * [sorting]({% slug sorting_grid %}), [filtering]({% slug filtering_grid %}), and\n * [grouping]({% slug grouping_grid %}). Wrap the columns that will be\n * merged inside the `` tag.\n *\n * ```html\n * \n * \n * \n * \n *
{{ dataItem.field1 }}
\n *

{{ dataItem.field2 }}

\n *
\n *
\n * ```\n */\nlet SpanColumnComponent = /*#__PURE__*/(() => {\n class SpanColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n /*\n * @hidden\n */\n this.isSpanColumn = true;\n this.template = new QueryList();\n this.editTemplate = new QueryList();\n /**\n * @hidden\n */\n this.childColumns = new QueryList();\n /**\n * @hidden\n */\n this.includeInChooser = false;\n this._editable = true;\n if (parent && parent.isSpanColumn) {\n throw new Error(ColumnConfigurationErrorMessages.nestedInside('SpanColumnComponent', 'SpanColumnComponent'));\n }\n }\n /**\n * Defines whether the edit template of the column will be rendered.\n * To enable the editing functionality for a spanned column, set an edit template for it ([see example](slug:custom_reactive_editing_grid)).\n * @default false\n */\n set editable(value) {\n this._editable = value;\n }\n get editable() {\n return isPresent(this.editTemplateRef) && this._editable;\n }\n /**\n * @hidden\n * added for backwards compitability\n */\n set width(_value) {}\n get width() {\n return this.childColumns.reduce((total, column) => total + column.width, 0);\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this.childColumns.first.leafIndex;\n }\n /**\n * @hidden\n */\n get templateRef() {\n const template = this.template.first;\n return template ? template.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get editTemplateRef() {\n const editTemplate = this.editTemplate.first;\n return editTemplate ? editTemplate.templateRef : undefined;\n }\n /**\n * @hidden\n */\n get colspan() {\n return this.childColumns.filter(c => c.isVisible).length;\n }\n /**\n * Toggles the locked (frozen) state of the columns ([see example](slug:locked_columns_grid)).\n * @default false\n */\n set locked(value) {\n this._locked = value;\n }\n get locked() {\n return this._locked || this.childColumns.some(c => c.locked);\n }\n get childrenArray() {\n return this.childColumns.toArray();\n }\n get hasChildren() {\n return this.childColumns.length > 0;\n }\n }\n SpanColumnComponent.ɵfac = function SpanColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SpanColumnComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13), i0.ɵɵdirectiveInject(IdService, 8));\n };\n SpanColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SpanColumnComponent,\n selectors: [[\"kendo-grid-span-column\"]],\n contentQueries: function SpanColumnComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, EditTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, ColumnComponent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.editTemplate = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.childColumns = _t);\n }\n },\n inputs: {\n editable: \"editable\",\n locked: \"locked\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => SpanColumnComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function SpanColumnComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return SpanColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst expandColumns = columns => columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ? column.childrenArray : [column]), []);\n/**\n * @hidden\n */\nconst expandColumnsWithSpan = columns => columns.reduce((acc, column) => acc.concat(isSpanColumnComponent(column) ? [column].concat(column.childrenArray) : [column]), []);\n/**\n * @hidden\n */\nconst columnsToRender = columns => expandColumns(columns).filter(x => x.isVisible);\nconst sumProp = prop => array => (array || []).reduce((prev, curr) => prev + (curr[prop] || 0), 0);\n/**\n * @hidden\n */\nconst sumColumnWidths = sumProp('width');\n/**\n * @hidden\n */\nconst columnsSpan = sumProp('colspan');\nconst validField = new RegExp(`^[$A-Z\\_a-z][$A-Z\\_a-z0-9\\\\.]*$`);\n/**\n * @hidden\n */\nconst isValidFieldName = fieldName => !isNullOrEmptyString(fieldName) && validField.test(fieldName) && fieldName[0] !== \".\" && fieldName[fieldName.length - 1] !== \".\";\n/**\n * @hidden\n */\nconst children = column => column.children.filter(child => child !== column);\n/**\n * @hidden\n */\nconst leafColumns = columns => {\n return columns.reduce((acc, column) => {\n if (column.isColumnGroup) {\n acc = acc.concat(leafColumns(children(column)));\n } else if (column.isSpanColumn) {\n acc = acc.concat(column.childrenArray);\n } else {\n acc.push(column);\n }\n return acc;\n }, []).filter(x => x.isVisible);\n};\n/**\n * @hidden\n */\nconst someLeafColumn = (callback, ...columns) => leafColumns(columns).some(callback);\n/**\n * @hidden\n */\nconst resizableColumns = columns => columns.filter(column => isTruthy(column.resizable) && column.isVisible);\n/**\n * @hidden\n */\nconst sortColumns = columns => orderBy(columns, [{\n field: 'orderIndex',\n dir: 'asc'\n}]);\n/**\n * @hidden\n */\nconst isInSpanColumn$1 = column => isTruthy(column.parent) && isSpanColumnComponent(column.parent);\n\n/**\n * @hidden\n */\nfunction isColumnGroupComponent(column) {\n return column.isColumnGroup;\n}\n/**\n * Represents the column group header of the Grid\n * ([more information and examples](slug:multicolumnheaders_columns_grid)).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnGroupComponent = /*#__PURE__*/(() => {\n class ColumnGroupComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n /**\n * @hidden\n */\n this.includeInChooser = false;\n /**\n * @hidden\n */\n this.isColumnGroup = true;\n /**\n * @hidden\n */\n this.minResizableWidth = 10;\n if (parent && parent.isSpanColumn) {\n throw new Error(ColumnConfigurationErrorMessages.nestedInside('ColumnGroupComponent', 'SpanColumnComponent'));\n }\n }\n /**\n * @hidden\n */\n rowspan() {\n return 1;\n }\n /**\n * @hidden\n */\n get colspan() {\n if (!this.children) {\n return 1;\n }\n return columnsSpan(this.children.filter(child => child !== this && child.isVisible));\n }\n /**\n * @hidden\n */\n get leafIndex() {\n return this.children ? (this.firstChild || {}).leafIndex : -1;\n }\n get childrenArray() {\n return this.children.filter(c => c !== this);\n }\n get hasChildren() {\n return Boolean(this.firstChild);\n }\n get firstChild() {\n return this.children.find(column => column !== this);\n }\n }\n ColumnGroupComponent.ɵfac = function ColumnGroupComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnGroupComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13), i0.ɵɵdirectiveInject(IdService, 8));\n };\n ColumnGroupComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnGroupComponent,\n selectors: [[\"kendo-grid-column-group\"]],\n contentQueries: function ColumnGroupComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnBase, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.children = _t);\n }\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => ColumnGroupComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ColumnGroupComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ColumnGroupComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the detail template of the Grid ([more information and examples]({% slug detailrowtemplate_grid %})).\n * To define the detail template, nest an `` tag with the `kendoGridDetailTemplate` directive inside a `` tag.\n *\n * @example\n * ```html\n * \n * \n * \n *
\n *
{{dataItem.Category?.CategoryName}}
\n * span>{{dataItem.Category?.Description}}\n *
\n *
\n *
\n * ```\n *\n */\nlet DetailTemplateDirective = /*#__PURE__*/(() => {\n class DetailTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._condition = () => true;\n }\n /**\n * Defines the function that indicates if a given detail row and the associated **Expand** or **Collapse** button will be displayed.\n */\n set showIf(fn) {\n if (typeof fn !== 'function') {\n throw new Error(GridConfigurationErrorMessages.functionType('showIf', fn));\n }\n this._condition = fn;\n }\n get showIf() {\n return this._condition;\n }\n }\n DetailTemplateDirective.ɵfac = function DetailTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DetailTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n DetailTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DetailTemplateDirective,\n selectors: [[\"\", \"kendoGridDetailTemplate\", \"\"]],\n inputs: {\n showIf: [0, \"kendoGridDetailTemplateShowIf\", \"showIf\"]\n },\n standalone: true\n });\n return DetailTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ColGroupComponent = /*#__PURE__*/(() => {\n class ColGroupComponent {\n constructor() {\n this.columns = [];\n this.groups = [];\n this.sort = new Array();\n }\n get columnsToRender() {\n return columnsToRender(this.columns);\n }\n trackBy(index, _item) {\n return index;\n }\n isSorted(column) {\n const state = this.sortDescriptor(column.field);\n return this.isSortable(column) && (state.dir === 'asc' || state.dir === 'desc');\n }\n getColumnComponent(column) {\n return column;\n }\n isSortable(column) {\n return !isNullOrEmptyString(column.field) && isTruthy(column.sortable);\n }\n sortDescriptor(field) {\n return this.sort.find(item => item.field === field) || {\n field\n };\n }\n }\n ColGroupComponent.ɵfac = function ColGroupComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColGroupComponent)();\n };\n ColGroupComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColGroupComponent,\n selectors: [[\"\", \"kendoGridColGroup\", \"\"]],\n inputs: {\n columns: \"columns\",\n groups: \"groups\",\n detailTemplate: \"detailTemplate\",\n sort: \"sort\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c0,\n decls: 4,\n vars: 4,\n consts: [[3, \"k-group-col\", 4, \"ngFor\", \"ngForOf\"], [3, \"k-hierarchy-col\", 4, \"ngIf\"], [3, \"width\", \"k-sorted\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"]],\n template: function ColGroupComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, ColGroupComponent_col_1_Template, 1, 2, \"col\", 0)(2, ColGroupComponent_col_2_Template, 1, 2, \"col\", 1)(3, ColGroupComponent_col_3_Template, 1, 4, \"col\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.groups);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.detailTemplate == null ? null : ctx.detailTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.columnsToRender)(\"ngForTrackBy\", ctx.trackBy);\n }\n },\n dependencies: [NgFor, NgIf],\n encapsulation: 2\n });\n return ColGroupComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Creates a loading template that overrides the default loading indicator of the Grid Component.\n * To define a loading template, nest an `` tag with the `kendoGridLoadingTemplate` directive inside the `` tag\n * ([see example](slug:loadingtemplate_grid)).\n */\nlet LoadingTemplateDirective = /*#__PURE__*/(() => {\n class LoadingTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n LoadingTemplateDirective.ɵfac = function LoadingTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LoadingTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n LoadingTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LoadingTemplateDirective,\n selectors: [[\"\", \"kendoGridLoadingTemplate\", \"\"]],\n standalone: true\n });\n return LoadingTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LoadingComponent = /*#__PURE__*/(() => {\n class LoadingComponent {\n constructor(ctx) {\n this.ctx = ctx;\n this.hostClass = true;\n }\n get loadingText() {\n return this.ctx.localization.get('loading');\n }\n }\n LoadingComponent.ɵfac = function LoadingComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LoadingComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n LoadingComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: LoadingComponent,\n selectors: [[\"\", \"kendoGridLoading\", \"\"]],\n hostVars: 2,\n hostBindings: function LoadingComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-loading-mask\", ctx.hostClass);\n }\n },\n inputs: {\n loadingTemplate: \"loadingTemplate\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c1,\n decls: 2,\n vars: 2,\n consts: [[4, \"ngIf\"], [1, \"k-loading-text\"], [1, \"k-loading-image\"], [1, \"k-loading-color\"], [3, \"ngTemplateOutlet\"]],\n template: function LoadingComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, LoadingComponent_ng_container_0_Template, 5, 1, \"ng-container\", 0)(1, LoadingComponent_1_Template, 1, 1, null, 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.loadingTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loadingTemplate);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet],\n encapsulation: 2\n });\n return LoadingComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ResizeService = /*#__PURE__*/(() => {\n class ResizeService {\n constructor() {\n this.resizeSubscription = new Subscription(() => {});\n this.dispatcher = new Subject();\n this.changes = this.dispatcher.asObservable().pipe(throttleTime(100));\n }\n connect(resizes) {\n this.resizeSubscription.add(resizes.subscribe(this.dispatcher));\n }\n destroy() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n }\n ResizeService.ɵfac = function ResizeService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResizeService)();\n };\n ResizeService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ResizeService,\n factory: ResizeService.ɵfac\n });\n return ResizeService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ResizableContainerDirective = /*#__PURE__*/(() => {\n class ResizableContainerDirective {\n constructor(el, renderer, resizeService, ctx) {\n this.el = el;\n this.renderer = renderer;\n this.resizeService = resizeService;\n this.ctx = ctx;\n this.enabled = false;\n }\n set lockedWidth(value) {\n this._lockedWidth = value;\n if (this.enabled) {\n this.attachResize();\n this.resize();\n }\n }\n set kendoGridResizableContainer(enabled) {\n const refresh = enabled !== this.enabled;\n this.enabled = enabled;\n if (refresh) {\n this.attachResize();\n this.resize();\n }\n }\n ngOnDestroy() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n attachResize() {\n if (this.resizeSubscription && !this.enabled) {\n this.resizeSubscription.unsubscribe();\n this.resizeSubscription = null;\n }\n if (!this.resizeSubscription && this.enabled) {\n this.resizeSubscription = this.resizeService.changes.subscribe(this.resize.bind(this));\n }\n }\n resize() {\n if (this.ctx.grid && this.ctx.grid.wrapper) {\n const containerElement = this.ctx.grid.wrapper.nativeElement;\n const width = Math.max(containerElement.clientWidth - this._lockedWidth, 0);\n if (this.enabled && width > 0) {\n this.renderer.setStyle(this.el.nativeElement, \"width\", width + \"px\");\n } else {\n this.renderer.setStyle(this.el.nativeElement, \"width\", \"\");\n }\n }\n }\n }\n ResizableContainerDirective.ɵfac = function ResizableContainerDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResizableContainerDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ResizeService), i0.ɵɵdirectiveInject(ContextService));\n };\n ResizableContainerDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ResizableContainerDirective,\n selectors: [[\"\", \"kendoGridResizableContainer\", \"\"]],\n inputs: {\n lockedWidth: \"lockedWidth\",\n kendoGridResizableContainer: \"kendoGridResizableContainer\"\n },\n standalone: true\n });\n return ResizableContainerDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FocusGroup = /*#__PURE__*/(() => {\n class FocusGroup {\n constructor(root) {\n this.root = root;\n this.active = true;\n this.children = [];\n this.root.registerGroup(this);\n }\n get focusableChildren() {\n return this.children.filter(el => el.canFocus());\n }\n get isActive() {\n return this.active;\n }\n ngOnDestroy() {\n this.root.unregisterGroup(this);\n this.active = true;\n }\n registerElement(element) {\n this.unregisterElement(element);\n this.children.push(element);\n }\n unregisterElement(element) {\n this.children = this.children.filter(f => f !== element);\n }\n /**\n * Returns a Boolean value which indicates if the group will receive focus when the cell is focused.\n * Requires a single \"simple\" focusable element such as a button or a checkbox.\n */\n isNavigable() {\n const focusable = this.focusableChildren;\n return focusable.length === 1 && focusable[0].isNavigable();\n }\n canFocus() {\n return this.focusableChildren.length > 0;\n }\n focus() {\n if (this.canFocus() && !this.hasFocus()) {\n this.focusableChildren[0].focus();\n }\n }\n activate() {\n this.toggleState(true);\n }\n deactivate() {\n this.toggleState(false);\n }\n hasFocus() {\n return this.children.reduce((focused, element) => focused || element.hasFocus(), false);\n }\n toggleState(active) {\n if (this.active !== active) {\n this.active = active;\n this.children.forEach(f => f.toggle(active));\n }\n }\n }\n FocusGroup.ɵfac = function FocusGroup_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FocusGroup)(i0.ɵɵinject(FocusRoot));\n };\n FocusGroup.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FocusGroup,\n factory: FocusGroup.ɵfac\n });\n return FocusGroup;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst reset = (...lists) => {\n let diff = false;\n for (let idx = 0; idx < lists.length; idx++) {\n const [list, columns] = lists[idx];\n diff = diff || list.length !== columns.length;\n list.reset(columns);\n }\n return diff;\n};\n/**\n * @hidden\n */\nclass ColumnsContainer {\n constructor(columns) {\n this.columns = columns;\n this.allColumns = new QueryList();\n this.leafColumns = new QueryList();\n this.lockedColumns = new QueryList();\n this.nonLockedColumns = new QueryList();\n this.lockedLeafColumns = new QueryList();\n this.nonLockedLeafColumns = new QueryList();\n this.totalLevels = 0;\n this.changes = new EventEmitter();\n this.leafColumnsToRender = [];\n this.lockedColumnsToRender = [];\n this.nonLockedColumnsToRender = [];\n this.hasGroupHeaderColumn = false;\n this.hasGroupFooter = false;\n this.hasFooter = false;\n this.unlockedWidth = 0;\n }\n refresh() {\n const currentLevels = this.totalLevels;\n const leafColumns = new Array();\n const lockedLeafColumns = new Array();\n const nonLockedLeafColumns = new Array();\n const lockedColumns = new Array();\n const nonLockedColumns = new Array();\n const allColumns = new Array();\n const leafColumnsToRender = new Array();\n const lockedColumnsToRender = new Array();\n const nonLockedColumnsToRender = new Array();\n let hasGroupHeaderColumn = false;\n let hasGroupFooter = false;\n let hasFooter = false;\n let unlockedWidth = 0;\n let leafIndex = 0;\n this.totalLevels = 0;\n this.columns().forEach(column => {\n const containerLeafColumns = column.isLocked === true ? lockedLeafColumns : nonLockedLeafColumns;\n const containerColumns = column.isLocked === true ? lockedColumns : nonLockedColumns;\n const toRenderContainer = column.isLocked === true ? lockedColumnsToRender : nonLockedColumnsToRender;\n if (!isColumnGroupComponent(column)) {\n containerLeafColumns.push(column);\n leafColumns.push(column);\n leafColumnsToRender.push(...columnsToRender([column]));\n toRenderContainer.push(...columnsToRender([column]));\n hasGroupHeaderColumn = hasGroupHeaderColumn || someLeafColumn(leaf => Boolean(leaf.groupHeaderColumnTemplateRef), column);\n hasGroupFooter = hasGroupFooter || someLeafColumn(leaf => Boolean(leaf.groupFooterTemplateRef), column);\n hasFooter = hasFooter || someLeafColumn(leaf => Boolean(leaf.footerTemplateRef), column);\n if (!column.isLocked) {\n unlockedWidth += column.width || 0;\n }\n if (column.isSpanColumn) {\n column.childColumns.forEach(c => {\n c.leafIndex = leafIndex++;\n });\n } else {\n column.leafIndex = leafIndex++;\n }\n }\n containerColumns.push(column);\n allColumns.push(column);\n this.totalLevels = column.level > this.totalLevels ? column.level : this.totalLevels;\n });\n this.hasGroupHeaderColumn = hasGroupHeaderColumn;\n this.hasGroupFooter = hasGroupFooter;\n this.hasFooter = hasFooter;\n this.leafColumnsToRender = leafColumnsToRender;\n this.lockedColumnsToRender = lockedColumnsToRender;\n this.nonLockedColumnsToRender = nonLockedColumnsToRender;\n this.unlockedWidth = unlockedWidth;\n const changes = reset([this.leafColumns, leafColumns], [this.lockedLeafColumns, lockedLeafColumns], [this.nonLockedLeafColumns, nonLockedLeafColumns], [this.lockedColumns, lockedColumns], [this.allColumns, allColumns], [this.nonLockedColumns, nonLockedColumns]) || currentLevels !== this.totalLevels;\n if (changes) {\n this.changes.emit();\n }\n return changes;\n }\n}\nconst NO_STICKY = {\n left: '0px',\n right: '0px'\n};\n/**\n * @hidden\n */\nlet ColumnInfoService = /*#__PURE__*/(() => {\n class ColumnInfoService {\n constructor() {\n this.visibilityChange = new EventEmitter();\n this.lockedChange = new EventEmitter();\n this.stickyChange = new EventEmitter();\n this.columnRangeChange = new EventEmitter();\n this.columnsContainer = new ColumnsContainer(() => []);\n }\n get lockedLeafColumns() {\n return this.columnsContainer.lockedLeafColumns;\n }\n get nonLockedLeafColumns() {\n return this.columnsContainer.nonLockedLeafColumns;\n }\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n get totalLevels() {\n return this.columnsContainer.totalLevels;\n }\n get hiddenColumns() {\n if (!this.list) {\n return [];\n }\n return this.list().filter(column => !column.isVisible);\n }\n get leafNamedColumns() {\n const columns = expandColumns(this.list().filterSort(column => !column.isColumnGroup)).filter(column => column.matchesMedia && column.displayTitle);\n return orderBy(columns, [{\n field: 'locked',\n dir: 'desc'\n }]);\n }\n get unlockedRootCount() {\n return this.list().rootColumns().filter(column => !column.locked && column.isVisible).length;\n }\n stickyColumnsStyles(column) {\n this.stickyColumns = this.list().rootColumns().filter(column => column.sticky && !column.locked && column.isVisible);\n if (this.stickyColumns.length === 0) {\n return NO_STICKY;\n }\n const result = this.stickyColumns.reduce((acc, curr) => {\n if (curr.leafIndex < column.leafIndex) {\n acc.left += curr.width;\n } else if (curr.leafIndex > column.leafIndex) {\n acc.right += curr.width;\n }\n return acc;\n }, {\n left: 0,\n right: 0\n });\n return {\n left: `${result.left}px`,\n right: `${result.right}px`\n };\n }\n init(columns, list) {\n this.columnsContainer = columns;\n this.list = list;\n this.stickyColumns = null;\n }\n changeVisibility(columns) {\n this.stickyColumns = null;\n this.visibilityChange.emit(columns);\n }\n changeLocked(columns) {\n this.stickyColumns = null;\n this.lockedChange.emit(columns);\n }\n changeStuck(columns) {\n this.stickyColumns = null;\n this.stickyChange.emit(columns);\n }\n }\n ColumnInfoService.ɵfac = function ColumnInfoService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnInfoService)();\n };\n ColumnInfoService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColumnInfoService,\n factory: ColumnInfoService.ɵfac\n });\n return ColumnInfoService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet id$3 = 0;\nfunction nextId$1() {\n return id$3++;\n}\n/**\n * @hidden\n */\nlet LogicalCellDirective = /*#__PURE__*/(() => {\n class LogicalCellDirective {\n constructor(focusGroup, element, columnInfoService, idService, navigationService, renderer, zone, cellContext) {\n this.focusGroup = focusGroup;\n this.element = element;\n this.columnInfoService = columnInfoService;\n this.idService = idService;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this.zone = zone;\n this.cellContext = cellContext;\n this.logicalSlaveCell = false;\n this.colSpan = 1;\n this.rowSpan = 1;\n this.dataRowIndex = -1;\n this.detailExpandCell = false;\n this.uid = nextId$1();\n }\n get id() {\n if (!this.logicalSlaveCell && this.columnInfoService.isLocked) {\n return this.idService.cellId(this.logicalRowIndex, this.logicalColIndex);\n }\n }\n get ariaColIndex() {\n if (this.logicalSlaveCell || this.logicalColIndex === -1) {\n return undefined;\n }\n return this.logicalColIndex + 1;\n }\n ngOnInit() {\n if (!this.navigationService.tableEnabled) {\n return;\n }\n this.navigationChange = this.navigationService.changes.subscribe(e => this.onNavigationChange(e));\n }\n ngDoCheck() {\n if (!this.navigationService.tableEnabled || this.logicalColIndex === -1) {\n return;\n }\n if (this.cellContext) {\n this.cellContext.focusGroup = this.focusGroup;\n }\n this.registerNoChanges();\n }\n ngOnChanges(changes) {\n if (!this.navigationService.tableEnabled) {\n return;\n }\n const keys = Object.keys(changes);\n if (keys.length === 1 && keys[0] === 'groupItem' || this.logicalColIndex === -1) {\n // Ignore groupItem changes as the reference is not stable\n return;\n }\n const indexChange = changes['logicalColIndex'];\n const rowIndexChange = changes['logicalRowIndex'];\n const index = indexChange && !indexChange.isFirstChange() ? indexChange.previousValue : this.logicalColIndex;\n const rowIndex = rowIndexChange && !rowIndexChange.isFirstChange() ? rowIndexChange.previousValue : this.logicalRowIndex;\n this.navigationService.unregisterCell(index, rowIndex, this);\n this.registerChanges();\n this.updateElement();\n }\n ngOnDestroy() {\n if (this.navigationChange) {\n this.navigationChange.unsubscribe();\n }\n this.navigationService.unregisterCell(this.logicalColIndex, this.logicalRowIndex, this);\n }\n onNavigationChange(e) {\n const active = this.logicalColIndex === e.colIndex && this.logicalRowIndex === e.rowIndex;\n const wasActive = this.logicalColIndex === e.prevColIndex && this.logicalRowIndex === e.prevRowIndex;\n if (active || wasActive) {\n this.updateElement();\n }\n }\n updateElement() {\n const el = this.element.nativeElement;\n this.renderer.setAttribute(el, 'tabIndex', this.isFocusable() && !this.logicalSlaveCell ? '0' : '-1');\n if (this.isFocused()) {\n if (this.focusGroup.isNavigable()) {\n this.focusGroup.focus();\n } else {\n if (!this.logicalSlaveCell && this.navigationService.autoFocusCell(this.logicalColIndex, this.logicalColIndex + this.colSpan - 1)) {\n this.microtask(() => this.isFocused() && el.focus());\n }\n this.renderer.addClass(el, 'k-focus');\n }\n if (this.headerLabelText) {\n el.removeAttribute('aria-label');\n }\n } else {\n this.renderer.removeClass(el, 'k-focus');\n if (this.headerLabelText) {\n el.setAttribute('aria-label', this.headerLabelText);\n }\n }\n }\n microtask(callback) {\n this.zone.runOutsideAngular(() => Promise.resolve(null).then(callback));\n }\n registerChanges() {\n if (!this.logicalSlaveCell) {\n this.navigationService.registerCell(this);\n }\n }\n registerNoChanges() {\n if (!this.logicalSlaveCell) {\n this.navigationService.registerCellOnCurrentRow(this);\n }\n }\n isFocusable() {\n return this.navigationService.isCellFocusable(this);\n }\n isFocused() {\n return this.navigationService.isCellFocused(this);\n }\n }\n LogicalCellDirective.ɵfac = function LogicalCellDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LogicalCellDirective)(i0.ɵɵdirectiveInject(FocusGroup), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(IdService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(CELL_CONTEXT, 8));\n };\n LogicalCellDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LogicalCellDirective,\n selectors: [[\"\", \"kendoGridLogicalCell\", \"\"]],\n hostVars: 2,\n hostBindings: function LogicalCellDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.id)(\"aria-colindex\", ctx.ariaColIndex);\n }\n },\n inputs: {\n logicalColIndex: \"logicalColIndex\",\n logicalRowIndex: \"logicalRowIndex\",\n logicalSlaveCell: \"logicalSlaveCell\",\n colIndex: \"colIndex\",\n colSpan: \"colSpan\",\n rowSpan: \"rowSpan\",\n groupItem: \"groupItem\",\n dataRowIndex: \"dataRowIndex\",\n dataItem: \"dataItem\",\n detailExpandCell: \"detailExpandCell\",\n headerLabelText: \"headerLabelText\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }]), i0.ɵɵNgOnChangesFeature]\n });\n return LogicalCellDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet id$2 = 0;\nfunction nextId() {\n return id$2++;\n}\n/**\n * @hidden\n */\nlet LogicalRowDirective = /*#__PURE__*/(() => {\n class LogicalRowDirective {\n constructor(idService, navigation) {\n this.idService = idService;\n this.navigation = navigation;\n this.logicalSlaveRow = false;\n this.logicalSlaveCellsCount = 0;\n this.dataRowIndex = -1;\n this.uid = nextId();\n this.tableRowClass = true;\n }\n get hostRole() {\n return this.logicalSlaveRow ? 'presentation' : 'row';\n }\n get ariaRowIndex() {\n return this.logicalSlaveRow ? null : this.logicalRowIndex + 1;\n }\n get rowIndex() {\n return this.logicalSlaveRow ? this.logicalRowIndex + 1 : null;\n }\n get ariaOwns() {\n if (this.logicalSlaveRow || this.logicalSlaveCellsCount === 0) {\n return undefined;\n }\n const ids = [];\n if (this.dataRowIndex < 0) {\n let total = this.logicalCellsCount + this.logicalSlaveCellsCount;\n this.columnsArray.forEach(column => {\n if (column.isSpanColumn) {\n total += column.colspan - 1;\n }\n });\n for (let cellIndex = this.logicalCellsCount; cellIndex < total; cellIndex++) {\n ids.push(this.idService.cellId(this.logicalRowIndex, cellIndex));\n }\n } else {\n let columnIndex = 0;\n this.columnsArray.forEach(column => {\n if (!column.isLocked) {\n ids.push(this.idService.cellId(this.logicalRowIndex, columnIndex));\n }\n columnIndex += column.isSpanColumn ? column.colspan : 1;\n });\n }\n return ids.join(' ');\n }\n ngOnChanges(changes) {\n if (!this.navigation.enabled || this.logicalSlaveRow) {\n return;\n }\n const indexChange = changes.logicalRowIndex;\n const logicalSlaveRowChange = changes.logicalSlaveRow;\n if (indexChange || logicalSlaveRowChange) {\n const index = indexChange && !indexChange.isFirstChange() ? indexChange.previousValue : this.logicalRowIndex;\n this.navigation.unregisterRow(index, this);\n this.navigation.registerRow(this);\n } else if (anyChanged(['dataRowIndex', 'dataItem'], changes)) {\n this.navigation.updateRow(this);\n }\n }\n ngOnDestroy() {\n this.navigation.unregisterRow(this.logicalRowIndex, this);\n }\n get columnsArray() {\n return this.totalColumns?.allColumns.toArray() || [];\n }\n }\n LogicalRowDirective.ɵfac = function LogicalRowDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LogicalRowDirective)(i0.ɵɵdirectiveInject(IdService), i0.ɵɵdirectiveInject(NavigationService));\n };\n LogicalRowDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LogicalRowDirective,\n selectors: [[\"\", \"kendoGridLogicalRow\", \"\"]],\n hostVars: 6,\n hostBindings: function LogicalRowDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.hostRole)(\"aria-rowindex\", ctx.ariaRowIndex)(\"data-kendo-grid-row-index\", ctx.rowIndex)(\"aria-owns\", ctx.ariaOwns);\n i0.ɵɵclassProp(\"k-table-row\", ctx.tableRowClass);\n }\n },\n inputs: {\n logicalRowIndex: \"logicalRowIndex\",\n logicalSlaveRow: \"logicalSlaveRow\",\n logicalCellsCount: \"logicalCellsCount\",\n logicalSlaveCellsCount: \"logicalSlaveCellsCount\",\n dataRowIndex: \"dataRowIndex\",\n dataItem: \"dataItem\",\n totalColumns: \"totalColumns\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return LogicalRowDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst FORMAT_REGEX = /\\{\\d+:?/;\n/**\n * @hidden\n */\nlet FieldAccessorPipe = /*#__PURE__*/(() => {\n class FieldAccessorPipe {\n constructor(intlService) {\n this.intlService = intlService;\n }\n transform(dataItem, fieldName, format) {\n if (!isNullOrEmptyString(fieldName)) {\n const value = getter(fieldName)(dataItem);\n if (!isNullOrEmptyString(format)) {\n return this.formatValue(format, value);\n }\n return value;\n }\n return dataItem;\n }\n formatValue(format, value) {\n const intl = this.intlService;\n if (isString(format) && format.match(FORMAT_REGEX)) {\n return intl.format(format, value);\n }\n return intl.toString(value, format);\n }\n }\n FieldAccessorPipe.ɵfac = function FieldAccessorPipe_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FieldAccessorPipe)(i0.ɵɵdirectiveInject(i1$3.IntlService, 16));\n };\n FieldAccessorPipe.ɵpipe = /* @__PURE__ */i0.ɵɵdefinePipe({\n name: \"valueOf\",\n type: FieldAccessorPipe,\n pure: false,\n standalone: true\n });\n return FieldAccessorPipe;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet GridTableDirective = /*#__PURE__*/(() => {\n class GridTableDirective {\n constructor(wrapper) {\n this.wrapper = wrapper;\n this.hostClass = true;\n this._size = 'medium';\n }\n get sizeSmallClass() {\n return this.size === 'small';\n }\n get sizeMediumClass() {\n return this.size === 'medium' || !this.size;\n }\n set size(size) {\n this._size = size;\n if (size === 'none') {\n this.wrapper.nativeElement.classList.remove('k-table-sm', 'k-table-md');\n }\n }\n get size() {\n return this._size;\n }\n }\n GridTableDirective.ɵfac = function GridTableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridTableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n GridTableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GridTableDirective,\n selectors: [[\"\", \"kendoGridTable\", \"\"]],\n hostVars: 6,\n hostBindings: function GridTableDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-table\", ctx.hostClass)(\"k-table-sm\", ctx.sizeSmallClass)(\"k-table-md\", ctx.sizeMediumClass);\n }\n },\n inputs: {\n size: \"size\"\n },\n standalone: true\n });\n return GridTableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst forEachColumn = (list, callback) => {\n list.forEach(column => {\n callback(column);\n if (column.isColumnGroup && column.hasChildren) {\n forEachColumn(column.childrenArray, callback);\n }\n });\n};\nconst forEachLevel = (list, callback) => {\n sortColumns(list).forEach(column => {\n callback(column);\n if (column.isColumnGroup && column.hasChildren) {\n forEachLevel(column.childrenArray, callback);\n }\n });\n};\nconst filterHierarchy = (list, predicate) => {\n const result = [];\n sortColumns(list).forEach(column => {\n if (predicate(column)) {\n if (column.isColumnGroup) {\n const children = filterHierarchy(column.childrenArray, predicate);\n if (children.length) {\n result.push(column, ...children);\n }\n } else if (!column.isSpanColumn || filterHierarchy(column.childrenArray, predicate).length) {\n result.push(column);\n }\n }\n });\n return result.sort((a, b) => Number(b.locked) - Number(a.locked));\n};\n/**\n * @hidden\n */\nclass ColumnList {\n constructor(columns) {\n this.columns = columns;\n }\n static empty() {\n return new ColumnList(new QueryList());\n }\n forEach(callback) {\n forEachColumn(this.columns, callback);\n }\n filter(callback) {\n const result = [];\n forEachColumn(this.columns, column => {\n if (callback(column)) {\n result.push(column);\n }\n });\n return result;\n }\n filterHierarchy(predicate) {\n return filterHierarchy(this.columns.toArray(), predicate);\n }\n filterSort(callback) {\n const result = [];\n forEachLevel(this.columns.toArray(), column => {\n if (callback(column)) {\n result.push(column);\n }\n });\n return result;\n }\n toArray() {\n const result = [];\n forEachColumn(this.columns, column => {\n result.push(column);\n });\n return result;\n }\n rootColumns() {\n return this.columns.toArray();\n }\n totalColumnLevels() {\n let totalLevels = 0;\n this.forEach(column => {\n totalLevels = Math.max(column.level, totalLevels);\n });\n return totalLevels;\n }\n}\n\n/**\n * @hidden\n */\nclass GroupInfoService {\n constructor() {\n this._columnList = ColumnList.empty;\n }\n get columns() {\n return expandColumns(this._columnList().toArray()).filter(isColumnComponent);\n }\n registerColumnsContainer(columns) {\n this._columnList = columns;\n }\n formatForGroup(item) {\n const column = this.columnForGroup(item);\n return column ? column.format : \"\";\n }\n isGroupable(groupField) {\n const [column] = this.columns.filter(x => x.field === groupField);\n return column ? column.groupable : true;\n }\n groupTitle(item) {\n const column = this.columnForGroup(item);\n return column ? column.title || column.field : this.groupField(item);\n }\n groupHeaderTemplate(item) {\n const column = this.columnForGroup(item);\n return column ? column.groupHeaderTemplateRef || column.groupHeaderColumnTemplateRef : undefined;\n }\n groupField(group) {\n return group.data ? group.data.field : group.field;\n }\n columnForGroup(group) {\n const field = this.groupField(group);\n const [column] = this.columns.filter(x => x.field === field);\n return column;\n }\n}\n\n/**\n * @hidden\n */\nlet GroupHeaderComponent = /*#__PURE__*/(() => {\n class GroupHeaderComponent {\n constructor(groupsService, groupInfoService, ctx) {\n this.groupsService = groupsService;\n this.groupInfoService = groupInfoService;\n this.ctx = ctx;\n this.skipGroupDecoration = false;\n this.hasDetails = false;\n this.totalColumnsCount = 0;\n this.groups = [];\n this.groupItemClass = true;\n this.tableGroupRowClass = true;\n this.isExpanded = false;\n this.caretAltDownIcon = caretAltDownIcon;\n this.caretAltRightIcon = caretAltRightIcon;\n this.caretAltLeftIcon = caretAltLeftIcon;\n }\n ngDoCheck() {\n const groupArgs = {\n group: this.item.data,\n groupIndex: this.item.index,\n parentGroup: getGroupRowArgs(this.item.parentGroup)\n };\n this.isExpanded = this.groupsService.isExpanded(groupArgs);\n }\n prefixGroupCell(item) {\n return new Array(item.level);\n }\n toggleGroup(item) {\n this.groupsService.toggleRow(item);\n return false;\n }\n groupSpan(item) {\n const groupCount = (this.groups || []).length;\n const detailOffset = this.hasDetails ? 1 : 0;\n if (this.hasGroupHeaderColumn) {\n return groupCount + 1 + detailOffset - item.level;\n }\n const columnCount = columnsSpan(this.columns);\n if (this.skipGroupDecoration) {\n return columnCount;\n }\n return groupCount + columnCount + detailOffset - item.level;\n }\n logicalColSpan() {\n return this.skipGroupDecoration ? 1 : this.totalColumnsCount;\n }\n ariaRole() {\n if (this.skipGroupDecoration) {\n return 'presentation';\n }\n return 'gridcell';\n }\n formatForGroup(item) {\n return this.groupInfoService.formatForGroup(item);\n }\n groupTitle(item) {\n return this.groupInfoService.groupTitle(item);\n }\n groupHeaderTemplate(item) {\n return this.groupInfoService.groupHeaderTemplate(item);\n }\n get groupButtonTitle() {\n const messageKey = this.isExpanded ? 'groupCollapse' : 'groupExpand';\n return this.ctx.localization.get(messageKey);\n }\n get arrowIcon() {\n const icon = !this.isExpanded ? !this.ctx.localization.rtl ? 'caret-alt-right' : 'caret-alt-left' : 'caret-alt-down';\n return icon;\n }\n get arrowSVGIcon() {\n const icon = !this.isExpanded ? !this.ctx.localization.rtl ? this.caretAltRightIcon : this.caretAltLeftIcon : this.caretAltDownIcon;\n return icon;\n }\n }\n GroupHeaderComponent.ɵfac = function GroupHeaderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupHeaderComponent)(i0.ɵɵdirectiveInject(GroupsService), i0.ɵɵdirectiveInject(GroupInfoService), i0.ɵɵdirectiveInject(ContextService));\n };\n GroupHeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GroupHeaderComponent,\n selectors: [[\"\", \"kendoGridGroupHeader\", \"\"]],\n hostVars: 4,\n hostBindings: function GroupHeaderComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grouping-row\", ctx.groupItemClass)(\"k-table-group-row\", ctx.tableGroupRowClass);\n }\n },\n inputs: {\n rowIndex: \"rowIndex\",\n logicalRowIndex: \"logicalRowIndex\",\n item: \"item\",\n skipGroupDecoration: \"skipGroupDecoration\",\n hasDetails: \"hasDetails\",\n totalColumnsCount: \"totalColumnsCount\",\n hasGroupHeaderColumn: \"hasGroupHeaderColumn\",\n groupHeaderColumns: \"groupHeaderColumns\",\n columns: \"columns\",\n groups: \"groups\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c2,\n decls: 3,\n vars: 3,\n consts: [[4, \"ngIf\"], [\"aria-selected\", \"false\", \"class\", \"k-table-td\", \"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\", 4, \"ngIf\"], [\"class\", \"k-group-cell k-table-td\", \"role\", \"presentation\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", 1, \"k-group-cell\", \"k-table-td\"], [\"aria-selected\", \"false\", \"kendoGridLogicalCell\", \"\", 1, \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\"], [1, \"k-reset\"], [\"href\", \"#\", \"tabindex\", \"-1\", \"role\", \"presentation\", 3, \"click\"], [3, \"name\", \"svgIcon\"], [3, \"templateContext\"], [\"role\", \"gridcell\", \"class\", \"k-table-td\", \"aria-selected\", \"false\", \"kendoGridLogicalCell\", \"\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"gridcell\", \"aria-selected\", \"false\", \"kendoGridLogicalCell\", \"\", 1, \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"logicalSlaveCell\", \"groupItem\", \"colSpan\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function GroupHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, GroupHeaderComponent_ng_container_0_Template, 2, 1, \"ng-container\", 0)(1, GroupHeaderComponent_td_1_Template, 3, 9, \"td\", 1)(2, GroupHeaderComponent_ng_container_2_Template, 2, 1, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.skipGroupDecoration);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(ctx.skipGroupDecoration && ctx.hasGroupHeaderColumn));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.hasGroupHeaderColumn);\n }\n },\n dependencies: [NgIf, NgFor, LogicalCellDirective, IconWrapperComponent, TemplateContextDirective, NgTemplateOutlet, FieldAccessorPipe],\n encapsulation: 2\n });\n return GroupHeaderComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst withoutField = ({\n field\n}) => isNullOrEmptyString(field);\nconst alreadyGrouped = ({\n groups,\n field\n}) => groups.some(group => group.field === field);\nconst overSameTarget = ({\n target,\n field\n}) => target.field === field;\nconst overLastTarget = ({\n target\n}) => target.lastTarget;\nconst isLastGroup = ({\n groups,\n field\n}) => groups.map(group => group.field).indexOf(field) === groups.length - 1;\nconst isNotGroupable = groupsService => ({\n field\n}) => !groupsService.isGroupable(field);\nconst columnRules = groupService => or(withoutField, alreadyGrouped, isNotGroupable(groupService));\nconst indicatorRules = or(overSameTarget, and(overLastTarget, isLastGroup));\n/**\n * @hidden\n */\nlet GroupPanelComponent = /*#__PURE__*/(() => {\n class GroupPanelComponent {\n constructor(hint, cue, groupInfoService, ctx, cd, popupService, ngZone, renderer) {\n this.hint = hint;\n this.cue = cue;\n this.groupInfoService = groupInfoService;\n this.ctx = ctx;\n this.cd = cd;\n this.popupService = popupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.change = new EventEmitter();\n this.groups = [];\n this.dropTargets = new QueryList();\n this.groupTitles = [];\n this.isChipMenuOpen = false;\n this.rtl = false;\n this.arrowLeftIcon = arrowLeftIcon;\n this.arrowRightIcon = arrowRightIcon;\n this.handleKeyDown = e => {\n if (e.keyCode === Keys.ArrowDown || e.keyCode === Keys.ArrowUp) {\n e.preventDefault();\n const relatedItemType = e.target.matches(':first-child') ? 'next' : 'previous';\n this.activateMenuItem(e.target, relatedItemType);\n } else if (e.keyCode === Keys.Escape) {\n this.destroyMenu(true);\n } else if (e.keyCode === Keys.Tab) {\n this.destroyMenu(true);\n } else if (e.keyCode === Keys.Space || e.keyCode === Keys.Enter) {\n this.handleMenuClick(e);\n }\n };\n this.handleClick = e => {\n e.preventDefault();\n const menuItemEl = e.target.closest('.k-menu-item');\n if (!menuItemEl.matches('[aria-disabled=\"true\"]')) {\n this.handleMenuClick(e);\n return;\n }\n if (menuItemEl.getAttribute('tabindex') === '0') {\n return;\n }\n const activeMenuItem = menuItemEl.closest('.k-menu-group').querySelector('[tabindex=\"0\"]');\n const relatedItemType = activeMenuItem.matches(':first-child') ? 'next' : 'previous';\n this.activateMenuItem(activeMenuItem, relatedItemType);\n };\n }\n get groupHeaderClass() {\n return true;\n }\n set text(value) {\n this.emptyText = value;\n }\n get text() {\n return this.emptyText ? this.emptyText : this.ctx.localization.get('groupPanelEmpty');\n }\n get gridId() {\n return this.ctx.grid?.ariaRootId;\n }\n ngAfterViewInit() {\n this.subscription = this.ctx.localization.changes.subscribe(({\n rtl\n }) => {\n this.rtl = rtl;\n this.cd.markForCheck();\n });\n this.subscription.add(observe(this.dropTargets).subscribe(this.attachTargets.bind(this)));\n }\n ngDoCheck() {\n const currentTitles = this.groups.map(group => this.groupInfoService.groupTitle(group));\n if (currentTitles.length !== this.groupTitles.length || currentTitles.some((current, idx) => current !== this.groupTitles[idx])) {\n this.groupTitles = currentTitles;\n this.cd.markForCheck();\n }\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n this.destroyMenu();\n }\n messageFor(token) {\n return this.ctx.localization.get(token);\n }\n getTitle(group) {\n return this.messageFor(group.dir === 'desc' ? 'sortedDescending' : 'sortedAscending');\n }\n getDirectionIcon(group) {\n return group.dir === 'desc' ? 'sort-desc-sm' : 'sort-asc-sm';\n }\n getDirectionSvgIcon(group) {\n return group.dir === 'desc' ? sortDescSmallIcon : sortAscSmallIcon;\n }\n directionChange(group) {\n group.dir = group.dir ? group.dir : \"asc\";\n group.dir = group.dir === 'asc' ? 'desc' : 'asc';\n const index = this.groups.findIndex(x => x.field === group.field);\n const groups = [...this.groups.slice(0, index), group, ...this.groups.slice(index + 1)];\n this.change.emit(groups);\n }\n insert(field, index) {\n const groups = this.groups.filter(x => x.field !== field);\n if (groups.length || this.groups.length === 0) {\n this.change.emit([...groups.slice(0, index), {\n field: field\n }, ...groups.slice(index)]);\n }\n }\n remove(group) {\n this.destroyMenu();\n this.change.emit(this.groups.filter(x => x.field !== group.field));\n }\n toggleMenu(chip, first, last, field) {\n const anchor = chip.element.nativeElement.querySelector('.k-chip-action');\n if (this.popupRef) {\n const popupAnchor = this.popupRef.popup.instance.anchor;\n this.destroyMenu();\n if (anchor === popupAnchor) {\n return;\n }\n }\n this.first = first;\n this.last = last;\n const direction = this.ctx.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: anchor,\n content: this.defaultTemplate,\n anchorAlign: {\n vertical: 'bottom',\n horizontal: direction\n },\n popupAlign: {\n vertical: 'top',\n horizontal: direction\n },\n positionMode: 'absolute'\n });\n this.activeItem = this.dropTargets.find(dt => dt.context.field === field);\n this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.ctx.localization.rtl ? 'rtl' : 'ltr');\n const menuItems = Array.from(this.popupRef.popupElement.querySelectorAll('.k-menu-item'));\n this.activateMenuItem(menuItems[1], 'previous');\n this.popupSubs = this.popupRef.popupAnchorViewportLeave.subscribe(() => {\n this.destroyMenu(true);\n });\n if (isUniversal()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.popupSubs.add(fromEvent(document, 'click').pipe(filter(event => !closest(event.target, node => node === this.popupRef.popupElement || node.matches && node.matches('.k-chip-action')))).subscribe(() => {\n this.destroyMenu();\n }));\n });\n }\n canDrop(draggable, target) {\n const isIndicator = draggable.type === 'groupIndicator';\n const rules = isIndicator ? indicatorRules : columnRules(this.groupInfoService);\n return !rules({\n field: draggable.field,\n groups: this.groups,\n target\n });\n }\n attachTargets() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n this.targetSubscription = new Subscription();\n const enterStream = this.dropTargets.reduce((acc, target) => merge(acc, target.enter), from([]));\n const leaveStream = this.dropTargets.reduce((acc, target) => merge(acc, target.leave), from([]));\n const dropStream = this.dropTargets.reduce((acc, target) => merge(acc, target.drop), from([]));\n this.targetSubscription.add(enterStream.pipe(tap(_ => {\n this.hint.removeLock();\n this.destroyMenu();\n }), filter(({\n draggable,\n target\n }) => this.canDrop(draggable.context, target.context)), tap(this.enter.bind(this)), switchMapTo(dropStream.pipe(takeUntil(leaveStream.pipe(tap(this.leave.bind(this))))))).subscribe(this.drop.bind(this)));\n }\n enter({\n draggable,\n target\n }) {\n this.hint.enable();\n let before = target.context.lastTarget || isTargetBefore(draggable.element.nativeElement, target.element.nativeElement);\n if (this.ctx.localization.rtl) {\n before = !before;\n }\n this.cue.position(position(target.element.nativeElement, before));\n }\n leave() {\n this.hint.disable();\n this.cue.hide();\n }\n drop({\n target,\n draggable\n }) {\n const field = draggable.context.field;\n const index = this.dropTargets.toArray().indexOf(target);\n this.insert(field, index);\n }\n destroyMenu(focusAnchor) {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.popupSubs && this.popupSubs.unsubscribe();\n focusAnchor && this.activeItem.context.target.focus();\n }\n }\n activateMenuItem(item, relatedItemType) {\n this.renderer.setAttribute(item, 'tabindex', '-1');\n this.renderer.removeClass(item, 'k-focus');\n const relatedItem = item[`${relatedItemType}ElementSibling`];\n this.renderer.setAttribute(relatedItem, 'tabindex', '0');\n this.renderer.addClass(relatedItem, 'k-focus');\n this.ngZone.runOutsideAngular(() => setTimeout(() => relatedItem.focus()));\n }\n handleMenuClick(e) {\n e.preventDefault();\n if (e.target.getAttribute('aria-disabled') !== 'true') {\n const chips = this.dropTargets.toArray().slice(0, this.dropTargets.length - 1);\n let groupChip, groupChipIndex;\n for (let i = 0; i < chips.length; i++) {\n if (chips[i].element.nativeElement === this.popupRef.popup.instance.anchor.closest('.k-chip')) {\n groupChip = chips[i];\n groupChipIndex = i;\n break;\n }\n }\n const isPrev = e.target.closest('.k-menu-item').matches(':first-child');\n if (isPrev && groupChipIndex > 0) {\n this.insert(groupChip.context.field, groupChipIndex - 1);\n } else if (!isPrev && groupChipIndex < chips.length - 1) {\n this.insert(groupChip.context.field, groupChipIndex + 1);\n }\n this.destroyMenu(true);\n }\n }\n }\n GroupPanelComponent.ɵfac = function GroupPanelComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupPanelComponent)(i0.ɵɵdirectiveInject(DragHintService), i0.ɵɵdirectiveInject(DropCueService), i0.ɵɵdirectiveInject(GroupInfoService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i5.PopupService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n GroupPanelComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GroupPanelComponent,\n selectors: [[\"kendo-grid-group-panel\"]],\n viewQuery: function GroupPanelComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c5, 7, TemplateRef);\n i0.ɵɵviewQuery(DropTargetDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.defaultTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropTargets = _t);\n }\n },\n hostVars: 2,\n hostBindings: function GroupPanelComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grouping-header\", ctx.groupHeaderClass);\n }\n },\n inputs: {\n text: \"text\",\n navigable: \"navigable\",\n groups: \"groups\"\n },\n outputs: {\n change: \"change\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 5,\n vars: 3,\n consts: [[\"defaultTemplate\", \"\"], [\"chip\", \"\"], [\"class\", \"k-grouping-drop-container\", \"kendoDropTarget\", \"\", 3, \"context\", 4, \"ngIf\"], [\"role\", \"none\", 3, \"navigable\", 4, \"ngIf\"], [\"kendoDropTarget\", \"\", 1, \"k-grouping-drop-container\", 3, \"context\"], [\"role\", \"none\", 3, \"navigable\"], [\"kendoDropTarget\", \"\", \"kendoDraggableColumn\", \"\", \"kendoDraggable\", \"\", 3, \"title\", \"enableDrag\", \"context\", \"label\", \"removable\", \"hasMenu\", \"icon\", \"svgIcon\", \"contentClick\", \"remove\", \"menuToggle\", \"keydown.alt.arrowdown\", 4, \"ngFor\", \"ngForOf\"], [\"kendoDropTarget\", \"\", \"kendoDraggableColumn\", \"\", \"kendoDraggable\", \"\", 3, \"contentClick\", \"remove\", \"menuToggle\", \"keydown.alt.arrowdown\", \"title\", \"enableDrag\", \"context\", \"label\", \"removable\", \"hasMenu\", \"icon\", \"svgIcon\"], [\"unselectable\", \"on\", \"role\", \"menu\", 1, \"k-group\", \"k-menu-group\", \"k-reset\", \"k-menu-group-md\", 3, \"kendoEventsOutsideAngular\"], [\"role\", \"menuitem\", \"unselectable\", \"on\", 1, \"k-item\", \"k-menu-item\"], [1, \"k-link\", \"k-menu-link\"], [3, \"name\", \"svgIcon\"], [1, \"k-menu-link-text\"]],\n template: function GroupPanelComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, GroupPanelComponent_div_0_Template, 2, 3, \"div\", 2)(1, GroupPanelComponent_kendo_chiplist_1_Template, 2, 2, \"kendo-chiplist\", 3)(2, GroupPanelComponent_div_2_Template, 2, 2, \"div\", 2)(3, GroupPanelComponent_ng_template_3_Template, 11, 16, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.groups.length === 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.groups.length !== 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.groups.length !== 0);\n }\n },\n dependencies: [NgIf, DropTargetDirective, ChipListComponent, NgFor, ChipComponent, DraggableColumnDirective, DraggableDirective, EventsOutsideAngularDirective, IconWrapperComponent],\n encapsulation: 2,\n changeDetection: 0\n });\n return GroupPanelComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst localizeOperators$1 = operators => localization => Object.keys(operators).reduce((acc, key) => {\n acc[operators[key]] = localization.get(key);\n return acc;\n}, {});\nconst operatorTexts = localizeOperators$1({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterGteOperator\": \"gte\",\n \"filterGtOperator\": \"gt\",\n \"filterLteOperator\": \"lte\",\n \"filterLtOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\",\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterAfterOrEqualOperator\": \"after-eq\",\n \"filterAfterOperator\": \"after\",\n \"filterBeforeOrEqualOperator\": \"before-eq\",\n \"filterBeforeOperator\": \"before\"\n});\n/**\n * @hidden\n */\nconst toJSON = xs => xs.map(x => x.toJSON());\n/**\n * @hidden\n */\nlet FilterOperatorBase = /*#__PURE__*/(() => {\n class FilterOperatorBase {\n constructor(operator, ctx) {\n this.operator = operator;\n this.ctx = ctx;\n this.messages = operatorTexts(this.ctx.localization);\n this._text = this.messages[this.operator];\n this.subscription = this.ctx.localization.changes.subscribe(this.refreshText.bind(this));\n }\n /**\n * The text that will be displayed in the drop-down list.\n * @readonly\n * @type {string}\n * @memberOf FilterOperatorBase\n */\n get text() {\n return this._text;\n }\n set text(value) {\n this._text = isNullOrEmptyString(value) ? this.messages[this.operator] : value;\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: this.operator\n };\n }\n refreshText() {\n const update = this._text === this.messages[this.operator];\n this.messages = operatorTexts(this.ctx.localization);\n if (update) {\n this._text = this.messages[this.operator];\n }\n }\n }\n FilterOperatorBase.ɵfac = function FilterOperatorBase_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterOperatorBase)(i0.ɵɵdirectiveInject('filterOperator'), i0.ɵɵdirectiveInject(ContextService));\n };\n FilterOperatorBase.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterOperatorBase,\n selectors: [[\"kendo-grid-filter-operator-base\"]],\n inputs: {\n text: \"text\"\n },\n decls: 0,\n vars: 0,\n template: function FilterOperatorBase_Template(rf, ctx) {},\n encapsulation: 2\n });\n return FilterOperatorBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `Contains` (**Contains**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet ContainsFilterOperatorComponent = /*#__PURE__*/(() => {\n class ContainsFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"contains\", ctx);\n }\n }\n ContainsFilterOperatorComponent.ɵfac = function ContainsFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ContainsFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n ContainsFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ContainsFilterOperatorComponent,\n selectors: [[\"kendo-filter-contains-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => ContainsFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ContainsFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ContainsFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `DoesNotContain` (**Does not contain**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet DoesNotContainFilterOperatorComponent = /*#__PURE__*/(() => {\n class DoesNotContainFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"doesnotcontain\", ctx);\n }\n }\n DoesNotContainFilterOperatorComponent.ɵfac = function DoesNotContainFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DoesNotContainFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n DoesNotContainFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DoesNotContainFilterOperatorComponent,\n selectors: [[\"kendo-filter-not-contains-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => DoesNotContainFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function DoesNotContainFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return DoesNotContainFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `EndsWith` (**Ends with**) string filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet EndsWithFilterOperatorComponent = /*#__PURE__*/(() => {\n class EndsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"endswith\", ctx);\n }\n }\n EndsWithFilterOperatorComponent.ɵfac = function EndsWithFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EndsWithFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n EndsWithFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: EndsWithFilterOperatorComponent,\n selectors: [[\"kendo-filter-endswith-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EndsWithFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function EndsWithFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return EndsWithFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `Equal` (**Is equal to**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet EqualFilterOperatorComponent = /*#__PURE__*/(() => {\n class EqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"eq\", ctx);\n }\n }\n EqualFilterOperatorComponent.ɵfac = function EqualFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EqualFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n EqualFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: EqualFilterOperatorComponent,\n selectors: [[\"kendo-filter-eq-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => EqualFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function EqualFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return EqualFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `IsEmpty` (**Is empty**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet IsEmptyFilterOperatorComponent = /*#__PURE__*/(() => {\n class IsEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"isempty\", ctx);\n }\n }\n IsEmptyFilterOperatorComponent.ɵfac = function IsEmptyFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IsEmptyFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n IsEmptyFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: IsEmptyFilterOperatorComponent,\n selectors: [[\"kendo-filter-isempty-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsEmptyFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function IsEmptyFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return IsEmptyFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `IsNotEmpty` (**Is not empty**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet IsNotEmptyFilterOperatorComponent = /*#__PURE__*/(() => {\n class IsNotEmptyFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"isnotempty\", ctx);\n }\n }\n IsNotEmptyFilterOperatorComponent.ɵfac = function IsNotEmptyFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IsNotEmptyFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n IsNotEmptyFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: IsNotEmptyFilterOperatorComponent,\n selectors: [[\"kendo-filter-isnotempty-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotEmptyFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function IsNotEmptyFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return IsNotEmptyFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `IsNotNull` (**Is not null**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet IsNotNullFilterOperatorComponent = /*#__PURE__*/(() => {\n class IsNotNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"isnotnull\", ctx);\n }\n }\n IsNotNullFilterOperatorComponent.ɵfac = function IsNotNullFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IsNotNullFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n IsNotNullFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: IsNotNullFilterOperatorComponent,\n selectors: [[\"kendo-filter-isnotnull-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNotNullFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function IsNotNullFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return IsNotNullFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `IsNull` (**Is null**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet IsNullFilterOperatorComponent = /*#__PURE__*/(() => {\n class IsNullFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"isnull\", ctx);\n }\n }\n IsNullFilterOperatorComponent.ɵfac = function IsNullFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || IsNullFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n IsNullFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: IsNullFilterOperatorComponent,\n selectors: [[\"kendo-filter-isnull-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => IsNullFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function IsNullFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return IsNullFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `NotEqual` (**Is not equal to**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet NotEqualFilterOperatorComponent = /*#__PURE__*/(() => {\n class NotEqualFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"neq\", ctx);\n }\n }\n NotEqualFilterOperatorComponent.ɵfac = function NotEqualFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NotEqualFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n NotEqualFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NotEqualFilterOperatorComponent,\n selectors: [[\"kendo-filter-neq-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => NotEqualFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function NotEqualFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return NotEqualFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `StartsWith` (**Starts with**) filter operator. [See example](slug:filtering_grid#toc-using-the-built-in-directive).\n *\n * For more information and examples, refer to the article on setting [default filter operators](slug:filter_row#toc-default-filter-operator).\n */\nlet StartsWithFilterOperatorComponent = /*#__PURE__*/(() => {\n class StartsWithFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"startswith\", ctx);\n }\n }\n StartsWithFilterOperatorComponent.ɵfac = function StartsWithFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StartsWithFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n StartsWithFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StartsWithFilterOperatorComponent,\n selectors: [[\"kendo-filter-startswith-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => StartsWithFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function StartsWithFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return StartsWithFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `Greater` (**Is greater than**) [numeric filter](slug:filtering_grid#toc-numeric-filter) operator.\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet GreaterFilterOperatorComponent = /*#__PURE__*/(() => {\n class GreaterFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"gt\", ctx);\n }\n }\n GreaterFilterOperatorComponent.ɵfac = function GreaterFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GreaterFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n GreaterFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GreaterFilterOperatorComponent,\n selectors: [[\"kendo-filter-gt-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function GreaterFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return GreaterFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `GreaterOrEqualTo` (**Is greater than or equal to**) [numeric filter](slug:filtering_grid#toc-numeric-filter) operator.\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet GreaterOrEqualToFilterOperatorComponent = /*#__PURE__*/(() => {\n class GreaterOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"gte\", ctx);\n }\n }\n GreaterOrEqualToFilterOperatorComponent.ɵfac = function GreaterOrEqualToFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GreaterOrEqualToFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n GreaterOrEqualToFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GreaterOrEqualToFilterOperatorComponent,\n selectors: [[\"kendo-filter-gte-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => GreaterOrEqualToFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function GreaterOrEqualToFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return GreaterOrEqualToFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `Less` (**Is less than**) [numeric filter](slug:filtering_grid#toc-numeric-filter) operator.\n *\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet LessFilterOperatorComponent = /*#__PURE__*/(() => {\n class LessFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"lt\", ctx);\n }\n }\n LessFilterOperatorComponent.ɵfac = function LessFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LessFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n LessFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: LessFilterOperatorComponent,\n selectors: [[\"kendo-filter-lt-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function LessFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return LessFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `LessOrEqualTo` (**Is less than or equal to**) [numeric filter](slug:filtering_grid#toc-numeric-filter) operator.\n *\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet LessOrEqualToFilterOperatorComponent = /*#__PURE__*/(() => {\n class LessOrEqualToFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"lte\", ctx);\n }\n }\n LessOrEqualToFilterOperatorComponent.ɵfac = function LessOrEqualToFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LessOrEqualToFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n LessOrEqualToFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: LessOrEqualToFilterOperatorComponent,\n selectors: [[\"kendo-filter-lte-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => LessOrEqualToFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function LessOrEqualToFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return LessOrEqualToFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `Greater` (**Is after**) [date filter](slug:filtering_grid#toc-date-filter) operator.\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet AfterFilterOperatorComponent = /*#__PURE__*/(() => {\n class AfterFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"after\", ctx);\n }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"gt\"\n };\n }\n }\n AfterFilterOperatorComponent.ɵfac = function AfterFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AfterFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n AfterFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AfterFilterOperatorComponent,\n selectors: [[\"kendo-filter-after-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function AfterFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return AfterFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `GreaterOrEqualTo` (**Is after or equal to**) [date filter](slug:filtering_grid#toc-date-filter) operator.\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet AfterEqFilterOperatorComponent = /*#__PURE__*/(() => {\n class AfterEqFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"after-eq\", ctx);\n }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"gte\"\n };\n }\n }\n AfterEqFilterOperatorComponent.ɵfac = function AfterEqFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AfterEqFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n AfterEqFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AfterEqFilterOperatorComponent,\n selectors: [[\"kendo-filter-after-eq-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => AfterEqFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function AfterEqFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return AfterEqFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `LessOrEqualTo` (**Is before or equal to**) [date filter](slug:filtering_grid#toc-date-filter) operator.\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet BeforeEqFilterOperatorComponent = /*#__PURE__*/(() => {\n class BeforeEqFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"before-eq\", ctx);\n }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"lte\"\n };\n }\n }\n BeforeEqFilterOperatorComponent.ɵfac = function BeforeEqFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BeforeEqFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n BeforeEqFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: BeforeEqFilterOperatorComponent,\n selectors: [[\"kendo-filter-before-eq-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeEqFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function BeforeEqFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return BeforeEqFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `Less than` (**Is before**) [date filter](slug:filtering_grid#toc-date-filter) operator.\n * [See example](slug:filter_row#toc-default-filter-operator).\n */\nlet BeforeFilterOperatorComponent = /*#__PURE__*/(() => {\n class BeforeFilterOperatorComponent extends FilterOperatorBase {\n constructor(ctx) {\n super(\"before\", ctx);\n }\n /**\n * @hidden\n */\n toJSON() {\n return {\n text: this.text,\n value: \"lt\"\n };\n }\n }\n BeforeFilterOperatorComponent.ɵfac = function BeforeFilterOperatorComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BeforeFilterOperatorComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n BeforeFilterOperatorComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: BeforeFilterOperatorComponent,\n selectors: [[\"kendo-filter-before-operator\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FilterOperatorBase,\n useExisting: forwardRef(() => BeforeFilterOperatorComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function BeforeFilterOperatorComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return BeforeFilterOperatorComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n*/\nlet SizingOptionsService = /*#__PURE__*/(() => {\n class SizingOptionsService {\n constructor() {\n this.changes = new Subject();\n }\n }\n SizingOptionsService.ɵfac = function SizingOptionsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SizingOptionsService)();\n };\n SizingOptionsService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SizingOptionsService,\n factory: SizingOptionsService.ɵfac\n });\n return SizingOptionsService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a component which accommodates the filter operators.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet FilterCellOperatorsComponent = /*#__PURE__*/(() => {\n class FilterCellOperatorsComponent {\n constructor(ctx, sizing) {\n this.ctx = ctx;\n this.sizing = sizing;\n this.clearText = 'Clear';\n this.filterClearIcon = filterClearIcon;\n /**\n * @hidden\n */\n this.filterSVGIcon = filterIcon;\n /**\n * @hidden\n */\n this.size = 'medium';\n /**\n * The filter operators that will be displayed.\n */\n this.operators = [];\n /**\n * Determines if the list of operators will be displayed.\n * @type {boolean}\n * @default true\n */\n this.showOperators = true;\n /**\n * Fires when the operator is selected.\n * @type {EventEmitter}\n */\n this.valueChange = new EventEmitter();\n /**\n * Fires when the **Clear** button is clicked.\n * @type {EventEmitter}\n */\n this.clear = new EventEmitter();\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return true;\n }\n /**\n * @hidden\n */\n onChange(dataItem) {\n this.valueChange.emit(dataItem);\n }\n /**\n * @hidden\n */\n clearClick() {\n this.clear.emit();\n return false;\n }\n /**\n * @hidden\n */\n clearKeydown(args) {\n if (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) {\n this.clear.emit();\n }\n }\n /**\n * @hidden\n */\n dropdownKeydown(args) {\n if (args.defaultPrevented) {\n return;\n }\n if (args.keyCode === Keys.Enter && !this.dropdown.isOpen) {\n this.dropdown.toggle(true);\n args.preventDefault();\n }\n }\n ngOnInit() {\n this.subs = this.ctx.localization.changes.subscribe(() => this.clearText = this.ctx.localization.get('filterClearButton'));\n this.subs.add(this.sizing.changes.subscribe(size => this.size = size));\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterCellOperatorLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n FilterCellOperatorsComponent.ɵfac = function FilterCellOperatorsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterCellOperatorsComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(SizingOptionsService));\n };\n FilterCellOperatorsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterCellOperatorsComponent,\n selectors: [[\"kendo-grid-filter-cell-operators\"]],\n viewQuery: function FilterCellOperatorsComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c9, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdown = _t.first);\n }\n },\n hostVars: 2,\n hostBindings: function FilterCellOperatorsComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell-operator\", ctx.hostClasses);\n }\n },\n inputs: {\n operators: \"operators\",\n showButton: \"showButton\",\n showOperators: \"showOperators\",\n value: \"value\",\n column: \"column\"\n },\n outputs: {\n valueChange: \"valueChange\",\n clear: \"clear\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 2,\n consts: [[\"dropdown\", \"\"], [\"kendoGridFocusable\", \"\", \"class\", \"k-dropdown-operator\", \"icon\", \"filter\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"data\", \"value\", \"svgIcon\", \"valuePrimitive\", \"popupSettings\", \"size\", \"valueChange\", \"keydown\", 4, \"ngIf\"], [\"type\", \"button\", \"kendoButton\", \"\", \"kendoGridFocusable\", \"\", \"icon\", \"filter-clear\", 3, \"svgIcon\", \"title\", \"size\", \"click\", \"keydown\", 4, \"ngIf\"], [\"kendoGridFocusable\", \"\", \"icon\", \"filter\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-dropdown-operator\", 3, \"valueChange\", \"keydown\", \"data\", \"value\", \"svgIcon\", \"valuePrimitive\", \"popupSettings\", \"size\"], [\"type\", \"button\", \"kendoButton\", \"\", \"kendoGridFocusable\", \"\", \"icon\", \"filter-clear\", 3, \"click\", \"keydown\", \"svgIcon\", \"title\", \"size\"]],\n template: function FilterCellOperatorsComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, FilterCellOperatorsComponent_kendo_dropdownlist_0_Template, 2, 8, \"kendo-dropdownlist\", 1)(1, FilterCellOperatorsComponent_button_1_Template, 1, 3, \"button\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.showOperators);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showButton);\n }\n },\n dependencies: [NgIf, DropDownListComponent, FocusableDirective, ButtonComponent],\n encapsulation: 2\n });\n return FilterCellOperatorsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FilterInputDirective = /*#__PURE__*/(() => {\n class FilterInputDirective {\n constructor(valueAccessors, ngZone, element, renderer) {\n this.element = element;\n this.renderer = renderer;\n this.change = new EventEmitter();\n this.composing = false;\n this.filterDelay = 500;\n this.changeRequests = new Subject();\n this.accessor = valueAccessors[0];\n ngZone.runOutsideAngular(() => {\n const unsubscribeStart = renderer.listen(element.nativeElement, 'compositionstart', () => this.composing = true);\n const unsubscribeEnd = renderer.listen(element.nativeElement, 'compositionend', () => this.composing = false);\n this.unsubscribeEvents = () => {\n unsubscribeStart();\n unsubscribeEnd();\n };\n });\n }\n set value(value) {\n this.accessor.writeValue(value);\n }\n set disabled(value) {\n this.accessor.setDisabledState(value);\n }\n ngAfterViewInit() {\n this.addAriaAttributes();\n this.accessor.registerOnChange(x => this.filterDelay > 0 ? this.changeRequests.next(x) : this.change.emit(x));\n this.subscribeChanges();\n }\n ngOnChanges(changes) {\n if (isChanged$1('filterDelay', changes)) {\n this.unsubscribeChanges();\n this.subscribeChanges();\n }\n }\n ngOnDestroy() {\n this.unsubscribeChanges();\n this.unsubscribeEvents();\n }\n subscribeChanges() {\n this.changeRequestsSubscription = this.changeRequests.pipe(debounceTime(this.filterDelay), filter(() => !this.composing)).subscribe(x => this.change.emit(x));\n }\n unsubscribeChanges() {\n if (this.changeRequestsSubscription) {\n this.changeRequestsSubscription.unsubscribe();\n }\n }\n addAriaAttributes() {\n const ariaValue = this.columnLabel;\n if (this.kendoInput && this.kendoInput.focusableId && isDocumentAvailable()) {\n const focusableElement = this.element.nativeElement.querySelector(`#${this.kendoInput.focusableId}`) || this.element.nativeElement;\n this.renderer.setAttribute(focusableElement, 'aria-label', ariaValue);\n } else {\n const inputElement = this.element.nativeElement.querySelector('.k-input-inner');\n const elementToSetLabel = inputElement ? inputElement : this.element.nativeElement;\n if (ariaValue) {\n this.renderer.setAttribute(elementToSetLabel, 'aria-label', ariaValue);\n }\n }\n }\n }\n FilterInputDirective.ɵfac = function FilterInputDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterInputDirective)(i0.ɵɵdirectiveInject(NG_VALUE_ACCESSOR, 2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n FilterInputDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterInputDirective,\n selectors: [[\"\", \"kendoFilterInput\", \"\"]],\n contentQueries: function FilterInputDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, KendoInput, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.kendoInput = _t.first);\n }\n },\n inputs: {\n filterDelay: \"filterDelay\",\n columnLabel: \"columnLabel\",\n value: \"value\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return FilterInputDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet MenuTabbingService = /*#__PURE__*/(() => {\n class MenuTabbingService {\n constructor() {\n this.isColumnMenu = false;\n this.isPopupOpen = false;\n this.isTabbedInterface = false;\n }\n }\n MenuTabbingService.ɵfac = function MenuTabbingService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MenuTabbingService)();\n };\n MenuTabbingService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MenuTabbingService,\n factory: MenuTabbingService.ɵfac\n });\n return MenuTabbingService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a service to set the filter descriptor\n * ([see example]({% slug filter_row %}#toc-custom-filter-row-components)).\n */\nlet FilterService = /*#__PURE__*/(() => {\n class FilterService {\n /**\n * @hidden\n */\n constructor(menuTabbingService) {\n /**\n * Fires when the filter descriptors is set.\n */\n this.changes = new Subject();\n this.menuTabbingService = menuTabbingService;\n }\n /**\n * Sets the filter descriptor.\n *\n * @param {CompositeFilterDescriptor} value - The filter descriptor that will be set.\n */\n filter(value) {\n this.changes.next(value);\n }\n }\n FilterService.ɵfac = function FilterService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterService)(i0.ɵɵinject(MenuTabbingService, 8));\n };\n FilterService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FilterService,\n factory: FilterService.ɵfac\n });\n return FilterService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ScrollSyncService = /*#__PURE__*/(() => {\n class ScrollSyncService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new Subject();\n this.elements = [];\n this.subscriptions = new Subscription();\n this.headerSubscription = new Subscription();\n this.bodySubscription = new Subscription();\n this.subscriptions.add(this.changes.subscribe(args => this.scrollLeft(args)));\n }\n registerEmitter(el, sourceType) {\n this.unregister(sourceType);\n this.elements.push({\n element: el,\n sourceType\n });\n if (sourceType === \"body\" || sourceType === \"header\") {\n this.ngZone.runOutsideAngular(() => {\n const obs = fromEvent(el, \"scroll\").pipe(map(({\n target: {\n scrollLeft\n }\n }) => ({\n scrollLeft,\n sourceType\n })));\n const subscription = obs.pipe(distinctUntilChanged((x, y) => x.scrollLeft === y.scrollLeft), filter(x => !this.source || this.source === x.sourceType), tap(x => this.source = x.sourceType)).subscribe(x => this.changes.next(x));\n subscription.add(obs.pipe(filter(x => this.source && this.source !== x.sourceType)).subscribe(() => this.source = undefined));\n if (sourceType === \"body\") {\n this.bodySubscription.add(subscription);\n } else {\n this.headerSubscription.add(subscription);\n }\n });\n }\n }\n /**\n * destroy\n */\n destroy() {\n this.subscriptions.unsubscribe();\n this.headerSubscription.unsubscribe();\n this.bodySubscription.unsubscribe();\n }\n scrollLeft({\n scrollLeft,\n sourceType\n }) {\n this.ngZone.runOutsideAngular(() => {\n this.elements.filter(x => sourceType !== x.sourceType).forEach(({\n element\n }) => element.scrollLeft = scrollLeft);\n });\n }\n unregister(sourceType) {\n const index = this.elements.findIndex(x => x.sourceType === sourceType);\n if (index > -1) {\n if (sourceType === \"header\") {\n this.headerSubscription.unsubscribe();\n this.headerSubscription = new Subscription();\n } else if (sourceType === \"body\") {\n this.bodySubscription.unsubscribe();\n this.bodySubscription = new Subscription();\n }\n this.elements.splice(index, 1);\n }\n }\n }\n ScrollSyncService.ɵfac = function ScrollSyncService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ScrollSyncService)(i0.ɵɵinject(i0.NgZone));\n };\n ScrollSyncService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollSyncService,\n factory: ScrollSyncService.ɵfac\n });\n return ScrollSyncService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst contains = (node, predicate) => {\n while (node) {\n if (predicate(node)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n};\n/**\n * Arguments for the `close` event of the filter and column-menu popup.\n */\nclass PopupCloseEvent extends PreventableEvent {\n constructor(e) {\n super();\n this.originalEvent = e;\n }\n}\nconst DEFAULT_POPUP_CLASS = 'k-grid-filter-popup';\n/**\n * The service that is used for the popups of the filter and column menus\n * ([see example]({% slug filter_menu %}#toc-filter-menu-with-popup)).\n */\nlet SinglePopupService = /*#__PURE__*/(() => {\n class SinglePopupService {\n /**\n * @hidden\n */\n constructor(popupService, renderer, ngZone, scrollSyncService, ctx) {\n this.popupService = popupService;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.ctx = ctx;\n /**\n * Fires when the filter or column menus are about to close because the user clicked outside their popups.\n * Used to prevent the popup from closing.\n */\n this.onClose = new Subject();\n this.pointerEventsSub = new Subscription();\n this.scrollSubscription = scrollSyncService.changes.subscribe(() => this.destroy());\n }\n /**\n * @hidden\n */\n open(anchor, template, popupRef, popupClass = DEFAULT_POPUP_CLASS) {\n const toggle = isPresent(popupRef) && this.popupRef === popupRef;\n this.destroy();\n if (!toggle) {\n const direction = this.ctx.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchorAlign: {\n vertical: 'bottom',\n horizontal: direction\n },\n popupAlign: {\n vertical: 'top',\n horizontal: direction\n },\n anchor: anchor,\n popupClass: popupClass,\n content: template,\n positionMode: \"absolute\"\n });\n this.renderer.setAttribute(this.popupRef.popupElement, 'dir', this.ctx.localization.rtl ? 'rtl' : 'ltr');\n this.attachClose(anchor);\n }\n const popupEl = this.popupRef?.popupElement;\n if (popupEl) {\n this.attachMouseListeners(popupEl);\n }\n return this.popupRef;\n }\n /**\n * @hidden\n */\n destroy() {\n if (this.popupRef) {\n this.detachClose();\n this.pointerEventsSub.unsubscribe();\n this.pointerEventsSub = null;\n this.popupRef.close();\n this.popupRef = null;\n }\n }\n ngOnDestroy() {\n this.destroy();\n this.scrollSubscription.unsubscribe();\n }\n detachClose() {\n if (this.removeClick) {\n this.removeClick();\n }\n }\n attachClose(skipElement) {\n if (!isDocumentAvailable()) {\n return;\n }\n this.detachClose();\n this.ngZone.runOutsideAngular(() => this.removeClick = this.renderer.listen('document', 'click', e => {\n if (!contains(e.target, x => this.popupRef.popupElement === x || x === skipElement)) {\n const args = new PopupCloseEvent(e);\n this.onClose.next(args);\n if (!args.isDefaultPrevented() && this.canClosePopup) {\n this.destroy();\n }\n this.canClosePopup = true;\n }\n }));\n }\n attachMouseListeners(el) {\n this.pointerEventsSub = new Subscription();\n this.ngZone.runOutsideAngular(() => {\n this.pointerEventsSub.add(this.renderer.listen(el, 'pointerdown', e => {\n e.stopImmediatePropagation();\n this.canClosePopup = false;\n }));\n this.pointerEventsSub.add(this.renderer.listen(el, 'pointerup', () => {\n this.canClosePopup = true;\n }));\n });\n }\n }\n SinglePopupService.ɵfac = function SinglePopupService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SinglePopupService)(i0.ɵɵinject(i5.PopupService), i0.ɵɵinject(i0.Renderer2), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(ScrollSyncService), i0.ɵɵinject(ContextService));\n };\n SinglePopupService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SinglePopupService,\n factory: SinglePopupService.ɵfac\n });\n return SinglePopupService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst insertDefaultFilter = (index, rootFilter, filter) => {\n rootFilter = rootFilter || {\n filters: [],\n logic: \"and\"\n };\n rootFilter.filters[index] = filter;\n return filter;\n};\n/**\n * @hidden\n */\nconst setFilter = (index, filter, field, defaultOperator) => {\n if (isPresent(filter) && isPresent(filter.filters) && filter.filters.length > index) {\n return filter.filters[index];\n } else {\n return insertDefaultFilter(index, filter, {\n field,\n operator: defaultOperator\n });\n }\n};\n/**\n * @hidden\n */\nconst logicOperators = localization => [{\n text: localization.get(\"filterAndLogic\"),\n value: \"and\"\n}, {\n text: localization.get(\"filterOrLogic\"),\n value: \"or\"\n}];\n/**\n * @hidden\n */\nconst flatten = filter => {\n if (isPresent(filter.filters)) {\n return filter.filters.reduce((acc, curr) => acc.concat(isCompositeFilterDescriptor(curr) ? flatten(curr) : [curr]), []);\n }\n return [];\n};\nconst trimFilterByField = (filter, field) => {\n if (isPresent(filter) && isPresent(filter.filters)) {\n filter.filters = filter.filters.filter(x => {\n if (isCompositeFilterDescriptor(x)) {\n trimFilterByField(x, field);\n return x.filters.length;\n } else {\n return x.field !== field;\n }\n });\n }\n};\n/**\n * @hidden\n */\nconst filtersByField = (filter, field) => flatten(filter || {}).filter(x => x.field === field);\n/**\n * @hidden\n */\nconst filterByField = (filter, field) => {\n const [currentFilter] = filtersByField(filter, field);\n return currentFilter;\n};\n/**\n * @hidden\n */\nconst removeFilter = (filter, field) => {\n trimFilterByField(filter, field);\n return filter;\n};\n/**\n * @hidden\n */\nconst localizeOperators = operators => localization => Object.keys(operators).map(key => ({\n text: localization.get(key),\n value: operators[key]\n}));\n/**\n * An abstract base class for the filter-cell component ([see example]({% slug filter_row %}#toc-custom-filter-row-components)).\n */\nlet BaseFilterCellComponent = /*#__PURE__*/(() => {\n class BaseFilterCellComponent {\n constructor(filterService) {\n this.filterService = filterService;\n this.operatorList = new QueryList();\n /**\n * @hidden\n */\n this.size = 'medium';\n }\n get hostClasses() {\n return true;\n }\n get operators() {\n return this._operators?.length ? this._operators : this.defaultOperators;\n }\n set operators(values) {\n this._operators = values;\n }\n /**\n * @hidden\n */\n ngAfterContentInit() {\n this.operationListSubscription = observe(this.operatorList).pipe(map(q => q.toArray()), map(toJSON)).subscribe(x => {\n this.operators = x;\n });\n }\n ngOnDestroy() {\n if (this.operationListSubscription) {\n this.operationListSubscription.unsubscribe();\n }\n }\n filterByField(field) {\n return filterByField(this.filter, field);\n }\n filtersByField(field) {\n return filtersByField(this.filter, field);\n }\n removeFilter(field) {\n return removeFilter(this.filter, field);\n }\n updateFilter(filter) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n const [currentFilter] = flatten(root).filter(x => x.field === filter.field);\n if (!isPresent(currentFilter)) {\n root.filters.push(filter);\n } else {\n Object.assign(currentFilter, filter);\n }\n return root;\n }\n applyFilter(filter) {\n this.filterService.filter(filter);\n }\n }\n BaseFilterCellComponent.ɵfac = function BaseFilterCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BaseFilterCellComponent)(i0.ɵɵdirectiveInject(FilterService));\n };\n BaseFilterCellComponent.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BaseFilterCellComponent,\n contentQueries: function BaseFilterCellComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, FilterOperatorBase, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.operatorList = _t);\n }\n },\n hostVars: 2,\n hostBindings: function BaseFilterCellComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n }\n },\n inputs: {\n operators: \"operators\"\n }\n });\n return BaseFilterCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst areDifferent = (a, b) => a.field !== b.field || a.operator !== b.operator || a.value !== b.value;\nconst isChanged = (a, b) => {\n if (a.length !== b.length) {\n return true;\n }\n for (let idx = 0, len = a.length; idx < len; idx++) {\n const prev = a[idx];\n const curr = b[idx];\n if (isCompositeFilterDescriptor(prev)) {\n if (diffFilters(prev, curr[idx])) {\n return true;\n }\n } else if (areDifferent(prev, curr)) {\n return true;\n }\n }\n return false;\n};\nconst copyObject = obj => {\n const result = {};\n Object.assign(result, obj);\n if (obj.constructor !== Object) {\n const proto = obj.constructor.prototype;\n Object.getOwnPropertyNames(proto).forEach(property => {\n if (property !== 'constructor' && proto.hasOwnProperty(property)) {\n result[property] = obj[property];\n }\n });\n }\n return result;\n};\nconst cloneFilter = filter => copyObject(filter);\n/**\n * @hidden\n */\nconst cloneFilters = filter => {\n if (!filter) {\n return;\n }\n if (isCompositeFilterDescriptor(filter)) {\n return {\n filters: cloneFilters(filter.filters),\n logic: filter.logic\n };\n } else if (Array.isArray(filter)) {\n return filter.map(cloneFilters);\n }\n return cloneFilter(filter);\n};\n/**\n * @hidden\n */\nconst diffFilters = (a, b) => {\n if (isPresent(a) && !isPresent(b)) {\n return true;\n }\n if (!isPresent(a) && isPresent(b)) {\n return true;\n }\n return isPresent(a) && isPresent(b) && isChanged(a.filters, b.filters);\n};\n\n/**\n * @hidden\n */\nlet FilterHostDirective = /*#__PURE__*/(() => {\n class FilterHostDirective {\n constructor(host, resolver) {\n this.host = host;\n this.resolver = resolver;\n }\n ngOnInit() {\n this.component = this.host.createComponent(this.resolver.resolveComponentFactory(this.componentType()));\n this.initComponent({\n column: this.column,\n filter: this.filter\n });\n }\n ngOnDestroy() {\n if (this.component) {\n this.component.destroy();\n this.component = null;\n }\n }\n ngOnChanges(changes) {\n if (anyChanged([\"column\", \"filter\"], changes)) {\n this.initComponent({\n column: this.column,\n filter: this.filter\n });\n }\n }\n initComponent({\n column,\n filter\n }) {\n const instance = this.component.instance;\n instance.column = column;\n instance.filter = filter;\n }\n }\n FilterHostDirective.ɵfac = function FilterHostDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterHostDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver));\n };\n FilterHostDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterHostDirective,\n selectors: [[\"\", \"kendoGridFilterHostBase\", \"\"]],\n inputs: {\n column: \"column\",\n filter: \"filter\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return FilterHostDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-access-missing-member\nconst stringOperators$1 = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\"\n});\n/**\n * Represents a base string filter component.\n */\nlet StringFilterComponent = /*#__PURE__*/(() => {\n class StringFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, ctx) {\n super(filterService);\n this.ctx = ctx;\n /**\n * The default filter operator.\n * @type {string}\n * @default 'contains'\n */\n this.operator = \"contains\";\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField((this.column || {}).field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.ctx.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = stringOperators$1(this.ctx.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n }\n StringFilterComponent.ɵfac = function StringFilterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StringFilterComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService));\n };\n StringFilterComponent.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: StringFilterComponent,\n inputs: {\n column: \"column\",\n filter: \"filter\",\n operator: \"operator\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return StringFilterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FilterMenuDropDownListDirective = /*#__PURE__*/(() => {\n class FilterMenuDropDownListDirective {\n constructor(host) {\n this.host = host;\n this.keydownHandler = e => {\n if (e.keyCode === Keys.Escape && this.host.isOpen) {\n e.stopPropagation();\n this.host.toggle(false);\n }\n };\n }\n ngAfterViewInit() {\n const wrapperElement = this.host.wrapper.nativeElement;\n wrapperElement.setAttribute('aria-label', this.filterMenuDropDownLabel);\n wrapperElement.addEventListener('keydown', this.keydownHandler, true);\n }\n ngOnDestroy() {\n this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);\n }\n }\n FilterMenuDropDownListDirective.ɵfac = function FilterMenuDropDownListDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterMenuDropDownListDirective)(i0.ɵɵdirectiveInject(i1$4.DropDownListComponent));\n };\n FilterMenuDropDownListDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterMenuDropDownListDirective,\n selectors: [[\"\", \"kendoFilterMenuDropDown\", \"\"]],\n inputs: {\n filterMenuDropDownLabel: \"filterMenuDropDownLabel\"\n },\n standalone: true\n });\n return FilterMenuDropDownListDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst EMPTY_VALUE_OPERATORS = new Set(['isnull', 'isnotnull', 'isempty', 'isnotempty']);\nconst isEmptyValueOperator = operator => EMPTY_VALUE_OPERATORS.has(operator);\n/**\n * @hidden\n */\nlet FilterInputWrapperComponent = /*#__PURE__*/(() => {\n class FilterInputWrapperComponent extends BaseFilterCellComponent {\n constructor(filterService) {\n super(filterService);\n }\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n get currentOperator() {\n const filter = this.currentFilter;\n if (!this._operator) {\n this._operator = filter ? filter.operator : this.defaultOperator;\n }\n return this._operator;\n }\n set currentOperator(value) {\n this._operator = value;\n const emptyValueOperator = isEmptyValueOperator(value);\n this.filterInputDisabled = emptyValueOperator;\n if (emptyValueOperator) {\n this.applyNoValueFilter(value);\n } else if (!isBlank(value) && isPresent(this.currentFilter)) {\n this.onChange(this.currentFilter.value);\n }\n }\n get defaultOperator() {\n if (!isNullOrEmptyString(this._defaultOperator)) {\n return this._defaultOperator;\n } else if (this.operators && this.operators.length) {\n return this.operators[0].value;\n }\n return \"eq\";\n }\n set defaultOperator(value) {\n this._defaultOperator = value;\n }\n set filterInputDisabled(disabled) {\n if (!this.input) {\n return;\n }\n this.input.disabled = disabled;\n }\n ngAfterContentInit() {\n if (isPresent(this.input)) {\n this.changeSubscription = this.input.change.subscribe(this.onChange.bind(this));\n this.filterInputDisabled = isEmptyValueOperator(this.currentOperator);\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.changeSubscription) {\n this.changeSubscription.unsubscribe();\n }\n }\n onChange(value) {\n if (!isNullOrEmptyString(value) || this.filterByField(this.column.field)) {\n this.filterChange(isNullOrEmptyString(value) ? this.removeFilter(this.column.field) : this.updateFilter({\n field: this.column.field,\n operator: this.currentOperator,\n value: value\n }));\n }\n }\n onClear() {\n this.onChange(null);\n this.filterInputDisabled = isEmptyValueOperator(this.defaultOperator);\n }\n applyNoValueFilter(operator) {\n this.filterChange(this.updateFilter({\n field: this.column.field,\n operator: operator,\n value: null\n }));\n }\n ngOnChanges(changes) {\n if (isChanged$1(\"filter\", changes, false)) {\n this._operator = null;\n this.filterInputDisabled = isEmptyValueOperator(this.currentOperator);\n }\n }\n }\n FilterInputWrapperComponent.ɵfac = function FilterInputWrapperComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterInputWrapperComponent)(i0.ɵɵdirectiveInject(FilterService));\n };\n FilterInputWrapperComponent.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterInputWrapperComponent,\n contentQueries: function FilterInputWrapperComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, FilterInputDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);\n }\n },\n inputs: {\n column: \"column\",\n filter: \"filter\",\n defaultOperator: \"defaultOperator\"\n },\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature]\n });\n return FilterInputWrapperComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FilterMenuInputWrapperComponent = /*#__PURE__*/(() => {\n class FilterMenuInputWrapperComponent extends FilterInputWrapperComponent {\n constructor(ctx) {\n super(null);\n this.ctx = ctx;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n ngAfterViewInit() {\n const shouldFocusFirstFocusable = this.isFirstDropDown && this.filterService && this.filterService.menuTabbingService;\n const isTabbedInterface = this.menuTabbingService?.isTabbedInterface;\n if (shouldFocusFirstFocusable && !isTabbedInterface) {\n this.filterService.menuTabbingService.firstFocusable = this.firstOperatorDropDown;\n this.firstOperatorDropDown.focus();\n }\n }\n operatorChange(dataItem) {\n this.currentOperator = dataItem;\n }\n filterChange(filter) {\n this.applyFilter(filter);\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this._currentFilter;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n set currentFilter(value) {\n this._currentFilter = value;\n }\n updateFilter(filter) {\n Object.assign(this.currentFilter, filter);\n return this.filter;\n }\n onChange(value) {\n this.filterChange(this.updateFilter({\n field: this.column.field,\n operator: this.currentOperator,\n value: value\n }));\n }\n onShiftTab(e) {\n e.stopImmediatePropagation();\n if ((!this.menuTabbingService || !this.menuTabbingService.isColumnMenu) && this.isFirstDropDown && this.filterService.menuTabbingService.lastFocusable) {\n e.preventDefault();\n this.filterService.menuTabbingService.lastFocusable.focus();\n }\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.ctx.localization.get('filterMenuOperatorsDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n FilterMenuInputWrapperComponent.ɵfac = function FilterMenuInputWrapperComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterMenuInputWrapperComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n FilterMenuInputWrapperComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterMenuInputWrapperComponent,\n selectors: [[\"kendo-grid-filter-menu-input-wrapper\"]],\n viewQuery: function FilterMenuInputWrapperComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(DropDownListComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.firstOperatorDropDown = _t.first);\n }\n },\n inputs: {\n filterService: \"filterService\",\n isFirstDropDown: \"isFirstDropDown\",\n menuTabbingService: \"menuTabbingService\",\n currentFilter: \"currentFilter\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c11,\n decls: 2,\n vars: 4,\n consts: [[\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"valueChange\", \"keydown.shift.tab\", \"filterMenuDropDownLabel\", \"data\", \"value\", \"valuePrimitive\"]],\n template: function FilterMenuInputWrapperComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"kendo-dropdownlist\", 0);\n i0.ɵɵlistener(\"valueChange\", function FilterMenuInputWrapperComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) {\n return ctx.operatorChange($event);\n })(\"keydown.shift.tab\", function FilterMenuInputWrapperComponent_Template_kendo_dropdownlist_keydown_shift_tab_0_listener($event) {\n return ctx.onShiftTab($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵprojection(1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"filterMenuDropDownLabel\", ctx.filterMenuDropDownLabel)(\"data\", ctx.operators)(\"value\", ctx.currentOperator)(\"valuePrimitive\", true);\n }\n },\n dependencies: [DropDownListComponent, FilterMenuDropDownListDirective],\n encapsulation: 2\n });\n return FilterMenuInputWrapperComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet StringFilterMenuInputComponent = /*#__PURE__*/(() => {\n class StringFilterMenuInputComponent {\n constructor(ctx) {\n this.ctx = ctx;\n this.operators = [];\n }\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n StringFilterMenuInputComponent.ɵfac = function StringFilterMenuInputComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StringFilterMenuInputComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n StringFilterMenuInputComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StringFilterMenuInputComponent,\n selectors: [[\"kendo-grid-string-filter-menu-input\"]],\n inputs: {\n operators: \"operators\",\n column: \"column\",\n filter: \"filter\",\n operator: \"operator\",\n currentFilter: \"currentFilter\",\n filterService: \"filterService\",\n isFirstDropDown: \"isFirstDropDown\",\n menuTabbingService: \"menuTabbingService\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 11,\n consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoTextBox\", \"\", \"kendoFilterInput\", \"\", 3, \"columnLabel\", \"filterDelay\", \"ngModel\"]],\n template: function StringFilterMenuInputComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-filter-menu-input-wrapper\", 0);\n i0.ɵɵelement(1, \"input\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"currentFilter\", ctx.currentFilter)(\"filterService\", ctx.filterService)(\"isFirstDropDown\", ctx.isFirstDropDown)(\"menuTabbingService\", ctx.menuTabbingService);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", 0)(\"ngModel\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n }\n },\n dependencies: [FilterMenuInputWrapperComponent, TextBoxDirective, FilterInputDirective, FormsModule, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgModel],\n encapsulation: 2\n });\n return StringFilterMenuInputComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a string-filter menu component\n * ([see example](slug:filter_menu#toc-built-in-filter-menu-components)).\n *\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet StringFilterMenuComponent = /*#__PURE__*/(() => {\n class StringFilterMenuComponent extends StringFilterComponent {\n constructor(ctx) {\n super(null, ctx);\n this.logicOperators = logicOperators(this.ctx.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = {\n filters: [],\n logic: \"and\"\n };\n /**\n * Determines if the inputs of second criteria will displayed.\n * @default true\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.ctx.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.ctx.localization);\n super.localizationChange();\n }\n }\n StringFilterMenuComponent.ɵfac = function StringFilterMenuComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StringFilterMenuComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n StringFilterMenuComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StringFilterMenuComponent,\n selectors: [[\"kendo-grid-string-filter-menu\"]],\n hostVars: 2,\n hostBindings: function StringFilterMenuComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n }\n },\n inputs: {\n column: \"column\",\n filter: \"filter\",\n extra: \"extra\",\n filterService: \"filterService\",\n menuTabbingService: \"menuTabbingService\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 9,\n consts: [[3, \"currentFilter\", \"operators\", \"filterService\", \"column\", \"filter\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterMenuDropDown\", \"\", \"class\", \"k-filter-and\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"menuTabbingService\", 4, \"ngIf\"], [\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-filter-and\", 3, \"valueChange\", \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"menuTabbingService\"]],\n template: function StringFilterMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-string-filter-menu-input\", 0);\n i0.ɵɵtemplate(1, StringFilterMenuComponent_kendo_dropdownlist_1_Template, 1, 4, \"kendo-dropdownlist\", 1)(2, StringFilterMenuComponent_kendo_grid_string_filter_menu_input_2_Template, 1, 6, \"kendo-grid-string-filter-menu-input\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"currentFilter\", ctx.firstFilter)(\"operators\", ctx.operators)(\"filterService\", ctx.filterService)(\"column\", ctx.column)(\"filter\", ctx.filter)(\"isFirstDropDown\", true)(\"menuTabbingService\", ctx.menuTabbingService);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.extra);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.extra);\n }\n },\n dependencies: [StringFilterMenuInputComponent, NgIf, DropDownListComponent, FilterMenuDropDownListDirective],\n encapsulation: 2\n });\n return StringFilterMenuComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-access-missing-member\nconst numericOperators = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterGteOperator\": \"gte\",\n \"filterGtOperator\": \"gt\",\n \"filterLteOperator\": \"lte\",\n \"filterLtOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\"\n});\n/**\n * Represents a base numeric filter component.\n */\nlet NumericFilterComponent = /*#__PURE__*/(() => {\n class NumericFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, ctx) {\n super(filterService);\n this.ctx = ctx;\n /**\n * The default filter operator.\n * @type {string}\n * @default 'eq'\n */\n this.operator = \"eq\";\n /**\n * Specifies the value that is used to increment or decrement the component value.\n * @type {numeric}\n * @default 1\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * @type {boolean}\n * @default true\n */\n this.spinners = true;\n this.defaultOperators = numericOperators(this.ctx.localization);\n }\n /**\n * Specifies the number format used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n */\n get format() {\n return !isNullOrEmptyString(this._format) ? this._format : this.columnFormat;\n }\n set format(value) {\n this._format = value;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n get columnFormat() {\n return this.column && !isNullOrEmptyString(this.column.format) ? extractFormat(this.column.format) : \"n2\";\n }\n ngOnInit() {\n this.subscription = this.ctx.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = numericOperators(this.ctx.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n }\n NumericFilterComponent.ɵfac = function NumericFilterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NumericFilterComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService));\n };\n NumericFilterComponent.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NumericFilterComponent,\n inputs: {\n column: \"column\",\n filter: \"filter\",\n operator: \"operator\",\n step: \"step\",\n min: \"min\",\n max: \"max\",\n spinners: \"spinners\",\n decimals: \"decimals\",\n format: \"format\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return NumericFilterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet NumericFilterMenuInputComponent = /*#__PURE__*/(() => {\n class NumericFilterMenuInputComponent {\n constructor(ctx) {\n this.ctx = ctx;\n this.operators = [];\n /**\n * Specifies the value which is used to increment or decrement the component value.\n * @type {numeric}\n */\n this.step = 1;\n /**\n * Specifies whether the **Up** and **Down** spin buttons will be rendered.\n * @type {boolean}\n */\n this.spinners = true;\n }\n messageFor(key) {\n return this.ctx.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n NumericFilterMenuInputComponent.ɵfac = function NumericFilterMenuInputComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NumericFilterMenuInputComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n NumericFilterMenuInputComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NumericFilterMenuInputComponent,\n selectors: [[\"kendo-grid-numeric-filter-menu-input\"]],\n inputs: {\n operators: \"operators\",\n column: \"column\",\n filter: \"filter\",\n operator: \"operator\",\n currentFilter: \"currentFilter\",\n filterService: \"filterService\",\n filterDelay: \"filterDelay\",\n isFirstDropDown: \"isFirstDropDown\",\n menuTabbingService: \"menuTabbingService\",\n step: \"step\",\n min: \"min\",\n max: \"max\",\n spinners: \"spinners\",\n decimals: \"decimals\",\n format: \"format\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 20,\n consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterInput\", \"\", 3, \"columnLabel\", \"filterDelay\", \"autoCorrect\", \"value\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\"], [3, \"increment\", \"decrement\"]],\n template: function NumericFilterMenuInputComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-filter-menu-input-wrapper\", 0)(1, \"kendo-numerictextbox\", 1);\n i0.ɵɵelement(2, \"kendo-numerictextbox-messages\", 2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"currentFilter\", ctx.currentFilter)(\"filterService\", ctx.filterService)(\"isFirstDropDown\", ctx.isFirstDropDown)(\"menuTabbingService\", ctx.menuTabbingService);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", ctx.filterDelay)(\"autoCorrect\", true)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"format\", ctx.format)(\"decimals\", ctx.decimals)(\"spinners\", ctx.spinners)(\"min\", ctx.min)(\"max\", ctx.max)(\"step\", ctx.step);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"increment\", ctx.messageFor(\"filterNumericIncrement\"))(\"decrement\", ctx.messageFor(\"filterNumericDecrement\"));\n }\n },\n dependencies: [FilterMenuInputWrapperComponent, NumericTextBoxComponent, FilterInputDirective, NumericTextBoxCustomMessagesComponent],\n encapsulation: 2\n });\n return NumericFilterMenuInputComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a numeric filter-menu component.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet NumericFilterMenuComponent = /*#__PURE__*/(() => {\n class NumericFilterMenuComponent extends NumericFilterComponent {\n constructor(ctx) {\n super(null, ctx);\n this.logicOperators = logicOperators(this.ctx.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = {\n filters: [],\n logic: \"and\"\n };\n /**\n * Determines if the inputs of second criteria will displayed.\n * @default true\n */\n this.extra = true;\n /**\n * Determines the delay (in milliseconds) before creating a filter descriptor based on the value. A value of 0 indicates no delay. The default value is 500.\n *\n * @default 500\n */\n this.filterDelay = 500;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.ctx.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.ctx.localization);\n super.localizationChange();\n }\n }\n NumericFilterMenuComponent.ɵfac = function NumericFilterMenuComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NumericFilterMenuComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n NumericFilterMenuComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NumericFilterMenuComponent,\n selectors: [[\"kendo-grid-numeric-filter-menu\"]],\n hostVars: 2,\n hostBindings: function NumericFilterMenuComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n }\n },\n inputs: {\n column: \"column\",\n filter: \"filter\",\n extra: \"extra\",\n filterService: \"filterService\",\n filterDelay: \"filterDelay\",\n menuTabbingService: \"menuTabbingService\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 16,\n consts: [[3, \"currentFilter\", \"operators\", \"filterService\", \"column\", \"filter\", \"filterDelay\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\", \"menuTabbingService\", \"isFirstDropDown\"], [\"kendoFilterMenuDropDown\", \"\", \"class\", \"k-filter-and\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\", \"menuTabbingService\", 4, \"ngIf\"], [\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-filter-and\", 3, \"valueChange\", \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"step\", \"menuTabbingService\"]],\n template: function NumericFilterMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-numeric-filter-menu-input\", 0);\n i0.ɵɵtemplate(1, NumericFilterMenuComponent_kendo_dropdownlist_1_Template, 1, 4, \"kendo-dropdownlist\", 1)(2, NumericFilterMenuComponent_kendo_grid_numeric_filter_menu_input_2_Template, 1, 12, \"kendo-grid-numeric-filter-menu-input\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"currentFilter\", ctx.firstFilter)(\"operators\", ctx.operators)(\"filterService\", ctx.filterService)(\"column\", ctx.column)(\"filter\", ctx.filter)(\"filterDelay\", ctx.filterDelay)(\"format\", ctx.format)(\"decimals\", ctx.decimals)(\"spinners\", ctx.spinners)(\"min\", ctx.min)(\"max\", ctx.max)(\"step\", ctx.step)(\"menuTabbingService\", ctx.menuTabbingService)(\"isFirstDropDown\", true);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.extra);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.extra);\n }\n },\n dependencies: [NumericFilterMenuInputComponent, NgIf, DropDownListComponent, FilterMenuDropDownListDirective],\n encapsulation: 2\n });\n return NumericFilterMenuComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-access-missing-member\nconst dateOperators = localizeOperators({\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterAfterOrEqualOperator\": \"gte\",\n \"filterAfterOperator\": \"gt\",\n \"filterBeforeOrEqualOperator\": \"lte\",\n \"filterBeforeOperator\": \"lt\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\"\n});\n/**\n * @hidden\n */\nlet DateFilterComponent = /*#__PURE__*/(() => {\n class DateFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, ctx) {\n super(filterService);\n this.ctx = ctx;\n /**\n * The default filter operator. Defaults to `contains`.\n * @type {string}\n * @default 'gte'\n */\n this.operator = \"gte\";\n /**\n * Defines the active view that the calendar initially renders.\n * By default, the active view is `month`.\n * You have to set `activeView` within the `topView`-`bottomView` range.\n * @default 'month'\n */\n this.activeView = \"month\";\n /**\n * Defines the bottommost calendar view, to which the user can navigate.\n * @default 'month'\n */\n this.bottomView = \"month\";\n /**\n * Defines the topmost calendar view, to which the user can navigate.\n * @default 'century'\n */\n this.topView = \"century\";\n /**\n * Determines whether to display a week number column in the `month` view of the Calendar.\n * @default false\n */\n this.weekNumber = false;\n this.defaultOperators = dateOperators(this.ctx.localization);\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * Specifies the date format that is used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n */\n set format(value) {\n this._format = value;\n }\n /**\n * Specifies the date format that is used when the component is not focused.\n * By default, the `column.format` value is used (if set).\n *\n * @readonly\n * @type {string}\n */\n get format() {\n return !isNullOrEmptyString(this._format) ? this._format : this.columnFormat;\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n get columnFormat() {\n return this.column && !isNullOrEmptyString(this.column.format) ? extractFormat(this.column.format) : \"d\";\n }\n ngOnInit() {\n this.subscription = this.ctx.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.defaultOperators = dateOperators(this.ctx.localization);\n if (this.operatorList.length) {\n this.operators = toJSON(this.operatorList.toArray());\n }\n }\n }\n DateFilterComponent.ɵfac = function DateFilterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFilterComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService));\n };\n DateFilterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DateFilterComponent,\n selectors: [[\"kendo-grid-date-filter-base\"]],\n inputs: {\n column: \"column\",\n filter: \"filter\",\n operator: \"operator\",\n format: \"format\",\n min: \"min\",\n max: \"max\",\n formatPlaceholder: \"formatPlaceholder\",\n placeholder: \"placeholder\",\n activeView: \"activeView\",\n bottomView: \"bottomView\",\n topView: \"topView\",\n weekNumber: \"weekNumber\"\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 0,\n vars: 0,\n template: function DateFilterComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return DateFilterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet DateFilterMenuInputComponent = /*#__PURE__*/(() => {\n class DateFilterMenuInputComponent {\n constructor(popupService, ctx) {\n this.popupService = popupService;\n this.ctx = ctx;\n this.operators = [];\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n open(picker) {\n this.subscription = this.popupService.onClose.pipe(filter(() => picker.isActive)).subscribe(e => e.preventDefault());\n }\n messageFor(key) {\n return this.ctx.localization.get(key);\n }\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n DateFilterMenuInputComponent.ɵfac = function DateFilterMenuInputComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFilterMenuInputComponent)(i0.ɵɵdirectiveInject(SinglePopupService), i0.ɵɵdirectiveInject(ContextService));\n };\n DateFilterMenuInputComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DateFilterMenuInputComponent,\n selectors: [[\"kendo-grid-date-filter-menu-input\"]],\n inputs: {\n operators: \"operators\",\n column: \"column\",\n filter: \"filter\",\n operator: \"operator\",\n currentFilter: \"currentFilter\",\n filterService: \"filterService\",\n menuTabbingService: \"menuTabbingService\",\n format: \"format\",\n formatPlaceholder: \"formatPlaceholder\",\n placeholder: \"placeholder\",\n min: \"min\",\n max: \"max\",\n activeView: \"activeView\",\n bottomView: \"bottomView\",\n topView: \"topView\",\n weekNumber: \"weekNumber\",\n isFirstDropDown: \"isFirstDropDown\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 22,\n consts: [[\"picker\", \"\"], [3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"currentFilter\", \"filterService\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterInput\", \"\", 3, \"open\", \"columnLabel\", \"filterDelay\", \"value\", \"placeholder\", \"formatPlaceholder\", \"format\", \"min\", \"max\", \"activeView\", \"bottomView\", \"topView\", \"weekNumber\"], [3, \"toggle\", \"today\"]],\n template: function DateFilterMenuInputComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-grid-filter-menu-input-wrapper\", 1)(1, \"kendo-datepicker\", 2, 0);\n i0.ɵɵlistener(\"open\", function DateFilterMenuInputComponent_Template_kendo_datepicker_open_1_listener() {\n i0.ɵɵrestoreView(_r1);\n const picker_r2 = i0.ɵɵreference(2);\n return i0.ɵɵresetView(ctx.open(picker_r2));\n });\n i0.ɵɵelement(3, \"kendo-datepicker-messages\", 3);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"currentFilter\", ctx.currentFilter)(\"filterService\", ctx.filterService)(\"isFirstDropDown\", ctx.isFirstDropDown)(\"menuTabbingService\", ctx.menuTabbingService);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", 0)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"placeholder\", ctx.placeholder)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"format\", ctx.format)(\"min\", ctx.min)(\"max\", ctx.max)(\"activeView\", ctx.activeView)(\"bottomView\", ctx.bottomView)(\"topView\", ctx.topView)(\"weekNumber\", ctx.weekNumber);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"toggle\", ctx.messageFor(\"filterDateToggle\"))(\"today\", ctx.messageFor(\"filterDateToday\"));\n }\n },\n dependencies: [FilterMenuInputWrapperComponent, DatePickerComponent, FilterInputDirective, DatePickerCustomMessagesComponent],\n encapsulation: 2\n });\n return DateFilterMenuInputComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a date filter-menu component.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet DateFilterMenuComponent = /*#__PURE__*/(() => {\n class DateFilterMenuComponent extends DateFilterComponent {\n constructor(ctx) {\n super(null, ctx);\n this.logicOperators = logicOperators(this.ctx.localization);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = {\n filters: [],\n logic: \"and\"\n };\n /**\n * Determines if the inputs of second criteria will be displayed.\n * @default true\n */\n this.extra = true;\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n get firstFilter() {\n return setFilter(0, this.filter, (this.column || {}).field, this.operator);\n }\n get secondFilter() {\n return setFilter(1, this.filter, (this.column || {}).field, this.operator);\n }\n logicChange(value) {\n this.filter.logic = value;\n }\n get filterMenuDropDownLabel() {\n const localizationMsg = this.ctx.localization.get('filterMenuLogicDropDownLabel') || '';\n const columnName = this.column ? this.column.title || this.column.field : '';\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n localizationChange() {\n this.logicOperators = logicOperators(this.ctx.localization);\n super.localizationChange();\n }\n }\n DateFilterMenuComponent.ɵfac = function DateFilterMenuComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFilterMenuComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n DateFilterMenuComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DateFilterMenuComponent,\n selectors: [[\"kendo-grid-date-filter-menu\"]],\n hostVars: 2,\n hostBindings: function DateFilterMenuComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n }\n },\n inputs: {\n column: \"column\",\n filter: \"filter\",\n extra: \"extra\",\n filterService: \"filterService\",\n menuTabbingService: \"menuTabbingService\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 18,\n consts: [[3, \"currentFilter\", \"operators\", \"filterService\", \"column\", \"filter\", \"activeView\", \"bottomView\", \"topView\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"weekNumber\", \"isFirstDropDown\", \"menuTabbingService\"], [\"kendoFilterMenuDropDown\", \"\", \"class\", \"k-filter-and\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\", \"valueChange\", 4, \"ngIf\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"activeView\", \"bottomView\", \"topView\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"weekNumber\", \"menuTabbingService\", 4, \"ngIf\"], [\"kendoFilterMenuDropDown\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-filter-and\", 3, \"valueChange\", \"filterMenuDropDownLabel\", \"data\", \"valuePrimitive\", \"value\"], [3, \"operators\", \"currentFilter\", \"filterService\", \"column\", \"filter\", \"activeView\", \"bottomView\", \"topView\", \"format\", \"formatPlaceholder\", \"placeholder\", \"min\", \"max\", \"weekNumber\", \"menuTabbingService\"]],\n template: function DateFilterMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"kendo-grid-date-filter-menu-input\", 0);\n i0.ɵɵtemplate(1, DateFilterMenuComponent_kendo_dropdownlist_1_Template, 1, 4, \"kendo-dropdownlist\", 1)(2, DateFilterMenuComponent_kendo_grid_date_filter_menu_input_2_Template, 1, 15, \"kendo-grid-date-filter-menu-input\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"currentFilter\", ctx.firstFilter)(\"operators\", ctx.operators)(\"filterService\", ctx.filterService)(\"column\", ctx.column)(\"filter\", ctx.filter)(\"activeView\", ctx.activeView)(\"bottomView\", ctx.bottomView)(\"topView\", ctx.topView)(\"format\", ctx.format)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"placeholder\", ctx.placeholder)(\"min\", ctx.min)(\"max\", ctx.max)(\"weekNumber\", ctx.weekNumber)(\"isFirstDropDown\", true)(\"menuTabbingService\", ctx.menuTabbingService);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.extra);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.extra);\n }\n },\n dependencies: [DateFilterMenuInputComponent, NgIf, DropDownListComponent, FilterMenuDropDownListDirective],\n encapsulation: 2\n });\n return DateFilterMenuComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-access-missing-member\n/**\n * @hidden\n */\nlet BooleanFilterComponent = /*#__PURE__*/(() => {\n class BooleanFilterComponent extends BaseFilterCellComponent {\n constructor(filterService, ctx) {\n super(filterService);\n this.ctx = ctx;\n /**\n * @hidden\n */\n this.operator = \"eq\";\n /**\n * @hidden\n */\n this.items = [{\n text: this.ctx.localization.get(\"filterIsTrue\"),\n value: true\n }, {\n text: this.ctx.localization.get(\"filterIsFalse\"),\n value: false\n }];\n /**\n * @hidden\n */\n this.defaultItem = {\n text: this.ctx.localization.get(\"filterBooleanAll\"),\n value: null\n };\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return true;\n }\n /**\n * The current filter for the associated column field.\n * @readonly\n * @type {FilterDescriptor}\n */\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n /**\n * The current filter operator for the associated column field.\n * @readonly\n * @type {string}\n */\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : this.operator;\n }\n ngOnInit() {\n this.subscription = this.ctx.localization.changes.subscribe(this.localizationChange.bind(this));\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.ngOnDestroy();\n }\n localizationChange() {\n this.items = [{\n text: this.ctx.localization.get(\"filterIsTrue\"),\n value: true\n }, {\n text: this.ctx.localization.get(\"filterIsFalse\"),\n value: false\n }];\n this.defaultItem = {\n text: this.ctx.localization.get(\"filterBooleanAll\"),\n value: null\n };\n }\n }\n BooleanFilterComponent.ɵfac = function BooleanFilterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BooleanFilterComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService));\n };\n BooleanFilterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: BooleanFilterComponent,\n selectors: [[\"kendo-grid-boolean-filter-base\"]],\n hostVars: 2,\n hostBindings: function BooleanFilterComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell-boolean\", ctx.hostClasses);\n }\n },\n inputs: {\n column: \"column\",\n filter: \"filter\"\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 0,\n vars: 0,\n template: function BooleanFilterComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return BooleanFilterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet BooleanFilterRadioButtonDirective = /*#__PURE__*/(() => {\n class BooleanFilterRadioButtonDirective {\n constructor(hostElement, renderer) {\n this.hostElement = hostElement;\n this.renderer = renderer;\n }\n ngAfterViewInit() {\n this.radioButtonEl = this.hostElement.nativeElement;\n this.renderer.setAttribute(this.hostElement.nativeElement, 'aria-label', this.columnLabel);\n }\n }\n BooleanFilterRadioButtonDirective.ɵfac = function BooleanFilterRadioButtonDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BooleanFilterRadioButtonDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n BooleanFilterRadioButtonDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: BooleanFilterRadioButtonDirective,\n selectors: [[\"\", \"kendoFilterMenuRadioButton\", \"\"]],\n inputs: {\n columnLabel: \"columnLabel\"\n },\n standalone: true\n });\n return BooleanFilterRadioButtonDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a Boolean-filter menu component. [See example](slug:filter_menu#toc-built-in-filter-menu-components)\n *\n * @example\n *\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet BooleanFilterMenuComponent = /*#__PURE__*/(() => {\n class BooleanFilterMenuComponent extends BooleanFilterComponent {\n constructor(ctx) {\n super(null, ctx);\n /**\n * The current menu filter.\n * @type {CompositeFilterDescriptor}\n */\n this.filter = {\n filters: [],\n logic: \"and\"\n };\n this.idPrefix = guid();\n }\n /**\n * @hidden\n */\n get hostClasses() {\n return false;\n }\n ngAfterViewInit() {\n this.filterService.menuTabbingService.firstFocusable = this.radioButtons.first.radioButtonEl;\n if (!this.menuTabbingService?.isTabbedInterface) {\n this.radioButtons.first.radioButtonEl.focus();\n }\n }\n /**\n * @hidden\n */\n radioId(value) {\n return `${this.idPrefix}_${value}`;\n }\n /**\n * @hidden\n */\n onChange(value, input) {\n this.applyFilter(this.updateFilter({\n field: this.column.field,\n operator: \"eq\",\n value: value\n }));\n this.filterService.menuTabbingService.firstFocusable = input;\n }\n /**\n * @hidden\n */\n isSelected(radioValue) {\n return this.filtersByField(this.column.field).some(({\n value\n }) => value === radioValue);\n }\n /**\n * @hidden\n */\n onShiftTab(e) {\n if ((!this.menuTabbingService || !this.menuTabbingService.isColumnMenu) && this.filterService.menuTabbingService.lastFocusable) {\n e.preventDefault();\n this.filterService.menuTabbingService.lastFocusable.focus();\n }\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n BooleanFilterMenuComponent.ɵfac = function BooleanFilterMenuComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BooleanFilterMenuComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n BooleanFilterMenuComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: BooleanFilterMenuComponent,\n selectors: [[\"kendo-grid-boolean-filter-menu\"]],\n viewQuery: function BooleanFilterMenuComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(BooleanFilterRadioButtonDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.radioButtons = _t);\n }\n },\n hostVars: 2,\n hostBindings: function BooleanFilterMenuComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell\", ctx.hostClasses);\n }\n },\n inputs: {\n filter: \"filter\",\n filterService: \"filterService\",\n menuTabbingService: \"menuTabbingService\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 1,\n consts: [[\"input\", \"\"], [1, \"k-radio-list\", \"k-reset\"], [4, \"ngFor\", \"ngForOf\"], [\"type\", \"radio\", \"kendoFilterMenuRadioButton\", \"\", \"kendoRadioButton\", \"\", 3, \"change\", \"keydown.shift.tab\", \"columnLabel\", \"name\", \"checked\"], [1, \"k-radio-label\"]],\n template: function BooleanFilterMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"ul\", 1);\n i0.ɵɵtemplate(1, BooleanFilterMenuComponent_li_1_Template, 5, 6, \"li\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.items);\n }\n },\n dependencies: [NgFor, RadioButtonDirective, BooleanFilterRadioButtonDirective],\n encapsulation: 2\n });\n return BooleanFilterMenuComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * > List the following components as `entryComponents` in the GridModule.\n */\nconst filterMenuComponentFactory = type => ({\n \"boolean\": BooleanFilterMenuComponent,\n \"date\": DateFilterMenuComponent,\n \"numeric\": NumericFilterMenuComponent,\n \"text\": StringFilterMenuComponent\n})[type];\n\n/**\n * @hidden\n */\nlet FilterMenuHostDirective = /*#__PURE__*/(() => {\n class FilterMenuHostDirective extends FilterHostDirective {\n constructor(host, resolver) {\n super(host, resolver);\n }\n componentType() {\n if (isPresent(this.column) && !isNullOrEmptyString(this.column.filter)) {\n return filterMenuComponentFactory(this.column.filter);\n }\n return StringFilterMenuComponent;\n }\n initComponent(ctx) {\n super.initComponent(ctx);\n this.component.instance.filterService = this.filterService;\n this.component.instance.menuTabbingService = this.menuTabbingService;\n }\n }\n FilterMenuHostDirective.ɵfac = function FilterMenuHostDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterMenuHostDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver));\n };\n FilterMenuHostDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterMenuHostDirective,\n selectors: [[\"\", \"kendoFilterMenuHost\", \"\"]],\n inputs: {\n filterService: \"filterService\",\n menuTabbingService: \"menuTabbingService\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return FilterMenuHostDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst isNoValueOperator = operator => operator === \"isnull\" || operator === \"isnotnull\" || operator === \"isempty\" || operator === \"isnotempty\";\nconst validFilters = ({\n value,\n operator\n}) => !isNullOrEmptyString(value) || isNoValueOperator(operator);\nconst trimFilters = filter => {\n filter.filters = filter.filters.filter(validFilters);\n return filter;\n};\nconst findParent = (filters, field, parent) => {\n return filters.reduce((acc, filter) => {\n if (acc) {\n return acc;\n }\n if (filter.filters) {\n return findParent(filter.filters, field, filter);\n } else if (filter.field === field) {\n return parent;\n }\n return acc;\n }, undefined);\n};\nconst parentLogicOfDefault = (filter, field, def = \"and\") => {\n const parent = findParent((filter || {}).filters || [], field);\n return isPresent(parent) ? parent.logic : def;\n};\n/**\n * @hidden\n */\nlet FilterMenuContainerComponent = /*#__PURE__*/(() => {\n class FilterMenuContainerComponent {\n constructor(parentService, childService, ctx, cd, menuTabbingService) {\n this.parentService = parentService;\n this.childService = childService;\n this.ctx = ctx;\n this.cd = cd;\n this.close = new EventEmitter();\n /**\n * @hidden\n */\n this.actionsClass = 'k-actions k-actions-stretched k-actions-horizontal';\n this._templateContext = {};\n this.menuTabbingService = menuTabbingService;\n }\n /**\n * The current root filter.\n * @type {CompositeFilterDescriptor}\n */\n set filter(value) {\n this._filter = cloneFilters(value);\n }\n get filter() {\n return this._filter;\n }\n get childFilter() {\n if (!isPresent(this._childFilter)) {\n this._childFilter = {\n filters: filtersByField(this.filter, (this.column || {}).field),\n logic: parentLogicOfDefault(this.filter, (this.column || {}).field)\n };\n }\n return this._childFilter;\n }\n ngOnInit() {\n this.subscription = this.childService.changes.subscribe(filter => this._childFilter = filter);\n this.subscription.add(this.ctx.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngAfterViewChecked() {\n if (!this.menuTabbingService.isColumnMenu || this.isLast && this.isExpanded) {\n this.menuTabbingService.lastFocusable = this.disabled ? this.resetButton.nativeElement : this.filterButton.nativeElement;\n }\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.menuTabbingService.lastFocusable = undefined;\n }\n get disabled() {\n return !this.childFilter.filters.some(validFilters);\n }\n get templateContext() {\n this._templateContext.column = this.column;\n this._templateContext.filter = this.childFilter;\n this._templateContext.filterService = this.childService;\n this._templateContext[\"$implicit\"] = this.childFilter;\n return this._templateContext;\n }\n get hasTemplate() {\n return isPresent(this.column) && isPresent(this.column.filterMenuTemplateRef);\n }\n submit() {\n const filter = trimFilters(this.childFilter);\n if (filter.filters.length) {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n removeFilter(root, this.column.field);\n root.filters.push(filter);\n this.parentService.filter(root);\n }\n this.close.emit();\n return false;\n }\n reset() {\n const root = this.filter || {\n filters: [],\n logic: \"and\"\n };\n removeFilter(root, this.column.field);\n this.parentService.filter(root);\n this.close.emit();\n }\n onTab(e, buttonType) {\n if (this.menuTabbingService.firstFocusable && (!this.menuTabbingService.isColumnMenu || this.isLast)) {\n e.preventDefault();\n if (buttonType === 'reset') {\n // eslint-disable-next-line no-unused-expressions\n this.menuTabbingService.firstFocusable.focus();\n } else {\n this.disabled ? this.menuTabbingService.firstFocusable.focus() : this.resetButton.nativeElement.focus();\n }\n }\n }\n get clearText() {\n return this.ctx.localization.get(\"filterClearButton\");\n }\n get filterText() {\n return this.ctx.localization.get(\"filterFilterButton\");\n }\n }\n FilterMenuContainerComponent.ɵfac = function FilterMenuContainerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterMenuContainerComponent)(i0.ɵɵdirectiveInject(FilterService, 4), i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(MenuTabbingService));\n };\n FilterMenuContainerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterMenuContainerComponent,\n selectors: [[\"kendo-grid-filter-menu-container\"]],\n viewQuery: function FilterMenuContainerComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c12, 5);\n i0.ɵɵviewQuery(_c13, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.resetButton = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterButton = _t.first);\n }\n },\n inputs: {\n column: \"column\",\n isLast: \"isLast\",\n isExpanded: \"isExpanded\",\n menuTabbingService: \"menuTabbingService\",\n filter: \"filter\",\n actionsClass: \"actionsClass\"\n },\n outputs: {\n close: \"close\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([FilterService, MenuTabbingService]), i0.ɵɵStandaloneFeature],\n decls: 12,\n vars: 7,\n consts: [[\"filterButton\", \"\"], [\"resetButton\", \"\"], [1, \"k-filter-menu\", 3, \"submit\", \"reset\"], [1, \"k-filter-menu-container\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [3, \"ngClass\"], [\"type\", \"submit\", 1, \"k-button\", \"k-button-solid-primary\", \"k-button-solid\", \"k-button-md\", \"k-rounded-md\", \"k-button-rectangle\", 3, \"keydown.tab\", \"disabled\"], [\"type\", \"reset\", 1, \"k-button\", \"k-button-solid-base\", \"k-button-solid\", \"k-button-md\", \"k-rounded-md\", \"k-button-rectangle\", 3, \"keydown.tab\"], [\"kendoFilterMenuHost\", \"\", 3, \"filterService\", \"column\", \"filter\", \"menuTabbingService\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function FilterMenuContainerComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"form\", 2);\n i0.ɵɵlistener(\"submit\", function FilterMenuContainerComponent_Template_form_submit_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.submit());\n })(\"reset\", function FilterMenuContainerComponent_Template_form_reset_0_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.reset());\n });\n i0.ɵɵelementStart(1, \"div\", 3);\n i0.ɵɵelementContainerStart(2, 4);\n i0.ɵɵtemplate(3, FilterMenuContainerComponent_ng_container_3_Template, 2, 4, \"ng-container\", 5)(4, FilterMenuContainerComponent_ng_container_4_Template, 2, 1, \"ng-container\", 5);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵelementStart(5, \"div\", 6)(6, \"button\", 7, 0);\n i0.ɵɵlistener(\"keydown.tab\", function FilterMenuContainerComponent_Template_button_keydown_tab_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onTab($event, \"filter\"));\n });\n i0.ɵɵtext(8);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"button\", 8, 1);\n i0.ɵɵlistener(\"keydown.tab\", function FilterMenuContainerComponent_Template_button_keydown_tab_9_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onTab($event, \"reset\"));\n });\n i0.ɵɵtext(11);\n i0.ɵɵelementEnd()()()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngSwitch\", ctx.hasTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", false);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", true);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", ctx.actionsClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"disabled\", ctx.disabled);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx.filterText);\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx.clearText);\n }\n },\n dependencies: [FormsModule, i4.ɵNgNoValidate, i4.NgControlStatusGroup, i4.NgForm, NgSwitch, NgSwitchCase, FilterMenuHostDirective, NgIf, NgTemplateOutlet, NgClass],\n encapsulation: 2\n });\n return FilterMenuContainerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet id$1 = 0;\nconst getId$1 = gridId => `${gridId}-filter-menu-${id$1++}`;\n/**\n * @hidden\n */\nlet FilterMenuComponent = /*#__PURE__*/(() => {\n class FilterMenuComponent {\n constructor(filterService, popupService, ctx, navigationService, renderer, cdr, idService) {\n this.filterService = filterService;\n this.popupService = popupService;\n this.ctx = ctx;\n this.navigationService = navigationService;\n this.renderer = renderer;\n this.cdr = cdr;\n this.idService = idService;\n this.filterIcon = filterIcon;\n this.tabIndex = '-1';\n }\n get hasFilters() {\n return filtersByField(this.filter, (this.column || {}).field).length > 0;\n }\n /**\n * @hidden\n */\n get filterLabel() {\n const localizationMsg = this.ctx.localization.get('filterMenuTitle') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n /**\n * @hidden\n */\n get isNavigable() {\n return this.navigationService.tableEnabled;\n }\n toggle(anchor, template) {\n this.popupRef = this.popupService.open(anchor, template, this.popupRef);\n // Needed as changes to 'popupRef' are not reflected\n // automatically when the Popup is closed by clicking outside the anchor\n const ariaRoot = this.isNavigable ? anchor.closest('.k-table-th') : anchor;\n if (this.popupRef) {\n this.popupRef.popup.instance.close.pipe(take(1)).subscribe(() => {\n this.popupRef = null;\n const ariaRoot = this.isNavigable ? anchor.closest('.k-table-th') : anchor;\n ariaRoot && this.renderer.removeAttribute(ariaRoot, 'aria-controls');\n ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'false');\n });\n const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-filter-popup');\n if (popupAriaElement) {\n const popupId = getId$1(this.idService?.gridId());\n this.renderer.setAttribute(popupAriaElement, 'id', popupId);\n this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');\n this.renderer.setAttribute(popupAriaElement, 'aria-label', this.filterLabel);\n ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-controls', popupId);\n ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'true');\n }\n } else {\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n } else {\n this.anchor.nativeElement.focus();\n }\n }\n return false;\n }\n close() {\n this.popupService.destroy();\n this.popupRef = null;\n this.cdr.markForCheck();\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n } else {\n this.anchor.nativeElement.focus();\n }\n }\n }\n FilterMenuComponent.ɵfac = function FilterMenuComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterMenuComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(SinglePopupService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(IdService, 8));\n };\n FilterMenuComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterMenuComponent,\n selectors: [[\"kendo-grid-filter-menu\"]],\n viewQuery: function FilterMenuComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c14, 7);\n i0.ɵɵviewQuery(_c15, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.anchor = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n }\n },\n inputs: {\n column: \"column\",\n filter: \"filter\",\n tabIndex: \"tabIndex\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 5,\n vars: 7,\n consts: [[\"anchor\", \"\"], [\"template\", \"\"], [\"href\", \"#\", 1, \"k-grid-filter-menu\", \"k-grid-header-menu\", 3, \"click\", \"keydown.enter\", \"tabindex\"], [\"name\", \"filter\", 3, \"svgIcon\"], [3, \"close\", \"keydown.escape\", \"keydown.enter\", \"column\", \"filter\"]],\n template: function FilterMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"a\", 2, 0);\n i0.ɵɵlistener(\"click\", function FilterMenuComponent_Template_a_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const anchor_r2 = i0.ɵɵreference(1);\n const template_r3 = i0.ɵɵreference(4);\n return i0.ɵɵresetView(ctx.toggle(anchor_r2, template_r3));\n })(\"keydown.enter\", function FilterMenuComponent_Template_a_keydown_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵelement(2, \"kendo-icon-wrapper\", 3);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, FilterMenuComponent_ng_template_3_Template, 1, 2, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-active\", ctx.hasFilters);\n i0.ɵɵproperty(\"tabindex\", ctx.tabIndex);\n i0.ɵɵattribute(\"title\", ctx.filterLabel)(\"aria-haspopup\", ctx.isNavigable ? undefined : \"dialog\")(\"aria-expanded\", ctx.isNavigable ? undefined : false);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"svgIcon\", ctx.filterIcon);\n }\n },\n dependencies: [IconWrapperComponent, FilterMenuContainerComponent],\n encapsulation: 2\n });\n return FilterMenuComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst EMPTY_FILTER_OPERATORS = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n/**\n * @hidden\n */\nlet FilterCellWrapperComponent = /*#__PURE__*/(() => {\n class FilterCellWrapperComponent extends FilterInputWrapperComponent {\n constructor(filterService) {\n super(filterService);\n this.showOperators = true;\n }\n get hostClasses() {\n return true;\n }\n get overrideBaseClasses() {\n return false;\n }\n get showButton() {\n const filter = this.currentFilter;\n return isPresent(filter) && (!isNullOrEmptyString(filter.value) || EMPTY_FILTER_OPERATORS.indexOf(String(filter.operator)) >= 0);\n }\n filterChange(filter) {\n this.applyFilter(filter);\n }\n }\n FilterCellWrapperComponent.ɵfac = function FilterCellWrapperComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterCellWrapperComponent)(i0.ɵɵdirectiveInject(FilterService));\n };\n FilterCellWrapperComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterCellWrapperComponent,\n selectors: [[\"kendo-grid-filter-wrapper-cell\"]],\n hostVars: 4,\n hostBindings: function FilterCellWrapperComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filtercell-wrapper\", ctx.hostClasses)(\"k-filtercell\", ctx.overrideBaseClasses);\n }\n },\n inputs: {\n showOperators: \"showOperators\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c11,\n decls: 2,\n vars: 5,\n consts: [[3, \"clear\", \"valueChange\", \"showOperators\", \"column\", \"operators\", \"showButton\", \"value\"]],\n template: function FilterCellWrapperComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"kendo-grid-filter-cell-operators\", 0);\n i0.ɵɵlistener(\"clear\", function FilterCellWrapperComponent_Template_kendo_grid_filter_cell_operators_clear_1_listener() {\n return ctx.onClear();\n });\n i0.ɵɵtwoWayListener(\"valueChange\", function FilterCellWrapperComponent_Template_kendo_grid_filter_cell_operators_valueChange_1_listener($event) {\n i0.ɵɵtwoWayBindingSet(ctx.currentOperator, $event) || (ctx.currentOperator = $event);\n return $event;\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"showOperators\", ctx.showOperators)(\"column\", ctx.column)(\"operators\", ctx.operators)(\"showButton\", ctx.showButton);\n i0.ɵɵtwoWayProperty(\"value\", ctx.currentOperator);\n }\n },\n dependencies: [FilterCellOperatorsComponent],\n encapsulation: 2\n });\n return FilterCellWrapperComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-access-missing-member\nconst stringOperators = localizeOperators({\n \"filterContainsOperator\": \"contains\",\n \"filterNotContainsOperator\": \"doesnotcontain\",\n \"filterEqOperator\": \"eq\",\n \"filterNotEqOperator\": \"neq\",\n \"filterStartsWithOperator\": \"startswith\",\n \"filterEndsWithOperator\": \"endswith\",\n \"filterIsNullOperator\": \"isnull\",\n \"filterIsNotNullOperator\": \"isnotnull\",\n \"filterIsEmptyOperator\": \"isempty\",\n \"filterIsNotEmptyOperator\": \"isnotempty\"\n});\n/**\n * @hidden\n */\nlet AutoCompleteFilterCellComponent = /*#__PURE__*/(() => {\n class AutoCompleteFilterCellComponent extends BaseFilterCellComponent {\n constructor(filterService, column, ctx, sizingOptionsService) {\n super(filterService);\n this.ctx = ctx;\n this.showOperators = true;\n this.size = 'medium';\n this.defaultOperators = stringOperators(this.ctx.localization);\n this.column = column;\n this.subs = sizingOptionsService.changes.subscribe(size => this.size = size);\n }\n set valueField(value) {\n this._valueField = value;\n }\n get valueField() {\n return this._valueField ? this._valueField : this.column.field;\n }\n get currentFilter() {\n return this.filterByField(this.column.field);\n }\n get currentOperator() {\n return this.currentFilter ? this.currentFilter.operator : \"contains\";\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n }\n AutoCompleteFilterCellComponent.ɵfac = function AutoCompleteFilterCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AutoCompleteFilterCellComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ColumnComponent), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(SizingOptionsService));\n };\n AutoCompleteFilterCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AutoCompleteFilterCellComponent,\n selectors: [[\"kendo-grid-autocomplete-filter-cell\"]],\n inputs: {\n showOperators: \"showOperators\",\n column: \"column\",\n filter: \"filter\",\n data: \"data\",\n valueField: \"valueField\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 8,\n consts: [[3, \"column\", \"filter\", \"operators\", \"showOperators\"], [\"kendoFilterInput\", \"\", 3, \"data\", \"size\", \"valueField\", \"value\"]],\n template: function AutoCompleteFilterCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n i0.ɵɵelement(1, \"kendo-autocomplete\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"showOperators\", ctx.showOperators);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"data\", ctx.data)(\"size\", ctx.size)(\"valueField\", ctx.valueField)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n }\n },\n dependencies: [FilterCellWrapperComponent, AutoCompleteComponent, FilterInputDirective],\n encapsulation: 2\n });\n return AutoCompleteFilterCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a Boolean filter-cell component.\n * See the article about the [built-in filter components](slug:filter_row#toc-built-in-filter-row-components).\n *\n * @example\n *\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet BooleanFilterCellComponent = /*#__PURE__*/(() => {\n class BooleanFilterCellComponent extends BooleanFilterComponent {\n constructor(filterService, ctx, cd, sizingService) {\n super(filterService, ctx);\n this.cd = cd;\n /**\n * @hidden\n */\n this.size = 'medium';\n this.subs = sizingService.changes.subscribe(size => this.size = size);\n }\n ngOnDestroy() {\n this.subs && this.subs.unsubscribe();\n }\n localizationChange() {\n super.localizationChange();\n this.cd.markForCheck();\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('booleanFilterCellLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n BooleanFilterCellComponent.ɵfac = function BooleanFilterCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BooleanFilterCellComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(SizingOptionsService));\n };\n BooleanFilterCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: BooleanFilterCellComponent,\n selectors: [[\"kendo-grid-boolean-filter-cell\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 12,\n consts: [[3, \"column\", \"filter\", \"showOperators\", \"defaultOperator\"], [\"kendoFilterInput\", \"\", \"kendoGridFocusable\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 3, \"size\", \"columnLabel\", \"defaultItem\", \"data\", \"popupSettings\", \"valuePrimitive\", \"value\"]],\n template: function BooleanFilterCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n i0.ɵɵelement(1, \"kendo-dropdownlist\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"showOperators\", false)(\"defaultOperator\", ctx.operator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx.size)(\"columnLabel\", ctx.columnLabel)(\"defaultItem\", ctx.defaultItem)(\"data\", ctx.items)(\"popupSettings\", i0.ɵɵpureFunction0(11, _c10))(\"valuePrimitive\", true)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n }\n },\n dependencies: [FilterCellWrapperComponent, DropDownListComponent, FilterInputDirective, FocusableDirective],\n encapsulation: 2\n });\n return BooleanFilterCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a [DatePicker](slug:overview_datepicker) filter-cell component.\n * See the article about the [built-in filter components](slug:filter_row#toc-built-in-filter-row-components).\n *\n * @example\n *\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet DateFilterCellComponent = /*#__PURE__*/(() => {\n class DateFilterCellComponent extends DateFilterComponent {\n constructor(filterService, ctx, sizingService) {\n super(filterService, ctx);\n this.ctx = ctx;\n /**\n * Represents a [DatePicker](slug:overview_datepicker) filter-cell component.\n * [See example](slug:filter_row#toc-built-in-filter-row-components).\n * @example\n *\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n * @type {boolean}\n * @default true\n */\n this.showOperators = true;\n this.subs = sizingService.changes.subscribe(size => this.size = size);\n }\n ngOnDestroy() {\n this.subs && this.subs.unsubscribe();\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.ctx.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n DateFilterCellComponent.ɵfac = function DateFilterCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFilterCellComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(SizingOptionsService));\n };\n DateFilterCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DateFilterCellComponent,\n selectors: [[\"kendo-grid-date-filter-cell\"]],\n inputs: {\n showOperators: \"showOperators\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 19,\n consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"showOperators\"], [\"kendoFilterInput\", \"\", \"kendoGridFocusable\", \"\", 3, \"columnLabel\", \"value\", \"format\", \"size\", \"formatPlaceholder\", \"placeholder\", \"activeView\", \"bottomView\", \"topView\", \"min\", \"max\", \"weekNumber\"], [3, \"toggle\", \"today\"]],\n template: function DateFilterCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0)(1, \"kendo-datepicker\", 1);\n i0.ɵɵelement(2, \"kendo-datepicker-messages\", 2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"showOperators\", ctx.showOperators);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"format\", ctx.format)(\"size\", ctx.size)(\"formatPlaceholder\", ctx.formatPlaceholder)(\"placeholder\", ctx.placeholder)(\"activeView\", ctx.activeView)(\"bottomView\", ctx.bottomView)(\"topView\", ctx.topView)(\"min\", ctx.min)(\"max\", ctx.max)(\"weekNumber\", ctx.weekNumber);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"toggle\", ctx.messageFor(\"filterDateToggle\"))(\"today\", ctx.messageFor(\"filterDateToday\"));\n }\n },\n dependencies: [FilterCellWrapperComponent, DatePickerComponent, FilterInputDirective, FocusableDirective, DatePickerCustomMessagesComponent],\n encapsulation: 2\n });\n return DateFilterCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a string filter-cell component\n * See the article about the [built-in filter components](slug:filter_row#toc-built-in-filter-row-components).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet StringFilterCellComponent = /*#__PURE__*/(() => {\n class StringFilterCellComponent extends StringFilterComponent {\n constructor(filterService, ctx, sizingService) {\n super(filterService, ctx);\n /**\n * Determines the delay time (in milliseconds) before the filter value is submitted.\n * A value of `0` indicates no delay.\n * @type {boolean}\n * @default 500\n */\n this.filterDelay = 500;\n /**\n * Determines if the drop-down filter operators will be displayed.\n * @type {boolean}\n * @default true\n */\n this.showOperators = true;\n this.subs = sizingService.changes.subscribe(size => this.size = size);\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n StringFilterCellComponent.ɵfac = function StringFilterCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StringFilterCellComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(SizingOptionsService));\n };\n StringFilterCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StringFilterCellComponent,\n selectors: [[\"kendo-grid-string-filter-cell\"]],\n inputs: {\n filterDelay: \"filterDelay\",\n showOperators: \"showOperators\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 9,\n consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"showOperators\"], [\"kendoTextBox\", \"\", \"kendoGridFocusable\", \"\", \"kendoFilterInput\", \"\", 3, \"size\", \"columnLabel\", \"filterDelay\", \"ngModel\"]],\n template: function StringFilterCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0);\n i0.ɵɵelement(1, \"kendo-textbox\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"showOperators\", ctx.showOperators);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"size\", ctx.size)(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", ctx.filterDelay)(\"ngModel\", ctx.currentFilter == null ? null : ctx.currentFilter.value);\n }\n },\n dependencies: [FilterCellWrapperComponent, TextBoxComponent, FocusableDirective, FilterInputDirective, FormsModule, i4.NgControlStatus, i4.NgModel],\n encapsulation: 2\n });\n return StringFilterCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents a numeric filter-cell component.\n * See the article about the [built-in filter components](slug:filter_row#toc-built-in-filter-row-components).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet NumericFilterCellComponent = /*#__PURE__*/(() => {\n class NumericFilterCellComponent extends NumericFilterComponent {\n constructor(filterService, ctx, sizingService) {\n super(filterService, ctx);\n this.ctx = ctx;\n /**\n * Determines the delay time (in milliseconds) before the filter value is submitted.\n * A value of `0` indicates no delay. The default value is `500`.\n * @type {boolean}\\\n * @default 500\n */\n this.filterDelay = 500;\n /**\n * Determines if the drop-down filter operators will be displayed.\n * The default value is `true`.\n * @type {boolean}\n * @default true\n */\n this.showOperators = true;\n this.subs = sizingService.changes.subscribe(size => this.size = size);\n }\n ngOnDestroy() {\n this.subs && this.subs.unsubscribe();\n }\n /**\n * @hidden\n */\n messageFor(key) {\n return this.ctx.localization.get(key);\n }\n /**\n * @hidden\n */\n get columnLabel() {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n }\n NumericFilterCellComponent.ɵfac = function NumericFilterCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NumericFilterCellComponent)(i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(SizingOptionsService));\n };\n NumericFilterCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NumericFilterCellComponent,\n selectors: [[\"kendo-grid-numeric-filter-cell\"]],\n inputs: {\n filterDelay: \"filterDelay\",\n showOperators: \"showOperators\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 18,\n consts: [[3, \"column\", \"filter\", \"operators\", \"defaultOperator\", \"showOperators\"], [\"kendoGridFocusable\", \"\", \"kendoFilterInput\", \"\", 3, \"columnLabel\", \"filterDelay\", \"autoCorrect\", \"value\", \"format\", \"decimals\", \"spinners\", \"min\", \"max\", \"size\", \"step\"], [3, \"increment\", \"decrement\"]],\n template: function NumericFilterCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-filter-wrapper-cell\", 0)(1, \"kendo-numerictextbox\", 1);\n i0.ɵɵelement(2, \"kendo-numerictextbox-messages\", 2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"column\", ctx.column)(\"filter\", ctx.filter)(\"operators\", ctx.operators)(\"defaultOperator\", ctx.operator)(\"showOperators\", ctx.showOperators);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"columnLabel\", ctx.columnLabel)(\"filterDelay\", ctx.filterDelay)(\"autoCorrect\", true)(\"value\", ctx.currentFilter == null ? null : ctx.currentFilter.value)(\"format\", ctx.format)(\"decimals\", ctx.decimals)(\"spinners\", ctx.spinners)(\"min\", ctx.min)(\"max\", ctx.max)(\"size\", ctx.size)(\"step\", ctx.step);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"increment\", ctx.messageFor(\"filterNumericIncrement\"))(\"decrement\", ctx.messageFor(\"filterNumericDecrement\"));\n }\n },\n dependencies: [FilterCellWrapperComponent, NumericTextBoxComponent, FocusableDirective, FilterInputDirective, NumericTextBoxCustomMessagesComponent],\n encapsulation: 2\n });\n return NumericFilterCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * > List the following components in the GridModule as `entryComponents`.\n */\nconst filterComponentFactory = type => ({\n \"boolean\": BooleanFilterCellComponent,\n \"date\": DateFilterCellComponent,\n \"numeric\": NumericFilterCellComponent,\n \"text\": StringFilterCellComponent\n})[type];\n\n/**\n * @hidden\n */\nlet FilterCellHostDirective = /*#__PURE__*/(() => {\n class FilterCellHostDirective extends FilterHostDirective {\n constructor(host, resolver) {\n super(host, resolver);\n }\n componentType() {\n if (!isNullOrEmptyString(this.column.filter)) {\n return filterComponentFactory(this.column.filter);\n }\n return StringFilterCellComponent;\n }\n }\n FilterCellHostDirective.ɵfac = function FilterCellHostDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterCellHostDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver));\n };\n FilterCellHostDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FilterCellHostDirective,\n selectors: [[\"\", \"kendoFilterCellHost\", \"\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return FilterCellHostDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FilterCellComponent = /*#__PURE__*/(() => {\n class FilterCellComponent {\n constructor() {\n this.hostRole = 'gridcell';\n this.size = 'medium';\n this._templateContext = {};\n }\n get filter() {\n return this._filter;\n }\n set filter(value) {\n this._filter = cloneFilters(value);\n }\n get templateContext() {\n this._templateContext.column = this.column;\n this._templateContext.filter = this.filter;\n this._templateContext['$implicit'] = this.filter;\n return this._templateContext;\n }\n get hasTemplate() {\n return isPresent(this.column.filterCellTemplateRef);\n }\n get isFilterable() {\n return isPresent(this.column) && !isNullOrEmptyString(this.column.field) && this.column.filterable;\n }\n }\n FilterCellComponent.ɵfac = function FilterCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterCellComponent)();\n };\n FilterCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterCellComponent,\n selectors: [[\"\", \"kendoGridFilterCell\", \"\"]],\n hostVars: 1,\n hostBindings: function FilterCellComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.hostRole);\n }\n },\n inputs: {\n column: \"column\",\n filter: \"filter\",\n size: \"size\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c16,\n decls: 1,\n vars: 1,\n consts: [[4, \"ngIf\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [\"kendoFilterCellHost\", \"\", 3, \"column\", \"filter\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function FilterCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, FilterCellComponent_ng_container_0_Template, 4, 3, \"ng-container\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.isFilterable);\n }\n },\n dependencies: [NgIf, NgSwitch, NgSwitchCase, FilterCellHostDirective, NgTemplateOutlet],\n encapsulation: 2\n });\n return FilterCellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FilterRowComponent = /*#__PURE__*/(() => {\n class FilterRowComponent {\n constructor(ctx, columnInfoService) {\n this.ctx = ctx;\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.groups = [];\n this.filterRowClass = true;\n }\n addStickyStyles(column) {\n const sticky = column.sticky ? this.columnInfoService.stickyColumnsStyles(column) : null;\n return {\n ...sticky,\n ...column.filterStyle\n };\n }\n filterLabel(column) {\n const localizationMsg = this.ctx.localization.get('filterInputLabel') || '';\n const columnName = column.title || column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n getLogicalColIndex(columnIndex) {\n const colIndex = this.lockedColumnsCount + columnIndex;\n return this.detailTemplate?.templateRef ? colIndex + 1 : colIndex;\n }\n }\n FilterRowComponent.ɵfac = function FilterRowComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterRowComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(ColumnInfoService));\n };\n FilterRowComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FilterRowComponent,\n selectors: [[\"\", \"kendoGridFilterRow\", \"\"]],\n hostVars: 2,\n hostBindings: function FilterRowComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-filter-row\", ctx.filterRowClass);\n }\n },\n inputs: {\n columns: \"columns\",\n filter: \"filter\",\n groups: \"groups\",\n detailTemplate: \"detailTemplate\",\n logicalRowIndex: \"logicalRowIndex\",\n lockedColumnsCount: \"lockedColumnsCount\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c17,\n decls: 3,\n vars: 3,\n consts: [[\"class\", \"k-table-td\", \"role\", \"presentation\", 3, \"k-group-cell\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"k-table-td\", \"role\", \"presentation\", 3, \"k-hierarchy-cell\", 4, \"ngIf\"], [\"class\", \"k-table-td\", \"kendoGridFilterCell\", \"\", \"kendoGridLogicalCell\", \"\", 3, \"k-grid-header-sticky\", \"ngStyle\", \"ngClass\", \"column\", \"filter\", \"logicalRowIndex\", \"logicalColIndex\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", 1, \"k-table-td\"], [\"kendoGridFilterCell\", \"\", \"kendoGridLogicalCell\", \"\", 1, \"k-table-td\", 3, \"ngStyle\", \"ngClass\", \"column\", \"filter\", \"logicalRowIndex\", \"logicalColIndex\"]],\n template: function FilterRowComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, FilterRowComponent_td_0_Template, 1, 2, \"td\", 0)(1, FilterRowComponent_td_1_Template, 1, 2, \"td\", 1)(2, FilterRowComponent_td_2_Template, 1, 9, \"td\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.groups);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.detailTemplate == null ? null : ctx.detailTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.columns);\n }\n },\n dependencies: [NgFor, NgIf, FilterCellComponent, LogicalCellDirective, NgStyle, NgClass],\n encapsulation: 2\n });\n return FilterRowComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ColumnMenuChooserItemCheckedDirective = /*#__PURE__*/(() => {\n class ColumnMenuChooserItemCheckedDirective {\n constructor(host, renderer) {\n this.host = host;\n this.renderer = renderer;\n this.checkedChangeSub = new Subscription();\n }\n ngAfterViewInit() {\n this.checkedChangeSub.add(this.renderer.listen(this.host.nativeElement.firstElementChild, 'change', e => {\n this.kendoColumnMenuChooserItemChecked = e.target.checked;\n }));\n }\n ngOnDestroy() {\n this.checkedChangeSub.unsubscribe();\n }\n }\n ColumnMenuChooserItemCheckedDirective.ɵfac = function ColumnMenuChooserItemCheckedDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuChooserItemCheckedDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n ColumnMenuChooserItemCheckedDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColumnMenuChooserItemCheckedDirective,\n selectors: [[\"\", \"kendoColumnMenuChooserItemChecked\", \"\"]],\n hostVars: 1,\n hostBindings: function ColumnMenuChooserItemCheckedDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-checked\", ctx.kendoColumnMenuChooserItemChecked);\n }\n },\n inputs: {\n kendoColumnMenuChooserItemChecked: \"kendoColumnMenuChooserItemChecked\"\n },\n standalone: true\n });\n return ColumnMenuChooserItemCheckedDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the service that is passed to the\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * \n *\n * ```\n */\nlet ColumnMenuService = /*#__PURE__*/(() => {\n class ColumnMenuService {\n /**\n * @hidden\n */\n constructor(menuTabbingService) {\n /**\n * @hidden\n */\n this.closeMenu = new EventEmitter();\n this.menuTabbingService = menuTabbingService;\n }\n /**\n * Closes the column menu.\n */\n close() {\n this.closeMenu.emit();\n }\n }\n ColumnMenuService.ɵfac = function ColumnMenuService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuService)(i0.ɵɵinject(MenuTabbingService));\n };\n ColumnMenuService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColumnMenuService,\n factory: ColumnMenuService.ɵfac\n });\n return ColumnMenuService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ColumnListKeyboardNavigation = /*#__PURE__*/(() => {\n class ColumnListKeyboardNavigation {\n constructor(renderer) {\n this.renderer = renderer;\n this.activeIndex = 0;\n }\n next() {\n this.toggle(this.activeIndex, false);\n this.activeIndex = Math.min(this.activeIndex + 1, this.items.length - 1);\n this.toggle(this.activeIndex, true);\n }\n prev() {\n this.toggle(this.activeIndex, false);\n this.activeIndex = Math.max(this.activeIndex - 1, 0);\n this.toggle(this.activeIndex, true);\n }\n toggle(index, active) {\n const element = this.items[index]?.host.nativeElement;\n element && this.renderer.setAttribute(this.items[index].host.nativeElement, 'tabindex', active ? '0' : '-1');\n active && element && element.focus();\n }\n toggleCheckedState() {\n this.items[this.activeIndex].host.nativeElement.firstElementChild.click();\n }\n }\n ColumnListKeyboardNavigation.ɵfac = function ColumnListKeyboardNavigation_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnListKeyboardNavigation)(i0.ɵɵinject(i0.Renderer2));\n };\n ColumnListKeyboardNavigation.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColumnListKeyboardNavigation,\n factory: ColumnListKeyboardNavigation.ɵfac\n });\n return ColumnListKeyboardNavigation;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ColumnListComponent = /*#__PURE__*/(() => {\n class ColumnListComponent {\n constructor(element, ngZone, renderer, listNavigationService) {\n this.element = element;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.listNavigationService = listNavigationService;\n this.reset = new EventEmitter();\n this.apply = new EventEmitter();\n this.columnChange = new EventEmitter();\n this.autoSync = true;\n this.allowHideAll = false;\n this.actionsClass = 'k-actions k-actions-stretched k-actions-horizontal';\n this.unlockedCount = 0;\n this.domSubscriptions = new Subscription();\n this.onKeydown = e => {\n if (e.keyCode !== Keys.Tab) {\n e.preventDefault();\n }\n if (e.keyCode === Keys.ArrowDown) {\n this.listNavigationService.next();\n } else if (e.keyCode === Keys.ArrowUp) {\n this.listNavigationService.prev();\n } else if (e.keyCode === Keys.Space && e.target.classList.contains('k-column-list-item')) {\n this.listNavigationService.toggleCheckedState();\n }\n };\n }\n get className() {\n return true;\n }\n isChecked(checkbox) {\n return checkbox.checked;\n }\n set columns(value) {\n this._columns = value.filter(column => column.includeInChooser !== false);\n this.allColumns = value;\n this.updateColumnState();\n }\n get columns() {\n return this._columns;\n }\n ngOnInit() {\n if (!this.element) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'click', e => {\n const closestItem = e.target.closest('.k-column-list-item');\n if (closestItem) {\n const checkbox = closestItem.querySelector('.k-checkbox');\n const index = parseInt(checkbox.getAttribute('data-index'), 10);\n if (e.target === checkbox) {\n closestItem.focus();\n } else {\n e.preventDefault();\n checkbox.checked = !checkbox.checked;\n }\n if (this.autoSync) {\n const column = this.columns[index];\n const hidden = !checkbox.checked;\n if (Boolean(column.hidden) !== hidden) {\n this.ngZone.run(() => {\n column.hidden = hidden;\n this.columnChange.emit([column]);\n });\n }\n } else {\n this.updateDisabled();\n }\n if (index !== this.listNavigationService.activeIndex) {\n this.listNavigationService.toggle(this.listNavigationService.activeIndex, false);\n this.listNavigationService.activeIndex = index;\n this.listNavigationService.toggle(index, true);\n }\n }\n }));\n this.domSubscriptions.add(this.renderer.listen(this.element.nativeElement, 'keydown', this.onKeydown));\n });\n }\n ngAfterViewInit() {\n this.listNavigationService.items = this.options.toArray();\n this.listNavigationService.toggle(0, true);\n this.updateDisabled();\n }\n ngOnChanges(changes) {\n if (!this.service) {\n return;\n }\n if (changes['isLast'] && this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;\n }\n if (changes['isExpanded'] && this.isExpanded && this.isLast && this.applyButton) {\n this.service.menuTabbingService.lastFocusable = this.applyButton.nativeElement;\n }\n }\n ngOnDestroy() {\n this.domSubscriptions.unsubscribe();\n }\n isDisabled(column) {\n return !(this.allowHideAll || this.hasFiltered || column.hidden || this.columns.find(current => current !== column && !current.hidden)) || this.hasVisibleLocked && !this.hasUnlockedFiltered && this.unlockedCount === 1 && !column.locked && !column.hidden;\n }\n cancelChanges() {\n this.forEachCheckBox((element, index) => {\n element.checked = !this.columns[index].hidden;\n });\n this.updateDisabled();\n this.reset.emit();\n }\n applyChanges() {\n const changed = [];\n this.forEachCheckBox((element, index) => {\n const column = this.columns[index];\n const hidden = !element.checked;\n if (Boolean(column.hidden) !== hidden) {\n column.hidden = hidden;\n changed.push(column);\n }\n });\n this.updateDisabled();\n this.apply.emit(changed);\n }\n onTab(e) {\n if (this.isLast) {\n e.preventDefault();\n if (this.service) {\n this.service.menuTabbingService.firstFocusable.focus();\n } else {\n this.listNavigationService.toggle(this.listNavigationService.activeIndex, true);\n }\n }\n }\n forEachCheckBox(callback) {\n const checkboxes = this.element.nativeElement.getElementsByClassName('k-checkbox');\n const length = checkboxes.length;\n for (let idx = 0; idx < length; idx++) {\n callback(checkboxes[idx], idx);\n }\n }\n updateDisabled() {\n if (this.allowHideAll && !this.hasLocked) {\n return;\n }\n const checkedItems = [];\n this.forEachCheckBox((checkbox, index) => {\n if (checkbox.checked) {\n checkedItems.push({\n checkbox,\n index\n });\n }\n this.setDisabledState(checkbox, false);\n });\n if (!this.allowHideAll && checkedItems.length === 1 && !this.hasFiltered) {\n this.setDisabledState(checkedItems[0].checkbox, true);\n } else if (this.hasLocked && !this.hasUnlockedFiltered) {\n const columns = this.columns;\n const checkedUnlocked = checkedItems.filter(item => !columns[item.index].locked);\n if (checkedUnlocked.length === 1) {\n this.setDisabledState(checkedUnlocked[0].checkbox, true);\n }\n }\n }\n updateColumnState() {\n this.hasLocked = this.allColumns.filter(column => column.locked && (!column.hidden || column.includeInChooser !== false)).length > 0;\n this.hasVisibleLocked = this.allColumns.filter(column => column.locked && !column.hidden).length > 0;\n this.unlockedCount = this.columns.filter(column => !column.locked && !column.hidden).length;\n const filteredColumns = this.allColumns.filter(column => column.includeInChooser === false && !column.hidden);\n if (filteredColumns.length) {\n this.hasFiltered = filteredColumns.length > 0;\n this.hasUnlockedFiltered = filteredColumns.filter(column => !column.locked).length > 0;\n } else {\n this.hasFiltered = false;\n this.hasUnlockedFiltered = false;\n }\n }\n setDisabledState(element, disabled) {\n element.disabled = disabled;\n const parent = element.parentElement;\n const classCommand = disabled ? 'addClass' : 'removeClass';\n const attributeCommand = disabled ? 'setAttribute' : 'removeAttribute';\n this.renderer[classCommand](parent, 'k-disabled');\n this.renderer[attributeCommand](parent, 'aria-disabled', disabled ? 'true' : undefined);\n }\n }\n ColumnListComponent.ɵfac = function ColumnListComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnListComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ColumnListKeyboardNavigation));\n };\n ColumnListComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnListComponent,\n selectors: [[\"kendo-grid-columnlist\"]],\n viewQuery: function ColumnListComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c12, 5);\n i0.ɵɵviewQuery(_c18, 5);\n i0.ɵɵviewQuery(ColumnMenuChooserItemCheckedDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.resetButton = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.applyButton = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.options = _t);\n }\n },\n hostVars: 2,\n hostBindings: function ColumnListComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-column-list-wrapper\", ctx.className);\n }\n },\n inputs: {\n columns: \"columns\",\n autoSync: \"autoSync\",\n ariaLabel: \"ariaLabel\",\n allowHideAll: \"allowHideAll\",\n applyText: \"applyText\",\n resetText: \"resetText\",\n actionsClass: \"actionsClass\",\n isLast: \"isLast\",\n isExpanded: \"isExpanded\",\n service: \"service\"\n },\n outputs: {\n reset: \"reset\",\n apply: \"apply\",\n columnChange: \"columnChange\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([ColumnListKeyboardNavigation]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 3,\n consts: [[\"applyButton\", \"\"], [\"resetButton\", \"\"], [\"role\", \"listbox\", \"aria-multiselectable\", \"true\", 1, \"k-column-list\"], [\"class\", \"k-column-list-item\", \"role\", \"option\", 3, \"kendoColumnMenuChooserItemChecked\", 4, \"ngFor\", \"ngForOf\"], [3, \"ngClass\", 4, \"ngIf\"], [\"role\", \"option\", 1, \"k-column-list-item\", 3, \"kendoColumnMenuChooserItemChecked\"], [\"type\", \"checkbox\", \"tabindex\", \"-1\", 1, \"k-checkbox\", \"k-checkbox-md\", \"k-rounded-md\", 3, \"checked\", \"disabled\"], [1, \"k-checkbox-label\"], [3, \"ngClass\"], [\"type\", \"button\", 1, \"k-button\", \"k-button-solid-primary\", \"k-button-solid\", \"k-button-md\", \"k-rounded-md\", \"k-button-rectangle\", 3, \"click\", \"keydown.enter\", \"keydown.space\"], [\"type\", \"button\", 1, \"k-button\", \"k-button-solid-base\", \"k-button-solid\", \"k-button-md\", \"k-rounded-md\", \"k-button-rectangle\", 3, \"keydown.tab\", \"click\", \"keydown.enter\", \"keydown.space\"]],\n template: function ColumnListComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtemplate(1, ColumnListComponent_label_1_Template, 4, 6, \"label\", 3);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, ColumnListComponent_div_2_Template, 7, 3, \"div\", 4);\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-label\", ctx.ariaLabel);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.columns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.autoSync);\n }\n },\n dependencies: [NgFor, ColumnMenuChooserItemCheckedDirective, NgIf, NgClass],\n encapsulation: 2\n });\n return ColumnListComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the component for toggling visibility of the Grid columns visibility. [See example](slug:columnmenu_grid#toc-using-standalone-column-chooser).\n * To show and hide the columns without including the column chooser item in the [Column Menu](slug:columnmenu_grid),\n * add the component inside the [ToolbarTemplate](slug:toolbartemplate_grid) directive.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnChooserComponent = /*#__PURE__*/(() => {\n class ColumnChooserComponent {\n constructor(ctx, columnInfoService, popupService, ngZone, renderer, changeDetector) {\n this.ctx = ctx;\n this.columnInfoService = columnInfoService;\n this.popupService = popupService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.changeDetector = changeDetector;\n /**\n * @hidden\n */\n this.columnsIcon = columnsIcon;\n /**\n * Specifies if the changes in the visibility of the column will be immediately applied.\n *\n * @default false\n */\n this.autoSync = false;\n /**\n * Specifies if all columns can be hidden.\n *\n * @default true\n */\n this.allowHideAll = true;\n }\n get columns() {\n return this.columnInfoService.leafNamedColumns;\n }\n ngOnDestroy() {\n this.close();\n }\n /**\n * @hidden\n */\n toggle(anchor, template) {\n if (!this.popupRef) {\n const direction = this.ctx.localization.rtl ? 'right' : 'left';\n this.popupRef = this.popupService.open({\n anchor: anchor.element,\n content: template,\n positionMode: 'absolute',\n anchorAlign: {\n vertical: 'bottom',\n horizontal: direction\n },\n popupAlign: {\n vertical: 'top',\n horizontal: direction\n }\n });\n const popupElement = this.popupRef?.popupElement;\n if (popupElement) {\n const popupId = `k-${guid()}`;\n const popupAriaElement = popupElement.querySelector('.k-popup');\n this.ngZone.runOutsideAngular(() => {\n this.escapeListener = this.renderer.listen(popupAriaElement, 'keydown', e => {\n if (e.keyCode === Keys.Escape) {\n this.close(true);\n }\n });\n });\n this.renderer.setAttribute(popupElement, 'dir', this.ctx.localization.rtl ? 'rtl' : 'ltr');\n this.renderer.setAttribute(popupAriaElement, 'id', popupId);\n this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');\n this.popupId = popupId;\n }\n if (!isDocumentAvailable()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => this.closeClick = this.renderer.listen('document', 'click', ({\n target\n }) => {\n if (!closest(target, node => node === this.popupRef.popupElement || node === anchor.element)) {\n this.ngZone.run(() => {\n this.close();\n });\n }\n }));\n } else {\n this.close();\n }\n }\n /**\n * @hidden\n */\n onApply(changed) {\n this.close(true);\n if (changed.length) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n }\n /**\n * @hidden\n */\n onChange(changed) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n /**\n * @hidden\n */\n onShiftTab(e) {\n if (e.target.matches('.k-column-list-item')) {\n e.preventDefault();\n this.columnList.resetButton.nativeElement.focus();\n }\n }\n close(focusAnchor = false) {\n if (this.popupRef) {\n this.popupRef.close();\n this.popupRef = null;\n this.changeDetector.markForCheck();\n this.escapeListener && this.escapeListener();\n }\n this.detachClose();\n focusAnchor && this.anchor.element.focus();\n }\n detachClose() {\n if (this.closeClick) {\n this.closeClick();\n this.closeClick = null;\n }\n }\n }\n ColumnChooserComponent.ɵfac = function ColumnChooserComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnChooserComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(i5.PopupService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n ColumnChooserComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnChooserComponent,\n selectors: [[\"kendo-grid-column-chooser\"]],\n viewQuery: function ColumnChooserComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c14, 5);\n i0.ɵɵviewQuery(_c19, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.anchor = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnList = _t.first);\n }\n },\n inputs: {\n autoSync: \"autoSync\",\n allowHideAll: \"allowHideAll\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 5,\n consts: [[\"anchor\", \"\"], [\"template\", \"\"], [\"columnList\", \"\"], [\"kendoButton\", \"\", \"type\", \"button\", \"fillMode\", \"flat\", \"icon\", \"columns\", 3, \"click\", \"svgIcon\"], [1, \"k-column-chooser-title\"], [3, \"apply\", \"columnChange\", \"keydown.shift.tab\", \"columns\", \"ariaLabel\", \"isLast\", \"applyText\", \"resetText\", \"autoSync\", \"allowHideAll\"]],\n template: function ColumnChooserComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 3, 0);\n i0.ɵɵlistener(\"click\", function ColumnChooserComponent_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const anchor_r2 = i0.ɵɵreference(1);\n const template_r3 = i0.ɵɵreference(3);\n return i0.ɵɵresetView(ctx.toggle(anchor_r2, template_r3));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, ColumnChooserComponent_ng_template_2_Template, 4, 8, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"svgIcon\", ctx.columnsIcon);\n i0.ɵɵattribute(\"title\", ctx.ctx.localization.get(\"columns\"))(\"aria-haspopup\", \"dialog\")(\"aria-expanded\", !!ctx.popupRef)(\"aria-controls\", !!ctx.popupRef ? ctx.popupId : undefined);\n }\n },\n dependencies: [ButtonComponent, ColumnListComponent],\n encapsulation: 2\n });\n return ColumnChooserComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ColumnMenuItemBase = /*#__PURE__*/(() => {\n class ColumnMenuItemBase {\n constructor() {\n this.hostClass = true;\n }\n ngOnInit() {\n if (isDevMode() && !this.service) {\n throw new Error(ColumnMenuErrorMessages.serviceInput);\n }\n }\n /**\n * @hidden\n */\n close() {\n this.service.close();\n }\n }\n ColumnMenuItemBase.ɵfac = function ColumnMenuItemBase_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuItemBase)();\n };\n ColumnMenuItemBase.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuItemBase,\n selectors: [[\"kendo-grid-column-menu-item-base\"]],\n hostVars: 2,\n hostBindings: function ColumnMenuItemBase_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-columnmenu-item-wrapper\", ctx.hostClass);\n }\n },\n inputs: {\n service: \"service\"\n },\n decls: 0,\n vars: 0,\n template: function ColumnMenuItemBase_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ColumnMenuItemBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst hasFilter = (settings, column) => settings.filter !== false && column.field && column.filterable;\n/**\n * @hidden\n */\nconst hasSort = (settings, column) => settings.sort !== false && column.field && column.sortable;\n/**\n * @hidden\n */\nconst hasLock = (settings, column) => settings.lock && column.lockable && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasStick = (settings, column) => settings.stick && column.stickable && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasPosition = (settings, column) => settings.setColumnPosition && (column.stickable || column.lockable) && !(column.parent && !column.parent.isSpanColumn);\n/**\n * @hidden\n */\nconst hasColumnChooser = settings => settings.columnChooser !== false;\n/**\n * @hidden\n */\nconst hasAutoSizeColumn = settings => settings.autoSizeColumn;\n/**\n* @hidden\n*/\nconst hasAutoSizeAllColumns = settings => settings.autoSizeAllColumns;\n/**\n * @hidden\n */\nconst autoSizeColumn = (grid, service, column) => {\n // eslint-disable-next-line no-unused-expressions\n column ? grid.autoFitColumn(column) : grid.autoFitColumns();\n service.close();\n};\n/**\n * @hidden\n */\nconst hasItems = (settings, column) => hasAutoSizeAllColumns(settings) || hasColumnChooser(settings) || hasFilter(settings, column) || hasAutoSizeColumn(settings) || hasLock(settings, column) || hasSort(settings, column);\n\n/**\n * Represents the content template of the\n * [`ColumnMenuItemComponent`]({% slug api_grid_columnmenuitemcomponent %}) component.\n * Provides an option for specifying the content of a column item.\n * To define the content template, nest an `` tag with the\n * `kendoGridColumnMenuItemContentTemplate` directive inside a ``.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * Item Content\n * \n * \n * \n * \n * ...\n * \n * ```\n */\nlet ColumnMenuItemContentTemplateDirective = /*#__PURE__*/(() => {\n class ColumnMenuItemContentTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n ColumnMenuItemContentTemplateDirective.ɵfac = function ColumnMenuItemContentTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuItemContentTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n ColumnMenuItemContentTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColumnMenuItemContentTemplateDirective,\n selectors: [[\"\", \"kendoGridColumnMenuItemContentTemplate\", \"\"]],\n standalone: true\n });\n return ColumnMenuItemContentTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents an item that can be placed inside a\n * [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuItemComponent = /*#__PURE__*/(() => {\n class ColumnMenuItemComponent {\n constructor() {\n /**\n * Fires when the item is clicked.\n */\n this.itemClick = new EventEmitter();\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n this.contentState = 'collapsed';\n }\n ngAfterViewInit() {\n this.contentTemplate && (this.contentId = `k-${guid()}`);\n }\n ngOnChanges(changes) {\n if (changes.expanded) {\n this.updateContentState();\n }\n }\n /**\n * @hidden\n */\n onClick(e) {\n this.itemClick.emit(e);\n if (this.contentTemplate) {\n this.expanded = !this.expanded;\n this.updateContentState();\n if (this.expanded) {\n this.expand.emit();\n } else {\n this.collapse.emit();\n }\n }\n }\n updateContentState() {\n this.contentState = this.expanded ? 'expanded' : 'collapsed';\n }\n }\n ColumnMenuItemComponent.ɵfac = function ColumnMenuItemComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuItemComponent)();\n };\n ColumnMenuItemComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuItemComponent,\n selectors: [[\"kendo-grid-columnmenu-item\"]],\n contentQueries: function ColumnMenuItemComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnMenuItemContentTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n }\n },\n inputs: {\n icon: \"icon\",\n svgIcon: \"svgIcon\",\n text: \"text\",\n selected: \"selected\",\n disabled: \"disabled\",\n expanded: \"expanded\",\n service: \"service\"\n },\n outputs: {\n itemClick: \"itemClick\",\n expand: \"expand\",\n collapse: \"collapse\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 10,\n consts: [[\"role\", \"button\", 1, \"k-columnmenu-item\", 3, \"click\", \"keydown.enter\"], [3, \"name\", \"svgIcon\"], [\"class\", \"k-columnmenu-item-content\", 3, \"overflow\", 4, \"ngIf\"], [1, \"k-columnmenu-item-content\"], [3, \"ngTemplateOutlet\"]],\n template: function ColumnMenuItemComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"click\", function ColumnMenuItemComponent_Template_div_click_0_listener($event) {\n return ctx.onClick($event);\n })(\"keydown.enter\", function ColumnMenuItemComponent_Template_div_keydown_enter_0_listener($event) {\n return ctx.onClick($event);\n });\n i0.ɵɵelement(1, \"kendo-icon-wrapper\", 1);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, ColumnMenuItemComponent_div_3_Template, 3, 5, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-selected\", ctx.selected)(\"k-disabled\", ctx.disabled);\n i0.ɵɵattribute(\"aria-expanded\", ctx.expanded)(\"aria-controls\", ctx.expanded ? ctx.contentId : undefined);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"name\", ctx.icon)(\"svgIcon\", ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx.text, \" \");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.contentTemplate);\n }\n },\n dependencies: [IconWrapperComponent, NgIf, NgTemplateOutlet],\n encapsulation: 2,\n data: {\n animation: [trigger('state', [state('collapsed', style({\n display: 'none'\n })), state('expanded', style({\n display: 'block'\n })), transition('collapsed => expanded', [style({\n height: '0px',\n display: 'block'\n }), animate('100ms ease-in', style({\n height: '*'\n }))]), transition('expanded => collapsed', [style({\n height: '*'\n }), animate('100ms ease-in', style({\n height: '0px'\n }))])])]\n }\n });\n return ColumnMenuItemComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column-menu item for resizing all columns to the minimum possible width so that they fit the widest header or cell content without wrapping.\n * [See example](slug:columnmenu_grid#toc-autosize-all-columns-item).\n *\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * To register the component as a known column menu item, set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the `service` input of the `kendo-grid-columnmenu-autosize-all-columns` component. [See example](slug:columnmenu_grid#toc-customizing-the-content).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuAutoSizeAllColumnsComponent = /*#__PURE__*/(() => {\n class ColumnMenuAutoSizeAllColumnsComponent extends ColumnMenuItemBase {\n constructor(ctx) {\n super();\n this.ctx = ctx;\n this.displayInlineFlexIcon = displayInlineFlexIcon;\n }\n ngOnInit() {\n const isVirtualColumns = this.ctx.grid.columnMenuTemplate && this.ctx.grid.virtualColumns;\n if (isVirtualColumns && isDevMode()) {\n console.warn(ColumnMenuErrorMessages.autoSizeAllColumns);\n }\n }\n /**\n * Resizes all columns to the minimum possible width so that they fit the widest header or cell content without wrapping.\n */\n autoSizeAllColumns() {\n autoSizeColumn(this.ctx.grid, this.service);\n }\n }\n ColumnMenuAutoSizeAllColumnsComponent.ɵfac = function ColumnMenuAutoSizeAllColumnsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuAutoSizeAllColumnsComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n ColumnMenuAutoSizeAllColumnsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuAutoSizeAllColumnsComponent,\n selectors: [[\"kendo-grid-columnmenu-autosize-all-columns\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[\"icon\", \"display-inline-flex\", 3, \"text\", \"svgIcon\", \"itemClick\", 4, \"ngIf\"], [\"icon\", \"display-inline-flex\", 3, \"itemClick\", \"text\", \"svgIcon\"]],\n template: function ColumnMenuAutoSizeAllColumnsComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ColumnMenuAutoSizeAllColumnsComponent_kendo_grid_columnmenu_item_0_Template, 1, 2, \"kendo-grid-columnmenu-item\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.ctx.grid.virtualColumns);\n }\n },\n dependencies: [NgIf, ColumnMenuItemComponent],\n encapsulation: 2\n });\n return ColumnMenuAutoSizeAllColumnsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column-menu item for resizing the specified column to the minimum possible width so that it fits the header or cell content without wrapping.\n * [See example](slug:columnmenu_grid#toc-autosize-column-item).\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * [See example](slug:columnmenu_grid#toc-customizing-the-content).\n *\n * You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) and `column` that are passed by\n * the template to the `service` and `column` input of the `kendo-grid-columnmenu-autosize-column` component.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuAutoSizeColumnComponent = /*#__PURE__*/(() => {\n class ColumnMenuAutoSizeColumnComponent extends ColumnMenuItemBase {\n constructor(ctx) {\n super();\n this.ctx = ctx;\n this.maxWidthIcon = maxWidthIcon;\n }\n ngOnInit() {\n const isVirtualColumns = this.ctx.grid.columnMenuTemplate && this.ctx.grid.virtualColumns;\n if (isVirtualColumns && isDevMode()) {\n console.warn(ColumnMenuErrorMessages.autoSizeColumn);\n }\n }\n /**\n * Resizes a specified column to the minimum possible width so that it fits the widest header or cell content without wrapping.\n */\n autoSizeColumn() {\n autoSizeColumn(this.ctx.grid, this.service, this.column);\n }\n }\n ColumnMenuAutoSizeColumnComponent.ɵfac = function ColumnMenuAutoSizeColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuAutoSizeColumnComponent)(i0.ɵɵdirectiveInject(ContextService));\n };\n ColumnMenuAutoSizeColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuAutoSizeColumnComponent,\n selectors: [[\"kendo-grid-columnmenu-autosize-column\"]],\n inputs: {\n column: \"column\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[\"class\", \"k-grid-columnmenu-autosize-column\", \"icon\", \"max-width\", 3, \"text\", \"svgIcon\", \"itemClick\", 4, \"ngIf\"], [\"icon\", \"max-width\", 1, \"k-grid-columnmenu-autosize-column\", 3, \"itemClick\", \"text\", \"svgIcon\"]],\n template: function ColumnMenuAutoSizeColumnComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ColumnMenuAutoSizeColumnComponent_kendo_grid_columnmenu_item_0_Template, 1, 2, \"kendo-grid-columnmenu-item\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", !ctx.ctx.grid.virtualColumns);\n }\n },\n dependencies: [NgIf, ColumnMenuItemComponent],\n encapsulation: 2\n });\n return ColumnMenuAutoSizeColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column-menu item for selecting columns in the Grid. [See example](slug:columnmenu_grid#toc-column-chooser-item).\n *\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * To register the component as a known column menu item, set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the service input of the `kendo-grid-columnmenu-chooser` component. [See example](slug:columnmenu_grid#toc-customizing-the-content).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuChooserComponent = /*#__PURE__*/(() => {\n class ColumnMenuChooserComponent extends ColumnMenuItemBase {\n constructor(ctx, columnInfoService, changeDetector, hostElement) {\n super();\n this.ctx = ctx;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n * @default false\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.isLast = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-actions k-actions-stretched k-actions-horizontal';\n this.columnsIcon = columnsIcon;\n }\n get columns() {\n return this.columnInfoService.leafNamedColumns;\n }\n /**\n * @hidden\n */\n onApply(changed) {\n this.close();\n if (changed.length) {\n this.changeDetector.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.hostElement.nativeElement.querySelector('.k-columnmenu-item');\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n this.expand.emit();\n }\n }\n ColumnMenuChooserComponent.ɵfac = function ColumnMenuChooserComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuChooserComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n ColumnMenuChooserComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuChooserComponent,\n selectors: [[\"kendo-grid-columnmenu-chooser\"]],\n inputs: {\n expanded: \"expanded\",\n isLast: \"isLast\"\n },\n outputs: {\n expand: \"expand\",\n collapse: \"collapse\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 3,\n consts: [[\"icon\", \"columns\", 3, \"collapse\", \"expand\", \"text\", \"svgIcon\", \"expanded\"], [\"kendoGridColumnMenuItemContentTemplate\", \"\"], [3, \"apply\", \"applyText\", \"resetText\", \"ariaLabel\", \"columns\", \"autoSync\", \"allowHideAll\", \"actionsClass\", \"isLast\", \"isExpanded\", \"service\"]],\n template: function ColumnMenuChooserComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n i0.ɵɵlistener(\"collapse\", function ColumnMenuChooserComponent_Template_kendo_grid_columnmenu_item_collapse_0_listener() {\n return ctx.onCollapse();\n })(\"expand\", function ColumnMenuChooserComponent_Template_kendo_grid_columnmenu_item_expand_0_listener() {\n return ctx.onExpand();\n });\n i0.ɵɵtemplate(1, ColumnMenuChooserComponent_ng_template_1_Template, 1, 10, \"ng-template\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"text\", ctx.ctx.localization.get(\"columns\"))(\"svgIcon\", ctx.columnsIcon)(\"expanded\", ctx.expanded);\n }\n },\n dependencies: [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnListComponent],\n encapsulation: 2\n });\n return ColumnMenuChooserComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column-menu item that sticks or unsticks columns in the Grid.\n * [See example](slug:columnmenu_grid#toc-stick-and-unstick-items).\n *\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * To register the component as a known column menu item, set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the service input of the `kendo-grid-columnmenu-lock` component. [See example](slug:columnmenu_grid#toc-customizing-the-content).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n *\n * ```\n */\nlet ColumnMenuStickComponent = /*#__PURE__*/(() => {\n class ColumnMenuStickComponent extends ColumnMenuItemBase {\n constructor(ctx, columnInfoService, changeDetector) {\n super();\n this.ctx = ctx;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n this.stickIcon = stickIcon;\n this.unstickIcon = unstickIcon;\n }\n get text() {\n return this.ctx.localization.get(this.sticky ? 'unstick' : 'stick');\n }\n get icon() {\n return this.sticky ? 'unstick' : 'stick';\n }\n get svgIcon() {\n return this.sticky ? this.unstickIcon : this.stickIcon;\n }\n get disabled() {\n return !this.sticky && this.columnInfoService.unlockedRootCount < 2;\n }\n /**\n * @hidden\n */\n toggleColumn() {\n this.toggleHierarchy(!this.sticky);\n this.close();\n this.changeDetector.markForCheck();\n }\n toggleHierarchy(sticky) {\n let root = this.service.column;\n while (root.parent) {\n root = root.parent;\n }\n const columns = [root];\n const allChanged = [];\n while (columns.length) {\n const column = columns.shift();\n column.sticky = sticky;\n allChanged.push(column);\n if (column.hasChildren) {\n columns.push(...column.childrenArray);\n }\n }\n this.columnInfoService.changeStuck(allChanged);\n }\n get sticky() {\n return this.service.column.sticky;\n }\n }\n ColumnMenuStickComponent.ɵfac = function ColumnMenuStickComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuStickComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n ColumnMenuStickComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuStickComponent,\n selectors: [[\"kendo-grid-columnmenu-stick\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 4,\n consts: [[3, \"itemClick\", \"text\", \"icon\", \"svgIcon\", \"disabled\"]],\n template: function ColumnMenuStickComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n i0.ɵɵlistener(\"itemClick\", function ColumnMenuStickComponent_Template_kendo_grid_columnmenu_item_itemClick_0_listener() {\n return ctx.toggleColumn();\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"text\", ctx.text)(\"icon\", ctx.icon)(\"svgIcon\", ctx.svgIcon)(\"disabled\", ctx.disabled);\n }\n },\n dependencies: [ColumnMenuItemComponent],\n encapsulation: 2\n });\n return ColumnMenuStickComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column-menu item for locking and unlocking columns in the Grid. [See example](slug:columnmenu_grid#toc-lock-and-unlock-items).\n *\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * To register the component as a known column menu item, set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the service input of the `kendo-grid-columnmenu-lock` component. [See example](slug:columnmenu_grid#toc-customizing-the-content).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuLockComponent = /*#__PURE__*/(() => {\n class ColumnMenuLockComponent extends ColumnMenuItemBase {\n constructor(ctx, columnInfoService, changeDetector) {\n super();\n this.ctx = ctx;\n this.columnInfoService = columnInfoService;\n this.changeDetector = changeDetector;\n this.unlockIcon = unlockIcon;\n this.lockIcon = lockIcon;\n }\n get text() {\n return this.ctx.localization.get(this.locked ? 'unlock' : 'lock');\n }\n get icon() {\n return this.locked ? 'unlock' : 'lock';\n }\n get svgIcon() {\n return this.locked ? this.unlockIcon : this.lockIcon;\n }\n get disabled() {\n return !this.locked && this.columnInfoService.unlockedRootCount < 2;\n }\n /**\n * @hidden\n */\n toggleColumn() {\n this.toggleHierarchy(!this.locked);\n this.close();\n this.changeDetector.markForCheck();\n }\n toggleHierarchy(locked) {\n let root = this.service.column;\n while (root.parent) {\n root = root.parent;\n }\n const columns = [root];\n const allChanged = [];\n while (columns.length) {\n const column = columns.shift();\n column.locked = locked;\n allChanged.push(column);\n if (column.hasChildren) {\n columns.push(...column.childrenArray);\n }\n }\n this.columnInfoService.changeLocked(allChanged);\n }\n get locked() {\n return this.service.column.locked;\n }\n }\n ColumnMenuLockComponent.ɵfac = function ColumnMenuLockComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuLockComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n ColumnMenuLockComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuLockComponent,\n selectors: [[\"kendo-grid-columnmenu-lock\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 4,\n consts: [[3, \"itemClick\", \"text\", \"icon\", \"svgIcon\", \"disabled\"]],\n template: function ColumnMenuLockComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n i0.ɵɵlistener(\"itemClick\", function ColumnMenuLockComponent_Template_kendo_grid_columnmenu_item_itemClick_0_listener() {\n return ctx.toggleColumn();\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"text\", ctx.text)(\"icon\", ctx.icon)(\"svgIcon\", ctx.svgIcon)(\"disabled\", ctx.disabled);\n }\n },\n dependencies: [ColumnMenuItemComponent],\n encapsulation: 2\n });\n return ColumnMenuLockComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column-menu item which combines the lock and sticky column functionalities.\n *\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * To register the component as a known column menu item, set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the service input of the `kendo-grid-columnmenu-position` component. [See example](slug:columnmenu_grid#toc-set-column-position-item).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuPositionComponent = /*#__PURE__*/(() => {\n class ColumnMenuPositionComponent extends ColumnMenuItemBase {\n constructor(ctx, hostElement) {\n super();\n this.ctx = ctx;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n * @default false\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-actions';\n this.setColumnPositionIcon = setColumnPositionIcon;\n this._isLast = false;\n }\n /**\n * @hidden\n */\n set isLast(value) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n this._isLast = value;\n }\n /**\n * @hidden\n */\n get isLast() {\n return this._isLast;\n }\n /**\n * @hidden\n */\n onTab(e, isLastItem) {\n if (this.isLast && isLastItem) {\n e.preventDefault();\n e.stopImmediatePropagation();\n if (this.service) {\n this.service.menuTabbingService.firstFocusable.focus();\n }\n }\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.getLastFocusableItem();\n }\n this.expand.emit();\n }\n getLastFocusableItem() {\n const menuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');\n const lastFocusableIndex = this.expanded ? menuItems.length - 1 : 0;\n return menuItems[lastFocusableIndex];\n }\n }\n ColumnMenuPositionComponent.ɵfac = function ColumnMenuPositionComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuPositionComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n ColumnMenuPositionComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuPositionComponent,\n selectors: [[\"kendo-grid-columnmenu-position\"]],\n inputs: {\n expanded: \"expanded\",\n showLock: \"showLock\",\n showStick: \"showStick\",\n isLast: \"isLast\"\n },\n outputs: {\n expand: \"expand\",\n collapse: \"collapse\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 3,\n consts: [[\"icon\", \"set-column-position\", 3, \"keydown.tab\", \"collapse\", \"expand\", \"text\", \"svgIcon\", \"expanded\"], [\"kendoGridColumnMenuItemContentTemplate\", \"\"], [3, \"service\", \"keydown.tab\", 4, \"ngIf\"], [3, \"keydown.tab\", \"service\"]],\n template: function ColumnMenuPositionComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n i0.ɵɵlistener(\"keydown.tab\", function ColumnMenuPositionComponent_Template_kendo_grid_columnmenu_item_keydown_tab_0_listener($event) {\n return ctx.onTab($event, !ctx.expanded);\n })(\"collapse\", function ColumnMenuPositionComponent_Template_kendo_grid_columnmenu_item_collapse_0_listener() {\n return ctx.onCollapse();\n })(\"expand\", function ColumnMenuPositionComponent_Template_kendo_grid_columnmenu_item_expand_0_listener() {\n return ctx.onExpand();\n });\n i0.ɵɵtemplate(1, ColumnMenuPositionComponent_ng_template_1_Template, 2, 2, \"ng-template\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"text\", ctx.ctx.localization.get(\"setColumnPosition\"))(\"svgIcon\", ctx.setColumnPositionIcon)(\"expanded\", ctx.expanded);\n }\n },\n dependencies: [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, NgIf, ColumnMenuLockComponent, ColumnMenuStickComponent],\n encapsulation: 2\n });\n return ColumnMenuPositionComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the column-menu item for editing column filters in the Grid. [See example](slug:columnmenu_grid#toc-filter-item).\n *\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * To register the component as a known column menu item, set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the service input of the `kendo-grid-columnmenu-filter` component. [See example](slug:columnmenu_grid#toc-customizing-the-content).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuFilterComponent = /*#__PURE__*/(() => {\n class ColumnMenuFilterComponent extends ColumnMenuItemBase {\n constructor(ctx, hostElement) {\n super();\n this.ctx = ctx;\n this.hostElement = hostElement;\n /**\n * Fires when the content is expanded.\n */\n this.expand = new EventEmitter();\n /**\n * Fires when the content is collapsed.\n */\n this.collapse = new EventEmitter();\n /**\n * Specifies if the content is expanded.\n * @default false\n */\n this.expanded = false;\n /**\n * @hidden\n */\n this.isLast = false;\n /**\n * @hidden\n */\n this.actionsClass = 'k-actions k-actions-stretched k-actions-horizontal';\n this.filterIcon = filterIcon;\n }\n /**\n * @hidden\n */\n onCollapse() {\n this.expanded = false;\n if (this.isLast) {\n this.service.menuTabbingService.lastFocusable = this.hostElement.nativeElement.querySelector('.k-columnmenu-item');\n }\n this.collapse.emit();\n }\n /**\n * @hidden\n */\n onExpand() {\n this.expanded = true;\n this.expand.emit();\n }\n }\n ColumnMenuFilterComponent.ɵfac = function ColumnMenuFilterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuFilterComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n ColumnMenuFilterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuFilterComponent,\n selectors: [[\"kendo-grid-columnmenu-filter\"]],\n inputs: {\n expanded: \"expanded\",\n isLast: \"isLast\"\n },\n outputs: {\n expand: \"expand\",\n collapse: \"collapse\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 3,\n consts: [[\"icon\", \"filter\", 3, \"collapse\", \"expand\", \"text\", \"svgIcon\", \"expanded\"], [\"kendoGridColumnMenuItemContentTemplate\", \"\"], [3, \"keydown.shift.tab\", \"close\", \"column\", \"menuTabbingService\", \"filter\", \"actionsClass\", \"isLast\", \"isExpanded\"]],\n template: function ColumnMenuFilterComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n i0.ɵɵlistener(\"collapse\", function ColumnMenuFilterComponent_Template_kendo_grid_columnmenu_item_collapse_0_listener() {\n return ctx.onCollapse();\n })(\"expand\", function ColumnMenuFilterComponent_Template_kendo_grid_columnmenu_item_expand_0_listener() {\n return ctx.onExpand();\n });\n i0.ɵɵtemplate(1, ColumnMenuFilterComponent_ng_template_1_Template, 1, 6, \"ng-template\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"text\", ctx.ctx.localization.get(\"filter\"))(\"svgIcon\", ctx.filterIcon)(\"expanded\", ctx.expanded);\n }\n },\n dependencies: [ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, FilterMenuContainerComponent],\n encapsulation: 2\n });\n return ColumnMenuFilterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ColumnMenuItemDirective = /*#__PURE__*/(() => {\n class ColumnMenuItemDirective {\n constructor(hostElement, renderer, ngZone) {\n this.hostElement = hostElement;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this._isFirst = false;\n this._isLast = false;\n this.subs = new Subscription();\n this.onTab = e => {\n if (e.keyCode !== Keys.Tab) {\n return;\n }\n if (this.isFirst && e.shiftKey && e.target === this.columnMenuItems[0]) {\n e.preventDefault();\n this.menuItemComponent.service.menuTabbingService.lastFocusable.focus();\n }\n if (this.isLast && !e.shiftKey) {\n const lastColumnMenuItem = this.getLastColumnMenuItem();\n const isExpanded = this.menuItemComponent.expanded;\n if (lastColumnMenuItem === e.target && !isExpanded) {\n e.preventDefault();\n this.menuItemComponent.service.menuTabbingService.firstFocusable.focus();\n }\n }\n };\n }\n /**\n * @hidden\n */\n set isFirst(value) {\n if (value) {\n const focusableElement = this.columnMenuItems[0];\n this.menuItemComponent.service.menuTabbingService.firstFocusable = focusableElement;\n this.ngZone.runOutsideAngular(() => {\n const firstItemKeydownSub = this.renderer.listen(focusableElement, 'keydown', this.onTab);\n this.subs.add(firstItemKeydownSub);\n });\n }\n this._isFirst = value;\n }\n /**\n * @hidden\n */\n get isFirst() {\n return this._isFirst;\n }\n /**\n * @hidden\n */\n set isLast(value) {\n if (!this.columnMenuItems) {\n return;\n }\n if (value) {\n const lastFocusableElement = this.getLastColumnMenuItem();\n this.menuItemComponent.service.menuTabbingService.lastFocusable = lastFocusableElement;\n this.ngZone.runOutsideAngular(() => {\n const lastItemKeydownSub = this.renderer.listen(lastFocusableElement, 'keydown', this.onTab);\n this.subs.add(lastItemKeydownSub);\n });\n if (this.isExpandableItem()) {\n this.menuItemComponent.isLast = true;\n }\n }\n this._isLast = value;\n }\n /**\n * @hidden\n */\n get isLast() {\n return this._isLast;\n }\n ngAfterViewInit() {\n this.columnMenuItems = this.hostElement.nativeElement.querySelectorAll('.k-columnmenu-item');\n [].slice.apply(this.columnMenuItems).forEach(el => this.renderer.setAttribute(el, 'tabindex', '0'));\n if (this.menuItemComponent instanceof ColumnMenuFilterComponent) {\n this.menuItemComponent.service.menuTabbingService.isColumnMenu = true;\n }\n this.menuItemComponent.service?.columnMenuContainer.templateMenuItems.push(this);\n }\n ngOnDestroy() {\n if (this.subs) {\n this.subs.unsubscribe();\n }\n }\n getLastColumnMenuItem() {\n return this.columnMenuItems.length === 1 ? this.columnMenuItems[0] : this.columnMenuItems[1];\n }\n isExpandableItem() {\n return this.menuItemComponent instanceof ColumnMenuFilterComponent || this.menuItemComponent instanceof ColumnMenuChooserComponent || this.menuItemComponent instanceof ColumnMenuPositionComponent;\n }\n }\n ColumnMenuItemDirective.ɵfac = function ColumnMenuItemDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuItemDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n ColumnMenuItemDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColumnMenuItemDirective,\n selectors: [[\"\", \"kendoGridColumnMenuItem\", \"\"]],\n inputs: {\n menuItemComponent: [0, \"kendoGridColumnMenuItem\", \"menuItemComponent\"]\n },\n standalone: true\n });\n return ColumnMenuItemDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ColumnMenuContainerComponent = /*#__PURE__*/(() => {\n class ColumnMenuContainerComponent {\n constructor(service, ngZone) {\n this.service = service;\n this.ngZone = ngZone;\n this.templateMenuItems = [];\n service.columnMenuContainer = this;\n }\n ngAfterViewInit() {\n if (this.columnMenuItems.length) {\n this.columnMenuItems.first.isFirst = true;\n this.columnMenuItems.last.isLast = true;\n } else if (this.templateMenuItems.length) {\n this.templateMenuItems[0].isFirst = true;\n this.templateMenuItems[this.templateMenuItems.length - 1].isLast = true;\n } else {\n return;\n }\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.service.menuTabbingService.firstFocusable.focus());\n }\n }\n ColumnMenuContainerComponent.ɵfac = function ColumnMenuContainerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuContainerComponent)(i0.ɵɵdirectiveInject(ColumnMenuService), i0.ɵɵdirectiveInject(NgZone));\n };\n ColumnMenuContainerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuContainerComponent,\n selectors: [[\"kendo-grid-columnmenu-container\"]],\n contentQueries: function ColumnMenuContainerComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnMenuItemDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnMenuItems = _t);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c11,\n decls: 1,\n vars: 0,\n template: function ColumnMenuContainerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n return ColumnMenuContainerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass SortService {\n constructor() {\n this.changes = new Subject();\n }\n sort(value) {\n this.changes.next(value);\n }\n}\n\n/**\n * @hidden\n */\nconst DEFAULTS = {\n allowUnsort: true,\n mode: 'single',\n showIndexes: true,\n initialDirection: 'asc',\n multiSortKey: 'none'\n};\n/**\n * @hidden\n */\nconst normalize$1 = (...settings) => Object.assign({}, DEFAULTS, ...settings);\n\n/**\n * Represents the column-menu item for sorting Grid columns.\n * [See example](slug:columnmenu_grid#toc-sort-item).\n *\n * The component can be placed inside a [ColumnMenuTemplate]({% slug api_grid_columnmenutemplatedirective %}) directive.\n * To register the component as a known column menu item, set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the service input of the `kendo-grid-columnmenu-sort` component. [See example](slug:columnmenu_grid#toc-customizing-the-content).\n *\n * You have to set the [ColumnMenuService]({% slug api_grid_columnmenuservice %}) that is passed by\n * the template to the service input of the `kendo-grid-columnmenu-sort` component.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuSortComponent = /*#__PURE__*/(() => {\n class ColumnMenuSortComponent extends ColumnMenuItemBase {\n constructor(ctx, sortService, renderer) {\n super();\n this.ctx = ctx;\n this.sortService = sortService;\n this.renderer = renderer;\n this.sortAscSmallIcon = sortAscSmallIcon;\n this.sortDescSmallIcon = sortDescSmallIcon;\n }\n get sortedAsc() {\n const descriptor = this.descriptor;\n return descriptor && (!descriptor.dir || descriptor.dir === 'asc');\n }\n get sortedDesc() {\n const descriptor = this.descriptor;\n return descriptor && descriptor.dir === 'desc';\n }\n /**\n * @hidden\n */\n toggleSort(dir) {\n const field = this.service.column.field;\n const {\n mode,\n allowUnsort\n } = normalize$1(this.service.sortable);\n const descriptor = this.descriptor;\n const sort = mode === 'multiple' ? this.service.sort.filter(s => s.field !== field) : [];\n if (descriptor && descriptor.dir === dir) {\n if (!allowUnsort) {\n return;\n }\n } else {\n sort.push({\n field,\n dir\n });\n }\n this.sortService.sort(sort);\n this.close();\n }\n get descriptor() {\n return [].concat(this.service.sort || []).find(s => s.field === this.service.column.field);\n }\n }\n ColumnMenuSortComponent.ɵfac = function ColumnMenuSortComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuSortComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(SortService), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n ColumnMenuSortComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuSortComponent,\n selectors: [[\"kendo-grid-columnmenu-sort\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 6,\n consts: [[\"icon\", \"sort-asc-small\", 3, \"itemClick\", \"text\", \"svgIcon\", \"selected\"], [\"icon\", \"sort-desc-small\", 3, \"itemClick\", \"text\", \"svgIcon\", \"selected\"]],\n template: function ColumnMenuSortComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"kendo-grid-columnmenu-item\", 0);\n i0.ɵɵlistener(\"itemClick\", function ColumnMenuSortComponent_Template_kendo_grid_columnmenu_item_itemClick_0_listener() {\n return ctx.toggleSort(\"asc\");\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(1, \"kendo-grid-columnmenu-item\", 1);\n i0.ɵɵlistener(\"itemClick\", function ColumnMenuSortComponent_Template_kendo_grid_columnmenu_item_itemClick_1_listener() {\n return ctx.toggleSort(\"desc\");\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"text\", ctx.ctx.localization.get(\"sortAscending\"))(\"svgIcon\", ctx.sortAscSmallIcon)(\"selected\", ctx.sortedAsc);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"text\", ctx.ctx.localization.get(\"sortDescending\"))(\"svgIcon\", ctx.sortDescSmallIcon)(\"selected\", ctx.sortedDesc);\n }\n },\n dependencies: [ColumnMenuItemComponent],\n encapsulation: 2\n });\n return ColumnMenuSortComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst POPUP_CLASSES = 'k-grid-columnmenu-popup k-column-menu';\nlet id = 0;\nconst getId = gridId => `${gridId}-column-menu-${id++}`;\n/**\n * Represents the [column menu](slug:columnmenu_grid#toc-customizing-the-position) component.\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ColumnMenuComponent = /*#__PURE__*/(() => {\n class ColumnMenuComponent {\n constructor(navigationService, popupService, service, ctx, renderer, cdr, columnInfoService, idService) {\n this.navigationService = navigationService;\n this.popupService = popupService;\n this.service = service;\n this.ctx = ctx;\n this.renderer = renderer;\n this.cdr = cdr;\n this.columnInfoService = columnInfoService;\n this.idService = idService;\n /**\n * @hidden\n */\n this.standalone = true;\n /**\n * The settings for the Column Menu.\n */\n this.settings = {};\n /**\n * @hidden\n */\n this.sortable = true;\n /**\n * @hidden\n */\n this.tabIndex = '-1';\n /**\n * @hidden\n */\n this.columnsIcon = columnsIcon;\n /**\n * @hidden\n */\n this.actionsClass = 'k-actions';\n /**\n * @hidden\n */\n this.slidersIcon = slidersIcon;\n /**\n * @hidden\n */\n this.filterIcon = filterIcon;\n /**\n * @hidden\n */\n this.expandedFilter = false;\n /**\n * @hidden\n */\n this.expandedColumns = false;\n /**\n * @hidden\n */\n this.expandedPosition = false;\n this.moreVerticalIcon = moreVerticalIcon;\n this.closeSubscription = service.closeMenu.subscribe(this.close.bind(this, true));\n }\n /**\n * @hidden\n */\n get showGeneralTab() {\n return this.hasSort || this.hasLock || this.hasStick || this.hasPosition || this.hasAutoSizeColumn || this.hasAutoSizeAllColumns;\n }\n /**\n * @hidden\n */\n get isActive() {\n return this.hasFilter && filtersByField(this.filter, this.column.field).length > 0 || !this.sortable && this.hasSort && this.sort.find(descriptor => descriptor.field === this.column.field);\n }\n /**\n * @hidden\n */\n get hasFilter() {\n return hasFilter(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get isNavigable() {\n return this.navigationService.tableEnabled;\n }\n /**\n * @hidden\n */\n get hasSort() {\n return hasSort(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasColumnChooser() {\n return hasColumnChooser(this.settings);\n }\n /**\n * @hidden\n */\n onApply(changed) {\n this.close(true);\n if (changed.length) {\n this.cdr.markForCheck();\n this.columnInfoService.changeVisibility(changed);\n }\n }\n /**\n * @hidden\n */\n get hasAutoSizeColumn() {\n return hasAutoSizeColumn(this.settings);\n }\n /**\n * @hidden\n */\n get hasAutoSizeAllColumns() {\n return hasAutoSizeAllColumns(this.settings);\n }\n /**\n * @hidden\n */\n get hasLock() {\n return hasLock(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasStick() {\n return hasStick(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get hasPosition() {\n return hasPosition(this.settings, this.column);\n }\n /**\n * @hidden\n */\n get columns() {\n return this.columnInfoService.leafNamedColumns;\n }\n ngAfterViewInit() {\n if (this.ctx.grid.virtualColumns && isDevMode()) {\n if (this.settings.autoSizeAllColumns) {\n this.settings.autoSizeAllColumns = false;\n console.warn(ColumnMenuErrorMessages.autoSizeAllColumns);\n }\n if (this.settings.autoSizeColumn) {\n this.settings.autoSizeColumn = false;\n console.warn(ColumnMenuErrorMessages.autoSizeColumn);\n }\n }\n this.service.menuTabbingService.isTabbedInterface = this.settings.view === 'tabbed' ? true : false;\n }\n ngOnChanges() {\n this.service.column = this.column;\n this.service.sort = this.sort;\n this.service.filter = this.filter;\n this.service.sortable = this.sortable;\n }\n ngOnDestroy() {\n this.close();\n this.closeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n toggle(e, anchor, template) {\n if (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n this.expandedFilter = this.getExpandedState(this.settings.filter);\n this.expandedColumns = this.getExpandedState(this.settings.columnChooser);\n this.expandedPosition = this.getExpandedState(this.settings.setColumnPosition);\n this.popupRef = this.popupService.open(anchor, template, this.popupRef, POPUP_CLASSES);\n // Needed as changes to 'popupRef' and 'popupId' are not reflected\n // automatically when the Popup is closed by clicking outside the anchor\n const ariaRoot = this.isNavigable ? anchor.closest('.k-table-th') : anchor;\n if (this.popupRef) {\n this.popupRef.popup.instance.close.pipe(take(1)).subscribe(() => {\n this.popupRef = null;\n const ariaRoot = this.isNavigable ? anchor.closest('.k-table-th') : anchor;\n ariaRoot && this.renderer.removeAttribute(ariaRoot, 'aria-controls');\n ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'false');\n });\n const popupAriaElement = this.popupRef.popupElement.querySelector('.k-grid-columnmenu-popup');\n if (popupAriaElement) {\n const popupId = getId(this.idService?.gridId());\n this.renderer.setAttribute(popupAriaElement, 'id', popupId);\n this.renderer.setAttribute(popupAriaElement, 'role', 'dialog');\n this.renderer.setAttribute(popupAriaElement, 'aria-label', this.columnMenuTitle);\n ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-controls', popupId);\n ariaRoot && this.renderer.setAttribute(ariaRoot, 'aria-expanded', 'true');\n }\n if (this.settings.view === 'tabbed') {\n this.renderer.addClass(popupAriaElement, 'k-column-menu-tabbed');\n this.renderer.addClass(popupAriaElement, 'k-column-menu');\n this.cdr.detectChanges();\n this.tabStrip?.selectTab(0);\n }\n } else {\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n } else {\n this.anchor.nativeElement.focus();\n }\n }\n }\n /**\n * @hidden\n */\n close(triggerFocus = false) {\n this.popupService.destroy();\n this.popupRef = null;\n this.cdr.markForCheck();\n if (!triggerFocus) {\n return;\n }\n if (this.navigationService.tableEnabled) {\n this.navigationService.focusCell(0, this.column.leafIndex);\n } else {\n this.anchor.nativeElement.focus();\n }\n }\n /**\n * @hidden\n */\n get columnMenuTitle() {\n const localizationMsg = this.ctx.localization.get('columnMenu') || '';\n const columnName = this.column.title || this.column.field;\n return replaceMessagePlaceholder(localizationMsg, 'columnName', columnName);\n }\n getExpandedState(menuItemSettings) {\n return typeof menuItemSettings === 'object' ? menuItemSettings.expanded : false;\n }\n }\n ColumnMenuComponent.ɵfac = function ColumnMenuComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnMenuComponent)(i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(SinglePopupService), i0.ɵɵdirectiveInject(ColumnMenuService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(IdService, 8));\n };\n ColumnMenuComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColumnMenuComponent,\n selectors: [[\"kendo-grid-column-menu\"]],\n viewQuery: function ColumnMenuComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c14, 7);\n i0.ɵɵviewQuery(_c15, 7, TemplateRef);\n i0.ɵɵviewQuery(_c5, 7, TemplateRef);\n i0.ɵɵviewQuery(_c20, 7, TemplateRef);\n i0.ɵɵviewQuery(TabStripComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.anchor = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.defaultTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabbedInterfaceTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabStrip = _t.first);\n }\n },\n hostVars: 2,\n hostBindings: function ColumnMenuComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grid-column-menu-standalone\", ctx.standalone);\n }\n },\n inputs: {\n standalone: \"standalone\",\n column: \"column\",\n settings: \"settings\",\n sort: \"sort\",\n filter: \"filter\",\n sortable: \"sortable\",\n columnMenuTemplate: \"columnMenuTemplate\",\n tabIndex: \"tabIndex\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([ColumnMenuService, MenuTabbingService]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 9,\n vars: 8,\n consts: [[\"anchor\", \"\"], [\"template\", \"\"], [\"defaultTemplate\", \"\"], [\"tabbedInterfaceTemplate\", \"\"], [\"sortItem\", \"\"], [\"lockItem\", \"\"], [\"stickItem\", \"\"], [\"positionItem\", \"\"], [\"chooserItem\", \"\"], [\"autoSizeColumnItem\", \"\"], [\"autoSizeAllColumnsItem\", \"\"], [\"filterItem\", \"\"], [\"tabstrip\", \"\"], [\"href\", \"#\", 1, \"k-grid-header-menu\", \"k-grid-column-menu\", 3, \"click\", \"keydown.enter\", \"ngClass\", \"tabindex\"], [\"name\", \"more-vertical\", 3, \"svgIcon\"], [3, \"keydown.escape\", \"keydown.enter\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"kendoGridColumnMenuItem\", \"service\", 4, \"ngIf\"], [3, \"showLock\", \"showStick\", \"kendoGridColumnMenuItem\", \"service\", \"expanded\", 4, \"ngIf\"], [\"class\", \"k-separator\", 3, \"borderColor\", 4, \"ngIf\"], [3, \"kendoGridColumnMenuItem\", \"service\", \"expanded\", 4, \"ngIf\"], [3, \"service\", \"kendoGridColumnMenuItem\", \"column\", 4, \"ngIf\"], [3, \"service\", \"kendoGridColumnMenuItem\", 4, \"ngIf\"], [3, \"kendoGridColumnMenuItem\", \"service\"], [3, \"showLock\", \"showStick\", \"kendoGridColumnMenuItem\", \"service\", \"expanded\"], [1, \"k-separator\"], [3, \"kendoGridColumnMenuItem\", \"service\", \"expanded\"], [3, \"service\", \"kendoGridColumnMenuItem\", \"column\"], [3, \"service\", \"kendoGridColumnMenuItem\"], [3, \"keydown.escape\"], [4, \"ngIf\"], [\"kendoTabTitle\", \"\"], [\"kendoTabContent\", \"\"], [\"name\", \"filter\", 3, \"svgIcon\"], [3, \"keydown.shift.tab\", \"close\", \"column\", \"menuTabbingService\", \"filter\", \"actionsClass\"], [\"name\", \"sliders\", 3, \"svgIcon\"], [\"name\", \"columns\", 3, \"svgIcon\"], [3, \"apply\", \"applyText\", \"resetText\", \"columns\", \"autoSync\", \"allowHideAll\", \"actionsClass\", \"service\"]],\n template: function ColumnMenuComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"a\", 13, 0);\n i0.ɵɵlistener(\"click\", function ColumnMenuComponent_Template_a_click_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const anchor_r2 = i0.ɵɵreference(1);\n const template_r3 = i0.ɵɵreference(4);\n return i0.ɵɵresetView(ctx.toggle($event, anchor_r2, template_r3));\n })(\"keydown.enter\", function ColumnMenuComponent_Template_a_keydown_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopImmediatePropagation());\n });\n i0.ɵɵelement(2, \"kendo-icon-wrapper\", 14);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, ColumnMenuComponent_ng_template_3_Template, 2, 5, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(5, ColumnMenuComponent_ng_template_5_Template, 11, 10, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor)(7, ColumnMenuComponent_ng_template_7_Template, 5, 3, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(6, _c21, ctx.isActive))(\"tabindex\", ctx.tabIndex);\n i0.ɵɵattribute(\"title\", ctx.columnMenuTitle)(\"aria-expanded\", ctx.isNavigable ? undefined : false)(\"aria-haspopup\", ctx.isNavigable ? undefined : \"dialog\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"svgIcon\", ctx.moreVerticalIcon);\n }\n },\n dependencies: [NgClass, IconWrapperComponent, ColumnMenuContainerComponent, NgTemplateOutlet, NgIf, ColumnMenuSortComponent, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuFilterComponent, TabStripComponent, TabStripTabComponent, TabTitleDirective, TabContentDirective, FilterMenuContainerComponent, ColumnListComponent],\n encapsulation: 2\n });\n return ColumnMenuComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ExcelService = /*#__PURE__*/(() => {\n class ExcelService {\n constructor() {\n this.saveToExcel = new EventEmitter();\n this.exportClick = new EventEmitter();\n }\n save(component) {\n if (this.saveToExcel.observers.length === 0) {\n if (isDevMode()) {\n throw new Error(GridConfigurationErrorMessages.requiredModule('excel', 'ExcelModule', ''));\n }\n } else {\n this.saveToExcel.emit(component);\n }\n }\n }\n ExcelService.ɵfac = function ExcelService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExcelService)();\n };\n ExcelService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ExcelService,\n factory: ExcelService.ɵfac\n });\n return ExcelService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the `excelExport` event.\n */\nclass ExcelExportEvent extends PreventableEvent {\n constructor(workbook) {\n super();\n this.workbook = workbook;\n }\n}\nconst fetchComponentData = component => {\n return {\n data: component.view.map(item => item),\n group: component.group\n };\n};\nconst toExcelColumn = column => {\n return {\n title: column.title,\n field: column.field,\n locked: Boolean(column.locked),\n width: column.width,\n level: column.level,\n hidden: !column.isVisible,\n groupHeaderTemplate: column.groupHeaderTemplate,\n groupHeaderColumnTemplate: column.groupHeaderColumnTemplate,\n groupFooterTemplate: column.groupFooterTemplate,\n footerTemplate: column.footerTemplate\n };\n};\nconst toExcelColumns = columns => {\n const result = [];\n sortColumns(columns).forEach(column => {\n if (column.isSpanColumn) {\n result.push(...toExcelColumns(column.childrenArray));\n } else {\n const excelColumn = toExcelColumn(column);\n if (column.isColumnGroup) {\n excelColumn.children = [excelColumn].concat(toExcelColumns(column.childrenArray));\n }\n result.push(excelColumn);\n }\n });\n return result;\n};\nconst componentColumns = component => {\n const columns = toExcelColumns(component.columns.toArray());\n return orderBy(columns, [{\n field: 'locked',\n dir: 'desc'\n }]);\n};\n/**\n * Configures the settings for the export of Grid in Excel ([see example]({% slug excelexport_grid %})).\n */\nlet ExcelComponent = /*#__PURE__*/(() => {\n class ExcelComponent {\n constructor(excelService, ctx, zone) {\n this.ctx = ctx;\n this.zone = zone;\n /**\n * Specifies the file name of the exported Excel file.\n * @default \"Export.xlsx\"\n */\n this.fileName = 'Export.xlsx';\n /**\n * @hidden\n */\n this.columns = new QueryList();\n this.saveSubscription = excelService.saveToExcel.subscribe(this.save.bind(this));\n }\n ngOnDestroy() {\n this.saveSubscription.unsubscribe();\n if (this.dataSubscription) {\n this.dataSubscription.unsubscribe();\n }\n }\n save(component) {\n const data = (this.fetchData || fetchComponentData)(component);\n const exportData = result => {\n delete this.dataSubscription;\n this.exportData(component, result);\n };\n if (data instanceof Promise) {\n data.then(exportData);\n } else if (data instanceof Observable) {\n this.dataSubscription = data.pipe(take(1)).subscribe(exportData);\n } else {\n exportData(data);\n }\n }\n exportData(component, result) {\n const options = workbookOptions({\n columns: this.columns.length ? this.columns : componentColumns(component),\n data: result.data,\n group: result.group,\n filterable: this.filterable,\n creator: this.creator,\n date: this.date,\n paddingCellOptions: this.paddingCellOptions,\n headerPaddingCellOptions: this.headerPaddingCellOptions,\n rtl: this.ctx.localization.rtl,\n collapsible: this.collapsible\n });\n const args = new ExcelExportEvent(options);\n component.excelExport.emit(args);\n if (!args.isDefaultPrevented()) {\n this.zone.runOutsideAngular(() => this.saveFile(options));\n }\n }\n saveFile(options) {\n toDataURL(options).then(dataURL => {\n saveAs(dataURL, this.fileName, {\n forceProxy: this.forceProxy,\n proxyURL: this.proxyURL\n });\n });\n }\n }\n ExcelComponent.ɵfac = function ExcelComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExcelComponent)(i0.ɵɵdirectiveInject(ExcelService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n ExcelComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ExcelComponent,\n selectors: [[\"kendo-grid-excel\"]],\n contentQueries: function ExcelComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnBase$1, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columns = _t);\n }\n },\n inputs: {\n fileName: \"fileName\",\n filterable: \"filterable\",\n creator: \"creator\",\n date: \"date\",\n forceProxy: \"forceProxy\",\n proxyURL: \"proxyURL\",\n fetchData: \"fetchData\",\n paddingCellOptions: \"paddingCellOptions\",\n headerPaddingCellOptions: \"headerPaddingCellOptions\",\n collapsible: \"collapsible\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function ExcelComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return ExcelComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `export-to-Excel` command of the Grid. You can apply this\n * directive to any `button` element inside a\n * [ToolbarTemplate]({% slug api_grid_toolbartemplatedirective %}).\n * When the user clicks a button associated with the directive, the\n * [excelExport]({% slug api_grid_gridcomponent %}#toc-excelexport) event\n * fires ([see example]({% slug excelexport_grid %})).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ExcelCommandDirective = /*#__PURE__*/(() => {\n class ExcelCommandDirective extends Button {\n constructor(excelService, element, renderer, ctx, ngZone) {\n super(element, renderer, null, ctx.localization, ngZone);\n this.excelService = excelService;\n this.ngZone = ngZone;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.excelService.exportClick.emit();\n }\n /**\n * @hidden\n */\n get excelClass() {\n return true;\n }\n }\n ExcelCommandDirective.ɵfac = function ExcelCommandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExcelCommandDirective)(i0.ɵɵdirectiveInject(ExcelService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n ExcelCommandDirective.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ExcelCommandDirective,\n selectors: [[\"\", \"kendoGridExcelCommand\", \"\"]],\n hostVars: 2,\n hostBindings: function ExcelCommandDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function ExcelCommandDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grid-excel\", ctx.excelClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c23,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-button-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-button-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-button-text\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [1, \"k-button-icon\", \"k-icon\"], [\"role\", \"presentation\", 1, \"k-image\", 3, \"src\"], [1, \"k-button-icon\", 3, \"ngClass\"]],\n template: function ExcelCommandDirective_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, ExcelCommandDirective_kendo_icon_wrapper_0_Template, 1, 2, \"kendo-icon-wrapper\", 0)(1, ExcelCommandDirective_span_1_Template, 2, 1, \"span\", 1)(2, ExcelCommandDirective_span_2_Template, 1, 1, \"span\", 2);\n i0.ɵɵelementStart(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.iconClass);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgClass],\n encapsulation: 2\n });\n return ExcelCommandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet SuspendService = /*#__PURE__*/(() => {\n class SuspendService {\n constructor() {\n this.scroll = false;\n }\n }\n SuspendService.ɵfac = function SuspendService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SuspendService)();\n };\n SuspendService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SuspendService,\n factory: SuspendService.ɵfac\n });\n return SuspendService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet PDFService = /*#__PURE__*/(() => {\n class PDFService {\n constructor() {\n this.savePDF = new EventEmitter();\n this.drawPDF = new EventEmitter();\n this.exportClick = new EventEmitter();\n this.dataChanged = new EventEmitter();\n }\n save(component) {\n this.emitEvent(this.savePDF, component);\n }\n draw(component, promise) {\n this.emitEvent(this.drawPDF, {\n component,\n promise\n });\n }\n /**\n * @hidden\n */\n emitEvent(emitter, args) {\n if (emitter.observers.length === 0) {\n if (isDevMode()) {\n throw new Error(GridConfigurationErrorMessages.requiredModule('PDF', 'PDFModule', ''));\n }\n } else {\n emitter.emit(args);\n }\n }\n }\n PDFService.ɵfac = function PDFService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFService)();\n };\n PDFService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PDFService,\n factory: PDFService.ɵfac\n });\n return PDFService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the Kendo UI PDFMargin component for Angular.\n * The supported units are:\n * `\"mm\"`\n * `\"cm\"`\n * `\"in\"`\n * `\"pt\"` (default).\n * Numbers are considered to be points (`\"pt\"`).\n */\nlet PDFMarginComponent = /*#__PURE__*/(() => {\n class PDFMarginComponent extends PDFExportMarginComponent {}\n PDFMarginComponent.ɵfac = /* @__PURE__ */(() => {\n let ɵPDFMarginComponent_BaseFactory;\n return function PDFMarginComponent_Factory(__ngFactoryType__) {\n return (ɵPDFMarginComponent_BaseFactory || (ɵPDFMarginComponent_BaseFactory = i0.ɵɵgetInheritedFactory(PDFMarginComponent)))(__ngFactoryType__ || PDFMarginComponent);\n };\n })();\n PDFMarginComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PDFMarginComponent,\n selectors: [[\"kendo-grid-pdf-margin\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function PDFMarginComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return PDFMarginComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the PDF page template of the Grid that helps to customize the PDF pages. To define a page template,\n * nest an `` tag with the `kendoGridPDFTemplate` directive inside `` tag.\n *\n * The template context provides the following fields:\n * - `pageNumber`—Defines PDF page number.\n * - `totalPages`—Defines the total number of PDF pages.\n *\n * @example\n * ```html\n * \n * ...\n * \n * \n * Page {{ pageNumber }} of {{ totalPages }}\n * \n * \n * \n * ```\n */\nlet PDFTemplateDirective = /*#__PURE__*/(() => {\n class PDFTemplateDirective extends PDFExportTemplateDirective {\n constructor(templateRef) {\n super(templateRef);\n }\n }\n PDFTemplateDirective.ɵfac = function PDFTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n PDFTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PDFTemplateDirective,\n selectors: [[\"\", \"kendoGridPDFTemplate\", \"\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return PDFTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst HEADER_CLASS = 'k-grid-header';\n/**\n * @hidden\n */\nconst FOOTER_CLASS = 'k-grid-footer';\nconst GRID_LIST = 'KENDO-GRID-LIST';\nconst TABLE = 'TABLE';\nconst matchesList = matchesNodeName(GRID_LIST);\nconst matchesTable = matchesNodeName(TABLE);\nconst suffix = locked => locked ? 'locked' : 'wrap';\n/**\n * @hidden\n */\nclass GridQuery {\n constructor(element) {\n this.element = element;\n this.list = findElement(element, matchesList);\n }\n content(locked) {\n return findElement(this.list, matchesClasses(`k-grid-content${locked ? '-locked' : ''}`));\n }\n header(locked) {\n this.headerWrap = this.headerWrap || findElement(this.element, matchesClasses(HEADER_CLASS));\n return findElement(this.headerWrap, matchesClasses(`${HEADER_CLASS}-${suffix(locked)}`));\n }\n footer(locked) {\n this.footerWrap = this.footerWrap || findElement(this.element, matchesClasses(FOOTER_CLASS));\n return findElement(this.footerWrap, matchesClasses(`${FOOTER_CLASS}-${suffix(locked)}`));\n }\n table() {\n return findElement(this.element, matchesTable);\n }\n}\nconst FIRST_CLASS = 'k-first';\nconst INPUTS = ['input', 'select', 'textarea', 'option'];\n/** @hidden */\nconst cloneNode = node => {\n const clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n if (INPUTS.indexOf(String(node.nodeName).toLowerCase()) >= 0) {\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n clone.value = node.value;\n clone.checked = node.checked;\n clone.selected = node.selected;\n }\n let child = node.firstChild;\n while (child) {\n clone.appendChild(cloneNode(child));\n child = child.nextSibling;\n }\n return clone;\n};\nconst appendNodes = (element, nodes) => {\n const length = nodes.length;\n for (let idx = 0; idx < length; idx++) {\n element.appendChild(cloneNode(nodes[idx]));\n }\n};\nconst wrapTable = (table, size) => {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapper = document.createElement('div');\n const classes = ['k-grid'];\n if (size && size !== 'none') {\n classes.push(`k-grid-${size === 'medium' ? 'md' : 'sm'}`);\n }\n wrapper.classList.add(...classes);\n wrapper.appendChild(table);\n return wrapper;\n};\nconst createTableElement = sources => {\n const sourceCount = sources.length;\n const element = cloneNode(sources[0]);\n const rowsCount = element.rows.length;\n if (sourceCount > 1) {\n for (let rowIdx = 0; rowIdx < rowsCount; rowIdx++) {\n for (let sourceIdx = 1; sourceIdx < sourceCount; sourceIdx++) {\n appendNodes(element.rows[rowIdx], sources[sourceIdx].rows[rowIdx].cells);\n }\n }\n }\n return element;\n};\nconst setFirstCellClass = (header, headers) => {\n if (headers.length > 1 && header.rows.length > 1) {\n for (let idx = 1; idx < header.rows.length; idx++) {\n const firstCellIndex = headers[0].rows[idx].cells.length;\n const cell = header.rows[idx].cells[firstCellIndex];\n if (String(cell.className).indexOf(FIRST_CLASS) === -1) {\n cell.className += ` ${FIRST_CLASS}`;\n }\n }\n }\n};\nconst createTable = (colGroups, headers, bodies, footers, size) => {\n const table = document.createElement('table');\n const classes = ['k-table'];\n if (size && size !== 'none') {\n classes.push(`k-table-${size === 'medium' ? 'md' : 'sm'}`);\n }\n table.classList.add(...classes);\n const colGroup = colGroups[0].cloneNode(true);\n for (let idx = 1; idx < colGroups.length; idx++) {\n appendNodes(colGroup, colGroups[idx].querySelectorAll('col'));\n }\n const header = createTableElement(headers);\n const body = createTableElement(bodies);\n setFirstCellClass(header, headers);\n table.appendChild(colGroup);\n table.appendChild(header);\n table.appendChild(body);\n if (footers.length) {\n const footer = createTableElement(footers);\n table.appendChild(footer);\n }\n return wrapTable(table, size);\n};\n/**\n * @hidden\n */\nconst exportElement = (wrapper, size) => {\n const query = new GridQuery(wrapper);\n const content = query.content();\n let result;\n if (content) {\n const colGroups = [content.querySelector('colgroup')];\n const headers = [query.header().querySelector('thead')];\n const bodies = [content.querySelector('tbody')];\n const footer = query.footer();\n const footers = [];\n if (footer) {\n footers.push(footer.querySelector('tfoot'));\n }\n const lockedContent = query.content(true);\n if (lockedContent) {\n colGroups.unshift(lockedContent.querySelector('colgroup'));\n headers.unshift(query.header(true).querySelector('thead'));\n bodies.unshift(lockedContent.querySelector('tbody'));\n if (footer) {\n footers.unshift(query.footer(true).querySelector('tfoot'));\n }\n }\n result = createTable(colGroups, headers, bodies, footers, size);\n } else {\n result = wrapTable(query.table().cloneNode(true), size);\n }\n return result;\n};\nconst createElement$1 = (tagName, className) => {\n const element = document.createElement(tagName);\n if (className) {\n element.className = className;\n }\n return element;\n};\nconst createDiv = className => {\n return createElement$1('div', className);\n};\n/**\n * Configures the settings for the export of Grid in PDF ([see example]({% slug pdfexport_grid %})).\n */\nlet PDFComponent = /*#__PURE__*/(() => {\n class PDFComponent extends PDFExportComponent {\n constructor(pdfService, suspendService, ngZone, element, ctx) {\n super(element);\n this.pdfService = pdfService;\n this.suspendService = suspendService;\n this.ngZone = ngZone;\n this.ctx = ctx;\n /**\n * The delay in milliseconds before exporting the Grid content.\n * Useful for scenarios which involve exporting complex components used in the Grid\n * templates such as charts or data-bound components with asynchronous data retrieval ([see example]({% slug pdfexport_grid %}#toc-exporting-all-pages)).\n *\n * @default 0\n */\n this.delay = 0;\n this.columns = new QueryList();\n this.saveSubscription = pdfService.savePDF.subscribe(this.savePDF.bind(this));\n this.drawSubscription = pdfService.drawPDF.subscribe(this.drawPDF.bind(this));\n this.reset = this.reset.bind(this);\n this.draw = this.draw.bind(this);\n }\n ngOnDestroy() {\n this.saveSubscription.unsubscribe();\n this.drawSubscription.unsubscribe();\n this.reset();\n }\n /**\n * @hidden\n */\n saveAs(_) {\n throw new Error(GridConfigurationErrorMessages.unsupportedMethod('saveAs', 'GridComponent.saveAsPDF'));\n }\n /**\n * @hidden\n */\n export() {\n throw new Error(GridConfigurationErrorMessages.unsupportedMethod('export', 'GridComponent.drawPDF'));\n }\n savePDF(component) {\n this.createPDF(component, this.draw);\n }\n drawPDF({\n component,\n promise\n }) {\n this.createPDF(component, () => {\n this.createExportGroup(promise);\n });\n }\n createPDF(component, callback) {\n const pageSize = component.pageSize;\n const total = component.view.total;\n const columns = this.columns.toArray();\n if (columns.length) {\n this.originalColumns = component.columns.toArray();\n }\n this.component = component;\n this.suspendService.scroll = true;\n this.pdfService.exporting = true;\n this.initProgress();\n this.renderAllPages = this.allPages && pageSize < total;\n if (this.renderAllPages) {\n this.skip = component.skip;\n this.pageSize = pageSize;\n this.changePage(0, total, callback, columns);\n } else if (columns.length || component.virtualColumns) {\n this.changeColumns(columns, callback);\n } else {\n callback();\n }\n }\n initProgress() {\n if (!isDocumentAvailable()) {\n return;\n }\n const wrapperElement = this.component.wrapper.nativeElement;\n const progress = this.progress = createDiv('k-loading-pdf-mask');\n const overlay = cloneNode(wrapperElement);\n progress.appendChild(overlay);\n progress.appendChild(createDiv('k-loading-color'));\n progress.appendChild(createElement$1('span', 'k-i-loading k-icon'));\n this.originalHeight = wrapperElement.style.height;\n this.originalOverflow = wrapperElement.style.overflow;\n wrapperElement.style.height = wrapperElement.offsetHeight + 'px';\n wrapperElement.style.overflow = 'hidden';\n wrapperElement.appendChild(progress);\n this.applyScroll(overlay);\n }\n applyScroll(overlay) {\n const query = new GridQuery(this.component.wrapper.nativeElement);\n const content = query.content();\n if (content) {\n const overlayQuery = new GridQuery(overlay);\n const overlayContent = overlayQuery.content();\n overlayContent.scrollTop = content.scrollTop;\n overlayContent.scrollLeft = content.scrollLeft;\n overlayQuery.header().scrollLeft = query.header().scrollLeft;\n const footer = query.footer();\n if (footer) {\n overlayQuery.footer().scrollLeft = footer.scrollLeft;\n }\n const lockedContent = query.content(true);\n if (lockedContent) {\n const overlayLockedContent = overlayQuery.content(true);\n overlayLockedContent.scrollTop = lockedContent.scrollTop;\n overlayLockedContent.scrollLeft = lockedContent.scrollLeft;\n }\n }\n }\n draw() {\n this.createExportElement(element => {\n this.save(element, this.fileName);\n });\n }\n createExportGroup(promise) {\n this.createExportElement(element => {\n this.exportElement(element).then(group => promise.resolve(group));\n });\n }\n createExportElement(callback) {\n this.ngZone.runOutsideAngular(() => {\n const container = this.container = createDiv('k-grid-pdf-export-element');\n const element = exportElement(this.component.wrapper.nativeElement, this.ctx?.grid.size || 'medium');\n container.appendChild(element);\n document.body.appendChild(container);\n callback(element);\n });\n }\n drawOptions() {\n const options = super.drawOptions();\n options._destructive = true;\n return options;\n }\n cleanup() {\n super.cleanup();\n this.pdfService.exporting = false;\n if (this.component) {\n const originalColumns = this.originalColumns;\n delete this.originalColumns;\n if (this.renderAllPages) {\n this.changePage(this.skip, this.pageSize, this.reset, originalColumns);\n } else if (originalColumns || this.component.virtualColumns) {\n this.changeColumns(originalColumns, this.reset);\n } else {\n this.reset();\n }\n } else {\n this.reset();\n }\n this.removeContainer();\n }\n removeContainer() {\n if (this.container) {\n document.body.removeChild(this.container);\n delete this.container;\n }\n }\n changePage(skip, _take, callback, columns) {\n this.ngZone.run(() => {\n this.pdfService.dataChanged.pipe(take(1)).subscribe(() => {\n if (columns && columns.length || this.component.virtualColumns) {\n this.changeColumns(columns, callback);\n } else {\n this.onStable(callback);\n }\n });\n this.component.notifyPageChange('pdf', {\n skip: skip,\n take: _take\n });\n });\n }\n changeColumns(columns, callback) {\n this.ngZone.run(() => {\n this.onStable(callback);\n if (columns && columns.length) {\n this.component.columns.reset(columns);\n }\n });\n }\n reset() {\n this.suspendService.scroll = false;\n this.renderAllPages = false;\n if (!this.component) {\n return;\n }\n const wrapperElement = this.component.wrapper.nativeElement;\n wrapperElement.removeChild(this.progress);\n wrapperElement.style.height = this.originalHeight;\n wrapperElement.style.overflow = this.originalOverflow;\n delete this.progress;\n delete this.component;\n }\n onStable(callback) {\n // not sure if it is an actual scenario. occurs in the tests.\n // onStable is triggered in the same pass without the change detection.\n // thus, the callback is called before the changes are applied without the timeout.\n setTimeout(() => {\n let onStable = this.ngZone.onStable.asObservable().pipe(take(1));\n if (this.delay > 0) {\n onStable = onStable.pipe(delay(this.delay));\n }\n onStable.subscribe(callback);\n }, 0);\n }\n }\n PDFComponent.ɵfac = function PDFComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFComponent)(i0.ɵɵdirectiveInject(PDFService), i0.ɵɵdirectiveInject(SuspendService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ContextService, 8));\n };\n PDFComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PDFComponent,\n selectors: [[\"kendo-grid-pdf\"]],\n contentQueries: function PDFComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, PDFMarginComponent, 5);\n i0.ɵɵcontentQuery(dirIndex, PDFTemplateDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, ColumnBase, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.marginComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageTemplateDirective = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columns = _t);\n }\n },\n inputs: {\n allPages: \"allPages\",\n delay: \"delay\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function PDFComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return PDFComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `export-to-PDF` command of the Grid.\n * You can apply this directive to any `button` element inside a\n * [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When the user clicks a button that is associated with the directive, the\n * [pdfExport]({% slug api_grid_gridcomponent %}#toc-pdfexport) event\n * fires ([see example]({% slug pdfexport_grid %})).\n *\n * @example\n * ```html-no-run\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet PDFCommandDirective = /*#__PURE__*/(() => {\n class PDFCommandDirective extends Button {\n constructor(pdfService, element, renderer, ctx, ngZone) {\n super(element, renderer, null, ctx.localization, ngZone);\n this.pdfService = pdfService;\n this.ngZone = ngZone;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.pdfService.exportClick.emit();\n }\n /**\n * @hidden\n */\n get pdfClass() {\n return true;\n }\n }\n PDFCommandDirective.ɵfac = function PDFCommandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFCommandDirective)(i0.ɵɵdirectiveInject(PDFService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n PDFCommandDirective.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PDFCommandDirective,\n selectors: [[\"\", \"kendoGridPDFCommand\", \"\"]],\n hostVars: 2,\n hostBindings: function PDFCommandDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function PDFCommandDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grid-pdf\", ctx.pdfClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c24,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-button-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-button-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-button-text\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [1, \"k-button-icon\", \"k-icon\"], [\"role\", \"presentation\", 1, \"k-image\", 3, \"src\"], [1, \"k-button-icon\", 3, \"ngClass\"]],\n template: function PDFCommandDirective_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, PDFCommandDirective_kendo_icon_wrapper_0_Template, 1, 2, \"kendo-icon-wrapper\", 0)(1, PDFCommandDirective_span_1_Template, 2, 1, \"span\", 1)(2, PDFCommandDirective_span_2_Template, 1, 1, \"span\", 2);\n i0.ɵɵelementStart(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.iconClass);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgClass],\n encapsulation: 2\n });\n return PDFCommandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst isFilterable = settings => settings !== false;\n/**\n * @hidden\n */\nconst hasFilterMenu = settings => typeof settings === 'string' && settings.indexOf('menu') > -1;\n/**\n * @hidden\n */\nconst hasFilterRow = settings => settings === true || typeof settings === 'string' && settings.indexOf('row') > -1;\n\n/**\n * @hidden\n */\nlet ColumnReorderService = /*#__PURE__*/(() => {\n class ColumnReorderService {\n constructor() {\n this.changes = new EventEmitter();\n }\n reorder(e) {\n this.changes.emit(e);\n }\n }\n ColumnReorderService.ɵfac = function ColumnReorderService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnReorderService)();\n };\n ColumnReorderService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColumnReorderService,\n factory: ColumnReorderService.ɵfac\n });\n return ColumnReorderService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Arguments for the `columnReorder` event.\n */\nclass ColumnReorderEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor({\n column,\n newIndex,\n oldIndex\n }) {\n super();\n this.column = column;\n this.newIndex = newIndex;\n this.oldIndex = oldIndex;\n }\n}\n\n/**\n * @hidden\n */\nconst isLocked = column => column.parent ? isLocked(column.parent) : !!column.locked;\n/**\n * @hidden\n */\nconst resizeArgs = (column, extra) => Object.assign({\n columns: leafColumns([column]),\n locked: isLocked(column)\n}, extra);\n/**\n * @hidden\n */\nlet ColumnResizingService = /*#__PURE__*/(() => {\n class ColumnResizingService {\n constructor() {\n this.changes = new EventEmitter();\n this.tables = [];\n this.batch = null;\n }\n start(column) {\n this.trackColumns(column);\n const columns = (this.column.isColumnGroup ? [column] : []).concat(leafColumns([column]));\n this.changes.emit({\n columns: columns,\n locked: isLocked(this.column),\n type: 'start'\n });\n }\n resizeColumns(deltaPercent) {\n const action = resizeArgs(this.column, {\n deltaPercent,\n type: 'resizeColumn'\n });\n this.changes.emit(action);\n }\n resizeTable(column, delta) {\n const action = resizeArgs(column, {\n delta,\n type: 'resizeTable'\n });\n this.changes.emit(action);\n }\n resizedColumn(state) {\n this.resizedColumns.push(state);\n }\n end() {\n this.changes.emit({\n columns: [],\n resizedColumns: this.resizedColumns,\n type: 'end'\n });\n }\n registerTable(tableMetadata) {\n this.tables.push(tableMetadata);\n const unregisterTable = () => {\n this.tables.splice(this.tables.indexOf(tableMetadata), 1);\n };\n return unregisterTable;\n }\n measureColumns(info) {\n if (this.batch !== null) {\n this.batch.push(...info);\n } else {\n this.autoFitBatch(info, () => this.end());\n }\n }\n autoFit(...columns) {\n const nonLockedColumns = columns.filter(column => !column.isLocked);\n this.autoFitStart(nonLockedColumns);\n this.autoFitBatch(this.batch, () => {\n if (nonLockedColumns.length < columns.length) {\n const lockedColumns = columns.filter(column => column.isLocked);\n this.autoFitStart(lockedColumns);\n this.autoFitBatch(this.batch, () => this.end());\n } else {\n this.end();\n }\n });\n }\n trackColumns(column) {\n this.resizedColumns = [];\n this.column = column;\n }\n autoFitStart(columns) {\n this.batch = [];\n this.resizedColumns = [];\n if (columns.length === 0) {\n return;\n }\n const locked = columns[0].isLocked;\n this.changes.emit({\n type: 'start',\n columns,\n locked\n });\n this.changes.emit({\n type: 'triggerAutoFit',\n columns,\n locked\n });\n }\n autoFitBatch(info, onComplete) {\n const locked = info.length > 0 ? info[0].column.isLocked : false;\n const observables = this.tables.filter(table => table.locked === locked).map(table => table.autoFit(info));\n zip$1(...observables).pipe(take(1)).subscribe(widths => {\n this.changes.emit({\n columns: info.map(i => i.column),\n type: 'autoFitComplete',\n widths,\n locked\n });\n if (onComplete) {\n onComplete();\n }\n });\n this.batch = null;\n }\n }\n ColumnResizingService.ɵfac = function ColumnResizingService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnResizingService)();\n };\n ColumnResizingService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColumnResizingService,\n factory: ColumnResizingService.ɵfac\n });\n return ColumnResizingService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst fromPercentage = (value, percent) => {\n const sign = percent < 0 ? -1 : 1;\n return Math.ceil(Math.abs(percent) / 100 * value) * sign;\n};\n/**\n * @hidden\n */\nconst toPercentage = (value, whole) => value / whole * 100;\n/**\n * @hidden\n */\nconst headerWidth = handle => handle.nativeElement.parentElement.offsetWidth;\n/**\n * @hidden\n */\nconst allLeafColumns = columns => expandColumns(columns).filter(c => !c.isColumnGroup);\n/**\n * @hidden\n */\nconst stopPropagation = ({\n originalEvent: event\n}) => {\n event.stopPropagation();\n event.preventDefault();\n};\n/**\n * @hidden\n */\nconst createMoveStream = (service, draggable) => mouseDown => draggable.kendoDrag.pipe(takeUntil(draggable.kendoRelease.pipe(tap(() => service.end()))), map(({\n pageX\n}) => ({\n originalX: mouseDown.pageX,\n pageX\n})));\n/**\n * @hidden\n */\nconst preventOnDblClick = release => mouseDown => of(mouseDown).pipe(delay(150), takeUntil(release));\n/**\n * @hidden\n */\nconst isInSpanColumn = column => !!(column.parent && column.parent.isSpanColumn);\n/**\n * @hidden\n *\n * Calculates the column index. If the column is stated in `SpanColumn`,\n * the index for all child columns equals the index of the first child.\n */\nconst indexOf = (target, list) => {\n let index = 0;\n let ignore = 0;\n let skip = 0;\n while (index < list.length) {\n const current = list[index];\n const isParentSpanColumn = isInSpanColumn(current);\n if (current === target) {\n break;\n }\n if (ignore-- <= 0 && isParentSpanColumn) {\n ignore = current.parent.childColumns.length - 1;\n skip += ignore;\n }\n index++;\n }\n return index - skip;\n};\n/**\n * @hidden\n */\nlet ColumnHandleDirective = /*#__PURE__*/(() => {\n class ColumnHandleDirective {\n constructor(draggable, element, service, zone, cdr, ctx, columnInfoService) {\n this.draggable = draggable;\n this.element = element;\n this.service = service;\n this.zone = zone;\n this.cdr = cdr;\n this.ctx = ctx;\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.subscriptions = new Subscription();\n this.rtl = false;\n }\n get visible() {\n return this.column.resizable ? 'block' : 'none';\n }\n get leftStyle() {\n return isTruthy(this.rtl) ? 0 : null;\n }\n get rightStyle() {\n return isTruthy(this.rtl) ? null : 0;\n }\n autoFit() {\n const allLeafs = allLeafColumns(this.columns);\n const currentLeafs = leafColumns([this.column]).filter(column => isTruthy(column.resizable));\n const columnInfo = currentLeafs.map(column => {\n const isParentSpan = isInSpanColumn(column);\n const isLastInSpan = isParentSpan ? column.parent.childColumns.last === column : false;\n const index = indexOf(column, allLeafs);\n return {\n column,\n headerIndex: this.columnsForLevel(column.level).indexOf(column),\n index,\n isLastInSpan,\n isParentSpan,\n level: column.level\n };\n });\n currentLeafs.forEach(column => column.width = 0);\n this.service.measureColumns(columnInfo);\n }\n ngOnInit() {\n if (isBlank(this.column.width)) {\n this.column.implicitWidth = headerWidth(this.element);\n }\n const service = this.service.changes.pipe(filter(() => this.column.resizable), filter(e => isPresent(e.columns.find(column => column === this.column))));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'start')).subscribe(this.initState.bind(this)));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'resizeColumn')).subscribe(this.resize.bind(this)));\n this.subscriptions.add(this.service.changes.pipe(filter(e => e.type === 'start'), filter(this.shouldUpdate.bind(this)), take(1) //on first resize only\n ).subscribe(this.initColumnWidth.bind(this)));\n this.subscriptions.add(this.zone.runOutsideAngular(() => this.draggable.kendoPress.pipe(tap(stopPropagation), tap(() => this.service.start(this.column)), switchMap(preventOnDblClick(this.draggable.kendoRelease)), switchMap(createMoveStream(this.service, this.draggable))).subscribe(({\n pageX,\n originalX\n }) => {\n const delta = pageX - originalX;\n const percent = toPercentage(delta, this.column.resizeStartWidth || this.column.width);\n this.service.resizeColumns(percent);\n })));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'autoFitComplete')).subscribe(this.sizeToFit.bind(this)));\n this.subscriptions.add(service.pipe(filter(e => e.type === 'triggerAutoFit')).subscribe(this.autoFit.bind(this)));\n this.subscriptions.add(this.ctx.localization.changes.subscribe(({\n rtl\n }) => this.rtl = rtl));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n shouldUpdate() {\n return !allLeafColumns(this.columns).map(column => column.width).some(isBlank);\n }\n initColumnWidth() {\n this.column.width = headerWidth(this.element);\n }\n initState() {\n this.column.resizeStartWidth = headerWidth(this.element);\n this.service.resizedColumn({\n column: this.column,\n oldWidth: this.column.resizeStartWidth\n });\n }\n resize({\n deltaPercent\n }) {\n let delta = fromPercentage(this.column.resizeStartWidth, deltaPercent);\n if (isTruthy(this.rtl)) {\n delta *= -1;\n }\n let newWidth = Math.max(this.column.resizeStartWidth + delta, this.column.minResizableWidth);\n if (isPresent(this.column.maxResizableWidth)) {\n newWidth = Math.min(newWidth, this.column.maxResizableWidth);\n }\n const tableDelta = this.getTableDelta(newWidth, delta);\n this.updateWidth(this.column, newWidth);\n this.service.resizeTable(this.column, tableDelta);\n }\n sizeToFit({\n columns,\n widths\n }) {\n const index = columns.indexOf(this.column);\n const width = Math.max(...widths.map(w => w[index])) + 1; //add 1px for IE\n const tableDelta = width - this.column.resizeStartWidth;\n this.updateWidth(this.column, width);\n this.service.resizeTable(this.column, tableDelta);\n }\n updateWidth(column, width) {\n column.width = width;\n this.columnInfoService.hiddenColumns.forEach(col => {\n if (isBlank(col.width) && isPresent(col.implicitWidth)) {\n // Resize hidden columns to their implicit width so they\n // can be displayed with the same width if made visible.\n col.width = col.implicitWidth;\n }\n });\n this.cdr.markForCheck(); //force CD cycle\n }\n columnsForLevel(level) {\n return columnsToRender(this.columns ? this.columns.filter(column => column.level === level) : []);\n }\n getTableDelta(newWidth, delta) {\n const minWidth = this.column.minResizableWidth;\n const maxWidth = this.column.maxResizableWidth;\n const startWidth = this.column.resizeStartWidth;\n const isAboveMin = newWidth > minWidth;\n const isBelowMax = newWidth < maxWidth;\n const isInBoundaries = isPresent(maxWidth) ? isAboveMin && isBelowMax : isAboveMin;\n if (isInBoundaries) {\n return delta;\n } else if (newWidth <= minWidth) {\n return minWidth - startWidth;\n } else {\n return startWidth - maxWidth;\n }\n }\n }\n ColumnHandleDirective.ɵfac = function ColumnHandleDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnHandleDirective)(i0.ɵɵdirectiveInject(i9.DraggableDirective, 1), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ColumnResizingService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(ColumnInfoService));\n };\n ColumnHandleDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColumnHandleDirective,\n selectors: [[\"\", \"kendoGridColumnHandle\", \"\"]],\n hostVars: 6,\n hostBindings: function ColumnHandleDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"dblclick\", function ColumnHandleDirective_dblclick_HostBindingHandler() {\n return ctx.autoFit();\n });\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", ctx.visible)(\"left\", ctx.leftStyle)(\"right\", ctx.rightStyle);\n }\n },\n inputs: {\n columns: \"columns\",\n column: \"column\"\n },\n standalone: true\n });\n return ColumnHandleDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalDataChangesService = /*#__PURE__*/(() => {\n class LocalDataChangesService {\n constructor() {\n this.changes = new EventEmitter();\n }\n }\n LocalDataChangesService.ɵfac = function LocalDataChangesService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalDataChangesService)();\n };\n LocalDataChangesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LocalDataChangesService,\n factory: LocalDataChangesService.ɵfac\n });\n return LocalDataChangesService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet CellSelectionAggregateService = /*#__PURE__*/(() => {\n class CellSelectionAggregateService {\n constructor(ctx, dataChanges, columnInfoService) {\n this.ctx = ctx;\n this.dataChanges = dataChanges;\n this.columnInfoService = columnInfoService;\n this.selectedItems = [];\n this.groupedAggregates = {\n dates: [],\n numbers: [],\n booleans: []\n };\n this.aggregates = {\n sum: null,\n average: null,\n min: null,\n max: null,\n count: null,\n isTrue: null,\n isFalse: null,\n earliest: null,\n latest: null\n };\n }\n isAggregateIncluded(aggregate) {\n const {\n cellAggregates\n } = this.ctx.grid.selectable;\n if (typeof cellAggregates !== 'boolean') {\n return cellAggregates?.includes(aggregate);\n }\n return true;\n }\n init() {\n if (this.ctx.grid.selectable.cellAggregates) {\n this.data = this.dataChanges.data ? this.dataChanges.data : this.ctx.grid.data;\n if (this.isAggregateIncluded('count')) {\n this.aggregates['count'] = 0;\n }\n const selectionDirective = this.ctx.grid.selectionDirective;\n if (selectionDirective && !this.isRowSelection) {\n this.selectedItems = selectionDirective.selectedKeys;\n }\n }\n }\n onSelectionChange(selectionArgs) {\n this.handleSelectedItems(selectionArgs);\n this.nullifyAggregates();\n this.handleAggregateChanges();\n return this.aggregates;\n }\n get isRowSelection() {\n return typeof this.ctx.grid.selectable === 'boolean' || !this.ctx.grid.selectable.cell;\n }\n handleAggregateChanges() {\n const lockedColumns = this.columnInfoService.lockedLeafColumns.toArray();\n const nonLockedColumns = this.columnInfoService.nonLockedLeafColumns.toArray();\n const selectedItemsLength = this.selectedItems.length;\n const columns = [...lockedColumns, ...nonLockedColumns];\n const fields = columns.map(col => col.field);\n if (this.isAggregateIncluded('count')) {\n this.aggregates['count'] = this.isRowSelection ? selectedItemsLength * columns.length : selectedItemsLength;\n }\n this.selectedItems.forEach(item => {\n if (this.isRowSelection) {\n fields.forEach(field => {\n const cellValue = item.dataItem;\n if (cellValue && cellValue.hasOwnProperty(field)) {\n const cellValue = item.dataItem[field];\n this.groupAggregates(cellValue);\n }\n });\n } else if (!this.isRowSelection) {\n const itemKey = this.data[item.itemKey];\n const field = fields[item.columnKey];\n if (itemKey && itemKey.hasOwnProperty(field)) {\n const cellValue = itemKey[fields[item.columnKey]];\n this.groupAggregates(cellValue);\n }\n }\n });\n this.calculateAggregates();\n }\n groupAggregates(aggregate) {\n if (typeof aggregate === 'number') {\n this.groupedAggregates.numbers.push(aggregate);\n } else if (typeof aggregate === 'boolean') {\n this.groupedAggregates.booleans.push(aggregate);\n } else if (aggregate instanceof Date) {\n this.groupedAggregates.dates.push(aggregate);\n }\n }\n calculateAggregates() {\n if (this.groupedAggregates.numbers.length > 0) {\n if (this.isAggregateIncluded('min')) {\n this.aggregates['min'] = Math.min(...this.groupedAggregates.numbers);\n }\n if (this.isAggregateIncluded('max')) {\n this.aggregates['max'] = Math.max(...this.groupedAggregates.numbers);\n }\n if (this.isAggregateIncluded('sum')) {\n this.aggregates['sum'] = this.groupedAggregates.numbers.reduce((acc, curr) => acc += curr, 0);\n }\n if (this.isAggregateIncluded('average')) {\n this.aggregates['average'] = this.aggregates['sum'] / this.groupedAggregates.numbers.length;\n }\n }\n if (this.groupedAggregates.booleans.length > 0) {\n if (this.isAggregateIncluded('isTrue')) {\n const isTrueCount = this.groupedAggregates.booleans.filter(bool => bool).length;\n this.aggregates['isTrue'] = isTrueCount > 0 ? isTrueCount : null;\n }\n if (this.isAggregateIncluded('isFalse')) {\n const isFalseCount = this.groupedAggregates.booleans.length - this.aggregates['isTrue'];\n this.aggregates['isFalse'] = isFalseCount > 0 ? isFalseCount : null;\n }\n }\n if (this.groupedAggregates.dates.length > 0) {\n if (this.isAggregateIncluded('earliest')) {\n this.aggregates['earliest'] = new Date(Math.min(...this.groupedAggregates.dates));\n }\n if (this.isAggregateIncluded('latest')) {\n this.aggregates['latest'] = new Date(Math.max(...this.groupedAggregates.dates));\n }\n }\n }\n handleSelectedItems(selectionArgs) {\n const rowOrCellSelect = `${this.isRowSelection ? 'selectedRows' : 'selectedCells'}`;\n const rowOrCellDeselect = `${this.isRowSelection ? 'deselectedRows' : 'deselectedCells'}`;\n const selectedItems = selectionArgs[rowOrCellSelect];\n const deselectedItems = selectionArgs[rowOrCellDeselect];\n if (!this.isRowSelection) {\n // Needed when we have column groups with cell selection, the deselected items are duplicated\n deselectedItems.forEach((item, index) => {\n if (index + 1 < deselectedItems.length) {\n if (item.itemKey === deselectedItems[index + 1].itemKey && item.columnKey === deselectedItems[index + 1].columnKey) {\n deselectedItems.splice(index, 1);\n }\n }\n });\n }\n if (selectedItems.length > 0) {\n selectedItems.forEach(item => {\n this.selectedItems = [...this.selectedItems, item];\n });\n }\n if (deselectedItems.length > 0) {\n if (this.isRowSelection) {\n deselectedItems.forEach(row => {\n this.selectedItems = this.selectedItems.filter(elem => elem.dataItem !== row.dataItem);\n });\n } else {\n deselectedItems.forEach(cell => {\n const index = this.selectedItems.findIndex(elem => elem.itemKey === cell.itemKey && elem.columnKey === cell.columnKey);\n this.selectedItems.splice(index, 1);\n });\n }\n }\n }\n nullifyAggregates() {\n this.groupedAggregates = {\n dates: [],\n numbers: [],\n booleans: []\n };\n this.aggregates['count'] = null;\n this.aggregates['sum'] = this.aggregates['average'] = null;\n this.aggregates['max'] = this.aggregates['min'] = null;\n this.aggregates['isFalse'] = this.aggregates['isTrue'] = null;\n this.aggregates['earliest'] = this.aggregates['latest'] = null;\n }\n }\n CellSelectionAggregateService.ɵfac = function CellSelectionAggregateService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CellSelectionAggregateService)(i0.ɵɵinject(ContextService), i0.ɵɵinject(LocalDataChangesService), i0.ɵɵinject(ColumnInfoService));\n };\n CellSelectionAggregateService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CellSelectionAggregateService,\n factory: CellSelectionAggregateService.ɵfac\n });\n return CellSelectionAggregateService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet SelectionService = /*#__PURE__*/(() => {\n class SelectionService {\n constructor(domEvents, aggregateService, localDataChangesService, navigationService, ctxService) {\n this.domEvents = domEvents;\n this.aggregateService = aggregateService;\n this.localDataChangesService = localDataChangesService;\n this.navigationService = navigationService;\n this.ctxService = ctxService;\n this.changes = new EventEmitter();\n this.currentSelection = [];\n this.selectAllChecked = false;\n this.active = false;\n this.dragging = false;\n this.lastSelectionData = {};\n this.addSubscriptions();\n }\n get enableMarquee() {\n const checkboxOnly = this.settings && typeof this.settings === 'object' && this.settings.checkboxOnly;\n if (!this.settings || checkboxOnly) {\n return false;\n }\n const selectableSettings = this.settings.selectable;\n const dragAndMultiple = typeof selectableSettings === 'object' && isPresent(selectableSettings) && selectableSettings.mode === 'multiple' && selectableSettings.enabled !== false && !selectableSettings.checkboxOnly && selectableSettings.drag;\n return this.active && dragAndMultiple;\n }\n init(settings) {\n this.settings = settings;\n if (!isPresent(this.lastSelectionStartIndex)) {\n this.lastSelectionStartIndex = this.ctxService?.grid.selectionDirective?.rangeSelectionStartRow?.index || 0;\n this.lastSelectionData = this.ctxService?.grid.selectionDirective?.rangeSelectionStartRow?.dataItem || {};\n }\n this.currentSelection = [];\n if (settings.selectable && settings.selectable.enabled !== false) {\n const iterator = this.getIterator();\n this._selectAllState = true;\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\") {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n if (settings.rowSelected(rowArgs)) {\n this.currentSelection[item.value.index] = rowArgs;\n } else {\n this._selectAllState = undefined;\n }\n }\n item = iterator.next();\n }\n if (this.currentSelection.length === 0) {\n this._selectAllState = false;\n }\n }\n }\n isSelected(index) {\n if (this.settings && this.active) {\n return this.options.enabled && isPresent(this.currentSelection[index]);\n }\n }\n handleClick(item, event) {\n if (this.dragging) {\n this.dragging = false;\n return;\n }\n let ev;\n const ctrlKey = event.ctrlKey || event.metaKey;\n if (this.options.mode === \"single\" && ctrlKey && this.isSelected(item.index)) {\n ev = this.toggle(item);\n } else if (this.options.mode === \"multiple\") {\n if (ctrlKey && !event.shiftKey) {\n ev = this.toggle(item);\n } else if (event.shiftKey) {\n ev = this.addAllTo(item, ctrlKey);\n }\n }\n if (!isPresent(ev)) {\n ev = this.select(item);\n this.currentSelection[item.index] = {\n dataItem: item.data,\n index: item.index\n };\n }\n if (!ev.selectedRows.length && !ev.deselectedRows.length) {\n return;\n }\n ev.ctrlKey = ctrlKey;\n ev.shiftKey = event.shiftKey;\n if (this.options.cellAggregates) {\n ev.cellAggregates = this.aggregateService.onSelectionChange(ev);\n }\n if (ev.shiftKey) {\n ev.rangeStartRow = {\n dataItem: this.lastSelectionData,\n index: this.lastSelectionStartIndex\n };\n ev.rangeEndRow = {\n dataItem: item.data,\n index: item.index\n };\n }\n this.changes.emit(ev);\n }\n toggle(item) {\n const selectedRows = [];\n const deselectedRows = [];\n this.lastSelectionStartIndex = item.index;\n this.lastSelectionData = item.data;\n const rowArgs = {\n dataItem: item.data,\n index: item.index\n };\n if (this.isSelected(item.index)) {\n deselectedRows.push(rowArgs);\n } else {\n selectedRows.push(rowArgs);\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n toggleByIndex(index) {\n const iterator = this.getIterator();\n if (this.selectAllChecked && this.isSelected(index)) {\n this.selectAllChecked = false;\n }\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.index === index) {\n const itemToToggle = {\n data: item.value.data,\n index: item.value.index\n };\n if (this.isSelected(index) || this.options.mode === \"multiple\") {\n return this.toggle(itemToToggle);\n } else {\n return this.select(itemToToggle);\n }\n }\n item = iterator.next();\n }\n }\n select(item) {\n const deselectedRows = [];\n const selectedRows = [];\n this.lastSelectionStartIndex = item.index;\n this.lastSelectionData = item.data;\n if (!this.isSelected(item.index)) {\n selectedRows.push({\n dataItem: item.data,\n index: item.index\n });\n }\n this.currentSelection.forEach(row => {\n if (row.index !== item.index) {\n deselectedRows.push(row);\n }\n });\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n //Used to manually deselect removed items\n deselect(removedItem) {\n const iterator = this.getIterator();\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.data === removedItem) {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n if (this.isSelected(rowArgs.index)) {\n const ev = {\n ctrlKey: false,\n deselectedRows: [rowArgs],\n selectedRows: []\n };\n this.changes.emit(ev);\n }\n }\n item = iterator.next();\n }\n }\n addAllTo(item, ctrlKey) {\n const selectedRows = [];\n const deselectedRows = [];\n const start = Math.min(this.lastSelectionStartIndex, item.index);\n const end = Math.max(this.lastSelectionStartIndex, item.index);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = {\n dataItem: next.value.data,\n index: idx\n };\n if ((idx < start || idx > end) && this.isSelected(idx) && !ctrlKey) {\n deselectedRows.push(rowArgs);\n }\n if (idx >= start && idx <= end && !this.isSelected(idx)) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows\n };\n }\n updateAll(selectAllChecked) {\n this.selectAllChecked = selectAllChecked;\n const selectedRows = [];\n const deselectedRows = [];\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = {\n dataItem: next.value.data,\n index: idx\n };\n if (this.isSelected(idx) && !selectAllChecked) {\n deselectedRows.push(rowArgs);\n }\n if (!this.isSelected(idx) && selectAllChecked) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n if (!selectedRows.length && !deselectedRows.length) {\n return;\n }\n const ev = {\n ctrlKey: true,\n deselectedRows: deselectedRows,\n selectedRows: selectedRows,\n shiftKey: true\n };\n if (this.options.cellAggregates) {\n ev.cellAggregates = this.aggregateService.onSelectionChange(ev);\n }\n this.changes.emit(ev);\n }\n selectRange(startIndex, endIndex) {\n const selectedRows = [];\n const deselectedRows = [];\n const start = Math.min(startIndex, endIndex);\n const end = Math.max(startIndex, endIndex);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const rowArgs = {\n dataItem: next.value.data,\n index: idx\n };\n if ((idx < start || idx > end) && this.isSelected(idx)) {\n deselectedRows.push(rowArgs);\n }\n if (idx >= start && idx <= end && !this.isSelected(idx)) {\n selectedRows.push(rowArgs);\n }\n }\n next = iterator.next();\n }\n let cellAggregates;\n if (this.options.cellAggregates) {\n cellAggregates = this.aggregateService.onSelectionChange({\n selectedRows,\n deselectedRows\n });\n }\n return {\n deselectedRows: deselectedRows,\n selectedRows: selectedRows,\n cellAggregates\n };\n }\n get selectAllState() {\n return this._selectAllState;\n }\n get selected() {\n return this.currentSelection.map(item => {\n return item.index;\n }).filter(n => typeof n === \"number\");\n }\n get options() {\n const defaultOptions = {\n cellAggregates: false,\n checkboxOnly: false,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.settings)) {\n return defaultOptions;\n }\n if (typeof this.settings.selectable === 'boolean') {\n return {\n cellAggregates: false,\n checkboxOnly: false,\n enabled: this.settings.selectable,\n mode: \"multiple\"\n };\n } else {\n return Object.assign(defaultOptions, this.settings.selectable);\n }\n }\n ngOnDestroy() {\n this.removeSubscriptions();\n }\n targetArgs() {\n return {\n index: this.mouseDownEventArgs.rowIndex,\n dataItem: this.mouseDownEventArgs.dataItem\n };\n }\n addSubscriptions() {\n if (!this.cellClickSubscription) {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe(args => {\n if (this.options.enabled && !this.options.checkboxOnly && args.type !== 'contextmenu') {\n if (this.active) {\n this.handleClick({\n index: args.rowIndex,\n data: args.dataItem\n }, args.originalEvent);\n }\n }\n });\n }\n if (!this.mousedownSubscription) {\n this.mousedownSubscription = this.domEvents.cellMousedown.subscribe(args => {\n this.mouseDownEventArgs = args;\n if (this.options.enabled && (!this.options.mode || this.options.mode === \"multiple\") && !this.options.checkboxOnly && args.originalEvent.shiftKey) {\n if (this.active) {\n args.originalEvent.preventDefault();\n this.navigationService.focusCellByElement(args.originalEvent.target);\n }\n }\n });\n }\n if (this.localDataChangesService && !this.dataChangedSubscription) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe(args => {\n if (this.active) {\n if (isPresent(args.action) && args.action === 'remove') {\n this.deselect(args.item);\n }\n }\n });\n }\n }\n getIterator() {\n const accessor = this.settings.view.accessor();\n if (!accessor) {\n return;\n }\n return accessor[iterator]();\n }\n removeSubscriptions() {\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n this.cellClickSubscription = null;\n }\n if (this.mousedownSubscription) {\n this.mousedownSubscription.unsubscribe();\n this.mousedownSubscription = null;\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n this.dataChangedSubscription = null;\n }\n }\n }\n SelectionService.ɵfac = function SelectionService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectionService)(i0.ɵɵinject(DomEventsService), i0.ɵɵinject(CellSelectionAggregateService), i0.ɵɵinject(LocalDataChangesService), i0.ɵɵinject(NavigationService), i0.ɵɵinject(ContextService));\n };\n SelectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SelectionService,\n factory: SelectionService.ɵfac\n });\n return SelectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the select-all checkbox feature of the Grid ([see example](slug:grid_selection_persistence#toc-selecting-all-items)).\n *\n * @example\n * ```html\n * \n * ```\n */\nlet SelectAllCheckboxDirective = /*#__PURE__*/(() => {\n class SelectAllCheckboxDirective {\n constructor(selectionService, el, renderer, ngZone) {\n this.selectionService = selectionService;\n this.el = el;\n this.renderer = renderer;\n this.ngZone = ngZone;\n /**\n * Fires when the user clicks the `kendoGridSelectAllCheckbox` select-all checkbox\n * ([see example](slug:grid_row_selection#toc-select-all-checkbox)).\n */\n this.selectAllChange = new EventEmitter();\n this.type = 'checkbox';\n this.stateSet = false;\n this.ngZone.runOutsideAngular(() => {\n this.destroyClick = this.renderer.listen(this.el.nativeElement, 'click', this.onClick.bind(this));\n });\n }\n ngAfterContentChecked() {\n this.setState();\n }\n ngOnChanges() {\n this.stateSet = true;\n }\n ngOnDestroy() {\n if (this.destroyClick) {\n this.destroyClick();\n }\n }\n /**\n * @hidden\n */\n onClick() {\n // yields consistent cross-browser behavior when clicking an indeterminate checkbox\n const undefinedCheckedStateInIE = detectIE() && this.selectionService.selectAllState === undefined;\n const isChecked = undefinedCheckedStateInIE ? true : this.el.nativeElement.checked;\n const options = this.selectionService.options;\n const enabledAndMultiple = options.enabled && options.mode === 'multiple';\n const shouldEmitSelectAll = hasObservers(this.selectAllChange);\n if (enabledAndMultiple || shouldEmitSelectAll) {\n this.ngZone.run(() => {\n if (enabledAndMultiple) {\n this.selectionService.updateAll(isChecked);\n }\n if (shouldEmitSelectAll) {\n this.selectAllChange.emit(isChecked ? 'checked' : 'unchecked');\n }\n });\n }\n }\n /**\n * @hidden\n */\n setState() {\n const state = this.stateSet ? this.stateToBool() : this.selectionService.selectAllState;\n const elem = this.el.nativeElement;\n this.renderer.setProperty(elem, 'indeterminate', !isPresent(state));\n this.renderer.setProperty(elem, 'checked', isPresent(state) ? state : false);\n }\n /**\n * @hidden\n */\n stateToBool() {\n switch (this.state) {\n case 'checked':\n return true;\n case 'unchecked':\n return false;\n default:\n return undefined;\n }\n }\n }\n SelectAllCheckboxDirective.ɵfac = function SelectAllCheckboxDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectAllCheckboxDirective)(i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n SelectAllCheckboxDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectAllCheckboxDirective,\n selectors: [[\"\", \"kendoGridSelectAllCheckbox\", \"\"]],\n hostVars: 1,\n hostBindings: function SelectAllCheckboxDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"type\", ctx.type);\n }\n },\n inputs: {\n state: \"state\"\n },\n outputs: {\n selectAllChange: \"selectAllChange\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return SelectAllCheckboxDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst mergeObjects = (...args) => Object.assign.apply(null, [{}].concat(args));\nconst directions = initialDirection => initialDirection === \"asc\" ? [\"asc\", \"desc\"] : [\"desc\", \"asc\"];\n/**\n * @hidden\n */\nconst isRootLevel = ({\n parent\n}) => !isTruthy(parent);\nconst ofColumnType = ({\n draggable\n}) => ['column', 'columnGroup'].indexOf(draggable.context.type) >= 0;\nconst notSameElement = ({\n draggable,\n target\n}) => draggable.element.nativeElement !== target.element.nativeElement;\nconst inSameParent = (x, y) => x.parent === y.parent || isInSpanColumn$1(y) && inSameParent(x, y.parent);\nconst sameParent = ({\n draggable,\n target\n}) => inSameParent(draggable.context.column, target.context.column);\nconst lastNonLocked = ({\n draggable\n}) => !isTruthy(draggable.context.column.locked) && isRootLevel(draggable.context.column) && draggable.context.lastColumn;\nconst notInSpanColumn = ({\n draggable\n}) => !isInSpanColumn$1(draggable.context.column);\nconst reorderable = ({\n draggable\n}) => draggable.context.column.reorderable;\nconst lockable = ({\n draggable,\n target\n}) => draggable.context.column.lockable !== false || draggable.context.column.isLocked === target.context.column.isLocked;\nconst rules = and(ofColumnType, reorderable, notInSpanColumn, notSameElement, sameParent, not(lastNonLocked), lockable);\nconst modifierKeys = ['alt', 'ctrl', 'shift', 'meta'];\n/**\n * @hidden\n */\nlet HeaderComponent = /*#__PURE__*/(() => {\n class HeaderComponent {\n constructor(popupService, hint, cue, reorderService, idService, sortService, columnInfoService, cd, contextService, navigationService) {\n this.popupService = popupService;\n this.hint = hint;\n this.cue = cue;\n this.reorderService = reorderService;\n this.idService = idService;\n this.sortService = sortService;\n this.columnInfoService = columnInfoService;\n this.cd = cd;\n this.contextService = contextService;\n this.navigationService = navigationService;\n this.columns = [];\n this.groups = [];\n this.sort = new Array();\n this.sortable = false;\n this.groupable = false;\n this.lockedColumnsCount = 0;\n this.resizable = false;\n this.reorderable = false;\n this.columnMenu = false;\n this.totalColumnsCount = 0;\n this.size = 'medium';\n this.sortedFields = {};\n this.hostClass = true;\n this.dropTargets = new QueryList();\n this.sortAscSmallIcon = sortAscSmallIcon;\n this.sortDescSmallIcon = sortDescSmallIcon;\n this.subscription = new Subscription();\n }\n get headerClass() {\n return !this.scrollable;\n }\n get sortableLabel() {\n return this.contextService.localization.get('sortable');\n }\n get columnMenuSettings() {\n return this.columnMenu;\n }\n // Number of unlocked columns in the next table, if any\n get unlockedColumnsCount() {\n return this.totalColumnsCount - this.lockedColumnsCount - this.columns.length;\n }\n sortColumn(descriptor) {\n this.sortService.sort(descriptor);\n }\n getColumnComponent(column) {\n return column;\n }\n onSortClick(column, event, link) {\n const target = event.target;\n if (column.headerTemplateRef && target !== link) {\n const hasFocusableParent = Boolean(closestInScope(target, isFocusable, link));\n if (hasFocusableParent) {\n // Do not sort when clicking focusable template elements.\n return;\n }\n }\n const modifier = this.matchModifier(event);\n const toggledColumn = this.toggleSort(column, modifier);\n this.sortColumn(toggledColumn);\n }\n onHeaderKeydown(column, args) {\n if (args.keyCode === Keys.ArrowDown && args.altKey && this.showFilterMenu) {\n args.preventDefault();\n args.stopImmediatePropagation();\n const filterMenu = this.filterMenus.find(fm => fm.column === column);\n filterMenu.toggle(filterMenu.anchor.nativeElement, filterMenu.template);\n return;\n }\n if (args.keyCode === Keys.ArrowDown && args.altKey && this.showColumnMenu(column)) {\n args.preventDefault();\n args.stopImmediatePropagation();\n const columnMenu = this.columnMenus.find(cm => cm.column === column);\n columnMenu.toggle(null, columnMenu.anchor.nativeElement, columnMenu.template);\n return;\n }\n const isCtrlOrMeta = args.ctrlKey || args.metaKey;\n const isGroupingKeyShortcut = (args.keyCode === Keys.Enter || args.keyCode === Keys.Space) && isCtrlOrMeta;\n if (isGroupingKeyShortcut && this.isGroupable(column)) {\n args.preventDefault();\n args.stopImmediatePropagation();\n const isGroupedByField = this.groups.some(gr => gr.field === column.field);\n if (isGroupedByField) {\n this.groups = this.groups.filter(gr => gr.field !== column.field);\n } else {\n this.groups.push({\n field: column.field\n });\n }\n this.contextService.grid.groupChange.emit(this.groups);\n return;\n }\n const isLeftOrRightArrow = args.keyCode === Keys.ArrowLeft || args.keyCode === Keys.ArrowRight;\n const isReorderingKeyShortcut = isLeftOrRightArrow && isCtrlOrMeta;\n if (isReorderingKeyShortcut && this.isReorderable(column)) {\n args.preventDefault();\n const columnsCount = this.columnInfoService.leafNamedColumns.length;\n const reorderDirection = args.keyCode === Keys.ArrowLeft ? -1 : 1;\n const rtlMultiplier = this.contextService.localization.rtl ? -1 : 1;\n const reorderDirectionOffset = reorderDirection * rtlMultiplier;\n const newIndex = column.leafIndex + reorderDirectionOffset;\n const normalizedNewIndex = Math.min(Math.max(0, newIndex), columnsCount - 1);\n const gridInstance = this.contextService.grid;\n gridInstance.reorderColumn(column, normalizedNewIndex, {\n before: reorderDirectionOffset < 0\n });\n gridInstance.columnReorder.emit(new ColumnReorderEvent({\n column,\n newIndex: normalizedNewIndex,\n oldIndex: column.leafIndex\n }));\n return;\n }\n if (!this.sortable || args.defaultPrevented || column.sortable === false) {\n return;\n }\n if (args.keyCode === Keys.Enter && isPresent(column.field)) {\n const modifier = this.matchModifier(args);\n this.sortService.sort(this.toggleSort(column, modifier));\n }\n }\n showSortNumbering(column) {\n const {\n showIndexes\n } = normalize$1(this.sortable);\n return showIndexes && this.sort && this.sort.filter(({\n dir\n }) => isPresent(dir)).length > 1 && this.sortOrder(column.field) > 0;\n }\n sortOrder(field) {\n return this.sort.filter(({\n dir\n }) => isPresent(dir)).findIndex(x => x.field === field) + 1;\n }\n sortState(column) {\n if (!this.isSortable(column)) {\n return;\n }\n const state = this.sortDescriptor(column.field);\n if (state.dir === 'asc') {\n return 'ascending';\n }\n if (state.dir === 'desc') {\n return 'descending';\n }\n }\n get isNavigable() {\n return this.navigationService.tableEnabled;\n }\n /**\n *\n * @param column\n * @param modifier - Indicates whether the client-defined `multiSortKey` modifier is met. Defaults to `true`.\n * @returns - SortDescriptor[]\n */\n toggleSort(column, modifier = true) {\n const {\n allowUnsort,\n mode,\n initialDirection\n } = normalize$1(this.sortable, column.sortable);\n const descriptor = this.toggleDirection(column.field, allowUnsort, initialDirection);\n if (mode === 'single' || !modifier) {\n return [descriptor];\n }\n return [...this.sort.filter(desc => desc.field !== column.field), descriptor];\n }\n /**\n *\n * Determines whether the modifier key (if any) passed\n * with a click/keyboard event matches the user-defined multiSortKey.\n */\n matchModifier(event) {\n const {\n multiSortKey\n } = normalize$1(this.sortable);\n if (multiSortKey === 'none') {\n return modifierKeys.every(key => !event[`${key}Key`]);\n }\n return multiSortKey === 'ctrl' ? event.ctrlKey || event.metaKey : event[`${multiSortKey}Key`];\n }\n ngAfterViewInit() {\n this.subscription.add(observe(this.dropTargets).subscribe(this.attachTargets.bind(this)));\n }\n ngDoCheck() {\n this._leafColumns = columnsToRender(this.columns || []).filter(x => !isColumnGroupComponent(x));\n }\n ngOnChanges(changes) {\n const sortChange = changes.sort;\n if (sortChange && !sortChange.isFirstChange()) {\n sortChange.currentValue.forEach(change => {\n this.sortedFields[change.field] = true;\n });\n }\n }\n ngOnInit() {\n this.subscription.add(this.contextService.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngOnDestroy() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n if (this.popupService) {\n this.popupService.destroy();\n }\n this.subscription.unsubscribe();\n }\n selectAllCheckboxId() {\n return this.idService.selectAllCheckboxId();\n }\n get selectAllCheckboxLabel() {\n return this.contextService.localization.get('selectAllCheckboxLabel');\n }\n isFirstOnRow(column, index) {\n const isTailing = c => c && (this.columnsForLevel(c.level).indexOf(c) > 0 || isTailing(c.parent));\n return index === 0 && !this.groups.length && !this.detailTemplate && isTailing(column.parent);\n }\n logicalColumnIndex(column) {\n const index = column.leafIndex;\n if (isPresent(index)) {\n return index + (isPresent(this.detailTemplate) ? 1 : 0);\n }\n return -1;\n }\n get showFilterMenu() {\n return !this.columnMenu && hasFilterMenu(this.filterable);\n }\n get showFilterRow() {\n return hasFilterRow(this.filterable);\n }\n showColumnMenu(column) {\n return this.columnMenu && column.columnMenu && (this.columnMenuTemplate || column.columnMenuTemplates.length || hasItems(this.columnMenu, column));\n }\n isFilterable(column) {\n return !isNullOrEmptyString(column.field) && column.filterable === true;\n }\n canDrop(draggable, target) {\n return this.reorderable && rules({\n draggable,\n target\n });\n }\n shouldActivate(column) {\n const canReorder = this.isReorderable(column);\n if (!canReorder && !isColumnComponent(column)) {\n return false;\n }\n const groupable = this.isGroupable(column);\n return groupable || canReorder;\n }\n isSortable(column) {\n return !isNullOrEmptyString(column.field) && isTruthy(this.sortable) && isTruthy(column.sortable);\n }\n isCheckboxColumn(column) {\n return isCheckboxColumn(column) && !column.templateRef;\n }\n trackByIndex(index, _item) {\n return index;\n }\n addStickyStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return {\n ...column.headerStyle,\n ...stickyStyles\n };\n }\n toggleDirection(field, allowUnsort, initialDirection) {\n const descriptor = this.sortDescriptor(field);\n const [first, second] = directions(initialDirection);\n let dir = first;\n if (descriptor.dir === first) {\n dir = second;\n } else if (descriptor.dir === second && allowUnsort) {\n dir = undefined;\n }\n return {\n dir,\n field\n };\n }\n columnsForLevel(level) {\n const columns = this.columns ? this.columns.filter(column => column.level === level) : [];\n return sortColumns(columnsToRender(columns));\n }\n isColumnGroupComponent(column) {\n return isColumnGroupComponent(column);\n }\n sortDescriptor(field) {\n return this.sort.find(item => item.field === field) || {\n field\n };\n }\n get columnLevels() {\n return new Array((this.totalColumnLevels || 0) + 1);\n }\n get leafColumns() {\n return this._leafColumns;\n }\n isReorderable(column) {\n return this.reorderable && column.reorderable;\n }\n isGroupable(column) {\n return this.groupable && isColumnComponent(column) && column.groupable !== false;\n }\n attachTargets() {\n if (this.targetSubscription) {\n this.targetSubscription.unsubscribe();\n }\n this.targetSubscription = new Subscription();\n const enterStream = merge(...this.dropTargets.map(target => target.enter));\n const leaveStream = merge(...this.dropTargets.map(target => target.leave));\n const dropStream = merge(...this.dropTargets.map(target => target.drop));\n this.targetSubscription.add(enterStream.pipe(tap(({\n target,\n draggable\n }) => {\n if (draggable.context.type === 'groupIndicator') {\n return;\n }\n const targetLocked = isTruthy(target.context.column.isLocked);\n const draggableLocked = isTruthy(draggable.context.column.isLocked);\n if (this.lockedColumnsCount > 0 || targetLocked || draggableLocked) {\n this.hint.toggleLock(targetLocked);\n }\n }), filter(({\n draggable,\n target\n }) => this.canDrop(draggable, target)), switchMap(this.trackMove.bind(this, leaveStream, dropStream)), map(e => mergeObjects(e, {\n before: this.calculateBefore(e),\n changeContainer: e.changeContainer\n })), map(this.normalizeTarget.bind(this)), tap(this.enter.bind(this)), switchMap(args => dropStream.pipe(map(() => args), takeUntil(leaveStream.pipe(tap(this.leave.bind(this))))))).subscribe(this.drop.bind(this)));\n }\n normalizeTarget(e) {\n let target = e.target;\n const parent = target.context.column.parent;\n if (parent && parent.isSpanColumn) {\n const arr = this.dropTargets.toArray();\n const firstSpan = arr.find(t => t.context.column.parent === parent);\n const index = arr.indexOf(firstSpan);\n const adjust = e.before ? 0 : parent.childColumns.length - 1;\n target = arr[index + adjust];\n }\n return mergeObjects(e, {\n target\n });\n }\n trackMove(leaveStream, dropStream, e) {\n const column = e.target.context.column;\n const levelColumns = this.columnsForLevel(column.level);\n const index = levelColumns.indexOf(column);\n const isFirst = column.locked ? index === levelColumns.length - 1 : index === 0;\n const changed = e.draggable.context.column.isLocked !== column.isLocked;\n if (changed && isFirst) {\n return e.draggable.drag.pipe(takeUntil(leaveStream), takeUntil(dropStream), map(({\n mouseEvent\n }) => mergeObjects({\n changeContainer: true\n }, e, {\n mouseEvent\n })));\n }\n return of(mergeObjects({\n changeContainer: changed\n }, e));\n }\n calculateBefore({\n draggable,\n target,\n mouseEvent,\n changeContainer = false\n }) {\n const targetElement = target.element.nativeElement;\n let before = false;\n if (changeContainer) {\n const {\n left\n } = offset(targetElement);\n const halfWidth = targetElement.offsetWidth / 2;\n const middle = left + halfWidth;\n before = middle > mouseEvent.pageX;\n if (this.contextService.localization.rtl) {\n before = !before;\n }\n } else {\n before = isTargetBefore(draggable.element.nativeElement, targetElement);\n }\n return before;\n }\n enter({\n target,\n before\n }) {\n this.hint.enable();\n if (this.contextService.localization.rtl) {\n before = !before;\n }\n this.cue.position(position(target.element.nativeElement, before));\n }\n leave() {\n this.hint.disable();\n this.cue.hide();\n }\n drop({\n draggable,\n target,\n before,\n changeContainer\n }) {\n this.reorderService.reorder({\n before,\n changeContainer,\n source: draggable.context.column,\n target: target.context.column\n });\n }\n }\n HeaderComponent.ɵfac = function HeaderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HeaderComponent)(i0.ɵɵdirectiveInject(SinglePopupService), i0.ɵɵdirectiveInject(DragHintService), i0.ɵɵdirectiveInject(DropCueService), i0.ɵɵdirectiveInject(ColumnReorderService), i0.ɵɵdirectiveInject(IdService), i0.ɵɵdirectiveInject(SortService), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(NavigationService));\n };\n HeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: HeaderComponent,\n selectors: [[\"\", \"kendoGridHeader\", \"\"]],\n viewQuery: function HeaderComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(DropTargetDirective, 5);\n i0.ɵɵviewQuery(FilterMenuComponent, 5);\n i0.ɵɵviewQuery(ColumnMenuComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropTargets = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filterMenus = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnMenus = _t);\n }\n },\n hostVars: 4,\n hostBindings: function HeaderComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grid-header\", ctx.headerClass)(\"k-table-thead\", ctx.hostClass);\n }\n },\n inputs: {\n totalColumnLevels: \"totalColumnLevels\",\n columns: \"columns\",\n groups: \"groups\",\n detailTemplate: \"detailTemplate\",\n scrollable: \"scrollable\",\n filterable: \"filterable\",\n sort: \"sort\",\n filter: \"filter\",\n sortable: \"sortable\",\n groupable: \"groupable\",\n lockedColumnsCount: \"lockedColumnsCount\",\n resizable: \"resizable\",\n reorderable: \"reorderable\",\n columnMenu: \"columnMenu\",\n columnMenuTemplate: \"columnMenuTemplate\",\n totalColumnsCount: \"totalColumnsCount\",\n totalColumns: \"totalColumns\",\n tabIndex: \"tabIndex\",\n size: \"size\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c25,\n decls: 3,\n vars: 2,\n consts: [[\"link\", \"\"], [\"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"totalColumns\", 4, \"ngFor\", \"ngForOf\"], [\"kendoGridFilterRow\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"filter\", \"groups\", \"detailTemplate\", \"lockedColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"totalColumns\", 4, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"totalColumns\"], [\"class\", \"k-group-cell k-header k-table-th\", \"role\", \"presentation\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"k-hierarchy-cell k-header k-table-th\", \"role\", \"presentation\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"presentation\", 1, \"k-group-cell\", \"k-header\", \"k-table-th\"], [\"role\", \"presentation\", 1, \"k-hierarchy-cell\", \"k-header\", \"k-table-th\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"columnheader\", \"aria-selected\", \"false\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", \"class\", \"k-header k-table-th\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"headerLabelText\", \"colSpan\", \"rowSpan\", \"k-sorted\", \"enableDrag\", \"context\", \"k-filterable\", \"k-first\", \"k-grid-header-sticky\", \"ngClass\", \"ngStyle\", \"keydown\", 4, \"ngIf\"], [\"kendoGridLogicalCell\", \"\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", \"class\", \"k-header k-table-th\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"rowSpan\", \"colSpan\", \"headerLabelText\", \"enableDrag\", \"context\", \"k-first\", \"k-filterable\", \"k-grid-content-sticky\", \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"columnheader\", \"aria-selected\", \"false\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", 1, \"k-header\", \"k-table-th\", 3, \"keydown\", \"logicalRowIndex\", \"logicalColIndex\", \"headerLabelText\", \"colSpan\", \"rowSpan\", \"enableDrag\", \"context\", \"ngClass\", \"ngStyle\"], [4, \"ngIf\"], [\"kendoGridColumnHandle\", \"\", \"kendoDraggable\", \"\", \"class\", \"k-column-resizer\", 3, \"column\", \"columns\", 4, \"ngIf\"], [1, \"k-cell-inner\"], [1, \"k-link\", \"!k-cursor-default\"], [3, \"templateContext\"], [3, \"column\", \"filter\", \"tabIndex\", 4, \"ngIf\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\", \"sort\", \"filter\", \"sortable\", \"tabIndex\", 4, \"ngIf\"], [1, \"k-column-title\"], [3, \"column\", \"filter\", \"tabIndex\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\", \"sort\", \"filter\", \"sortable\", \"tabIndex\"], [1, \"k-link\", 3, \"click\"], [1, \"k-sort-icon\"], [\"role\", \"note\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-sort-order\", 4, \"ngIf\"], [\"role\", \"note\", 3, \"name\", \"svgIcon\"], [1, \"k-sort-order\"], [1, \"k-checkbox-wrap\"], [\"kendoGridSelectAllCheckbox\", \"\", \"kendoGridFocusable\", \"\", 1, \"k-checkbox\", \"k-checkbox-md\", \"k-rounded-md\"], [\"kendoGridColumnHandle\", \"\", \"kendoDraggable\", \"\", 1, \"k-column-resizer\", 3, \"column\", \"columns\"], [\"kendoGridLogicalCell\", \"\", \"kendoDropTarget\", \"\", \"kendoDraggable\", \"\", \"kendoDraggableColumn\", \"\", 1, \"k-header\", \"k-table-th\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"rowSpan\", \"colSpan\", \"headerLabelText\", \"enableDrag\", \"context\", \"ngClass\", \"ngStyle\"], [1, \"k-link\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\", 4, \"ngIf\"], [3, \"standalone\", \"settings\", \"column\", \"columnMenuTemplate\"], [\"kendoGridFilterRow\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"filter\", \"groups\", \"detailTemplate\", \"lockedColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"totalColumns\"]],\n template: function HeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, HeaderComponent_tr_1_Template, 4, 9, \"tr\", 1)(2, HeaderComponent_tr_2_Template, 1, 10, \"tr\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.columnLevels);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showFilterRow);\n }\n },\n dependencies: [NgFor, LogicalRowDirective, NgIf, LogicalCellDirective, DropTargetDirective, DraggableDirective, DraggableColumnDirective, NgClass, NgStyle, TemplateContextDirective, FilterMenuComponent, ColumnMenuComponent, IconWrapperComponent, SelectAllCheckboxDirective, FocusableDirective, ColumnHandleDirective, FilterRowComponent],\n encapsulation: 2\n });\n return HeaderComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet FooterComponent = /*#__PURE__*/(() => {\n class FooterComponent {\n constructor(columnInfoService) {\n this.columnInfoService = columnInfoService;\n this.columns = [];\n this.groups = [];\n this.lockedColumnsCount = 0;\n this.logicalRowIndex = 0;\n this.hostClass = true;\n this.hostRole = 'rowgroup';\n }\n get footerClass() {\n return !this.scrollable;\n }\n get columnsToRender() {\n return columnsToRender(this.columns || []);\n }\n trackByIndex(index, _item) {\n return index;\n }\n logicalColumnIndex(column) {\n const index = column.leafIndex;\n if (isPresent(index)) {\n return index + (isPresent(this.detailTemplate) ? 1 : 0);\n }\n return -1;\n }\n addStickyStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return {\n ...column.footerStyle,\n ...stickyStyles\n };\n }\n isColumnGroupComponent(column) {\n return isColumnGroupComponent(column);\n }\n }\n FooterComponent.ɵfac = function FooterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FooterComponent)(i0.ɵɵdirectiveInject(ColumnInfoService));\n };\n FooterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FooterComponent,\n selectors: [[\"\", \"kendoGridFooter\", \"\"]],\n hostVars: 5,\n hostBindings: function FooterComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.hostRole);\n i0.ɵɵclassProp(\"k-grid-footer\", ctx.footerClass)(\"k-table-tfoot\", ctx.hostClass);\n }\n },\n inputs: {\n columns: \"columns\",\n groups: \"groups\",\n detailTemplate: \"detailTemplate\",\n scrollable: \"scrollable\",\n lockedColumnsCount: \"lockedColumnsCount\",\n logicalRowIndex: \"logicalRowIndex\",\n totalColumns: \"totalColumns\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c29,\n decls: 5,\n vars: 11,\n consts: [[\"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"totalColumns\"], [\"class\", \"k-table-td k-group-cell\", \"role\", \"presentation\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", \"class\", \"k-table-td k-hierarchy-cell\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"presentation\", 1, \"k-table-td\", \"k-group-cell\"], [\"role\", \"presentation\", 1, \"k-table-td\", \"k-hierarchy-cell\"], [\"kendoGridLogicalCell\", \"\", \"class\", \"k-table-td\", \"role\", \"gridcell\", \"aria-selected\", \"false\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"k-grid-footer-sticky\", \"ngClass\", \"ngStyle\", 4, \"ngIf\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"gridcell\", \"aria-selected\", \"false\", 1, \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"ngClass\", \"ngStyle\"], [3, \"templateContext\"]],\n template: function FooterComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"tr\", 0);\n i0.ɵɵtemplate(2, FooterComponent_td_2_Template, 1, 0, \"td\", 1)(3, FooterComponent_td_3_Template, 1, 0, \"td\", 2)(4, FooterComponent_ng_container_4_Template, 2, 1, \"ng-container\", 3);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"k-footer-template\", true);\n i0.ɵɵproperty(\"logicalRowIndex\", ctx.logicalRowIndex)(\"logicalSlaveRow\", ctx.lockedColumnsCount > 0)(\"logicalCellsCount\", ctx.columns.length)(\"logicalSlaveCellsCount\", ctx.columns.length - ctx.lockedColumnsCount)(\"totalColumns\", ctx.totalColumns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.groups);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.detailTemplate == null ? null : ctx.detailTemplate.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.columnsToRender)(\"ngForTrackBy\", ctx.trackByIndex);\n }\n },\n dependencies: [LogicalRowDirective, NgFor, NgIf, LogicalCellDirective, NgClass, NgStyle, TemplateContextDirective],\n encapsulation: 2\n });\n return FooterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the command columns of the Grid. You have to define the content of the\n * column inside an `` tag.\n * For more information and examples, refer to the [Command Column Directives](slug:editing_directives_grid#toc-command-column-directives) article.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet CommandColumnComponent = /*#__PURE__*/(() => {\n class CommandColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n }\n CommandColumnComponent.ɵfac = function CommandColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CommandColumnComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13), i0.ɵɵdirectiveInject(IdService, 8));\n };\n CommandColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CommandColumnComponent,\n selectors: [[\"kendo-grid-command-column\"]],\n contentQueries: function CommandColumnComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n }\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => CommandColumnComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function CommandColumnComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return CommandColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the checkbox column for selecting rows in the Grid. [See example](slug:grid_row_selection#toc-select-all-checkbox).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * ```\n */\nlet CheckboxColumnComponent = /*#__PURE__*/(() => {\n class CheckboxColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n /*\n * @hidden\n */\n this.isCheckboxColumn = true;\n }\n get templateRef() {\n return this.template ? this.template.templateRef : undefined;\n }\n }\n CheckboxColumnComponent.ɵfac = function CheckboxColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CheckboxColumnComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13), i0.ɵɵdirectiveInject(IdService, 8));\n };\n CheckboxColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CheckboxColumnComponent,\n selectors: [[\"kendo-grid-checkbox-column\"]],\n contentQueries: function CheckboxColumnComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, CellTemplateDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);\n }\n },\n inputs: {\n showSelectAll: \"showSelectAll\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => CheckboxColumnComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function CheckboxColumnComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return CheckboxColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the row-selection checkbox of the Grid. The directive expects the\n * index of the current row as an input parameter. Inside the [`CellTemplateDirective`](slug:api_grid_celltemplatedirective), apply the\n * `kendoGridSelectionCheckbox` to an `` element. When the user clicks the checkbox that is associated\n * with the directive, a [selectionChange](slug:api_grid_gridcomponent#toc-selectionChange)\n * event is triggered.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet SelectionCheckboxDirective = /*#__PURE__*/(() => {\n class SelectionCheckboxDirective {\n constructor(selectionService, aggregateService, el, renderer, ngZone) {\n this.selectionService = selectionService;\n this.aggregateService = aggregateService;\n this.el = el;\n this.renderer = renderer;\n this.ngZone = ngZone;\n this.type = 'checkbox';\n this.ngZone.runOutsideAngular(() => {\n this.destroyClick = this.renderer.listen(this.el.nativeElement, 'click', this.onClick.bind(this));\n this.destroyKeyDown = this.renderer.listen(this.el.nativeElement, 'keydown', this.onKeyDown.bind(this));\n });\n }\n ngAfterContentChecked() {\n this.setCheckedState();\n }\n ngOnDestroy() {\n if (this.destroyClick) {\n this.destroyClick();\n }\n if (this.destroyKeyDown) {\n this.destroyKeyDown();\n }\n }\n onClick() {\n if (this.selectionService.options.enabled) {\n this.ngZone.run(() => {\n const ev = this.selectionService.toggleByIndex(this.itemIndex);\n ev.ctrlKey = true;\n ev.shiftKey = false;\n if (this.selectionService.options.cellAggregates) {\n ev.cellAggregates = this.aggregateService.onSelectionChange(ev);\n }\n this.selectionService.changes.emit(ev);\n });\n }\n }\n onKeyDown(e) {\n if (e.keyCode === Keys.Enter) {\n this.onClick();\n }\n }\n /*\n * @hidden\n */\n setCheckedState() {\n this.renderer.setProperty(this.el.nativeElement, 'checked', this.selectionService.isSelected(this.itemIndex));\n }\n }\n SelectionCheckboxDirective.ɵfac = function SelectionCheckboxDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectionCheckboxDirective)(i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(CellSelectionAggregateService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n SelectionCheckboxDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectionCheckboxDirective,\n selectors: [[\"\", \"kendoGridSelectionCheckbox\", \"\"]],\n hostVars: 1,\n hostBindings: function SelectionCheckboxDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"type\", ctx.type);\n }\n },\n inputs: {\n itemIndex: [0, \"kendoGridSelectionCheckbox\", \"itemIndex\"]\n },\n standalone: true\n });\n return SelectionCheckboxDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ChangeNotificationService = /*#__PURE__*/(() => {\n class ChangeNotificationService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.changes = new EventEmitter();\n }\n notify() {\n if (!this.subscription || this.subscription.closed) {\n this.subscription = this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => this.changes.emit());\n }\n }\n }\n ChangeNotificationService.ɵfac = function ChangeNotificationService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ChangeNotificationService)(i0.ɵɵinject(i0.NgZone));\n };\n ChangeNotificationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ChangeNotificationService,\n factory: ChangeNotificationService.ɵfac\n });\n return ChangeNotificationService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the no-records template of the Grid. Provides an option to customize the\n * appearance of the item that is displayed when no data is present.\n * To define the no-records template, nest an `` tag with the `kendoGridNoRecordsTemplate`\n * directive inside `` [see example](slug:norecordtemplate_grid).\n *\n * @example\n * ```html\n * \n * \n * There are not products. Click here to refresh.\n * \n * \n * \n * \n * ```\n */\nlet NoRecordsTemplateDirective = /*#__PURE__*/(() => {\n class NoRecordsTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n NoRecordsTemplateDirective.ɵfac = function NoRecordsTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NoRecordsTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n NoRecordsTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NoRecordsTemplateDirective,\n selectors: [[\"\", \"kendoGridNoRecordsTemplate\", \"\"]],\n standalone: true\n });\n return NoRecordsTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nfunction defaultTrackBy(index, item) {\n if (item.type === 'data' && item.isEditing) {\n return item.data;\n }\n return index;\n}\n\n/**\n * @hidden\n */\nconst NON_DATA_CELL_CLASSES = 'k-hierarchy-cell k-detail-cell k-group-cell';\n/**\n * @hidden\n */\nconst NON_DATA_ROW_CLASSES = 'k-grouping-row k-group-footer k-detail-row k-grid-norecords';\n/**\n * @hidden\n */\nconst IGNORE_TARGET_CLASSSES = 'k-icon k-svg-icon';\n/**\n * @hidden\n */\nconst IGNORE_CONTAINER_CLASSES = 'k-grid k-grid-ignore-click';\n\n/**\n * @hidden\n */\nlet CellSelectionService = /*#__PURE__*/(() => {\n class CellSelectionService {\n constructor(domEvents, aggregateService, localDataChangesService, navigationService) {\n this.domEvents = domEvents;\n this.aggregateService = aggregateService;\n this.localDataChangesService = localDataChangesService;\n this.navigationService = navigationService;\n this.changes = new EventEmitter();\n this.mouseUpEvent = new EventEmitter();\n this.currentSelection = [];\n this.active = false;\n this.dragging = false;\n this.dragSelectDeselect = false;\n this.lastSelectionItem = {\n itemKey: 0,\n columnKey: 0\n };\n this.lastSelectionItemRowIndex = 0;\n this.lastSelectionItemColIndex = 0;\n this.addSubscriptions();\n }\n get enableMarquee() {\n const checkboxOnly = this.settings && typeof this.settings === 'object' && this.settings.checkboxOnly;\n if (!this.settings || checkboxOnly) {\n return false;\n }\n const selectableSettings = this.settings.selectable;\n const dragAndMultiple = typeof selectableSettings === 'object' && isPresent(selectableSettings) && selectableSettings.mode === 'multiple' && selectableSettings.cell && selectableSettings.enabled !== false && selectableSettings.drag;\n return this.active && dragAndMultiple;\n }\n init(settings) {\n this.settings = settings;\n this.currentSelection = [];\n if (settings.selectable && settings.selectable.enabled !== false) {\n const iterator = this.getIterator();\n let item = iterator.next();\n while (!item.done) {\n if (item.value && item.value.type === \"data\") {\n const rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n settings.columns.forEach(col => {\n const selectedCellArgs = settings.cellSelected(rowArgs, col, col.leafIndex);\n if (selectedCellArgs.selected) {\n this.currentSelection.push(selectedCellArgs.item);\n }\n });\n }\n item = iterator.next();\n }\n }\n }\n isCellSelected(item, col) {\n if (this.settings && this.active) {\n const selectedCellArgs = this.settings.cellSelected({\n dataItem: item.data,\n index: item.index\n }, col, col.leafIndex);\n return this.options.enabled && selectedCellArgs.selected;\n }\n return false;\n }\n handleClick(item, event) {\n if (this.dragging) {\n this.dragging = false;\n return;\n }\n let ev;\n const ctrlKey = event.ctrlKey || event.metaKey;\n if (this.options.mode === \"single\" && ctrlKey && this.isCellSelected(item, item.column)) {\n ev = this.toggle(item);\n } else if (this.options.mode === \"multiple\") {\n if (ctrlKey && !event.shiftKey) {\n ev = this.toggle(item);\n } else if (event.shiftKey) {\n const startRowIndex = Math.min(this.lastSelectionItemRowIndex, item.index);\n const startColIndex = Math.min(this.lastSelectionItemColIndex, item.column.leafIndex);\n const endRowIndex = Math.max(this.lastSelectionItemRowIndex, item.index);\n const endColIndex = Math.max(this.lastSelectionItemColIndex, item.column.leafIndex);\n ev = this.selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex);\n }\n }\n if (!isPresent(ev)) {\n ev = this.select(item);\n this.currentSelection = [this.lastSelectionItem];\n }\n if (!ev.selectedCells.length && !ev.deselectedCells.length) {\n return;\n }\n ev.ctrlKey = ctrlKey;\n ev.shiftKey = event.shiftKey;\n if (this.options.cellAggregates && !event.shiftKey) {\n ev.cellAggregates = this.aggregateService.onSelectionChange(ev);\n }\n if (ev.shiftKey) {\n ev.rangeStartCell = this.lastSelectionItem;\n ev.rangeEndCell = {\n ...this.settings.cellSelected({\n dataItem: item.data,\n index: item.index\n }, item.column, item.column.leafIndex).item\n };\n }\n this.changes.emit(ev);\n }\n toggle(item) {\n const selectedCells = [];\n const deselectedCells = [];\n this.lastSelectionItem = this.settings.cellSelected({\n dataItem: item.data,\n index: item.index\n }, item.column, item.column.leafIndex).item;\n this.lastSelectionItemRowIndex = item.index;\n this.lastSelectionItemColIndex = item.column.leafIndex;\n if (this.isCellSelected(item, item.column)) {\n deselectedCells.push(this.lastSelectionItem);\n } else {\n selectedCells.push(this.lastSelectionItem);\n }\n return {\n deselectedCells,\n selectedCells\n };\n }\n select(item) {\n const selectedCells = [];\n const deselectedCells = [];\n this.lastSelectionItem = this.settings.cellSelected({\n dataItem: item.data,\n index: item.index\n }, item.column, item.column.leafIndex).item;\n this.lastSelectionItemRowIndex = item.index;\n this.lastSelectionItemColIndex = item.column.leafIndex;\n if (!this.isCellSelected(item, item.column)) {\n selectedCells.push(this.lastSelectionItem);\n }\n this.currentSelection.forEach(selectedItem => {\n if (selectedItem.itemKey !== this.lastSelectionItem.itemKey || selectedItem.columnKey !== this.lastSelectionItem.columnKey) {\n deselectedCells.push(selectedItem);\n }\n });\n return {\n deselectedCells,\n selectedCells\n };\n }\n //Used to manually deselect removed items\n deselect(removedItem) {\n const iterator = this.getIterator();\n let item = iterator.next();\n let rowArgs;\n while (!item.done) {\n if (item.value && item.value.type === \"data\" && item.value.data === removedItem) {\n rowArgs = {\n dataItem: item.value.data,\n index: item.value.index\n };\n break;\n }\n item = iterator.next();\n }\n if (rowArgs) {\n const cellsToRemove = this.currentSelection.filter(selectedItem => {\n const contender = this.settings.cellSelected(rowArgs, null, null).item;\n return selectedItem.itemKey === contender.itemKey;\n });\n if (cellsToRemove.length) {\n const ev = {\n ctrlKey: false,\n deselectedCells: cellsToRemove,\n selectedCells: []\n };\n this.changes.emit(ev);\n }\n }\n }\n selectRange(startRowIndex, startColIndex, endRowIndex, endColIndex) {\n const selectedCells = [];\n const deselectedCells = [];\n const selectionStartRow = Math.min(startRowIndex, endRowIndex);\n const selectionStartCol = Math.min(startColIndex, endColIndex);\n const selectionEndRow = Math.max(startRowIndex, endRowIndex);\n const selectionEndCol = Math.max(startColIndex, endColIndex);\n const iterator = this.getIterator();\n let next = iterator.next();\n while (!next.done) {\n if (next.value && next.value.type === \"data\") {\n const idx = next.value.index;\n const data = next.value.data;\n const rowArgs = {\n dataItem: data,\n index: idx\n };\n this.settings.columns.forEach(col => {\n const {\n item\n } = this.settings.cellSelected(rowArgs, col, col.leafIndex);\n const selected = this.isCellSelected(next.value, col);\n const isInRowRange = selectionStartRow <= idx && idx <= selectionEndRow;\n const isInColRange = selectionStartCol <= col.leafIndex && col.leafIndex <= selectionEndCol;\n const isInSelectionRect = isInRowRange && isInColRange;\n if (!isInSelectionRect && selected) {\n deselectedCells.push(item);\n }\n if (isInSelectionRect && !selected) {\n selectedCells.push(item);\n }\n });\n }\n next = iterator.next();\n }\n let cellAggregates;\n if (this.options.cellAggregates) {\n cellAggregates = this.aggregateService.onSelectionChange({\n selectedCells,\n deselectedCells\n });\n }\n return {\n deselectedCells,\n selectedCells,\n cellAggregates\n };\n }\n get options() {\n const defaultOptions = {\n cellAggregates: false,\n checkboxOnly: false,\n enabled: true,\n mode: \"multiple\"\n };\n if (!isPresent(this.settings)) {\n return defaultOptions;\n }\n if (typeof this.settings.selectable === 'boolean') {\n return {\n cellAggregates: false,\n checkboxOnly: false,\n enabled: this.settings.selectable,\n mode: \"multiple\"\n };\n } else {\n return Object.assign(defaultOptions, this.settings.selectable);\n }\n }\n ngOnDestroy() {\n this.removeSubscriptions();\n }\n addSubscriptions() {\n if (!this.cellClickSubscription) {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe(args => {\n if (this.options.enabled && !this.options.checkboxOnly && args.type !== 'contextmenu') {\n if (this.active) {\n this.handleClick({\n index: args.rowIndex,\n data: args.dataItem,\n column: args.column\n }, args.originalEvent);\n }\n }\n });\n }\n if (!this.mousedownSubscription) {\n this.mousedownSubscription = this.domEvents.cellMousedown.subscribe(args => {\n this.mouseDownEventArgs = args;\n if (this.options.enabled && (!this.options.mode || this.options.mode === \"multiple\") && !this.options.checkboxOnly && args.originalEvent.shiftKey) {\n if (this.active) {\n args.originalEvent.preventDefault();\n this.navigationService.focusCellByElement(args.originalEvent.target);\n }\n }\n });\n }\n if (this.localDataChangesService && !this.dataChangedSubscription) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe(args => {\n if (this.active) {\n if (isPresent(args.action) && args.action === 'remove') {\n this.deselect(args.item);\n }\n }\n });\n }\n }\n getIterator() {\n const accessor = this.settings.view.accessor();\n if (!accessor) {\n return;\n }\n return accessor[iterator]();\n }\n removeSubscriptions() {\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n this.cellClickSubscription = null;\n }\n if (this.mousedownSubscription) {\n this.mousedownSubscription.unsubscribe();\n this.mousedownSubscription = null;\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n this.dataChangedSubscription = null;\n }\n }\n }\n CellSelectionService.ɵfac = function CellSelectionService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CellSelectionService)(i0.ɵɵinject(DomEventsService), i0.ɵɵinject(CellSelectionAggregateService), i0.ɵɵinject(LocalDataChangesService), i0.ɵɵinject(NavigationService));\n };\n CellSelectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CellSelectionService,\n factory: CellSelectionService.ɵfac\n });\n return CellSelectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet CellComponent = /*#__PURE__*/(() => {\n class CellComponent {\n constructor(editService, idService, ctx, cellContext) {\n this.editService = editService;\n this.idService = idService;\n this.ctx = ctx;\n this.cellContext = cellContext;\n this.isNew = false;\n this.isLoading = false;\n this.isVirtual = false;\n this.reorderIcon = reorderIcon;\n this._templateContext = {};\n this._editTemplateContext = {};\n }\n get commandCellClass() {\n return this.isCommand(this.column);\n }\n get dragHandleCellClass() {\n return isRowReorderColumn(this.column);\n }\n get dragRowHandleLabel() {\n return isRowReorderColumn(this.column) ? this.ctx.localization.get('dragRowHandleLabel') : undefined;\n }\n set rowIndex(index) {\n this._rowIndex = index;\n this.updateCellContext();\n }\n get rowIndex() {\n return this._rowIndex;\n }\n get isEdited() {\n if (!(this.editService.isEditing() || this.isNew) || !this.isColumnEditable) {\n return false;\n }\n const editContext = this.editService.columnContext(this.rowIndex, this.column);\n return this.isFieldEditable(editContext, this.column);\n }\n get showLoading() {\n return this.isVirtual && this.isLoading;\n }\n get formGroup() {\n return this.editService.context(this.rowIndex).group;\n }\n get templateContext() {\n return this._templateContext;\n }\n get editTemplateContext() {\n this._editTemplateContext.$implicit = this.formGroup;\n this._editTemplateContext.isNew = this.isNew;\n this._editTemplateContext.column = this.column;\n this._editTemplateContext.dataItem = this.dataItem;\n this._editTemplateContext.formGroup = this.formGroup;\n this._editTemplateContext.rowIndex = this.rowIndex;\n return this._editTemplateContext;\n }\n get format() {\n if (isColumnComponent(this.column) && !isNullOrEmptyString(this.column.format)) {\n return extractFormat(this.column.format);\n }\n return undefined;\n }\n get isBoundColumn() {\n return this.column.field && !this.column.templateRef;\n }\n get isCheckboxColumn() {\n return isCheckboxColumn(this.column) && !this.column.templateRef;\n }\n get selectionCheckboxId() {\n return this.idService.selectionCheckboxId(this.rowIndex);\n }\n get selectionCheckboxLabel() {\n return this.ctx.localization.get('selectionCheckboxLabel');\n }\n get isSpanColumn() {\n return isSpanColumn(this.column) && !this.column.templateRef;\n }\n get childColumns() {\n return columnsToRender([this.column]);\n }\n get isRowReorderColumn() {\n return isRowReorderColumn(this.column) && !this.column.templateRef;\n }\n get isColumnEditable() {\n if (!this.column || this.isCommand(this.column)) {\n return false;\n }\n return this.column.editable !== false;\n }\n ngDoCheck() {\n this.updateCellContext();\n }\n ngOnChanges(_changes) {\n this.updateTemplateContext();\n }\n ngAfterContentChecked() {\n this.updateTemplateContext();\n }\n isCommand(column) {\n return column instanceof CommandColumnComponent;\n }\n isFieldEditable(editContext, column) {\n if (!isPresent(editContext)) {\n return false;\n }\n if (isPresent(column.editTemplate)) {\n return true;\n }\n return isPresent(editContext.group) && isPresent(editContext.group.get(column.field));\n }\n updateCellContext() {\n if (this.cellContext) {\n this.cellContext.rowIndex = this._rowIndex;\n }\n }\n updateTemplateContext() {\n if (!this.column.templateRef) {\n return;\n }\n const context = this._templateContext;\n context.isNew = this.isNew;\n context.column = this.column;\n context.dataItem = this.dataItem;\n context.rowIndex = this.rowIndex;\n context.columnIndex = this.columnIndex;\n context.$implicit = this.dataItem;\n }\n }\n CellComponent.ɵfac = function CellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CellComponent)(i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(IdService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(CELL_CONTEXT, 8));\n };\n CellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CellComponent,\n selectors: [[\"\", \"kendoGridCell\", \"\"]],\n hostVars: 7,\n hostBindings: function CellComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-label\", ctx.dragRowHandleLabel);\n i0.ɵɵclassProp(\"k-command-cell\", ctx.commandCellClass)(\"k-drag-cell\", ctx.dragHandleCellClass)(\"k-touch-action-none\", ctx.dragHandleCellClass);\n }\n },\n inputs: {\n column: \"column\",\n columnIndex: \"columnIndex\",\n isNew: \"isNew\",\n isLoading: \"isLoading\",\n isVirtual: \"isVirtual\",\n loadingTemplate: \"loadingTemplate\",\n rowIndex: \"rowIndex\",\n dataItem: \"dataItem\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c30,\n decls: 3,\n vars: 3,\n consts: [[\"loading\", \"\"], [3, \"ngSwitch\"], [4, \"ngSwitchCase\"], [4, \"ngIf\", \"ngIfElse\"], [4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [4, \"ngFor\", \"ngForOf\"], [1, \"k-checkbox-wrap\"], [1, \"k-checkbox\", \"k-checkbox-md\", \"k-rounded-md\", 3, \"kendoGridSelectionCheckbox\"], [\"name\", \"reorder\", 3, \"svgIcon\"], [\"class\", \"k-skeleton-text k-skeleton\", 4, \"ngIf\"], [1, \"k-skeleton-text\", \"k-skeleton\"], [3, \"ngSwitch\", 4, \"ngIf\"], [\"kendoGridFocusable\", \"\", 3, \"format\", \"formControl\", 4, \"ngSwitchCase\"], [\"type\", \"checkbox\", \"class\", \"k-checkbox k-checkbox-md k-rounded-md\", \"kendoGridFocusable\", \"\", 3, \"formControl\", 4, \"ngSwitchCase\"], [\"type\", \"text\", \"class\", \"k-textbox k-input k-input-md k-input-solid k-rounded-md\", \"kendoGridFocusable\", \"\", 3, \"formControl\", 4, \"ngSwitchDefault\"], [\"kendoGridFocusable\", \"\", 3, \"format\", \"formControl\"], [\"type\", \"checkbox\", \"kendoGridFocusable\", \"\", 1, \"k-checkbox\", \"k-checkbox-md\", \"k-rounded-md\", 3, \"formControl\"], [\"type\", \"text\", \"kendoGridFocusable\", \"\", 1, \"k-textbox\", \"k-input\", \"k-input-md\", \"k-input-solid\", \"k-rounded-md\", 3, \"formControl\"]],\n template: function CellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0, 1);\n i0.ɵɵtemplate(1, CellComponent_ng_container_1_Template, 4, 2, \"ng-container\", 2)(2, CellComponent_ng_container_2_Template, 3, 2, \"ng-container\", 2);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngSwitch\", ctx.isEdited);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", false);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngSwitchCase\", true);\n }\n },\n dependencies: [NgSwitch, NgSwitchCase, NgIf, NgTemplateOutlet, NgFor, FocusableDirective, SelectionCheckboxDirective, IconWrapperComponent, NumericTextBoxComponent, DatePickerComponent, NgSwitchDefault, FieldAccessorPipe, ReactiveFormsModule, i4.DefaultValueAccessor, i4.CheckboxControlValueAccessor, i4.NgControlStatus, i4.FormControlDirective],\n encapsulation: 2\n });\n return CellComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst columnCellIndex = (cell, cells) => {\n let cellIndex = 0;\n for (let idx = 0; idx < cells.length; idx++) {\n if (cells[idx] === cell) {\n return cellIndex;\n }\n if (!hasClasses(cells[idx], 'k-hierarchy-cell k-group-cell')) {\n cellIndex++;\n }\n }\n};\n/**\n * @hidden\n */\nlet TableBodyComponent = /*#__PURE__*/(() => {\n class TableBodyComponent {\n constructor(detailsService, groupsService, changeNotification, editService, ctx, ngZone, renderer, element, domEvents, selectionService, cellSelectionService, columnInfoService, navigationService) {\n this.detailsService = detailsService;\n this.groupsService = groupsService;\n this.changeNotification = changeNotification;\n this.editService = editService;\n this.ctx = ctx;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.element = element;\n this.domEvents = domEvents;\n this.selectionService = selectionService;\n this.cellSelectionService = cellSelectionService;\n this.columnInfoService = columnInfoService;\n this.navigationService = navigationService;\n this.columns = [];\n this.groups = [];\n this.skip = 0;\n this.noRecordsText = this.ctx.localization.get('noRecords');\n this.isLocked = false;\n this.skipGroupDecoration = false;\n this.showGroupFooters = false;\n this.lockedColumnsCount = 0;\n this.totalColumnsCount = 0;\n this.trackBy = defaultTrackBy;\n this.hostClass = true;\n this.minusIcon = minusIcon;\n this.plusIcon = plusIcon;\n this.rowClass = () => null;\n this.cellKeydownSubscription = this.navigationService.cellKeydown.subscribe(args => this.cellKeydownHandler(args));\n this.trackByWrapper = this.trackByWrapper.bind(this);\n this.trackByColumns = this.trackByColumns.bind(this);\n }\n get newDataItem() {\n return this.editService.newDataItem;\n }\n // Number of unlocked columns in the next table, if any\n unlockedColumnsCount(item) {\n const allColumns = this.allColumns || this.columns;\n let allColumnsCount = allColumns.length;\n allColumns.forEach(column => {\n if (column.isSpanColumn) {\n allColumnsCount += column.colspan - 1;\n }\n });\n const contentColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - allColumnsCount;\n const headerFooterColumnsCount = this.totalColumnsCount - this.lockedColumnsCount - (this.allColumns || this.columns).length;\n return item && this.isDataItem(item) ? contentColumnsCount : headerFooterColumnsCount;\n }\n isAriaSelected(item, column) {\n return this.cellSelectionService.isCellSelected(item, column) || this.isRowSelected(item) ? 'true' : 'false';\n }\n toggleRow(index, dataItem) {\n this.detailsService.toggleRow(index, dataItem);\n return false;\n }\n isExpanded(viewItem) {\n return this.detailsService.isExpanded(viewItem.index, viewItem.data);\n }\n detailButtonIconName(viewItem) {\n const expanded = this.isExpanded(viewItem);\n return expanded ? 'minus' : 'plus';\n }\n detailButtonSvgIcon(viewItem) {\n const expanded = this.isExpanded(viewItem);\n return expanded ? this.minusIcon : this.plusIcon;\n }\n detailButtonTitle(viewItem) {\n const messageKey = this.isExpanded(viewItem) ? 'detailCollapse' : 'detailExpand';\n return this.ctx.localization.get(messageKey);\n }\n isGroup(item) {\n return item.type === 'group';\n }\n isDataItem(item) {\n return !this.isGroup(item) && !this.isFooter(item);\n }\n isFooter(item) {\n return item.type === 'footer';\n }\n isFooterItemInExpandedGroup(item) {\n const footerItem = {\n data: item.data,\n index: item.groupIndex,\n parentGroup: item.group.parentGroup\n };\n return this.isInExpandedGroup(footerItem);\n }\n isDataItemInExpandedGroup(item) {\n const dataItem = {\n data: item.group.data,\n index: item.groupIndex,\n parentGroup: item.group.parentGroup\n };\n return this.isInExpandedGroup(dataItem);\n }\n isInExpandedGroup(item) {\n return this.groupsService.isInExpandedGroup(item);\n }\n isParentGroupExpanded(item) {\n return this.groupsService.isInExpandedGroup(item.parentGroup);\n }\n isOdd(item) {\n return item.index % 2 !== 0;\n }\n isSelectable() {\n return this.selectable && this.selectable.enabled !== false;\n }\n isRowSelected(item) {\n return this.selectionService.isSelected(item.index);\n }\n trackByWrapper(index, item) {\n if (item.type === 'data') {\n item.isEditing = this.editService.hasEdited(item.index);\n }\n return this.trackBy(index, item);\n }\n trackByColumns(index, item) {\n return this.virtualColumns ? index : item;\n }\n ngDoCheck() {\n if (this.hasGroupHeaderColumn) {\n this.groupHeaderColumns = columnsToRender(this.skipGroupDecoration ? this.columns : this.columns.toArray().slice(1));\n } else {\n this.groupHeaderColumns = [];\n }\n if (this.isLocked) {\n this.groupHeaderSlaveCellsCount = this.hasGroupHeaderColumn ? this.columnsContainer.nonLockedColumnsToRender.length : 1;\n } else {\n this.groupHeaderSlaveCellsCount = 0;\n }\n }\n ngAfterViewChecked() {\n if (this.rowSticky) {\n this.applyStickyRowsStyling();\n }\n }\n ngOnChanges(changes) {\n if (isChanged$1('columns', changes, false)) {\n this.changeNotification.notify();\n }\n }\n logicalRowIndex(rowIndex) {\n let pos = this.skip + rowIndex;\n if (this.hasDetailTemplate) {\n pos *= 2;\n }\n const absoluteRowIndex = 1 + pos;\n const addRowOffset = this.editService.hasNewItem ? 1 : 0;\n const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;\n const headerRowCount = this.columnInfoService.totalLevels + filterRowOffset + addRowOffset;\n return absoluteRowIndex + headerRowCount;\n }\n addRowLogicalIndex() {\n return this.columnInfoService.totalLevels + 1 + (hasFilterRow(this.filterable) ? 1 : 0);\n }\n logicalColIndex(column) {\n if (!isPresent(column.leafIndex)) {\n return -1;\n }\n return column.leafIndex + (this.hasDetailTemplate ? 1 : 0);\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n const clickHandler = this.clickHandler.bind(this);\n const mousedownSubscription = this.renderer.listen(this.element.nativeElement, 'mousedown', clickHandler);\n const mouseupSubscription = this.renderer.listen(this.element.nativeElement, 'mouseup', clickHandler);\n const clickSubscription = this.renderer.listen(this.element.nativeElement, 'click', clickHandler);\n const contextmenuSubscription = this.renderer.listen(this.element.nativeElement, 'contextmenu', clickHandler);\n const touchstartSubscription = this.renderer.listen(this.element.nativeElement, 'touchstart', clickHandler);\n const touchendSubscription = this.renderer.listen(this.element.nativeElement, 'touchend', clickHandler);\n this.clickSubscription = () => {\n mousedownSubscription();\n mouseupSubscription();\n clickSubscription();\n contextmenuSubscription();\n };\n this.touchSubscription = () => {\n touchstartSubscription();\n touchendSubscription();\n };\n });\n let originalNoRecordText = this.ctx.localization.get('noRecords');\n this.l10nSubscription = this.ctx.localization.changes.subscribe(() => {\n if (this.noRecordsText === originalNoRecordText) {\n this.noRecordsText = this.ctx.localization.get('noRecords');\n originalNoRecordText = this.noRecordsText;\n }\n });\n }\n ngOnDestroy() {\n if (this.clickSubscription) {\n this.clickSubscription();\n }\n if (this.touchSubscription) {\n this.touchSubscription();\n }\n if (this.l10nSubscription) {\n this.l10nSubscription.unsubscribe();\n }\n this.cellKeydownSubscription.unsubscribe();\n clearTimeout(this.clickTimeout);\n }\n isEditingCell(index, column) {\n return this.editService.isEditing() && this.editService.isEditedColumn(index, column);\n }\n isEditingRow(index) {\n return this.editService.isEditing() && this.editService.hasEdited(index);\n }\n get hasGroupHeaderColumn() {\n return this.columnsContainer.hasGroupHeaderColumn;\n }\n get columnsContainer() {\n return this.columnInfoService.columnsContainer;\n }\n get columnsSpan() {\n return columnsSpan(this.columns);\n }\n get allColumnsSpan() {\n return columnsSpan(this.allColumns || this.columns);\n }\n get colSpan() {\n return this.columnsSpan + this.groups.length + (this.hasDetailTemplate ? 1 : 0);\n }\n get footerColumns() {\n const colsToRender = Array.from(this.columns).reduce((cols, col) => {\n const newCols = col instanceof SpanColumnComponent ? Array.from(col.childColumns) : [col];\n return [...cols, ...newCols];\n }, []);\n return colsToRender;\n }\n showGroupHeader(item) {\n return !item.data.skipHeader;\n }\n addStickyColumnStyles(column) {\n const stickyStyles = this.columnInfoService.stickyColumnsStyles(column);\n return {\n ...column.style,\n ...stickyStyles\n };\n }\n resizeHandler() {\n this.applyStickyRowsStyling();\n }\n get hasDetailTemplate() {\n return isPresent(this.detailTemplate);\n }\n clickHandler(eventArg) {\n const element = this.element.nativeElement;\n const target = this.eventTarget(eventArg);\n let cell, row, body, gridElement;\n let currentTarget = target;\n do {\n cell = closest(currentTarget, matchesNodeName('td'));\n row = closest(cell, matchesNodeName('tr'));\n body = closest(row, matchesNodeName('tbody'));\n currentTarget = body;\n gridElement = closestInScope(currentTarget, matchesClasses('k-grid'), element);\n } while (body && body !== element && !gridElement);\n if (cell && !hasClasses(cell, NON_DATA_CELL_CLASSES) && !hasClasses(row, NON_DATA_ROW_CLASSES) && body === element && !gridElement) {\n this.editService.preventCellClose();\n const focusable = target !== cell && isFocusableWithTabKey(target, false);\n if (!focusable && !matchesNodeName('label')(target) && !hasClasses(target, IGNORE_TARGET_CLASSSES) && !closestInScope(target, matchesClasses(IGNORE_CONTAINER_CLASSES), cell)) {\n const args = this.cellClickArgs(cell, row, eventArg);\n if (eventArg.type === 'mousedown' || eventArg.type === 'touchstart') {\n this.domEvents.cellMousedown.emit(args);\n } else if (eventArg.type === 'mouseup' || eventArg.type === 'touchend') {\n this.domEvents.cellMouseup.emit(args);\n } else {\n if (args.isEditedColumn || !this.editService.closeCell(eventArg)) {\n if (eventArg.type === 'click') {\n this.clickTimeout = setTimeout(() => {\n this.emitCellClick(args);\n }, 0);\n } else {\n this.emitCellClick(args);\n }\n }\n }\n }\n }\n }\n emitCellClick(args) {\n this.domEvents.cellClick.emit(Object.assign(args, {\n isEdited: args.isEditedRow || args.isEditedColumn\n }));\n }\n cellKeydownHandler(args) {\n if (args.keyCode === Keys.Enter) {\n this.clickHandler(args);\n }\n }\n cellClickArgs(cell, row, eventArg) {\n const index = columnCellIndex(cell, row.cells);\n const column = this.columns.toArray()[index];\n const columnIndex = this.lockedColumnsCount + index;\n let rowIndex = row.getAttribute('data-kendo-grid-item-index');\n rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;\n const dataItem = rowIndex === -1 ? this.editService.newDataItem : this.data.at(rowIndex - this.skip);\n const isEditedColumn = this.editService.isEditedColumn(rowIndex, column);\n const isEditedRow = this.editService.isEdited(rowIndex);\n const type = eventArg.type === 'keydown' ? 'click' : eventArg.type;\n return {\n column: column,\n columnIndex: columnIndex,\n dataItem: dataItem,\n isEditedColumn: isEditedColumn,\n isEditedRow: isEditedRow,\n originalEvent: eventArg,\n rowIndex: rowIndex,\n type: type\n };\n }\n eventTarget(args) {\n if (!isDocumentAvailable()) {\n return;\n }\n if (args.type === 'touchend') {\n const touch = args.changedTouches[0];\n return document.elementFromPoint(touch.clientX, touch.clientY);\n }\n return args.target;\n }\n applyStickyRowsStyling() {\n if (!isDocumentAvailable()) {\n return;\n }\n const stickyRows = nodesToArray(this.element.nativeElement.querySelectorAll('.k-grid-row-sticky'));\n const length = stickyRows.length;\n if (length) {\n let accumulatedHeight = 0;\n const stickyRowsOffsets = [];\n stickyRows.forEach(row => {\n const rowHeight = row.getBoundingClientRect().height;\n stickyRowsOffsets.push({\n accumulatedHeight,\n rowHeight\n });\n accumulatedHeight += rowHeight;\n });\n stickyRows.forEach((row, index) => {\n this.renderer.setStyle(row, 'top', `${stickyRowsOffsets[index].accumulatedHeight}px`);\n this.renderer.setStyle(row, 'bottom', `${accumulatedHeight - stickyRowsOffsets[index].accumulatedHeight - stickyRowsOffsets[index].rowHeight}px`);\n });\n }\n }\n }\n TableBodyComponent.ɵfac = function TableBodyComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TableBodyComponent)(i0.ɵɵdirectiveInject(DetailsService), i0.ɵɵdirectiveInject(GroupsService), i0.ɵɵdirectiveInject(ChangeNotificationService), i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DomEventsService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(CellSelectionService), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(NavigationService));\n };\n TableBodyComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: TableBodyComponent,\n selectors: [[\"\", \"kendoGridTableBody\", \"\"]],\n hostVars: 2,\n hostBindings: function TableBodyComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-table-tbody\", ctx.hostClass);\n }\n },\n inputs: {\n columns: \"columns\",\n allColumns: \"allColumns\",\n groups: \"groups\",\n detailTemplate: \"detailTemplate\",\n noRecordsTemplate: \"noRecordsTemplate\",\n data: \"data\",\n skip: \"skip\",\n selectable: \"selectable\",\n filterable: \"filterable\",\n noRecordsText: \"noRecordsText\",\n isLocked: \"isLocked\",\n isLoading: \"isLoading\",\n isVirtual: \"isVirtual\",\n cellLoadingTemplate: \"cellLoadingTemplate\",\n skipGroupDecoration: \"skipGroupDecoration\",\n showGroupFooters: \"showGroupFooters\",\n lockedColumnsCount: \"lockedColumnsCount\",\n totalColumnsCount: \"totalColumnsCount\",\n virtualColumns: \"virtualColumns\",\n trackBy: \"trackBy\",\n rowSticky: \"rowSticky\",\n totalColumns: \"totalColumns\",\n rowClass: \"rowClass\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n attrs: _c32,\n decls: 4,\n vars: 5,\n consts: [[4, \"ngIf\"], [\"class\", \"k-grid-norecords\", \"role\", \"row\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"resize\", 4, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 1, \"k-grid-add-row\", \"k-grid-edit-row\", \"k-master-row\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"totalColumns\"], [\"class\", \"k-hierarchy-cell k-table-td\", \"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 3, \"logicalRowIndex\", \"logicalColIndex\", 4, \"ngIf\"], [\"class\", \"k-table-td\", \"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", 3, \"rowIndex\", \"columnIndex\", \"isNew\", \"column\", \"dataItem\", \"k-grid-content-sticky\", \"ngClass\", \"left\", \"ngStyle\", \"logicalRowIndex\", \"logicalColIndex\", \"colSpan\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"k-group-cell k-table-td\", \"role\", \"presentation\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"presentation\", 1, \"k-group-cell\", \"k-table-td\"], [\"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", 1, \"k-hierarchy-cell\", \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\"], [\"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", 1, \"k-table-td\", 3, \"rowIndex\", \"columnIndex\", \"isNew\", \"column\", \"dataItem\", \"ngClass\", \"ngStyle\", \"logicalRowIndex\", \"logicalColIndex\", \"colSpan\"], [\"role\", \"row\", 1, \"k-grid-norecords\"], [1, \"k-table-td\"], [3, \"templateContext\"], [\"kendoGridGroupHeader\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"groups\", \"item\", \"hasDetails\", \"skipGroupDecoration\", \"hasGroupHeaderColumn\", \"groupHeaderColumns\", \"rowIndex\", \"totalColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"totalColumns\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", 4, \"ngIf\"], [\"kendoGridLogicalRow\", \"\", 3, \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"totalColumns\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"class\", \"k-grid-row-sticky\", \"ngClass\", \"k-master-row\", \"k-grid-edit-row\", \"k-selected\", 4, \"ngIf\"], [\"class\", \"k-detail-row\", \"kendoGridLogicalRow\", \"\", 3, \"k-alt\", \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\", 4, \"ngIf\"], [\"class\", \"k-group-footer\", \"kendoGridLogicalRow\", \"\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"totalColumns\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", 4, \"ngIf\"], [\"kendoGridGroupHeader\", \"\", \"kendoGridLogicalRow\", \"\", 3, \"columns\", \"groups\", \"item\", \"hasDetails\", \"skipGroupDecoration\", \"hasGroupHeaderColumn\", \"groupHeaderColumns\", \"rowIndex\", \"totalColumnsCount\", \"logicalRowIndex\", \"logicalSlaveRow\", \"totalColumns\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"], [\"kendoGridLogicalRow\", \"\", 3, \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"totalColumns\", \"logicalCellsCount\", \"logicalSlaveCellsCount\", \"ngClass\"], [\"class\", \"k-hierarchy-cell k-table-td\", \"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", \"role\", \"gridcell\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\", 4, \"ngIf\"], [\"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", \"class\", \"k-table-td\", 3, \"rowIndex\", \"columnIndex\", \"column\", \"dataItem\", \"isLoading\", \"isVirtual\", \"loadingTemplate\", \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"colIndex\", \"colSpan\", \"k-grid-content-sticky\", \"k-touch-action-none\", \"k-touch-action-auto\", \"ngClass\", \"k-grid-edit-cell\", \"ngStyle\", \"k-selected\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"kendoGridLogicalCell\", \"\", \"aria-selected\", \"false\", \"role\", \"gridcell\", 1, \"k-hierarchy-cell\", \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"dataItem\", \"detailExpandCell\"], [\"href\", \"#\", \"tabindex\", \"-1\", 3, \"click\", 4, \"ngIf\"], [\"href\", \"#\", \"tabindex\", \"-1\", 3, \"click\"], [3, \"name\", \"svgIcon\"], [\"kendoGridCell\", \"\", \"kendoGridLogicalCell\", \"\", 1, \"k-table-td\", 3, \"rowIndex\", \"columnIndex\", \"column\", \"dataItem\", \"isLoading\", \"isVirtual\", \"loadingTemplate\", \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"colIndex\", \"colSpan\", \"ngClass\", \"ngStyle\"], [\"kendoGridLogicalRow\", \"\", 1, \"k-detail-row\", 3, \"dataRowIndex\", \"dataItem\", \"logicalRowIndex\", \"logicalSlaveRow\", \"logicalCellsCount\"], [\"class\", \"k-group-cell k-table-td\", 4, \"ngFor\", \"ngForOf\"], [1, \"k-hierarchy-cell\", \"k-table-td\"], [\"kendoGridLogicalCell\", \"\", \"role\", \"gridcell\", \"aria-selected\", \"false\", 1, \"k-detail-cell\", \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\", \"dataRowIndex\", \"dataItem\", \"colIndex\", \"colSpan\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"k-group-cell\", \"k-table-td\"], [\"kendoGridLogicalRow\", \"\", 1, \"k-group-footer\", 3, \"logicalRowIndex\", \"logicalSlaveRow\", \"totalColumns\", \"logicalCellsCount\", \"logicalSlaveCellsCount\"], [\"kendoGridLogicalCell\", \"\", \"class\", \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"kendoGridLogicalCell\", \"\", 1, \"k-table-td\", 3, \"logicalRowIndex\", \"logicalColIndex\"], [3, \"resize\"]],\n template: function TableBodyComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, TableBodyComponent_ng_container_0_Template, 5, 9, \"ng-container\", 0)(1, TableBodyComponent_tr_1_Template, 4, 3, \"tr\", 1)(2, TableBodyComponent_ng_container_2_Template, 5, 4, \"ng-container\", 2)(3, TableBodyComponent_kendo_resize_sensor_3_Template, 1, 0, \"kendo-resize-sensor\", 3);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.editService.hasNewItem);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", (ctx.data == null ? null : ctx.data.length) === 0 || ctx.data === null);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackByWrapper);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.rowSticky);\n }\n },\n dependencies: [NgIf, LogicalRowDirective, NgFor, LogicalCellDirective, CellComponent, NgClass, NgStyle, TemplateContextDirective, GroupHeaderComponent, IconWrapperComponent, NgTemplateOutlet, ResizeSensorComponent],\n encapsulation: 2\n });\n return TableBodyComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `edit` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [edit]({% slug api_grid_gridcomponent %}#toc-edit) event\n * is triggered ([see example]({% slug basics_editing_grid %})).\n *\n * When the row is in the `edit` mode, the button with `kendoGridEditCommand` is automatically hidden.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n *\n */\nlet EditCommandDirective = /*#__PURE__*/(() => {\n class EditCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, ctx, ngZone) {\n super(element, renderer, null, ctx.localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.beginEdit(this.rowIndex);\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n }\n EditCommandDirective.ɵfac = function EditCommandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EditCommandDirective)(i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(CELL_CONTEXT), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n EditCommandDirective.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: EditCommandDirective,\n selectors: [[\"\", \"kendoGridEditCommand\", \"\"]],\n hostVars: 4,\n hostBindings: function EditCommandDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function EditCommandDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", ctx.visible);\n i0.ɵɵclassProp(\"k-grid-edit-command\", ctx.commandClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c37,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-button-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-button-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-button-text\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [1, \"k-button-icon\", \"k-icon\"], [\"role\", \"presentation\", 1, \"k-image\", 3, \"src\"], [1, \"k-button-icon\", 3, \"ngClass\"]],\n template: function EditCommandDirective_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, EditCommandDirective_kendo_icon_wrapper_0_Template, 1, 2, \"kendo-icon-wrapper\", 0)(1, EditCommandDirective_span_1_Template, 2, 1, \"span\", 1)(2, EditCommandDirective_span_2_Template, 1, 1, \"span\", 2);\n i0.ɵɵelementStart(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.iconClass);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgClass],\n encapsulation: 2\n });\n return EditCommandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `cancel` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})\n * ([see example](slug:editing_directives_grid#toc-command-column-directives)).\n * When an associated button with the directive is clicked, the\n * [cancel]({% slug api_grid_gridcomponent %}#toc-cancel) event\n * is triggered. When the row is not in the edit mode, the button with the `kendoGridCancelCommand` is automatically hidden.\n *\n * You can control the content of the button based on the state of the row.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet CancelCommandDirective = /*#__PURE__*/(() => {\n class CancelCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, ctx, ngZone) {\n super(element, renderer, null, ctx.localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return !this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n if (this.isEdited) {\n this.editService.endEdit(this.rowIndex);\n }\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n }\n CancelCommandDirective.ɵfac = function CancelCommandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CancelCommandDirective)(i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(CELL_CONTEXT), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n CancelCommandDirective.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CancelCommandDirective,\n selectors: [[\"\", \"kendoGridCancelCommand\", \"\"]],\n hostVars: 4,\n hostBindings: function CancelCommandDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function CancelCommandDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", ctx.visible);\n i0.ɵɵclassProp(\"k-grid-cancel-command\", ctx.commandClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c38,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-button-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-button-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-button-text\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [1, \"k-button-icon\", \"k-icon\"], [\"role\", \"presentation\", 1, \"k-image\", 3, \"src\"], [1, \"k-button-icon\", 3, \"ngClass\"]],\n template: function CancelCommandDirective_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, CancelCommandDirective_kendo_icon_wrapper_0_Template, 1, 2, \"kendo-icon-wrapper\", 0)(1, CancelCommandDirective_span_1_Template, 2, 1, \"span\", 1)(2, CancelCommandDirective_span_2_Template, 1, 1, \"span\", 2);\n i0.ɵɵelementStart(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.iconClass);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgClass],\n encapsulation: 2\n });\n return CancelCommandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `save` command of the Grid. You can apply this directive to any `button`\n * element inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})\n * ([see example](slug:editing_directives_grid#toc-command-column-directives)).\n * When an associated button with the directive is clicked, the\n * [save]({% slug api_grid_gridcomponent %}#toc-save) event\n * is triggered. When the row is not in the edit mode, the button with `kendoGridSaveCommand` is automatically hidden.\n *\n * You can control the content of the button based on the state of the row.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet SaveCommandDirective = /*#__PURE__*/(() => {\n class SaveCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, ctx, ngZone) {\n super(element, renderer, null, ctx.localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return !this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n if (this.isEdited) {\n this.editService.save(this.rowIndex);\n }\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n }\n SaveCommandDirective.ɵfac = function SaveCommandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SaveCommandDirective)(i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(CELL_CONTEXT), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n SaveCommandDirective.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SaveCommandDirective,\n selectors: [[\"\", \"kendoGridSaveCommand\", \"\"]],\n hostVars: 4,\n hostBindings: function SaveCommandDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function SaveCommandDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", ctx.visible);\n i0.ɵɵclassProp(\"k-grid-save-command\", ctx.commandClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c39,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-button-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-button-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-button-text\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [1, \"k-button-icon\", \"k-icon\"], [\"role\", \"presentation\", 1, \"k-image\", 3, \"src\"], [1, \"k-button-icon\", 3, \"ngClass\"]],\n template: function SaveCommandDirective_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, SaveCommandDirective_kendo_icon_wrapper_0_Template, 1, 2, \"kendo-icon-wrapper\", 0)(1, SaveCommandDirective_span_1_Template, 2, 1, \"span\", 1)(2, SaveCommandDirective_span_2_Template, 1, 1, \"span\", 2);\n i0.ɵɵelementStart(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.iconClass);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgClass],\n encapsulation: 2\n });\n return SaveCommandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the `remove` command of the Grid. You can apply this directive to any `button` element\n * inside a [CommandColumnComponent]({% slug api_grid_commandcolumncomponent %})\n * ([see example](slug:editing_directives_grid#toc-command-column-directives)).\n * When an associated button with the directive is clicked, the\n * [remove]({% slug api_grid_gridcomponent %}#toc-remove) event\n * is triggered.\n * When the row is in the `edit` mode, the button with the `kendoGridRemoveCommand` is automatically hidden.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet RemoveCommandDirective = /*#__PURE__*/(() => {\n class RemoveCommandDirective extends Button {\n constructor(editService, cellContext, element, renderer, ctx, ngZone) {\n super(element, renderer, null, ctx.localization, ngZone);\n this.editService = editService;\n this.cellContext = cellContext;\n /**\n * @hidden\n */\n this.commandClass = true;\n }\n /**\n * @hidden\n */\n get visible() {\n return this.isEdited ? 'none' : '';\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.remove(this.rowIndex);\n }\n ngDoCheck() {\n if (this.cellContext) {\n this.rowIndex = this.cellContext.rowIndex;\n this.isEdited = this.editService.isEdited(this.rowIndex);\n }\n }\n }\n RemoveCommandDirective.ɵfac = function RemoveCommandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RemoveCommandDirective)(i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(CELL_CONTEXT), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n RemoveCommandDirective.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: RemoveCommandDirective,\n selectors: [[\"\", \"kendoGridRemoveCommand\", \"\"]],\n hostVars: 4,\n hostBindings: function RemoveCommandDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function RemoveCommandDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", ctx.visible);\n i0.ɵɵclassProp(\"k-grid-remove-command\", ctx.commandClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c40,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-button-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-button-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-button-text\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [1, \"k-button-icon\", \"k-icon\"], [\"role\", \"presentation\", 1, \"k-image\", 3, \"src\"], [1, \"k-button-icon\", 3, \"ngClass\"]],\n template: function RemoveCommandDirective_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, RemoveCommandDirective_kendo_icon_wrapper_0_Template, 1, 2, \"kendo-icon-wrapper\", 0)(1, RemoveCommandDirective_span_1_Template, 2, 1, \"span\", 1)(2, RemoveCommandDirective_span_2_Template, 1, 1, \"span\", 2);\n i0.ɵɵelementStart(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.iconClass);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgClass],\n encapsulation: 2\n });\n return RemoveCommandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the command for adding a new item to the Grid. You can apply this directive to any\n * `button` element inside a [ToolbarTemplate]({% slug api_grid_commandcolumncomponent %}).\n * When an associated button with the directive is clicked, the\n * [add]({% slug api_grid_gridcomponent %}#toc-add) event is triggered\n * ([see example]({% slug basics_editing_grid %})).\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * ```\n */\nlet AddCommandDirective = /*#__PURE__*/(() => {\n class AddCommandDirective extends Button {\n constructor(editService, element, renderer, ctx, ngZone) {\n super(element, renderer, null, ctx.localization, ngZone);\n this.editService = editService;\n }\n /**\n * @hidden\n */\n onClick(e) {\n e.preventDefault();\n this.editService.beginAdd();\n }\n /**\n * @hidden\n */\n get commandClass() {\n return true;\n }\n }\n AddCommandDirective.ɵfac = function AddCommandDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AddCommandDirective)(i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n AddCommandDirective.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AddCommandDirective,\n selectors: [[\"\", \"kendoGridAddCommand\", \"\"]],\n hostVars: 2,\n hostBindings: function AddCommandDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function AddCommandDirective_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-grid-add-command\", ctx.commandClass);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n attrs: _c41,\n ngContentSelectors: _c11,\n decls: 5,\n vars: 3,\n consts: [[\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\", 4, \"ngIf\"], [\"class\", \"k-button-icon k-icon\", 4, \"ngIf\"], [\"class\", \"k-button-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"k-button-text\"], [\"innerCssClass\", \"k-button-icon\", 3, \"name\", \"svgIcon\"], [1, \"k-button-icon\", \"k-icon\"], [\"role\", \"presentation\", 1, \"k-image\", 3, \"src\"], [1, \"k-button-icon\", 3, \"ngClass\"]],\n template: function AddCommandDirective_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, AddCommandDirective_kendo_icon_wrapper_0_Template, 1, 2, \"kendo-icon-wrapper\", 0)(1, AddCommandDirective_span_1_Template, 2, 1, \"span\", 1)(2, AddCommandDirective_span_2_Template, 1, 1, \"span\", 2);\n i0.ɵɵelementStart(3, \"span\", 3);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.icon || ctx.svgIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.imageUrl);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.iconClass);\n }\n },\n dependencies: [NgIf, IconWrapperComponent, NgClass],\n encapsulation: 2\n });\n return AddCommandDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the virtual scrolling cell template of the Grid while loading new data. Provides an option to customize the\n * appearance of the indicator that is displayed while new data is loading. To define the loading cell template,\n * nest an `` tag with the `kendoGridCellLoadingTemplate` directive inside `` tag [see example]({% slug virtualscrolling_grid %}#toc-custom-loading-skeleton).\n *\n *\n * The template context is set to the current column and the following additional field is passed:\n *\n * - `column`—The current column instance. Represents the default context that will be assigned to any template variable which utilizes the `let-x` syntax (for example `let-column`).\n *\n * @example\n * ```html\n * \n * \n * ...\n * \n * \n * ```\n */\nlet CellLoadingTemplateDirective = /*#__PURE__*/(() => {\n class CellLoadingTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n CellLoadingTemplateDirective.ɵfac = function CellLoadingTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CellLoadingTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n CellLoadingTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CellLoadingTemplateDirective,\n selectors: [[\"\", \"kendoGridCellLoadingTemplate\", \"\"]],\n standalone: true\n });\n return CellLoadingTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the drag handle for reordering rows in the Grid ([see example](slug:reordering_rows_grid))\n */\nlet RowReorderColumnComponent = /*#__PURE__*/(() => {\n class RowReorderColumnComponent extends ColumnBase {\n constructor(parent, idService) {\n super(parent, idService);\n this.parent = parent;\n /**\n * @hidden\n */\n this.isRowReorderColumn = true;\n }\n }\n RowReorderColumnComponent.ɵfac = function RowReorderColumnComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RowReorderColumnComponent)(i0.ɵɵdirectiveInject(ColumnBase, 13), i0.ɵɵdirectiveInject(IdService, 8));\n };\n RowReorderColumnComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: RowReorderColumnComponent,\n selectors: [[\"kendo-grid-rowreorder-column\"]],\n inputs: {\n dragHandleIcon: \"dragHandleIcon\",\n dragHandleSVGIcon: \"dragHandleSVGIcon\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: ColumnBase,\n useExisting: forwardRef(() => RowReorderColumnComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function RowReorderColumnComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return RowReorderColumnComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst normalizeSettings = ({\n buttonCount = 10,\n info = true,\n type = 'numeric',\n pageSizes = false,\n previousNext = true,\n responsive = true,\n position = 'bottom'\n}) => ({\n buttonCount,\n info,\n pageSizes: pageSizes === true ? [5, 10, 20] : pageSizes,\n previousNext,\n type,\n responsive,\n position\n});\n/**\n * @hidden\n */\nconst normalize = settings => normalizeSettings(settings === true ? {} : settings);\n\n/**\n * Represents the pager template which helps to customize the pager appearance in the Grid. To define a pager\n * template, nest an `` tag with the `kendoPagerTemplate` directive inside `` tag\n * [see example](slug:pager_template_grid).\n *\n * The template context provides the following fields:\n * * `currentPage`—The index of the displayed page.\n * * `pageSize`—The value of the current `pageSize`.\n * * `skip`—The current skip value.\n * * `total`—The total number of records.\n * * `totalPages`—The total number of available pages.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * Current page: {{currentPage}}\n * \n * \n * \n * \n * ```\n */\nlet PagerTemplateDirective = /*#__PURE__*/(() => {\n class PagerTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n PagerTemplateDirective.ɵfac = function PagerTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n PagerTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PagerTemplateDirective,\n selectors: [[\"\", \"kendoPagerTemplate\", \"\"]],\n standalone: true\n });\n return PagerTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst GROUP_CELL_WIDTH = 32; // this should be the value of group-cell inside the theme!\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_MEDIUM = 600;\n/**\n * @hidden\n */\nconst RESPONSIVE_BREAKPOINT_LARGE = 768;\n\n/**\n * @hidden\n */\nlet PagerElementComponent = /*#__PURE__*/(() => {\n class PagerElementComponent {\n constructor(ctx, pagerContext, cd) {\n this.ctx = ctx;\n this.pagerContext = pagerContext;\n this.cd = cd;\n this.total = this.pagerContext.total;\n this.skip = this.pagerContext.skip;\n this.pageSize = this.pagerContext.pageSize;\n this.caretAltLeftIcon = caretAltLeftIcon;\n this.caretAltToLeftIcon = caretAltToLeftIcon;\n this.caretAltRightIcon = caretAltRightIcon;\n this.caretAltToRightIcon = caretAltToRightIcon;\n /**\n * Sets the pager element sizing option.\n * @default `medium`\n */\n this.size = 'medium';\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerElementComponent\n */\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n /**\n * @hidden\n *\n * @param {string} key\n * @returns {string}\n *\n * @memberOf PagerElementComponent\n */\n textFor(key) {\n return this.ctx.localization.get(key);\n }\n /**\n * @hidden\n *\n * @param {number} page\n *\n * @memberOf PagerElementComponent\n */\n changePage(page) {\n this.pagerContext.changePage(page);\n return false;\n }\n /**\n * @hidden\n *\n * @memberOf PagerElementComponent\n */\n ngOnInit() {\n this.subscriptions = this.pagerContext.changes.subscribe(this.onChanges.bind(this));\n this.subscriptions.add(this.ctx.localization.changes.subscribe(() => this.cd.markForCheck()));\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n get prevArrowIcons() {\n return !this.ctx.localization.rtl ? ['caret-alt-to-left', 'caret-alt-left'] : ['caret-alt-to-right', 'caret-alt-right'];\n }\n get prevArrowSVGIcons() {\n return !this.ctx.localization.rtl ? [this.caretAltToLeftIcon, this.caretAltLeftIcon] : [this.caretAltToRightIcon, this.caretAltRightIcon];\n }\n get nextArrowIcons() {\n return !this.ctx.localization.rtl ? ['caret-alt-right', 'caret-alt-to-right'] : ['caret-alt-left', 'caret-alt-to-left'];\n }\n get nextArrowSVGIcons() {\n return !this.ctx.localization.rtl ? [this.caretAltRightIcon, this.caretAltToRightIcon] : [this.caretAltLeftIcon, this.caretAltToLeftIcon];\n }\n }\n PagerElementComponent.ɵfac = function PagerElementComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerElementComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(PagerContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n PagerElementComponent.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PagerElementComponent,\n inputs: {\n size: \"size\"\n }\n });\n return PagerElementComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// eslint-disable no-access-missing-member\n/**\n * Displays information about the current page and the total number of records ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).\n */\nlet PagerInfoComponent = /*#__PURE__*/(() => {\n class PagerInfoComponent extends PagerElementComponent {\n constructor(ctx, cd, pagerContext) {\n super(ctx, pagerContext, cd);\n this.pagerContext = pagerContext;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get maxItems() {\n return Math.min(this.currentPage * this.pageSize, this.total);\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number}\n * @memberOf PagerInfoComponent\n */\n get currentPageText() {\n return this.total ? (this.currentPage - 1) * this.pageSize + 1 : 0;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerInfoComponent\n */\n get classes() {\n return true;\n }\n onChanges({\n total,\n skip,\n pageSize\n }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n }\n PagerInfoComponent.ɵfac = function PagerInfoComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerInfoComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(PagerContextService));\n };\n PagerInfoComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PagerInfoComponent,\n selectors: [[\"kendo-pager-info\"]],\n hostVars: 4,\n hostBindings: function PagerInfoComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-pager-info\", ctx.classes)(\"k-label\", ctx.classes);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 5,\n template: function PagerInfoComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n i0.ɵɵtextInterpolate5(\"\", ctx.currentPageText, \" - \", ctx.maxItems, \" \", ctx.textFor(\"pagerOf\"), \" \", ctx.total, \" \", ctx.textFor(\"pagerItems\"), \"\");\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n return PagerInfoComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet PagerDropDownListDirective = /*#__PURE__*/(() => {\n class PagerDropDownListDirective {\n constructor(host) {\n this.host = host;\n this.keydownHandler = e => {\n if (e.keyCode === Keys.Escape && this.host.isOpen) {\n e.stopPropagation();\n this.host.toggle(false);\n }\n };\n }\n ngAfterViewInit() {\n const wrapperElement = this.host.wrapper.nativeElement;\n wrapperElement.addEventListener('keydown', this.keydownHandler, true);\n }\n ngOnDestroy() {\n this.host.wrapper.nativeElement.removeEventListener('keydown', this.keydownHandler);\n }\n }\n PagerDropDownListDirective.ɵfac = function PagerDropDownListDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerDropDownListDirective)(i0.ɵɵdirectiveInject(i1$4.DropDownListComponent));\n };\n PagerDropDownListDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PagerDropDownListDirective,\n selectors: [[\"\", \"kendoGridPagerDropDown\", \"\"]],\n standalone: true\n });\n return PagerDropDownListDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Displays a drop-down list for the page size selection ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).\n */\nlet PagerPageSizesComponent = /*#__PURE__*/(() => {\n class PagerPageSizesComponent extends PagerElementComponent {\n constructor(ctx, cd, pagerContext, navigationService) {\n super(ctx, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.navigationService = navigationService;\n this._pageSizes = [];\n }\n /**\n * The page sizes collection. Can be an Array of numbers and/or [`PageSizeItem`](slug:api_grid_pagesizeitem) objects\n * ([see example](slug:pager_template_grid))\n */\n set pageSizes(pageSizes) {\n let normalizedItems = [];\n pageSizes.forEach(item => {\n if (typeof item === 'number') {\n normalizedItems.push({\n text: item.toString(),\n value: item\n });\n } else {\n normalizedItems.push(item);\n }\n });\n if (this.pageSize && !normalizedItems.some(item => item.value === this.pageSize)) {\n normalizedItems = [{\n text: this.pageSize.toString(),\n value: this.pageSize\n }, ...normalizedItems];\n }\n this._pageSizes = normalizedItems;\n }\n get pageSizes() {\n return this._pageSizes;\n }\n /**\n * @hidden\n *\n * @readonly\n */\n get classes() {\n return true;\n }\n /**\n * @hidden\n *\n * @readonly\n */\n get showInitialPageSize() {\n return this.pageSizes.filter(item => {\n if (typeof item.value === 'number') {\n return item.value === Number(this.pageSize);\n }\n return this.total === Number(this.pageSize);\n }).length === 0;\n }\n /**\n * @hidden\n */\n pageSizeChange(value) {\n this.pageSize = typeof value === 'number' ? value : this.total;\n this.pagerContext.changePageSize(this.pageSize);\n }\n /**\n * @hidden\n */\n getValue(page) {\n return typeof page.value === 'number' ? page.value : this.total;\n }\n onChanges({\n total,\n skip,\n pageSize\n }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = typeof pageSize === 'number' ? pageSize : this.total;\n this.cd.markForCheck();\n }\n }\n PagerPageSizesComponent.ɵfac = function PagerPageSizesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerPageSizesComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(PagerContextService), i0.ɵɵdirectiveInject(NavigationService));\n };\n PagerPageSizesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PagerPageSizesComponent,\n selectors: [[\"kendo-pager-page-sizes\"]],\n hostVars: 4,\n hostBindings: function PagerPageSizesComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"k-pager-sizes\", ctx.classes)(\"k-label\", ctx.classes);\n }\n },\n inputs: {\n pageSizes: \"pageSizes\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 7,\n consts: [[\"dropdownlist\", \"\"], [\"kendoGridPagerDropDown\", \"\", \"kendoGridFocusable\", \"\", \"textField\", \"text\", \"valueField\", \"value\", 1, \"k-dropdown\", 3, \"valueChange\", \"size\", \"tabindex\", \"data\", \"valuePrimitive\", \"value\"], [3, \"for\", \"text\"]],\n template: function PagerPageSizesComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"kendo-dropdownlist\", 1, 0);\n i0.ɵɵlistener(\"valueChange\", function PagerPageSizesComponent_Template_kendo_dropdownlist_valueChange_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.pageSizeChange($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelement(2, \"kendo-label\", 2);\n }\n if (rf & 2) {\n const dropdownlist_r2 = i0.ɵɵreference(1);\n i0.ɵɵproperty(\"size\", ctx.size)(\"tabindex\", 0)(\"data\", ctx.pageSizes)(\"valuePrimitive\", true)(\"value\", ctx.pageSize);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"for\", dropdownlist_r2)(\"text\", ctx.textFor(\"pagerItemsPerPage\"));\n }\n },\n dependencies: [DropDownListComponent, PagerDropDownListDirective, FocusableDirective, LabelComponent],\n encapsulation: 2,\n changeDetection: 0\n });\n return PagerPageSizesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Displays numeric buttons to enable navigation between the pages ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).\n */\nlet PagerNumericButtonsComponent = /*#__PURE__*/(() => {\n class PagerNumericButtonsComponent extends PagerElementComponent {\n constructor(ctx, cd, pagerContext) {\n super(ctx, pagerContext, cd);\n this.pagerContext = pagerContext;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {number[]}\n * @memberOf PagerNumericButtonsComponent\n */\n get buttons() {\n const result = [];\n for (let idx = this.start; idx <= this.end; idx++) {\n result.push(idx);\n }\n return result;\n }\n /**\n * @hidden\n */\n get end() {\n return Math.min(this.start + this.buttonCount - 1, this.totalPages);\n }\n /**\n * @hidden\n */\n get start() {\n const page = this.currentPage;\n const buttonCount = this.buttonCount;\n if (page > buttonCount) {\n const reminder = page % buttonCount;\n return reminder === 0 ? page - buttonCount + 1 : page - reminder + 1;\n }\n return 1;\n }\n /**\n * @hidden\n */\n pageLabel(num) {\n const pageText = this.textFor('pagerPage');\n if (pageText) {\n return pageText + ' ' + num;\n }\n return num.toString();\n }\n /**\n * @hidden\n */\n onSelectChange(e) {\n const target = e.target;\n const valueAsNumber = Number(target.value);\n if (!Number.isNaN(valueAsNumber)) {\n this.changePage(valueAsNumber - 1);\n } else {\n if (target.value === 'previousButtons') {\n this.changePage(this.start - 2);\n } else {\n this.changePage(this.end);\n }\n }\n }\n onChanges({\n total,\n skip,\n pageSize\n }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n }\n PagerNumericButtonsComponent.ɵfac = function PagerNumericButtonsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerNumericButtonsComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(PagerContextService));\n };\n PagerNumericButtonsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PagerNumericButtonsComponent,\n selectors: [[\"kendo-pager-numeric-buttons\"]],\n viewQuery: function PagerNumericButtonsComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c42, 5, ElementRef);\n i0.ɵɵviewQuery(_c43, 5, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.selectElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.numbersElement = _t.first);\n }\n },\n inputs: {\n buttonCount: \"buttonCount\"\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 10,\n vars: 14,\n consts: [[\"select\", \"\"], [\"numbers\", \"\"], [\"kendoGridFocusable\", \"\", 1, \"k-dropdown-list\", \"k-dropdown\", \"k-picker\", \"k-picker-solid\", \"k-rounded-md\", 3, \"change\", \"ngClass\"], [\"value\", \"previousButtons\", 3, \"selected\", 4, \"ngIf\"], [3, \"value\", \"selected\", \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [\"value\", \"nextButtons\", 3, \"selected\", 4, \"ngIf\"], [1, \"k-pager-numbers\"], [\"type\", \"button\", \"kendoGridFocusable\", \"\", \"kendoButton\", \"\", \"fillMode\", \"flat\", \"themeColor\", \"primary\", \"class\", \"k-pager-nav\", \"rounded\", \"none\", 3, \"size\", \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"kendoGridFocusable\", \"\", \"kendoButton\", \"\", \"fillMode\", \"flat\", \"themeColor\", \"primary\", \"class\", \"k-pager-nav\", \"rounded\", \"none\", 3, \"size\", \"selected\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", \"kendoGridFocusable\", \"\", \"kendoButton\", \"\", \"class\", \"k-pager-nav\", \"fillMode\", \"flat\", \"themeColor\", \"primary\", \"rounded\", \"none\", 3, \"size\", \"click\", 4, \"ngIf\"], [\"value\", \"previousButtons\", 3, \"selected\"], [3, \"value\", \"selected\", \"ngClass\"], [\"value\", \"nextButtons\", 3, \"selected\"], [\"type\", \"button\", \"kendoGridFocusable\", \"\", \"kendoButton\", \"\", \"fillMode\", \"flat\", \"themeColor\", \"primary\", \"rounded\", \"none\", 1, \"k-pager-nav\", 3, \"click\", \"size\"], [\"type\", \"button\", \"kendoGridFocusable\", \"\", \"kendoButton\", \"\", \"fillMode\", \"flat\", \"themeColor\", \"primary\", \"rounded\", \"none\", 1, \"k-pager-nav\", 3, \"click\", \"size\", \"selected\"]],\n template: function PagerNumericButtonsComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"select\", 2, 0);\n i0.ɵɵlistener(\"change\", function PagerNumericButtonsComponent_Template_select_change_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onSelectChange($event));\n });\n i0.ɵɵtemplate(2, PagerNumericButtonsComponent_option_2_Template, 2, 2, \"option\", 3)(3, PagerNumericButtonsComponent_option_3_Template, 2, 8, \"option\", 4)(4, PagerNumericButtonsComponent_option_4_Template, 2, 2, \"option\", 5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"div\", 6, 1);\n i0.ɵɵtemplate(7, PagerNumericButtonsComponent_button_7_Template, 2, 3, \"button\", 7)(8, PagerNumericButtonsComponent_button_8_Template, 2, 6, \"button\", 8)(9, PagerNumericButtonsComponent_button_9_Template, 2, 3, \"button\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", \"none\");\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(11, _c44, ctx.size === \"small\", ctx.size === \"medium\" || !ctx.size));\n i0.ɵɵattribute(\"title\", ctx.textFor(\"selectPage\"))(\"aria-label\", ctx.textFor(\"selectPage\"));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.start > 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.buttons);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.end < ctx.totalPages);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.start > 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.buttons);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.end < ctx.totalPages);\n }\n },\n dependencies: [FocusableDirective, NgClass, NgIf, NgFor, ButtonComponent],\n encapsulation: 2,\n changeDetection: 0\n });\n return PagerNumericButtonsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Displays buttons for navigating to the next and to the last page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).\n */\nlet PagerNextButtonsComponent = /*#__PURE__*/(() => {\n class PagerNextButtonsComponent extends PagerElementComponent {\n constructor(ctx, pagerContext, cd, navigationService) {\n super(ctx, pagerContext, cd);\n this.navigationService = navigationService;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerNextButtonsComponent\n */\n get disabled() {\n return this.currentPage === this.totalPages || !this.total;\n }\n onChanges({\n total,\n skip,\n pageSize\n }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n }\n PagerNextButtonsComponent.ɵfac = function PagerNextButtonsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerNextButtonsComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(PagerContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(NavigationService));\n };\n PagerNextButtonsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PagerNextButtonsComponent,\n selectors: [[\"kendo-pager-next-buttons\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 14,\n consts: [[\"kendoButton\", \"\", \"type\", \"button\", \"fillMode\", \"flat\", \"rounded\", \"none\", 1, \"k-pager-nav\", 3, \"click\", \"kendoGridFocusable\", \"size\", \"icon\", \"svgIcon\", \"disabled\", \"title\"], [\"kendoButton\", \"\", \"type\", \"button\", \"fillMode\", \"flat\", \"rounded\", \"none\", 1, \"k-pager-nav\", \"k-pager-last\", 3, \"click\", \"kendoGridFocusable\", \"size\", \"icon\", \"svgIcon\", \"disabled\", \"title\"]],\n template: function PagerNextButtonsComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\", 0);\n i0.ɵɵlistener(\"click\", function PagerNextButtonsComponent_Template_button_click_0_listener() {\n return ctx.currentPage !== ctx.totalPages ? ctx.changePage(ctx.currentPage) : false;\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(1, \"button\", 1);\n i0.ɵɵlistener(\"click\", function PagerNextButtonsComponent_Template_button_click_1_listener() {\n return ctx.currentPage !== ctx.totalPages ? ctx.changePage(ctx.totalPages - 1) : false;\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"size\", ctx.size)(\"icon\", ctx.nextArrowIcons[0])(\"svgIcon\", ctx.nextArrowSVGIcons[0])(\"disabled\", ctx.disabled)(\"title\", ctx.textFor(\"pagerNextPage\"));\n i0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerNextPage\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"size\", ctx.size)(\"icon\", ctx.nextArrowIcons[1])(\"svgIcon\", ctx.nextArrowSVGIcons[1])(\"disabled\", ctx.disabled)(\"title\", ctx.textFor(\"pagerLastPage\"));\n i0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerLastPage\"));\n }\n },\n dependencies: [ButtonComponent, FocusableDirective],\n encapsulation: 2,\n changeDetection: 0\n });\n return PagerNextButtonsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet PagerInputDirective = /*#__PURE__*/(() => {\n class PagerInputDirective {\n constructor(host, renderer) {\n this.host = host;\n this.renderer = renderer;\n }\n ngAfterViewInit() {\n const inputElement = this.host.numericInput.nativeElement;\n this.renderer.addClass(inputElement, 'k-pager-nav');\n }\n }\n PagerInputDirective.ɵfac = function PagerInputDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerInputDirective)(i0.ɵɵdirectiveInject(i1$5.NumericTextBoxComponent), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n PagerInputDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: PagerInputDirective,\n selectors: [[\"\", \"kendoGridPagerInput\", \"\"]],\n standalone: true\n });\n return PagerInputDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Displays an input element which allows the typing and rendering of page numbers ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).\n */\nlet PagerInputComponent = /*#__PURE__*/(() => {\n class PagerInputComponent extends PagerElementComponent {\n constructor(ctx, pagerContext, zone, navigationService, cd) {\n super(ctx, pagerContext, cd);\n this.pagerContext = pagerContext;\n this.zone = zone;\n this.navigationService = navigationService;\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleKeyDown = event => {\n const incomingValue = this.numericInput.value || this.current;\n if (event.keyCode === Keys.Enter) {\n event.preventDefault();\n if (incomingValue !== this.current) {\n this.zone.run(() => {\n this.changePage(incomingValue - 1);\n });\n }\n }\n };\n /**\n * @hidden\n *\n * @param {string} value\n *\n * @memberOf PagerInputComponent\n */\n this.handleBlur = () => {\n const inputValue = this.numericInput.value;\n if (!inputValue) {\n this.numericInput.writeValue(this.current);\n return;\n }\n if (inputValue !== this.current) {\n this.zone.run(() => {\n this.changePage(inputValue - 1);\n });\n }\n };\n }\n /**\n * @hidden\n */\n get current() {\n return this.hasPages ? this.currentPage : 0;\n }\n get hasPages() {\n return this.totalPages !== 0;\n }\n onChanges({\n total,\n skip,\n pageSize\n }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n }\n PagerInputComponent.ɵfac = function PagerInputComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerInputComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(PagerContextService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n PagerInputComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PagerInputComponent,\n selectors: [[\"kendo-pager-input\"]],\n viewQuery: function PagerInputComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(NumericTextBoxComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.numericInput = _t.first);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 17,\n consts: [[1, \"k-pager-input\", \"k-label\"], [\"kendoGridPagerInput\", \"\", \"format\", \"n0\", 3, \"kendoGridFocusable\", \"spinners\", \"decimals\", \"disabled\", \"value\", \"min\", \"max\", \"size\", \"autoCorrect\", \"title\", \"kendoEventsOutsideAngular\"]],\n template: function PagerInputComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 0);\n i0.ɵɵtext(1);\n i0.ɵɵelement(2, \"kendo-numerictextbox\", 1);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx.textFor(\"pagerPage\"), \" \");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"kendoGridFocusable\", ctx.hasPages)(\"spinners\", false)(\"decimals\", 0)(\"disabled\", !ctx.hasPages)(\"value\", ctx.current)(\"min\", ctx.hasPages ? 1 : 0)(\"max\", ctx.totalPages)(\"size\", ctx.size)(\"autoCorrect\", true)(\"title\", ctx.textFor(\"pagerPageNumberInputTitle\"))(\"kendoEventsOutsideAngular\", i0.ɵɵpureFunction2(14, _c46, ctx.handleKeyDown, ctx.handleBlur));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx.textFor(\"pagerOf\"), \" \", ctx.totalPages, \" \");\n }\n },\n dependencies: [NumericTextBoxComponent, PagerInputDirective, FocusableDirective, EventsOutsideAngularDirective],\n encapsulation: 2\n });\n return PagerInputComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Displays buttons for navigating to the first and to the previous page ([see example](slug:pager_template_grid#toc-using-built-in-pager-components)).\n */\nlet PagerPrevButtonsComponent = /*#__PURE__*/(() => {\n class PagerPrevButtonsComponent extends PagerElementComponent {\n constructor(ctx, pagerContext, cd, navigationService) {\n super(ctx, pagerContext, cd);\n this.navigationService = navigationService;\n }\n /**\n * @hidden\n *\n * @readonly\n * @type {boolean}\n * @memberOf PagerPrevButtonsComponent\n */\n get disabled() {\n return this.currentPage === 1 || !this.total;\n }\n onChanges({\n total,\n skip,\n pageSize\n }) {\n this.total = total;\n this.skip = skip;\n this.pageSize = pageSize;\n this.cd.markForCheck();\n }\n }\n PagerPrevButtonsComponent.ɵfac = function PagerPrevButtonsComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerPrevButtonsComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(PagerContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(NavigationService));\n };\n PagerPrevButtonsComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PagerPrevButtonsComponent,\n selectors: [[\"kendo-pager-prev-buttons\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 14,\n consts: [[\"kendoButton\", \"\", \"type\", \"button\", \"role\", \"button\", \"fillMode\", \"flat\", \"rounded\", \"none\", 1, \"k-pager-nav\", \"k-pager-first\", 3, \"click\", \"kendoGridFocusable\", \"title\", \"icon\", \"svgIcon\", \"disabled\", \"size\"], [\"kendoButton\", \"\", \"type\", \"button\", \"fillMode\", \"flat\", \"rounded\", \"none\", 1, \"k-pager-nav\", 3, \"click\", \"kendoGridFocusable\", \"disabled\", \"icon\", \"svgIcon\", \"size\", \"title\"]],\n template: function PagerPrevButtonsComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"button\", 0);\n i0.ɵɵlistener(\"click\", function PagerPrevButtonsComponent_Template_button_click_0_listener() {\n return ctx.currentPage !== 1 ? ctx.changePage(0) : false;\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(1, \"button\", 1);\n i0.ɵɵlistener(\"click\", function PagerPrevButtonsComponent_Template_button_click_1_listener() {\n return ctx.currentPage !== 1 ? ctx.changePage(ctx.currentPage - 2) : false;\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"title\", ctx.textFor(\"pagerFirstPage\"))(\"icon\", ctx.prevArrowIcons[0])(\"svgIcon\", ctx.prevArrowSVGIcons[0])(\"disabled\", ctx.disabled)(\"size\", ctx.size);\n i0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerFirstPage\"));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"kendoGridFocusable\", !ctx.disabled)(\"disabled\", ctx.disabled)(\"icon\", ctx.prevArrowIcons[1])(\"svgIcon\", ctx.prevArrowSVGIcons[1])(\"size\", ctx.size)(\"title\", ctx.textFor(\"pagerPreviousPage\"));\n i0.ɵɵattribute(\"aria-label\", ctx.textFor(\"pagerPreviousPage\"));\n }\n },\n dependencies: [ButtonComponent, FocusableDirective],\n encapsulation: 2,\n changeDetection: 0\n });\n return PagerPrevButtonsComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet PagerComponent = /*#__PURE__*/(() => {\n class PagerComponent {\n constructor(pagerContext, navigationService, element, renderer, zone, ctx, cellContext, focusRoot, focusGroup) {\n this.pagerContext = pagerContext;\n this.navigationService = navigationService;\n this.element = element;\n this.renderer = renderer;\n this.zone = zone;\n this.ctx = ctx;\n this.cellContext = cellContext;\n this.focusRoot = focusRoot;\n this.focusGroup = focusGroup;\n this.total = 0;\n this.skip = 1;\n this.pageChange = new EventEmitter();\n this.gridPagerClass = true;\n this.settings = normalize({});\n this.subscriptions = new Subscription();\n this._templateContext = {};\n this._isFocused = false;\n this._size = 'medium';\n this.resizeHandler = () => {\n const element = this.element.nativeElement;\n if (this.template || !element) {\n return;\n }\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n const width = element.offsetWidth;\n if (this.numericButtons) {\n const selectElement = this.numericButtons.selectElement.nativeElement;\n const numbersElement = this.numericButtons.numbersElement.nativeElement;\n this.renderer.removeStyle(numbersElement, 'display');\n this.renderer.setStyle(selectElement, 'display', 'none');\n if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n this.renderer.removeStyle(selectElement, 'display');\n this.renderer.setStyle(numbersElement, 'display', 'none');\n }\n }\n if (this.pagerInfo) {\n this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');\n if (width < RESPONSIVE_BREAKPOINT_LARGE) {\n this.renderer.setStyle(this.pagerInfo.nativeElement, 'display', 'none');\n }\n }\n if (this.pagerPageSizes) {\n this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');\n if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n this.renderer.setStyle(this.pagerPageSizes.nativeElement, 'display', 'none');\n }\n }\n });\n });\n };\n }\n set options(value) {\n this.settings = normalize(value);\n }\n set size(size) {\n this._size = size;\n if (size === 'none') {\n this.element.nativeElement.classList.remove('k-pager-sm', 'k-pager-md');\n }\n }\n get size() {\n return this._size;\n }\n get sizeSmallClass() {\n return this.size === 'small';\n }\n get sizeMediumClass() {\n return this.size === 'medium' || !this.size;\n }\n get isFocused() {\n return this._isFocused;\n }\n get pagerAriaLabel() {\n return this.navigationService.pagerEnabled ? this.pagerLabel : undefined;\n }\n get pagerLabel() {\n const localizationMsg = this.ctx.localization.get('pagerLabel') || '';\n return replaceMessagePlaceholder(replaceMessagePlaceholder(localizationMsg, 'currentPage', this.currentPage.toString()), 'totalPages', this.totalPages.toString());\n }\n get focusTrapTabIndex() {\n return this.focusGroup.isActive ? '0' : '-1';\n }\n onFocusIn(event) {\n if (this.navigationService.pagerEnabled) {\n const shouldFocusPager = event.target === this.element.nativeElement;\n if (shouldFocusPager) {\n this._isFocused = true;\n this.focusRoot.deactivate();\n } else {\n this.focusRoot.activate();\n }\n }\n }\n onFocusOut() {\n if (this.navigationService.pagerEnabled) {\n this._isFocused = false;\n }\n }\n onEscape() {\n if (this.navigationService.pagerEnabled) {\n this.focusRoot.deactivate();\n this.element.nativeElement.focus();\n }\n }\n onEnter(event) {\n if (this.navigationService.pagerEnabled && event.target === this.element.nativeElement) {\n event.preventDefault();\n this.focusRoot.activate();\n this.focusFirstElement();\n }\n }\n navigateToPreviousPage(e) {\n e.preventDefault();\n if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {\n this.pagerContext.prevPage();\n }\n }\n navigateToNextPage(e) {\n e.preventDefault();\n if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {\n this.pagerContext.nextPage();\n }\n }\n navigateToFirstPage(e) {\n e.preventDefault();\n if (this.shouldTriggerPageChange(e.target, this.currentPage > 1)) {\n this.pagerContext.changePage(0);\n }\n }\n navigateToLastPage(e) {\n e.preventDefault();\n if (this.shouldTriggerPageChange(e.target, this.currentPage < this.totalPages)) {\n this.pagerContext.changePage(this.totalPages - 1);\n }\n }\n get totalPages() {\n return Math.ceil((this.total || 0) / this.pageSize);\n }\n get currentPage() {\n return Math.floor((this.skip || 0) / this.pageSize) + 1;\n }\n get templateContext() {\n const context = this._templateContext;\n context.totalPages = this.totalPages;\n context.total = this.total;\n context.skip = this.skip;\n context.pageSize = this.pageSize;\n context.currentPage = this.currentPage;\n return context;\n }\n ngOnInit() {\n this.subscriptions.add(this.pagerContext.pageChange.subscribe(this.changePage.bind(this)));\n if (this.navigationService.pagerEnabled) {\n this.focusRoot.deactivate();\n }\n }\n ngDoCheck() {\n this.updateCellContext();\n }\n ngOnChanges(changes) {\n if (anyChanged(['pageSize', 'skip', 'total'], changes, false)) {\n this.pagerContext.notifyChanges({\n pageSize: this.pageSize,\n skip: this.skip,\n total: this.total\n });\n }\n const changesInTemplate = changes['template'];\n if (changesInTemplate) {\n changesInTemplate.currentValue ? this.clearResponsiveStyling() : this.resizeHandler();\n }\n if (changes['options']) {\n this.settings.responsive ? this.resizeHandler() : this.clearResponsiveStyling();\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n }\n changePage(event) {\n this.pageChange.emit(event);\n }\n onInnerFocusIn(event, position) {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (position === 'start') {\n if (event.relatedTarget === this.element.nativeElement) {\n this.focusFirstElement();\n } else {\n this.focusLastElement();\n }\n } else {\n this.focusFirstElement();\n }\n });\n }\n shouldTriggerPageChange(target, condition) {\n return this.navigationService.pagerEnabled && target === this.element.nativeElement && condition;\n }\n focusFirstElement() {\n const first = findFocusableChild(this.element.nativeElement, true);\n if (first) {\n first.focus();\n }\n }\n focusLastElement() {\n const last = findLastFocusableChild(this.element.nativeElement, true);\n if (last) {\n last.focus();\n }\n }\n updateCellContext() {\n if (this.cellContext) {\n this.cellContext.focusGroup = this.focusGroup;\n }\n }\n clearResponsiveStyling() {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n if (this.numericButtons) {\n this.renderer.removeStyle(this.numericButtons.numbersElement.nativeElement, 'display');\n this.renderer.setStyle(this.numericButtons.selectElement.nativeElement, 'display', 'none');\n }\n this.pagerInfo && this.renderer.removeStyle(this.pagerInfo.nativeElement, 'display');\n this.pagerPageSizes && this.renderer.removeStyle(this.pagerPageSizes.nativeElement, 'display');\n });\n });\n }\n }\n PagerComponent.ɵfac = function PagerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerComponent)(i0.ɵɵdirectiveInject(PagerContextService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(CELL_CONTEXT, 8), i0.ɵɵdirectiveInject(FocusRoot), i0.ɵɵdirectiveInject(FocusGroup));\n };\n PagerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: PagerComponent,\n selectors: [[\"kendo-pager\"]],\n viewQuery: function PagerComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(PagerInfoComponent, 5, ElementRef);\n i0.ɵɵviewQuery(PagerPageSizesComponent, 5, ElementRef);\n i0.ɵɵviewQuery(PagerNumericButtonsComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pagerInfo = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pagerPageSizes = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.numericButtons = _t.first);\n }\n },\n hostVars: 9,\n hostBindings: function PagerComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"focusin\", function PagerComponent_focusin_HostBindingHandler($event) {\n return ctx.onFocusIn($event);\n })(\"focusout\", function PagerComponent_focusout_HostBindingHandler() {\n return ctx.onFocusOut();\n })(\"keydown.escape\", function PagerComponent_keydown_escape_HostBindingHandler() {\n return ctx.onEscape();\n })(\"keydown.enter\", function PagerComponent_keydown_enter_HostBindingHandler($event) {\n return ctx.onEnter($event);\n })(\"keydown.arrowleft\", function PagerComponent_keydown_arrowleft_HostBindingHandler($event) {\n return ctx.navigateToPreviousPage($event);\n })(\"keydown.pageup\", function PagerComponent_keydown_pageup_HostBindingHandler($event) {\n return ctx.navigateToPreviousPage($event);\n })(\"keydown.arrowright\", function PagerComponent_keydown_arrowright_HostBindingHandler($event) {\n return ctx.navigateToNextPage($event);\n })(\"keydown.pagedown\", function PagerComponent_keydown_pagedown_HostBindingHandler($event) {\n return ctx.navigateToNextPage($event);\n })(\"keydown.home\", function PagerComponent_keydown_home_HostBindingHandler($event) {\n return ctx.navigateToFirstPage($event);\n })(\"keydown.end\", function PagerComponent_keydown_end_HostBindingHandler($event) {\n return ctx.navigateToLastPage($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-label\", ctx.pagerAriaLabel);\n i0.ɵɵclassProp(\"k-grid-pager\", ctx.gridPagerClass)(\"k-pager-sm\", ctx.sizeSmallClass)(\"k-pager-md\", ctx.sizeMediumClass)(\"k-focus\", ctx.isFocused);\n }\n },\n inputs: {\n total: \"total\",\n skip: \"skip\",\n pageSize: \"pageSize\",\n options: \"options\",\n size: \"size\",\n template: \"template\"\n },\n outputs: {\n pageChange: \"pageChange\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: FOCUS_ROOT_ACTIVE,\n useValue: true\n }, {\n provide: FocusRoot,\n deps: [FOCUS_ROOT_ACTIVE],\n useClass: FocusRoot\n }, {\n provide: FocusGroup,\n deps: [FocusRoot],\n useClass: FocusGroup\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 5,\n vars: 5,\n consts: [[\"class\", \"k-sr-only\", 3, \"tabindex\", \"focusin\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\", 4, \"ngIf\"], [4, \"ngIf\"], [3, \"resize\", 4, \"ngIf\"], [1, \"k-sr-only\", 3, \"focusin\", \"tabindex\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"k-pager-numbers-wrap\"], [3, \"size\", 4, \"ngIf\"], [3, \"size\", \"buttonCount\", 4, \"ngIf\"], [3, \"size\", \"pageSizes\", 4, \"ngIf\"], [3, \"size\"], [3, \"size\", \"buttonCount\"], [3, \"size\", \"pageSizes\"], [3, \"resize\"]],\n template: function PagerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, PagerComponent_div_0_Template, 1, 2, \"div\", 0)(1, PagerComponent_ng_container_1_Template, 1, 2, \"ng-container\", 1)(2, PagerComponent_ng_container_2_Template, 8, 6, \"ng-container\", 2)(3, PagerComponent_div_3_Template, 1, 2, \"div\", 0)(4, PagerComponent_kendo_resize_sensor_4_Template, 1, 0, \"kendo-resize-sensor\", 3);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.navigationService.pagerEnabled);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.template == null ? null : ctx.template.templateRef);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(ctx.template == null ? null : ctx.template.templateRef));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.navigationService.pagerEnabled);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.settings.responsive);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet, PagerPrevButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerNextButtonsComponent, PagerInfoComponent, PagerPageSizesComponent, ResizeSensorComponent],\n encapsulation: 2\n });\n return PagerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass ZoneAwareEventEmitter extends EventEmitter {\n constructor(ngZone, isAsync = false) {\n super(isAsync);\n this.ngZone = ngZone;\n }\n subscribe(generatorOrNext, error, complete) {\n let schedulerFn;\n let errorFn = _ => null;\n let completeFn = () => null;\n if (generatorOrNext && typeof generatorOrNext === 'object') {\n schedulerFn = value => {\n this.ngZone.run(() => generatorOrNext.next(value));\n };\n if (generatorOrNext.error) {\n errorFn = err => {\n this.ngZone.run(() => generatorOrNext.error(err));\n };\n }\n if (generatorOrNext.complete) {\n completeFn = () => {\n this.ngZone.run(() => generatorOrNext.complete());\n };\n }\n } else {\n schedulerFn = value => {\n this.ngZone.run(() => generatorOrNext(value));\n };\n if (error) {\n errorFn = err => {\n this.ngZone.run(() => error(err));\n };\n }\n if (complete) {\n completeFn = () => {\n this.ngZone.run(() => complete());\n };\n }\n }\n return super.subscribe(schedulerFn, errorFn, completeFn);\n }\n}\n\n/**\n * @hidden\n */\nconst packageMetadata = {\n name: '@progress/kendo-angular-grid',\n productName: 'Kendo UI for Angular',\n productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],\n publishDate: 1723621938,\n version: '16.7.1',\n licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'\n};\nconst canCreateElement = () => isDocumentAvailable() && document.createElement;\nlet cachedScrollbarWidth = null;\nlet cachedPixelRatio;\nlet cachedRtlScrollLeft = null;\nfunction scrollbarWidth() {\n if (cachedScrollbarWidth === null && canCreateElement()) {\n cachedPixelRatio = window.devicePixelRatio || 1;\n const div = document.createElement(\"div\");\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n cachedScrollbarWidth = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return cachedScrollbarWidth;\n}\nfunction rtlScrollLeft() {\n if (cachedRtlScrollLeft === null && canCreateElement()) {\n const outer = document.createElement('div');\n outer.style.direction = 'rtl';\n outer.style.display = 'block';\n outer.style.clear = 'both';\n outer.style.width = '100px';\n outer.style.visibility = 'hidden';\n outer.style.position = 'absolute';\n outer.style.left = '-10000px';\n outer.style.overflow = 'scroll';\n outer.style.zoom = '1';\n const inner = document.createElement('div');\n inner.style.width = '200px';\n inner.style.height = '1px';\n outer.append(inner);\n document.body.appendChild(outer);\n const initial = outer.scrollLeft;\n outer.scrollLeft = -1;\n cachedRtlScrollLeft = outer.scrollLeft < 0 ? outer.scrollLeft : initial;\n document.body.removeChild(outer);\n }\n return cachedRtlScrollLeft;\n}\n/**\n * @hidden\n * move to kendo-common\n */\nlet BrowserSupportService = /*#__PURE__*/(() => {\n class BrowserSupportService {\n constructor(zone, changeDetector) {\n this.zone = zone;\n this.changeDetector = changeDetector;\n this.changes = new EventEmitter();\n if (typeof window === 'undefined') {\n return;\n }\n this.zone.runOutsideAngular(() => {\n this.subscriptions = fromEvent(window, 'resize').pipe(auditTime(100)).subscribe(() => {\n if (cachedPixelRatio !== window.devicePixelRatio) {\n zone.run(() => {\n cachedScrollbarWidth = null;\n this.changes.emit();\n this.changeDetector.markForCheck();\n });\n }\n });\n });\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n this.subscriptions = null;\n }\n }\n get scrollbarWidth() {\n return scrollbarWidth();\n }\n get rtlScrollLeft() {\n return rtlScrollLeft();\n }\n }\n BrowserSupportService.ɵfac = function BrowserSupportService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BrowserSupportService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.ChangeDetectorRef));\n };\n BrowserSupportService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BrowserSupportService,\n factory: BrowserSupportService.ɵfac\n });\n return BrowserSupportService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst isGroupItem = source => {\n return source.items !== undefined && source.field !== undefined;\n};\nconst isVirtualGroupItem = source => {\n return source.offset !== undefined && source.skipHeader !== undefined;\n};\nconst flattenGroups = groups => groups.reduce((acc, curr) => {\n if (isGroupItem(curr)) {\n return acc.concat(flattenGroups(curr.items));\n }\n return acc.concat([curr]);\n}, []);\n/**\n * @hidden\n */\nconst itemAt = (data, index) => {\n const first = data[0];\n if (isPresent(first) && isGroupItem(first)) {\n return flattenGroups(data)[index];\n }\n return data[index];\n};\n/**\n * @hidden\n */\nconst getIterator = (data, {\n footers,\n level,\n dataIndex,\n parentGroupIndex,\n groupIndex,\n parentGroup\n}) => {\n const first = data[0];\n if (isPresent(first) && isGroupItem(first)) {\n if (isVirtualGroupItem(first)) {\n groupIndex = isPresent(first.offset) ? first.offset : groupIndex;\n }\n return new GroupIterator(data, footers, level, dataIndex, parentGroupIndex, groupIndex, parentGroup);\n }\n return new ItemIterator(data, dataIndex, parentGroupIndex, parentGroup);\n};\nclass ArrayIterator {\n constructor(arr, idx = 0) {\n this.arr = arr;\n this.idx = idx;\n this.arr = arr || [];\n }\n [iterator]() {\n return this;\n }\n next() {\n return this.idx < this.arr.length ? {\n done: false,\n value: this.arr[this.idx++]\n } : {\n done: true,\n value: undefined\n };\n }\n}\n/**\n * @hidden\n */\nclass Iterator {\n constructor(arr, dataIndex = 0, resultMap = x => x) {\n this.dataIndex = dataIndex;\n this.resultMap = resultMap;\n const iter = arr[iterator];\n this._innerIterator = iter ? arr[iterator]() : new ArrayIterator(arr);\n }\n [iterator]() {\n return this;\n }\n next() {\n return this.resultMap(this._innerIterator.next(), this.dataIndex++);\n }\n}\n/**\n * @hidden\n */\nclass ItemIterator extends Iterator {\n constructor(arr, dataIndex, groupIndex, group) {\n super(arr, dataIndex, (x, idx) => ({\n done: x.done,\n value: {\n data: x.value,\n groupIndex: groupIndex,\n index: idx,\n type: 'data',\n group\n }\n }));\n }\n /**\n * The index of the next record.\n * @readonly\n * @type {number}\n */\n get index() {\n return this.dataIndex;\n }\n}\nconst prefix = (s, n) => {\n const p = s ? s + \"_\" : s;\n return `${p}${n}`;\n};\n/**\n * @hidden\n */\nclass GroupIterator {\n constructor(arr, outputFooters = false, level = 0, dataIndex = 0, parentIndex = '', groupIndex = 0, parentGroup = undefined) {\n this.arr = arr;\n this.outputFooters = outputFooters;\n this.level = level;\n this.dataIndex = dataIndex;\n this.parentIndex = parentIndex;\n this.groupIndex = groupIndex;\n this.parentGroup = parentGroup;\n this.currentGroupIndex = \"\";\n this.arr = arr || [];\n this._iterator = new Iterator(this.arr, this.dataIndex);\n }\n [iterator]() {\n return this;\n }\n nextGroupItem() {\n this.current = this._iterator.next().value;\n this._innerIterator = null;\n if (this.current) {\n this.currentGroupIndex = prefix(this.parentIndex, this.groupIndex++);\n return {\n done: false,\n value: {\n data: this.current,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n };\n } else {\n this.current = null;\n return {\n done: true,\n value: undefined\n };\n }\n }\n footerItem() {\n if (this.current) {\n const group = this.current;\n this.current = null;\n return {\n done: false,\n value: {\n data: group,\n groupIndex: this.currentGroupIndex,\n level: this.level,\n type: 'footer',\n group: {\n data: group,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n }\n };\n } else {\n this.current = null;\n return {\n done: true,\n value: undefined\n };\n }\n }\n innerIterator(group) {\n if (!this._innerIterator) {\n this._innerIterator = getIterator(group.items, {\n dataIndex: this.dataIndex,\n footers: this.outputFooters,\n level: this.level + 1,\n parentGroupIndex: this.currentGroupIndex,\n parentGroup: {\n data: this.current,\n index: this.currentGroupIndex,\n level: this.level,\n type: 'group',\n parentGroup: this.parentGroup\n }\n });\n }\n return this._innerIterator;\n }\n nextDataItem(group) {\n const iterator = this.innerIterator(group);\n const result = iterator.next();\n if (isPresent(result.value) && !result.done && result.value.type === \"data\") {\n this.dataIndex = result.value.index + 1;\n }\n return !result.done ? result : undefined;\n }\n next() {\n if (!isPresent(this.current)) {\n return this.nextGroupItem();\n }\n const item = this.nextDataItem(this.current);\n return item ? item : this.outputFooters ? this.footerItem() : this.nextGroupItem();\n }\n /**\n * The index of the last iterated data record.\n * @readonly\n * @type {number}\n */\n get index() {\n return this.dataIndex + 1;\n }\n}\n\n/**\n * @hidden\n */\nclass DataResultIterator {\n constructor(source, skip = 0, groupFooters = false) {\n this.source = source;\n this.skip = skip;\n this.groupFooters = groupFooters;\n this.source = this.source ? this.source : [];\n this.isObject = this.isGridDataResult(this.source);\n }\n isGridDataResult(source) {\n return source.total !== undefined && source.data !== undefined;\n }\n get total() {\n return this.isObject ? this.source.total : this.source.length;\n }\n get data() {\n return this.isObject ? this.source.data : this.source;\n }\n map(fn) {\n return this.data.map(fn);\n }\n filter(fn) {\n return this.data.filter(fn);\n }\n reduce(fn, init) {\n return this.data.reduce(fn, init);\n }\n forEach(fn) {\n this.data.forEach(fn);\n }\n some(fn) {\n return this.data.some(fn);\n }\n [iterator]() {\n return getIterator(this.data, {\n dataIndex: this.skip,\n footers: this.groupFooters,\n groupIndex: this.skip\n });\n }\n toString() {\n return this.data.toString();\n }\n}\n/**\n * @hidden\n */\nclass DataCollection {\n constructor(accessor) {\n this.accessor = accessor;\n }\n get total() {\n return this.accessor().total;\n }\n get length() {\n return this.accessor().data.length;\n }\n get first() {\n return this.accessor().data[0];\n }\n get last() {\n return this.accessor().data[this.length - 1];\n }\n at(index) {\n return itemAt(this.accessor().data, index);\n }\n map(fn) {\n return this.accessor().map(fn);\n }\n filter(fn) {\n return this.accessor().filter(fn);\n }\n reduce(fn, init) {\n return this.accessor().reduce(fn, init);\n }\n forEach(fn) {\n this.accessor().forEach(fn);\n }\n some(fn) {\n return this.accessor().some(fn);\n }\n [iterator]() {\n return this.accessor()[iterator]();\n }\n toString() {\n return this.accessor().toString();\n }\n}\n\n/**\n * @hidden\n *\n * Quick look-up structure for combinations of keys.\n * Similar to the native JS Set, however, working with a couple of keys instead of with a single key.\n * Supports both primitive keys and object keys (compared by reference).\n */\nclass PairSet {\n constructor(items, keyXField, keyYField) {\n /**\n * Holds a set of Y keys for each defined X key.\n * Each X key creates a map which holds a set of Y keys.\n *\n * Map { 1 => Set { 1, 2, 3 } } // pairs: [1, 1], [1, 2], [1, 3]\n */\n this.keysX = new Map();\n /**\n * Count the each added or deleted key manually to avoid iterating over all items when calling `this.size`.\n */\n this.totalKeysCount = 0;\n if (items && keyXField && keyYField) {\n items.forEach(item => this.add(item[keyXField], item[keyYField]));\n }\n }\n /**\n * Gets the total number of X/Y key pairs.\n */\n get size() {\n return this.totalKeysCount;\n }\n /**\n * Adds a couple of items identified as a combination.\n */\n add(keyX, keyY) {\n if (!this.keysX.has(keyX)) {\n this.keysX.set(keyX, new Set());\n }\n if (!this.has(keyX, keyY)) {\n this.keysX.get(keyX).add(keyY);\n this.totalKeysCount += 1;\n }\n }\n /**\n * Adds a combination of a couple of items identified together.\n */\n delete(keyX, keyY) {\n if (this.has(keyX, keyY)) {\n this.keysX.get(keyX).delete(keyY);\n this.totalKeysCount -= 1;\n }\n }\n /**\n * Checks whether the defined combination is stored.\n */\n has(keyX, keyY) {\n return this.keysX.has(keyX) && this.keysX.get(keyX).has(keyY);\n }\n /**\n * Clears all key combinations.\n */\n clear() {\n this.keysX.clear();\n this.totalKeysCount = 0;\n }\n /**\n * Converts the persisted data structure to an array of objects,\n * using the provided field names for the object props.\n */\n toArray(keyXField, keyYField) {\n return Array.from(this.keysX).reduce((pairs, pair) => {\n // Array.from(mapInstance) returns an array of arrays [[itemKey1, columnKeysSet1], [itemKey2, columnKeysSet2]]\n const [keyX, keysY] = pair;\n Array.from(keysY).forEach(keyY => pairs.push({\n [keyXField]: keyX,\n [keyYField]: keyY\n }));\n return pairs;\n }, []);\n }\n}\n\n/**\n * @hidden\n */\nlet Selection = /*#__PURE__*/(() => {\n class Selection {\n constructor(ctx, cd) {\n this.ctx = ctx;\n this.cd = cd;\n /**\n * Defines the collection that will store the selected item keys.\n * @default []\n */\n this.selectedKeys = [];\n /**\n * Defines the initial shift-click range selection starting column index when cell selection is enabled.\n *\n * @default 0\n */\n this.rangeSelectionStartColumnIndex = 0;\n /**\n * Fires when the `selectedKeys` collection has been updated.\n */\n this.selectedKeysChange = new EventEmitter();\n this.rowSelectionState = new Set();\n this.cellSelectionState = new PairSet();\n this.init();\n }\n /**\n * @hidden\n */\n get isCellSelectionMode() {\n return isPresent(this.ctx.grid.selectable) && this.ctx.grid.selectable['cell'];\n }\n ngOnChanges(changes) {\n // skip reinitialization if the user data is the same as the last state change\n if (isPresent(changes['selectedKeys']) && this.lastSelectionState !== this.selectedKeys) {\n this.setState(this.selectedKeys);\n }\n }\n init() {\n if (!isPresent(this.ctx.grid.rowSelected)) {\n this.ctx.grid.rowSelected = row => this.rowSelectionState.has(this.getItemKey(row));\n }\n if (!isPresent(this.ctx.grid.cellSelected)) {\n this.ctx.grid.cellSelected = (row, column, colIndex) => {\n const contender = this.getSelectionItem(row, column, colIndex);\n return {\n selected: this.cellSelectionState.has(contender.itemKey, contender.columnKey),\n item: contender\n };\n };\n }\n this.selectionChangeSubscription = this.ctx.grid.selectionChange.subscribe(this.onSelectionChange.bind(this));\n }\n /**\n * @hidden\n */\n destroy() {\n this.selectionChangeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n reset() {\n this.rowSelectionState.clear();\n this.cellSelectionState.clear();\n }\n /**\n * @hidden\n */\n getItemKey(row) {\n if (this.selectionKey) {\n if (typeof this.selectionKey === \"string\") {\n return row.dataItem[this.selectionKey];\n }\n if (typeof this.selectionKey === \"function\") {\n return this.selectionKey(row);\n }\n }\n return row.index;\n }\n /**\n * @hidden\n */\n stateToArray() {\n return this.isCellSelectionMode ? this.cellSelectionState.toArray('itemKey', 'columnKey') : Array.from(this.rowSelectionState);\n }\n getSelectionItem(row, col, colIndex) {\n const itemIdentifiers = {};\n itemIdentifiers.itemKey = this.getItemKey(row);\n if (!isPresent(col) && !isPresent(colIndex)) {\n return itemIdentifiers;\n }\n if (this.columnKey) {\n if (typeof this.columnKey === \"string\") {\n itemIdentifiers.columnKey = row.dataItem[this.columnKey];\n }\n if (typeof this.columnKey === \"function\") {\n itemIdentifiers.columnKey = this.columnKey(col, colIndex);\n }\n }\n return {\n itemKey: itemIdentifiers.itemKey,\n columnKey: itemIdentifiers.columnKey ? itemIdentifiers.columnKey : colIndex\n };\n }\n onSelectionChange(selection) {\n if (selection.selectedRows) {\n selection.deselectedRows.forEach(item => {\n const itemKey = this.getItemKey(item);\n this.rowSelectionState.delete(itemKey);\n });\n if (this.ctx.grid.selectableSettings.mode === \"single\" && this.rowSelectionState.size > 0) {\n this.reset();\n }\n selection.selectedRows.forEach(item => {\n const itemKey = this.getItemKey(item);\n this.rowSelectionState.add(itemKey);\n });\n } else {\n selection.deselectedCells.forEach(({\n itemKey,\n columnKey\n }) => {\n this.cellSelectionState.delete(itemKey, columnKey);\n });\n if (this.ctx.grid.selectableSettings.mode === \"single\" && this.cellSelectionState.size > 0) {\n this.reset();\n }\n selection.selectedCells.forEach(({\n itemKey,\n columnKey\n }) => {\n this.cellSelectionState.add(itemKey, columnKey);\n });\n }\n this.cd.markForCheck();\n this.notifyChange();\n }\n notifyChange() {\n this.lastSelectionState = this.stateToArray();\n this.selectedKeysChange.emit(this.lastSelectionState);\n }\n setState(selectedKeys) {\n this.reset();\n if (this.isCellSelectionMode) {\n this.cellSelectionState = new PairSet(selectedKeys, 'itemKey', 'columnKey');\n } else {\n this.rowSelectionState = new Set(selectedKeys);\n }\n }\n }\n Selection.ɵfac = function Selection_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || Selection)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n Selection.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: Selection,\n selectors: [[\"kendo-grid-selection-base\"]],\n inputs: {\n selectedKeys: \"selectedKeys\",\n rangeSelectionStartRow: \"rangeSelectionStartRow\",\n rangeSelectionStartColumnIndex: \"rangeSelectionStartColumnIndex\",\n selectionKey: [0, \"kendoGridSelectBy\", \"selectionKey\"],\n columnKey: \"columnKey\"\n },\n outputs: {\n selectedKeysChange: \"selectedKeysChange\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return Selection;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst set = value => pair => pair.forEach(x => x.style.height = value);\nconst clearHeight = pairs => pairs.filter(([left, right]) => left.style.height || right.style.height).forEach(set(\"\"));\nconst zip = (arr1, arr2) => {\n const result = [];\n for (let idx = 0, len = arr1.length; idx < len; idx++) {\n if (!arr2[idx]) {\n break;\n }\n result.push([arr1[idx], arr2[idx]]);\n }\n return result;\n};\nconst setHeight$1 = heights => (row, idx) => set(`${heights[idx] + 1}px`)(row);\nconst getHeights = rows => rows.map(([left, right]) => {\n const height = left.offsetHeight;\n const offsetHeight2 = right.offsetHeight;\n if (height < offsetHeight2) {\n return offsetHeight2;\n }\n return height;\n});\n/**\n * @hidden\n */\nconst syncRowsHeight = (table1, table2) => {\n if (!isDocumentAvailable()) {\n return;\n }\n const activeElement = document.activeElement;\n const rows = zip(table1.rows, table2.rows);\n clearHeight(rows);\n const heights = getHeights(rows);\n [table1, table2].forEach(x => x.style.display = 'none');\n rows.forEach(setHeight$1(heights));\n [table1, table2].forEach(x => x.style.display = '');\n if (document.activeElement !== activeElement && (table1.contains(activeElement) || table2.contains(activeElement))) {\n activeElement.focus();\n }\n};\n\n/**\n * Arguments for the `pdfExport` event.\n */\nclass PDFExportEvent extends PreventableEvent {\n /**\n * @hidden\n */\n constructor() {\n super();\n }\n}\nconst bootstrapToMedia = media => ({\n \"xs\": \"(max-width: 576px)\",\n \"sm\": \"(min-width: 576px)\",\n \"md\": \"(min-width: 768px)\",\n \"lg\": \"(min-width: 992px)\",\n \"xl\": \"(min-width: 1200px)\"\n})[media] || media;\nconst browserMatchMedia = media => window.matchMedia(media).matches;\n/**\n * @hidden\n */\nlet ResponsiveService = /*#__PURE__*/(() => {\n class ResponsiveService {\n constructor() {\n /**\n * @hidden\n */\n this.matchMedia = browserMatchMedia;\n }\n /**\n * @hidden\n */\n matchesMedia(media) {\n return !media || this.matchMedia(bootstrapToMedia(media));\n }\n }\n ResponsiveService.ɵfac = function ResponsiveService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResponsiveService)();\n };\n ResponsiveService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ResponsiveService,\n factory: ResponsiveService.ɵfac\n });\n return ResponsiveService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the toolbar template of the Grid.\n *\n * The template context has the following field:\n * - `position`—The position at which the toolbar template is rendered. The possible values are `top`, `bottom`, and `both`.\n *\n * @example\n * ```html\n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nlet ToolbarTemplateDirective = /*#__PURE__*/(() => {\n class ToolbarTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._position = 'top';\n }\n /**\n * The position of the toolbar ([see example]({% slug toolbartemplate_grid %}#toc-setting-the-toolbar-position)).\n *\n * @default 'top'\n */\n set position(position) {\n this._position = position;\n }\n get position() {\n return this._position;\n }\n }\n ToolbarTemplateDirective.ɵfac = function ToolbarTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ToolbarTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef, 8));\n };\n ToolbarTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ToolbarTemplateDirective,\n selectors: [[\"\", \"kendoGridToolbarTemplate\", \"\"]],\n inputs: {\n position: \"position\"\n },\n standalone: true\n });\n return ToolbarTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass NavigationMetadata {\n constructor(dataRows, headerRows, isVirtual, hasPager, hasDetailTemplate, gridElement, virtualColumns, columns) {\n this.dataRows = dataRows;\n this.headerRows = headerRows;\n this.isVirtual = isVirtual;\n this.hasPager = hasPager;\n this.hasDetailTemplate = hasDetailTemplate;\n this.gridElement = gridElement;\n this.virtualColumns = virtualColumns;\n this.columns = columns;\n }\n get maxLogicalRowIndex() {\n const dataRows = this.hasDetailTemplate ? this.dataRows * 2 : this.dataRows;\n return this.headerRows + dataRows - 1;\n }\n}\n\n/**\n * Arguments for the `columnVisibilityChange` event.\n */\nclass ColumnVisibilityChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * Arguments for the `columnLockedChange` event.\n */\nclass ColumnLockedChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * Arguments for the `columnStickyChange` event.\n */\nclass ColumnStickyChangeEvent {\n /**\n * @hidden\n */\n constructor(columns) {\n this.columns = columns;\n }\n}\n\n/**\n * @hidden\n */\nconst isNextSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.nextElementSibling;\n/**\n * @hidden\n */\nconst isPreviousSibling = (dropTarget, dragTarget) => dropTarget === dragTarget.previousElementSibling;\n/**\n * @hidden\n */\nconst isDifferentParent = (dropTarget, dragTarget) => dropTarget?.parentElement !== dragTarget?.parentElement;\n/**\n * @hidden\n */\nfunction getOffset(element) {\n const {\n clientTop,\n clientLeft\n } = getDocument(element);\n const {\n pageYOffset,\n pageXOffset\n } = getWindow(element);\n const {\n top,\n left\n } = element.getBoundingClientRect();\n return {\n top: top + pageYOffset - clientTop,\n left: left + pageXOffset - clientLeft\n };\n}\n/**\n * @hidden\n */\nconst hintIcons = {\n forbidden: 'cancel',\n before: 'insert-middle',\n after: 'insert-middle'\n};\n/**\n * @hidden\n */\nconst hintSVGIcons = {\n forbidden: cancelIcon,\n before: insertMiddleIcon,\n after: insertMiddleIcon\n};\n/**\n * @hidden\n */\nconst dropPosition = {\n forbidden: 'forbidden',\n before: 'before',\n after: 'after'\n};\n/**\n * @hidden\n */\nconst hintStyles = {\n zIndex: '20000',\n display: 'flex',\n position: 'fixed'\n};\n/**\n * @hidden\n */\nconst hintClasses = ['k-drag-clue', 'k-reorder-clue'];\n/**\n * @hidden\n */\nconst dropIndicatorStyles = {\n zIndex: '19000',\n position: 'absolute'\n};\n/**\n * @hidden\n */\nconst dropIndicatorClasses = ['k-drop-hint', 'k-drop-hint-h'];\n/**\n * @hidden\n */\nconst defaultSelectors = {\n handle: '.k-table-td.k-drag-cell',\n dragTarget: '.k-master-row',\n dropTarget: '.k-master-row'\n};\nconst getDocument = element => element?.ownerDocument.documentElement;\nconst getWindow = element => element?.ownerDocument.defaultView;\n\n/**\n * @hidden\n */\nlet RowReorderService = /*#__PURE__*/(() => {\n class RowReorderService {\n constructor(renderer) {\n this.renderer = renderer;\n this.hintElement = null;\n this.defaultSelectors = defaultSelectors;\n this.hintText = '';\n this.lastDropPosition = dropPosition.forbidden;\n this.dragTarget = null;\n this.dropTarget = null;\n this.rowReorder = new EventEmitter();\n }\n press(ev) {\n this.dragTarget = ev.dragTarget;\n this.offsetY = ev.dragEvent.offsetY;\n }\n dragStart() {\n this.createDropIndicator();\n }\n drag(ev) {\n if (isPresent$1(ev.hintElement) && !isPresent$1(this.hintElement)) {\n this.hintElement = ev.hintElement;\n this.decorateHint();\n }\n const position = {\n x: ev.dragEvent.clientX,\n y: ev.dragEvent.clientY - this.offsetY\n };\n if (isPresent$1(this.hintElement)) {\n this.renderer.setStyle(this.hintElement, 'left', `${position.x}px`);\n this.renderer.setStyle(this.hintElement, 'top', `${position.y}px`);\n }\n this.positionDropIndicator(ev);\n }\n dragEnter(ev) {\n this.dropTarget = ev.dropTarget;\n }\n dragLeave() {\n this.dropTarget = null;\n this.hide();\n }\n dragEnd() {\n this.destroyDropIndicator();\n this.dragTarget = null;\n this.dropTarget = null;\n this.hintElement = null;\n }\n drop(ev) {\n this.destroyDropIndicator();\n const rowReorderArgs = this.rowReorderArgs(this.dragTarget, this.dropTarget, ev.dragData);\n this.rowReorder.emit(rowReorderArgs);\n }\n reorderRows(ev, collection) {\n if (this.lastDropPosition === dropPosition.forbidden) {\n return;\n }\n const {\n draggedRows,\n dropTargetRow\n } = ev;\n const draggedDataItem = draggedRows[0].dataItem;\n const dropTargetDataItem = dropTargetRow.dataItem;\n const draggedItemIndex = collection.indexOf(draggedDataItem);\n const dropTargetIndex = collection.indexOf(dropTargetDataItem);\n const idxToAdd = this.calculateIndexToAdd(draggedItemIndex, dropTargetIndex);\n collection.splice(draggedItemIndex, 1);\n collection.splice(idxToAdd, 0, draggedDataItem);\n }\n get hintIcon() {\n return hintIcons[this.lastDropPosition];\n }\n get hintSVGIcon() {\n return hintSVGIcons[this.lastDropPosition];\n }\n getDefaultHintText(columns, data) {\n let hintText = '';\n const columnFieldsArray = columns.toArray().filter(column => !column.hidden && isPresent$1(column.field)).map(column => column.field);\n const draggedDragRow = this.getDragRowPerElement(this.dragTarget, data);\n const draggedDataItem = draggedDragRow?.dataItem;\n isPresent$1(draggedDataItem) && columnFieldsArray.forEach(column => {\n const columnValue = draggedDataItem[column];\n isPresent$1(columnValue) ? hintText += `${columnValue} ` : null;\n });\n return hintText.trim();\n }\n rowReorderArgs(dragRow, dropRow, data) {\n const dragRowData = this.getDragRowPerElement(dragRow, data);\n const dropRowData = this.getDragRowPerElement(dropRow, data);\n return {\n draggedRows: [dragRowData],\n dropTargetRow: dropRowData,\n dropPosition: this.lastDropPosition\n };\n }\n getDragRowPerElement(row, data) {\n let rowIndex = row?.getAttribute('data-kendo-grid-item-index');\n rowIndex = rowIndex ? parseInt(rowIndex, 10) : -1;\n const skip = this.skip || 0;\n const dataItem = rowIndex === -1 ? null : data[rowIndex - skip];\n return {\n dataItem,\n rowIndex,\n element: row\n };\n }\n createDropIndicator() {\n if (!isDocumentAvailable()) {\n return;\n }\n this.dropIndicator = document.createElement('div');\n this.decorateDropIndicator();\n this.dropIndicator.innerHTML = `\n
\n
\n `;\n document.body.appendChild(this.dropIndicator);\n this.hide();\n }\n destroyDropIndicator() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.dropIndicator && this.dropIndicator.parentElement) {\n document.body.removeChild(this.dropIndicator);\n this.dropIndicator = null;\n }\n }\n decorateHint() {\n hintClasses.forEach(className => this.renderer.addClass(this.hintElement, className));\n Object.keys(hintStyles).forEach(style => this.renderer.setStyle(this.hintElement, style, hintStyles[style]));\n }\n positionDropIndicator(ev) {\n this.lastDropPosition = this.getDropPosition(ev.dragEvent);\n this.updateDropIndicatorPosition();\n }\n calculateIndexToAdd(dragIndex, dropIndex) {\n if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.after) {\n return dropIndex + 1;\n } else if (dragIndex > dropIndex && this.lastDropPosition === dropPosition.before) {\n return dropIndex;\n } else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.after) {\n return dropIndex;\n } else if (dragIndex < dropIndex && this.lastDropPosition === dropPosition.before) {\n return dropIndex - 1;\n }\n }\n decorateDropIndicator() {\n dropIndicatorClasses.forEach(className => this.renderer.addClass(this.dropIndicator, className));\n Object.keys(dropIndicatorStyles).forEach(style => this.renderer.setStyle(this.dropIndicator, style, dropIndicatorStyles[style]));\n }\n getDropPosition(e) {\n if (this.dropTarget === this.dragTarget || !isPresent$1(this.dropTarget)) {\n return dropPosition.forbidden;\n }\n if (isDifferentParent(this.dropTarget, this.dragTarget)) {\n return dropPosition.forbidden;\n }\n const itemViewPortCoords = this.dropTarget.getBoundingClientRect();\n const itemDivisionsCount = 2;\n const itemDivisionHeight = itemViewPortCoords.height / itemDivisionsCount;\n const pointerPosition = e.clientY;\n const itemTop = itemViewPortCoords.top;\n let currentDropPosition = null;\n if (pointerPosition < itemTop + itemDivisionHeight) {\n currentDropPosition = dropPosition.before;\n } else if (pointerPosition >= itemTop + itemViewPortCoords.height - itemDivisionHeight) {\n currentDropPosition = dropPosition.after;\n }\n if (currentDropPosition === dropPosition.before && isNextSibling(this.dropTarget, this.dragTarget)) {\n currentDropPosition = dropPosition.forbidden;\n } else if (currentDropPosition === dropPosition.after && isPreviousSibling(this.dropTarget, this.dragTarget)) {\n currentDropPosition = dropPosition.forbidden;\n }\n return currentDropPosition;\n }\n updateDropIndicatorPosition() {\n if (this.shouldHideDropIndicator() || !this.dropTarget) {\n this.hide();\n return;\n }\n this.show();\n const destinationItemOffset = getOffset(this.dropTarget);\n let indicatorOffsetTop = destinationItemOffset.top;\n const indicatorOffsetLeft = destinationItemOffset.left + this.dropIndicator.offsetWidth / 2;\n if (this.lastDropPosition === dropPosition.after) {\n indicatorOffsetTop += this.dropTarget.offsetHeight;\n }\n this.renderer.setStyle(this.dropIndicator, 'left', `${indicatorOffsetLeft}px`);\n this.renderer.setStyle(this.dropIndicator, 'top', `${indicatorOffsetTop}px`);\n }\n shouldHideDropIndicator() {\n return this.lastDropPosition === dropPosition.forbidden;\n }\n hide() {\n if (isPresent$1(this.dropIndicator)) {\n this.dropIndicator.style.display = 'none';\n }\n }\n show() {\n if (isPresent$1(this.dropIndicator)) {\n this.dropIndicator.style.display = '';\n }\n }\n }\n RowReorderService.ɵfac = function RowReorderService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RowReorderService)(i0.ɵɵinject(i0.Renderer2));\n };\n RowReorderService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RowReorderService,\n factory: RowReorderService.ɵfac\n });\n return RowReorderService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the status bar template of the Grid. Allows you to visualize the aggregates using custom rendering inside the template.\n * The template context has the following field:\n * - `aggregates`—The [SelectionAggregates]({% slug api_grid_selectionaggregates %}) object that contains all calculated aggregates.\n * Use the Angular [ngFor](link:site.data.urls.angular['ngfor']) structural directive combined with the [KeyValuePipe](https://angular.io/api/common/KeyValuePipe)\n * to loop through the aggregates as key-value pairs.\n */\nlet StatusBarTemplateDirective = /*#__PURE__*/(() => {\n class StatusBarTemplateDirective {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n }\n StatusBarTemplateDirective.ɵfac = function StatusBarTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StatusBarTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n StatusBarTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: StatusBarTemplateDirective,\n selectors: [[\"\", \"kendoGridStatusBarTemplate\", \"\"]],\n standalone: true\n });\n return StatusBarTemplateDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ClipboardService = /*#__PURE__*/(() => {\n class ClipboardService {\n constructor(contextService) {\n this.contextService = contextService;\n this.itemToString = (item, cols) => {\n if (!cols.length) {\n return null;\n }\n return cols.map(col => item[col.field]).join(`\\t`);\n };\n }\n createClipboardData(data, columns, options) {\n let result = {\n gridItems: [],\n dataString: ''\n };\n const fieldCols = columns.flatMap(c => c instanceof ColumnComponent && isPresent$1(c.field) ? [c] : []);\n const clipboardData = {\n items: [],\n dataStrings: []\n };\n const colFields = fieldCols.map(c => c.field);\n if (options.wholeRow) {\n this.targetColField = fieldCols[0]?.field;\n this.targetRowIndex = data[0].dataRowIndex;\n data.forEach(item => {\n clipboardData.items.push({\n dataItem: {\n ...item.dataItem\n },\n fields: colFields\n });\n clipboardData.dataStrings.push(this.itemToString(item.dataItem, fieldCols));\n });\n result = {\n gridItems: options.operationType === 'cut' ? clipboardData.items.map(item => {\n item.fields.forEach(field => item.dataItem[field] = null);\n return item;\n }) : [...clipboardData.items],\n dataString: options.copyHeaders ? this.addHeaders(clipboardData.dataStrings.join(`\\r\\n`), fieldCols) : clipboardData.dataStrings.join(`\\n`)\n };\n } else {\n if (options.target === 'selection') {\n const {\n tabular,\n groups\n } = this.groupSelection();\n const selectionDirective = this.contextService.grid.selectionDirective;\n const colIdentifier = selectionDirective.columnKey;\n if (tabular) {\n const selectionKeys = groups[0].items.map(item => item.columnKey);\n const selectedFieldCols = columns.flatMap((c, i) => c instanceof ColumnComponent && c.field && isPresent$1(selectionKeys.find(k => typeof colIdentifier === 'function' ? k === colIdentifier(c, i) : k === i)) ? [c] : []);\n const selectedColFields = selectedFieldCols.map(c => c.field);\n this.targetColField = selectedColFields[0];\n result.dataString = data.flatMap(item => {\n const itemString = this.itemToString(item.dataItem, selectedFieldCols);\n const existingItem = isPresent$1(itemString);\n if (!isPresent$1(this.targetRowIndex) && isPresent$1(itemString)) {\n this.targetRowIndex = item.dataRowIndex;\n }\n if (options.operationType === 'cut') {\n selectedColFields.forEach(f => item.dataItem[f] = null);\n }\n result.gridItems.push({\n dataItem: item.dataItem,\n fields: selectedColFields\n });\n return existingItem ? [itemString] : [];\n }).join(`\\r\\n`);\n if (options.copyHeaders) {\n result.dataString = this.addHeaders(result.dataString, selectedFieldCols);\n }\n } else {\n // split per row (uneven rows)\n const rowIdentifier = selectionDirective.selectionKey;\n result.dataString = data.flatMap(item => {\n // determine cols per item\n const key = rowIdentifier ? typeof rowIdentifier === 'string' ? item.dataItem[rowIdentifier] : rowIdentifier({\n index: item.dataRowIndex,\n dataItem: item.dataItem\n }) : item.dataRowIndex;\n const selectionKeys = groups.find(gr => gr.value === key).items.map(item => item.columnKey);\n const selectedFieldCols = columns.flatMap((c, i) => c instanceof ColumnComponent && c.field && isPresent$1(selectionKeys.find(k => typeof colIdentifier === 'function' ? k === colIdentifier(c, i) : k === i)) ? [c] : []);\n const selectedColFields = selectedFieldCols.map(c => c.field);\n if (!this.targetColField) {\n this.targetColField = selectedColFields[0];\n }\n const itemString = this.itemToString(item.dataItem, selectedFieldCols);\n const existingItem = isPresent$1(itemString);\n if (!isPresent$1(this.targetRowIndex) && existingItem) {\n this.targetRowIndex = item.dataRowIndex;\n }\n if (existingItem) {\n if (options.operationType === 'cut') {\n selectedColFields.forEach(f => item.dataItem[f] = null);\n }\n result.gridItems.push({\n dataItem: item.dataItem,\n fields: selectedColFields\n });\n }\n return existingItem ? options.copyHeaders ? [this.addHeaders(itemString, selectedFieldCols)] : [itemString] : [];\n }).join(`\\r\\n`);\n }\n } else {\n const item = data[0];\n const col = columns[item.colIndex];\n const colField = col.field;\n const title = col.title;\n const copiedData = item.dataItem[colField];\n this.targetRowIndex = item.dataRowIndex;\n this.targetColField = colField;\n if (options.operationType === 'cut' && colField) {\n item.dataItem[colField] = null;\n }\n result = {\n gridItems: [{\n dataItem: item.dataItem,\n fields: colField ? [colField] : []\n }],\n dataString: options.copyHeaders ? [title || colField, copiedData].join(`\\r\\n`) : colField ? copiedData : ``\n };\n }\n }\n return result;\n }\n getGridData(data, columns, targetType, targetRowIndex, options) {\n const separator = data.includes(`\\r\\n`) ? `\\r\\n` : data.includes(`\\n`) ? `\\n` : null;\n const dataRows = separator ? data.split(separator).filter(rowData => rowData.length) : [data];\n this.targetRowIndex = targetRowIndex;\n if (targetType === 'activeCell') {\n if (options.wholeRow) {\n this.targetColField = columns.find(c => c instanceof ColumnComponent && c.field)?.field;\n } else {\n const activeCellIndex = this.contextService.grid.activeCell.colIndex;\n for (let i = 0; i < columns.length; i++) {\n const col = columns[i];\n if (col instanceof ColumnComponent && col.field && i >= activeCellIndex) {\n this.targetColField = col.field;\n break;\n }\n }\n }\n } else {\n if (options.wholeRow || !options.isCellSelection) {\n this.targetColField = columns.filter(c => c instanceof ColumnComponent && c.field)[0]['field'];\n } else {\n const {\n groups\n } = this.groupSelection();\n const selectionDirective = this.contextService.grid.selectionDirective;\n const colIdentifier = selectionDirective.columnKey;\n const visibleCols = columns.filter(c => c.isVisible);\n const selectionKeys = groups[0].items.map(item => item.columnKey);\n const selectedFieldCols = visibleCols.flatMap((c, i) => c instanceof ColumnComponent && c.field && isPresent$1(selectionKeys.find(k => typeof colIdentifier === 'function' ? k === colIdentifier(c, i) : k === i)) ? [c] : []);\n const selectedColFields = selectedFieldCols.map(c => c.field);\n this.targetColField = selectedColFields[0];\n }\n }\n const items = dataRows.map(rowString => {\n const cells = rowString.includes(`\\t`) ? rowString.split(`\\t`) : [rowString];\n const colFields = columns.flatMap(c => c instanceof ColumnComponent && c.field ? [c.field] : []);\n const targetColFieldIndex = colFields.indexOf(this.targetColField);\n const affectedFields = colFields.slice(targetColFieldIndex, targetColFieldIndex + cells.length);\n const item = {};\n colFields.slice(targetColFieldIndex, targetColFieldIndex + cells.length).forEach((colField, index) => item[colField] = cells[index]);\n return {\n dataItem: item,\n fields: affectedFields\n };\n });\n return items;\n }\n groupSelection() {\n const selection = this.contextService.grid.selection;\n const groups = groupBy(selection, [{\n field: 'itemKey'\n }]).map(gr => {\n gr.items.sort((a, b) => a.columnKey - b.columnKey);\n return gr;\n });\n for (let i = 1; i < groups.length; i++) {\n if (!this.areEqual(groups[i].items, groups[i - 1].items)) {\n return {\n tabular: false,\n groups\n };\n }\n }\n return {\n tabular: true,\n groups\n };\n }\n areEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i].columnKey !== arr2[i].columnKey) {\n return false;\n }\n }\n return true;\n }\n addHeaders(initialData, cols) {\n const headersRowData = cols.map(c => c.title || c.field).join(`\\t`);\n return `${headersRowData}\\r\\n${initialData}`;\n }\n }\n ClipboardService.ɵfac = function ClipboardService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ClipboardService)(i0.ɵɵinject(ContextService));\n };\n ClipboardService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ClipboardService,\n factory: ClipboardService.ɵfac\n });\n return ClipboardService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet StatusBarComponent = /*#__PURE__*/(() => {\n class StatusBarComponent {\n constructor(aggregateService) {\n this.aggregateService = aggregateService;\n this.hostClasses = true;\n }\n get isStatusBarTemplate() {\n return this.statusBarTemplate ? '' : 'none';\n }\n ngOnInit() {\n this.aggregateService.init();\n }\n get aggregates() {\n return this.aggregateService.aggregates;\n }\n }\n StatusBarComponent.ɵfac = function StatusBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || StatusBarComponent)(i0.ɵɵdirectiveInject(CellSelectionAggregateService));\n };\n StatusBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: StatusBarComponent,\n selectors: [[\"kendo-grid-status-bar\"]],\n hostVars: 6,\n hostBindings: function StatusBarComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", ctx.isStatusBarTemplate);\n i0.ɵɵclassProp(\"k-selection-aggregates\", ctx.hostClasses)(\"k-grid-selection-aggregates\", ctx.hostClasses);\n }\n },\n inputs: {\n statusBarTemplate: \"statusBarTemplate\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function StatusBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, StatusBarComponent_0_Template, 1, 4, null, 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.statusBarTemplate);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet],\n encapsulation: 2\n });\n return StatusBarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst createElement = () => {\n if (!isDocumentAvailable()) {\n return;\n }\n const marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n const marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n return marquee;\n};\nconst POINTER_OFFSET = 2;\nconst MINIMAL_DRAG_DISTANCE = 5;\nconst offsets = {\n topLeft: {\n x: POINTER_OFFSET,\n y: POINTER_OFFSET\n },\n topRight: {\n x: -POINTER_OFFSET,\n y: POINTER_OFFSET\n },\n bottomLeft: {\n x: POINTER_OFFSET,\n y: -POINTER_OFFSET\n },\n bottomRight: {\n x: -POINTER_OFFSET,\n y: -POINTER_OFFSET\n }\n};\n/**\n * @hidden\n */\nlet GridMarqueeDirective = /*#__PURE__*/(() => {\n class GridMarqueeDirective {\n constructor(draggable, selection, cellSelection, domEvents, host, renderer) {\n this.draggable = draggable;\n this.selection = selection;\n this.cellSelection = cellSelection;\n this.domEvents = domEvents;\n this.host = host;\n this.renderer = renderer;\n this.selectionStarted = false;\n }\n ngOnInit() {\n this.subscriptions = this.draggable.kendoPress.subscribe(this.start.bind(this));\n this.subscriptions.add(this.draggable.kendoDrag.subscribe(this.moveMarquee.bind(this)));\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.clean();\n }\n start(args) {\n const isInvalidTarget = args.originalEvent.target.matches('.k-grid-content, .k-grid-content-locked, .k-grid-aria-root, .k-checkbox');\n const isRowReorderColumn = isPresent$1(args.originalEvent.target.closest('.k-drag-cell'));\n if (isInvalidTarget || isRowReorderColumn) {\n this.pressArgs = null;\n return;\n }\n this.pressArgs = args;\n this.pressTarget = null;\n }\n moveMarquee(args) {\n if (!this.pressTarget) {\n this.pressTarget = this.cellSelection.active ? this.cellSelection.mouseDownEventArgs : this.selection.mouseDownEventArgs;\n }\n const press = this.pressArgs;\n if (!press) {\n return;\n }\n if (!this.selectionStarted) {\n const distance = Math.sqrt((args.pageX - press.pageX) ** 2 + (args.pageY - press.pageY) ** 2);\n if (distance > MINIMAL_DRAG_DISTANCE) {\n this.selectionStarted = true;\n this.renderer.addClass(this.host.nativeElement, 'user-select-none');\n this.renderer.setStyle(this.host.nativeElement, 'user-select', 'none');\n this.dragEndSubscription = merge(this.domEvents.cellMouseup.pipe(take(1)), this.draggable.kendoRelease.pipe(delay(1), take(1))).subscribe(this.endSelection.bind(this));\n } else {\n return;\n }\n }\n this.initMarquee();\n const element = this.marqueeElement;\n const marqueeQuadrant = this.getMarqueeQuadrant(args.pageX, args.pageY, press.pageX, press.pageY);\n let left = Math.min(args.pageX, press.pageX);\n let top = Math.min(args.pageY, press.pageY);\n const width = Math.abs(args.pageX - press.pageX);\n const height = Math.abs(args.pageY - press.pageY);\n if (marqueeQuadrant) {\n left += offsets[marqueeQuadrant].x;\n top += offsets[marqueeQuadrant].y;\n }\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n }\n endSelection(args) {\n if (args.type === 'mouseup' || args.type === 'touchend') {\n if (this.cellSelection.active) {\n this.cellSelection.dragging = true;\n this.cellSelection.changes.emit(this.cellSelection.selectRange(this.pressTarget.rowIndex, this.pressTarget.column.leafIndex, args.rowIndex, args.column.leafIndex));\n } else if (this.selection.active) {\n this.selection.dragging = true;\n this.selection.changes.emit(this.selection.selectRange(this.pressTarget.rowIndex, args.rowIndex));\n }\n }\n this.clean();\n }\n clean() {\n if (this.marqueeElement) {\n document.body.removeChild(this.marqueeElement);\n this.marqueeElement = null;\n }\n if (this.dragEndSubscription) {\n this.dragEndSubscription.unsubscribe();\n }\n this.renderer.removeClass(this.host.nativeElement, 'user-select-none');\n this.renderer.removeStyle(this.host.nativeElement, 'user-select');\n this.dragEndSubscription = null;\n this.pressTarget = null;\n this.pressArgs = null;\n this.selectionStarted = false;\n // eslint-disable-next-line no-unused-expressions\n this.cellSelection.active ? this.cellSelection.dragging = false : this.selection.dragging = false;\n }\n initMarquee() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (!this.marqueeElement) {\n this.marqueeElement = createElement();\n document.body.appendChild(this.marqueeElement);\n }\n }\n getMarqueeQuadrant(pointerX, pointerY, startX, startY) {\n const leftHalf = pointerX < startX;\n const rightHalf = pointerX > startX;\n const topHalf = pointerY < startY;\n const bottomHalf = pointerY > startY;\n if (leftHalf && topHalf) {\n return 'topLeft';\n }\n if (leftHalf && bottomHalf) {\n return 'bottomLeft';\n }\n if (rightHalf && topHalf) {\n return 'topRight';\n }\n if (rightHalf && bottomHalf) {\n return 'bottomRight';\n }\n return null;\n }\n }\n GridMarqueeDirective.ɵfac = function GridMarqueeDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridMarqueeDirective)(i0.ɵɵdirectiveInject(i9.DraggableDirective), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(CellSelectionService), i0.ɵɵdirectiveInject(DomEventsService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n GridMarqueeDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GridMarqueeDirective,\n selectors: [[\"\", \"kendoGridSelectionMarquee\", \"\"]],\n standalone: true\n });\n return GridMarqueeDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst update = (arr, idx, value) => [...arr.slice(0, idx + 1), ...arr.slice(idx + 1).map(x => x + value)];\n/**\n * @hidden\n */\nclass RowHeightService {\n constructor(total = 0, rowHeight, detailRowHeight) {\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n let agg = 0;\n for (let idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n height(rowIndex) {\n return this.heights[rowIndex];\n }\n expandDetail(rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n }\n collapseDetail(rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n }\n isExpanded(rowIndex) {\n return this.height(rowIndex) > this.rowHeight;\n }\n index(position) {\n if (position < 0) {\n return undefined;\n }\n const result = this.offsets.reduce((prev, current, idx) => {\n if (prev !== undefined) {\n return prev;\n } else if (current === position) {\n return idx;\n } else if (current > position) {\n return idx - 1;\n }\n return undefined;\n }, undefined);\n return result === undefined ? this.total - 1 : result;\n }\n offset(rowIndex, adjustIndex = false) {\n if (adjustIndex) {\n let targetOffset = 0;\n let targetIndex = 0;\n for (let i = 0; i < rowIndex; i++) {\n targetOffset += this.rowHeight;\n targetIndex++;\n if (targetIndex === rowIndex) {\n return targetOffset;\n }\n if (this.isExpanded(i)) {\n targetOffset += this.detailRowHeight;\n targetIndex++;\n if (targetIndex === rowIndex) {\n return targetOffset;\n }\n }\n }\n return targetOffset;\n }\n return this.offsets[rowIndex];\n }\n totalHeight() {\n return this.heights.reduce((prev, curr) => prev + curr, 0);\n }\n updateRowHeight(rowIndex, value) {\n if (this.total > 0) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n }\n }\n}\n\n/**\n * @hidden\n */\nclass ScrollAction {\n constructor(offset) {\n this.offset = offset;\n }\n}\n/**\n * @hidden\n */\nclass PageAction {\n constructor(skip, take) {\n this.skip = skip;\n this.take = take;\n }\n}\n/**\n * @hidden\n */\nclass ScrollBottomAction {}\nconst SCROLL_BOTTOM_THRESHOLD = 2;\n/**\n * @hidden\n */\nclass ScrollerService {\n constructor(scrollObservable) {\n this.scrollObservable = scrollObservable;\n this.firstLoaded = 0;\n }\n create(rowHeightService, skip, take, total) {\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScrollTop = 0;\n const subject = new BehaviorSubject(new ScrollAction(this.rowHeightService.offset(skip)));\n this.subscription = Observable.create(observer => {\n this.unsubscribe();\n this.scrollSubscription = this.scrollObservable.subscribe(x => this.onScroll(x, observer));\n }).subscribe(x => subject.next(x));\n return subject;\n }\n destroy() {\n this.unsubscribe();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n onScroll({\n scrollTop,\n offsetHeight,\n scrollHeight,\n clientHeight\n }, observer) {\n if (!isDocumentAvailable() || this.lastScrollTop === scrollTop) {\n return;\n }\n const up = this.lastScrollTop >= scrollTop;\n this.lastScrollTop = scrollTop;\n let firstItemIndex = this.rowHeightService.index(scrollTop);\n let firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n const lastItemIndex = this.rowHeightService.index(scrollTop + offsetHeight);\n if (!up) {\n if (lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n const overflow = firstItemIndex + this.take - this.total;\n if (overflow > 0) {\n firstItemIndex = firstItemIndex - overflow;\n firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n }\n this.firstLoaded = firstItemIndex;\n observer.next(new ScrollAction(firstItemOffset));\n let nextTake = this.firstLoaded + this.take;\n this.lastLoaded = Math.min(nextTake, this.total);\n nextTake = nextTake > this.total ? this.total - this.firstLoaded : this.take;\n observer.next(new PageAction(this.firstLoaded, this.take));\n } else {\n const atBottom = scrollHeight - clientHeight - scrollTop < SCROLL_BOTTOM_THRESHOLD;\n if (atBottom) {\n observer.next(new ScrollBottomAction());\n }\n }\n }\n if (up && firstItemIndex < this.firstLoaded) {\n const nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = Math.max(firstItemIndex - nonVisibleBuffer, 0);\n observer.next(new ScrollAction(this.rowHeightService.offset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n observer.next(new PageAction(this.firstLoaded, this.take));\n }\n }\n unsubscribe() {\n if (this.scrollSubscription) {\n this.scrollSubscription.unsubscribe();\n this.scrollSubscription = undefined;\n }\n }\n}\n\n/**\n * @hidden\n */\nconst columnsToResize = ({\n columns\n}) => Math.max(1, resizableColumns(columns).length);\n/**\n * @hidden\n */\nconst row = selector => element => element.querySelector(selector);\n/**\n * @hidden\n */\nconst headerRow = index => element => element.querySelectorAll('thead>tr')[index];\n/**\n * @hidden\n */\nconst cell = (index, selector = 'td') => element => element.querySelectorAll(`${selector}:not(.k-group-cell):not(.k-hierarchy-cell)`)[index];\n/**\n * @hidden\n */\nconst offsetWidth = element => element.offsetWidth;\n/**\n * @hidden\n */\nconst pipe = (...fns) => data => fns.reduce((state, fn) => state ? fn(state) : 0, data);\n/**\n * @hidden\n */\nlet TableDirective = /*#__PURE__*/(() => {\n class TableDirective {\n constructor(element, renderer, service, zone, cdr) {\n this.element = element;\n this.renderer = renderer;\n this.service = service;\n this.zone = zone;\n this.cdr = cdr;\n this.locked = false;\n this.firstResize = false;\n }\n get minWidth() {\n return this.firstResize ? 0 : null;\n }\n ngOnInit() {\n const obs = this.service.changes.pipe(filter(e => this.locked === e.locked));\n this.subscription = obs.pipe(filter(e => e.type === 'start'), tap(this.initState.bind(this)), map(columnsToResize), switchMap(take => obs.pipe(filter(e => e.type === 'resizeTable'), map(e => e.delta), bufferCount(take)))).subscribe(this.resize.bind(this));\n this.autoFitSubscription = this.service.registerTable({\n autoFit: this.autoFitObservable.bind(this),\n locked: this.locked\n });\n }\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n if (this.autoFitSubscription) {\n this.autoFitSubscription();\n this.autoFitSubscription = null;\n }\n }\n initState() {\n this.firstResize = true;\n if (!this.virtualColumns || this.locked) {\n this.originalWidth = offsetWidth(this.element.nativeElement);\n }\n }\n resize(deltas) {\n if (!this.virtualColumns || this.locked) {\n const delta = deltas.reduce((sum, item) => sum + item, 0);\n const width = this.originalWidth + delta;\n this.renderer.setStyle(this.element.nativeElement, 'width', width + 'px');\n }\n this.cdr.detectChanges();\n }\n autoFitObservable(columnInfo) {\n return Observable.create(observer => {\n this.zone.runOutsideAngular(() => {\n this.renderer.addClass(this.element.nativeElement, 'k-autofitting');\n this.cdr.detectChanges();\n const widths = columnInfo.map(this.measureColumn.bind(this));\n this.renderer.removeClass(this.element.nativeElement, 'k-autofitting');\n observer.next(widths);\n });\n });\n }\n measureColumn(info) {\n const dom = this.element.nativeElement;\n const header = pipe(headerRow(info.level), cell(info.headerIndex, 'th'), offsetWidth)(dom);\n let data = 0;\n if (!info.isParentSpan || info.isParentSpan && info.isLastInSpan) {\n data = pipe(row('tbody>tr:not(.k-grouping-row):not(.k-grid-norecords)'), cell(info.index), offsetWidth)(dom);\n }\n const footer = pipe(row('tfoot>tr'), cell(info.index), offsetWidth)(dom);\n return Math.max(header, data, footer);\n }\n }\n TableDirective.ɵfac = function TableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ColumnResizingService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n TableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TableDirective,\n selectors: [[\"\", \"kendoGridResizableTable\", \"\"]],\n hostVars: 2,\n hostBindings: function TableDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"min-width\", ctx.minWidth);\n }\n },\n inputs: {\n locked: \"locked\",\n virtualColumns: \"virtualColumns\"\n },\n standalone: true\n });\n return TableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst elementAt = (index, elements, elementOffset) => {\n for (let idx = 0, elementIdx = 0; idx < elements.length; idx++) {\n const offset = elementOffset(elements[idx]);\n if (elementIdx <= index && index <= elementIdx + offset - 1) {\n return elements[idx];\n }\n elementIdx += offset;\n }\n};\nconst rowAt = (index, rows) => elementAt(index, rows, () => 1);\nconst cellAt = (index, cells) => elementAt(index, cells, cell => !hasClasses(cell, NON_DATA_CELL_CLASSES) ? parseInt(cell.getAttribute('colSpan'), 10) || 1 : 0);\nconst EMPTY_OBJECT = {};\n/**\n * @hidden\n */\nconst SCROLLER_FACTORY_TOKEN = new InjectionToken('grid-scroll-service-factory');\n/**\n * @hidden\n */\nfunction DEFAULT_SCROLLER_FACTORY(observable) {\n return new ScrollerService(observable);\n}\nconst wheelDeltaY = e => {\n const deltaY = e.wheelDeltaY;\n if (e.wheelDelta && (deltaY === undefined || deltaY)) {\n return e.wheelDelta;\n } else if (e.detail && e.axis === e.VERTICAL_AXIS) {\n return -e.detail * 10;\n }\n return 0;\n};\nconst preventLockedScroll = (args, element) => {\n const delta = wheelDeltaY(args);\n const scrollTop = element.scrollTop;\n const allowScroll = scrollTop === 0 && 0 < delta || element.scrollHeight <= element.offsetHeight + scrollTop && delta < 0;\n if (!allowScroll) {\n event.preventDefault();\n }\n};\nconst translateY = (renderer, value) => el => renderer.setStyle(el, \"transform\", `translateY(${value}px)`);\nconst maybeNativeElement = el => el ? el.nativeElement : null;\nconst hasScrollbar = (el, parent) => el.nativeElement.offsetWidth > parent.nativeElement.clientWidth;\nconst setHeight = renderer => ({\n el,\n height\n}) => renderer.setStyle(el, \"height\", `${height}px`);\nconst bufferSize = 1;\n/**\n * @hidden\n */\nlet ListComponent = /*#__PURE__*/(() => {\n class ListComponent {\n constructor(scrollerFactory, detailsService, changeNotification, suspendService, groupsService, ngZone, renderer, scrollSyncService, resizeService, editService, supportService, navigationService, scrollRequestService, ctx, columnResizingService, changeDetector, pdfService, columnInfo) {\n this.changeNotification = changeNotification;\n this.suspendService = suspendService;\n this.groupsService = groupsService;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.scrollSyncService = scrollSyncService;\n this.resizeService = resizeService;\n this.editService = editService;\n this.supportService = supportService;\n this.navigationService = navigationService;\n this.ctx = ctx;\n this.columnResizingService = columnResizingService;\n this.changeDetector = changeDetector;\n this.pdfService = pdfService;\n this.columnInfo = columnInfo;\n this.hostClass = true;\n this.hostRole = 'presentation';\n this.groups = [];\n this.skip = 0;\n this.columns = new ColumnsContainer(() => []);\n this.selectable = false;\n this.groupable = false;\n this.trackBy = defaultTrackBy;\n this.sort = new Array();\n this.size = 'medium';\n this.contentScroll = new EventEmitter();\n this.pageChange = new EventEmitter();\n this.scrollBottom = new EventEmitter();\n this.columnsStartIdx = 0;\n this.resizeSensors = new QueryList();\n this.dispatcher = new Subject();\n this.containerScrollTop = 0;\n this.scrollLeft = 0;\n this.rtl = false;\n this.scroller = scrollerFactory(this.dispatcher);\n this.subscriptions = detailsService.changes.subscribe(x => this.detailExpand(x));\n this.subscriptions.add(scrollRequestService.requests.subscribe(req => isPresent(req.adjustIndex) ? this.scrollTo(req.request, req.adjustIndex) : this.scrollToItem(req.request)));\n }\n get showFooter() {\n return this.groupable && this.groupable.showFooter;\n }\n get totalWidth() {\n if (this.virtualColumns && this.columns.unlockedWidth) {\n return this.columns.unlockedWidth;\n }\n }\n get lockedLeafColumns() {\n return this.columns.lockedLeafColumns;\n }\n get nonLockedLeafColumns() {\n return this.columns.nonLockedLeafColumns;\n }\n get nonLockedColumnsToRender() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.viewportColumns;\n }\n return this.nonLockedLeafColumns;\n }\n get leafColumns() {\n return this.columns.leafColumnsToRender;\n }\n get lockedWidth() {\n const groupCellsWidth = this.groups.length * GROUP_CELL_WIDTH;\n return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);\n }\n get nonLockedWidth() {\n if (!this.rtl && this.lockedLeafColumns.length || this.virtualColumns) {\n return sumColumnWidths(expandColumns(this.nonLockedColumnsToRender.toArray()));\n }\n return undefined;\n }\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n ngOnInit() {\n this.init();\n this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowSync.bind(this)));\n this.subscriptions.add(this.ngZone.runOutsideAngular(this.handleRowNavigationLocked.bind(this)));\n this.subscriptions.add(merge(this.columns.changes, this.resizeService.changes).subscribe(() => {\n if (this.virtualColumns) {\n this.ngZone.run(() => {\n this.updateViewportColumns();\n this.changeDetector.markForCheck();\n });\n }\n }));\n this.subscriptions.add(this.ctx.localization.changes.subscribe(({\n rtl\n }) => this.rtl = rtl));\n }\n ngOnChanges(changes) {\n if (!isDocumentAvailable()) {\n return;\n }\n const changesInSkip = changes['skip'];\n const hasInitialSkip = changesInSkip && changesInSkip.firstChange && changesInSkip.currentValue > 0;\n if (hasInitialSkip) {\n this.handleInitialScrollToSkip();\n }\n if (isChanged$1(\"skip\", changes) && !this.rebind) {\n this.skipScroll = true;\n this.container.nativeElement.scrollTop = this.rowHeightService.offset(this.skip);\n }\n if (anyChanged(['total', 'take'], changes)) {\n this.init();\n }\n this.rebind = false;\n }\n ngDoCheck() {\n if (this.virtualColumns && (!this.viewportColumns || this.viewportWidthChange())) {\n this.updateViewportColumns();\n }\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.skip && this.isVirtual) {\n this.container.nativeElement.scrollTop = this.rowHeightService.offset(this.skip);\n }\n this.resetNavigationViewport();\n this.attachContainerScroll();\n this.initResizeService();\n }\n ngAfterViewChecked() {\n const isLocked = this.isLocked;\n if (isLocked && !this.hasLockedContainer) {\n this.syncRowsHeight();\n }\n this.hasLockedContainer = isLocked;\n }\n syncRowsHeight() {\n if (this.lockedContainer) {\n syncRowsHeight(this.lockedTable.nativeElement, this.table.nativeElement);\n }\n }\n ngOnDestroy() {\n if (this.subscriptions) {\n this.subscriptions.unsubscribe();\n }\n if (this.resizeService) {\n this.resizeService.destroy();\n }\n this.cleanupScroller();\n }\n init() {\n if (this.suspendService.scroll) {\n return;\n }\n this.rowHeightService = new RowHeightService(this.total, this.rowHeight, this.detailRowHeight);\n this.totalHeight = this.rowHeightService.totalHeight();\n if (!isUniversal()) {\n this.ngZone.runOutsideAngular(this.createScroller.bind(this));\n }\n }\n lockedScroll() {\n if (!this.suspendService.scroll) {\n const lockedScrollTop = this.lockedContainer.nativeElement.scrollTop;\n if (lockedScrollTop !== this.containerScrollTop) {\n this.container.nativeElement.scrollTop = this.containerScrollTop = lockedScrollTop;\n }\n }\n }\n lockedMousewheel(args) {\n if (!args.ctrlKey) {\n preventLockedScroll(args, this.container.nativeElement);\n const scrollDelta = wheelDeltaY(args);\n this.container.nativeElement.scrollTop -= scrollDelta;\n }\n }\n lockedKeydown(args) {\n if (args.keyCode === Keys.PageDown || args.keyCode === Keys.PageUp) {\n const dir = args.keyCode === Keys.PageDown ? 1 : -1;\n const element = this.container.nativeElement;\n element.scrollTop += element.offsetHeight * dir * 0.8;\n args.preventDefault();\n }\n }\n detailExpand({\n index,\n expand\n }) {\n if (expand) {\n this.rowHeightService.expandDetail(index);\n } else {\n this.rowHeightService.collapseDetail(index);\n }\n this.totalHeight = this.rowHeightService.totalHeight();\n this.resetNavigationViewport();\n }\n attachContainerScroll() {\n if (isUniversal()) {\n return;\n }\n this.ngZone.runOutsideAngular(() => {\n this.subscriptions.add(fromEvent(this.container.nativeElement, 'scroll').pipe(map(event => event.target), filter(() => !this.suspendService.scroll), tap(target => {\n this.onContainerScroll(target);\n this.resetNavigationViewport();\n if (this.virtualColumns || this.isVirtual) {\n this.handleColumnScroll();\n }\n const rowViewport = this.navigationService.viewport || EMPTY_OBJECT;\n const columnViewport = this.navigationService.columnViewport || EMPTY_OBJECT;\n this.contentScroll.emit({\n scrollLeft: target.scrollLeft,\n scrollTop: target.scrollTop,\n startRow: rowViewport.firstItemIndex,\n endRow: rowViewport.lastItemIndex,\n startColumn: columnViewport.firstItemIndex,\n endColumn: columnViewport.lastItemIndex\n });\n })).subscribe(this.dispatcher));\n });\n this.scrollSyncService.registerEmitter(this.container.nativeElement, 'body');\n }\n createScroller() {\n this.cleanupScroller();\n const observable = this.scroller.create(this.rowHeightService, this.skip, this.take, this.total);\n this.skipScroll = false;\n this.scrollerSubscription = observable.pipe(filter(x => x instanceof PageAction), filter(() => {\n const temp = this.skipScroll;\n this.skipScroll = false;\n return !temp;\n }), tap(() => this.rebind = true)).subscribe(x => this.ngZone.run(() => this.pageChange.emit(x)));\n this.scrollerSubscription.add(observable.pipe(filter(x => x instanceof ScrollAction)).subscribe(this.scroll.bind(this)));\n this.scrollerSubscription.add(observable.pipe(filter(x => x instanceof ScrollBottomAction)).subscribe(() => this.scrollBottom.emit()));\n }\n scroll({\n offset = 0\n }) {\n if (this.isVirtual) {\n [maybeNativeElement(this.table), maybeNativeElement(this.lockedTable)].filter(isPresent).forEach(translateY(this.renderer, offset));\n }\n this.resetNavigationViewport();\n }\n onContainerScroll({\n scrollTop\n }) {\n this.containerScrollTop = scrollTop;\n if (this.lockedContainer) {\n this.lockedContainer.nativeElement.scrollTop = scrollTop;\n }\n }\n handleInitialScrollToSkip() {\n const shouldScroll = () => this.isVirtual && this.skip > 0 && this.total > 0;\n const sub = this.changeNotification.changes.pipe(filter(shouldScroll)).subscribe(_ => {\n this.scrollTo({\n row: this.skip\n });\n sub.unsubscribe();\n });\n }\n handleRowSync() {\n const isLocked = () => isPresent(this.lockedContainer);\n const onStable = () => this.ngZone.onStable.asObservable().pipe(take(1));\n return merge(this.changeNotification.changes, this.groupsService.changes.pipe(filter(isLocked), switchMapTo(onStable())), this.editService.changed, this.resizeService.changes, this.columnResizingService.changes.pipe(filter(change => change.type === 'end')), this.supportService.changes).pipe(tap(() => this.resetNavigationViewport()), filter(isLocked)).subscribe(() => {\n const scrollTop = this.container.nativeElement.scrollTop;\n const scrollLeft = this.container.nativeElement.scrollLeft;\n this.syncRowsHeight();\n this.syncContainerHeight();\n this.lockedContainer.nativeElement.scrollTop = this.container.nativeElement.scrollTop = scrollTop;\n // fixes scroll left position in IE when editing\n this.container.nativeElement.scrollLeft = scrollLeft;\n this.resizeSensors.forEach(sensor => sensor.acceptSize());\n });\n }\n handleRowNavigationLocked() {\n return this.navigationService.changes.pipe(filter(() => isPresent(this.lockedContainer)), delay(10)).subscribe(args => {\n if (this.lockedLeafColumns.length <= args.prevColIndex && args.colIndex < this.lockedLeafColumns.length) {\n const cell = this.navigationService.activeCell;\n if (cell && cell.colIndex + cell.colSpan < args.prevColIndex) {\n this.container.nativeElement.scrollLeft = 0;\n }\n }\n });\n }\n scrollToVirtualRow(itemIndex, adjustIndexForDetailTemplate = true) {\n if (!isDocumentAvailable()) {\n return;\n }\n if (isPresent(this.detailTemplate) && adjustIndexForDetailTemplate) {\n itemIndex = Math.floor(itemIndex / 2);\n }\n const offset = this.rowHeightService.offset(itemIndex, !adjustIndexForDetailTemplate);\n this.container.nativeElement.scrollTop = offset;\n this.resetNavigationViewport();\n }\n scrollTo({\n row,\n column\n }, adjustIndex = false) {\n if (isNumber(row)) {\n if (this.isVirtual) {\n this.scrollToVirtualRow(row, adjustIndex);\n } else {\n const element = rowAt(row, this.table.nativeElement.rows);\n if (element) {\n this.container.nativeElement.scrollTop = element.offsetTop;\n }\n }\n }\n if (isNumber(column)) {\n column -= this.lockedLeafColumns.length;\n if (this.virtualColumns) {\n const columns = this.columns.leafColumnsToRender;\n let offset = 0;\n for (let idx = 0; idx < column; idx++) {\n offset += columns[idx].width || 0;\n }\n const startOffset = this.lockedLeafColumns.length ? 0 : this.groups.length * GROUP_CELL_WIDTH + (this.detailTemplate && column > 0 ? GROUP_CELL_WIDTH : 0);\n this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(offset + startOffset);\n } else if (column === 0 && this.detailTemplate) {\n this.container.nativeElement.scrollLeft = this.normalizeScrollLeft(0);\n } else {\n const firstRow = rowAt(0, this.table.nativeElement.rows);\n if (firstRow) {\n const element = cellAt(column, firstRow.cells);\n if (element) {\n this.container.nativeElement.scrollLeft = this.elementScrollLeft(element);\n }\n }\n }\n }\n }\n scrollToItem(item) {\n if (!isDocumentAvailable()) {\n return;\n }\n const data = this.ctx.grid.data;\n const gridData = Array.isArray(data) ? data : data.data;\n const gridDataItems = gridData.flatMap(recursiveFlatMap);\n const dataItemIndex = gridDataItems.findIndex(dataItem => dataItem[item.idField] === item.id);\n if (dataItemIndex !== -1) {\n const row = Array.from(this.table.nativeElement.rows).find(r => {\n const dataAttribute = r.getAttribute('data-kendo-grid-item-index');\n return dataAttribute && +dataAttribute === this.ctx.grid.skip + dataItemIndex;\n });\n row && row.scrollIntoView();\n this.isVirtual && this.resetNavigationViewport();\n }\n }\n resetNavigationViewport() {\n if (!isDocumentAvailable) {\n return;\n }\n if (!this.container || !this.navigationService.tableEnabled || !this.navigationService.needsViewport() || this.data.length === 0) {\n return;\n }\n const {\n scrollTop,\n offsetHeight\n } = this.container.nativeElement;\n const scrollBottom = scrollTop + offsetHeight;\n const firstItemIndex = this.rowHeightService.index(scrollTop);\n const lastItemIndex = this.rowHeightService.index(scrollBottom);\n const lastItemOffset = this.rowHeightService.offset(lastItemIndex);\n let viewportStart = firstItemIndex;\n let viewportEnd = lastItemIndex;\n if (isPresent(this.detailTemplate)) {\n viewportStart *= 2;\n viewportEnd *= 2;\n const firstItemHeight = this.rowHeightService.offset(firstItemIndex);\n if (firstItemHeight + this.rowHeight < scrollTop) {\n viewportStart++;\n }\n const lastItemHeight = this.rowHeightService.height(lastItemIndex);\n const lastItemExpanded = this.rowHeightService.isExpanded(lastItemIndex);\n const lastItemDetailOverflows = lastItemOffset + lastItemHeight > scrollBottom;\n if (lastItemExpanded && !lastItemDetailOverflows) {\n viewportEnd++;\n }\n }\n this.navigationService.setViewport(viewportStart, viewportEnd);\n }\n cleanupScroller() {\n if (this.scrollerSubscription) {\n this.scrollerSubscription.unsubscribe();\n }\n if (this.scroller) {\n this.scroller.destroy();\n }\n }\n initResizeService() {\n this.resizeService.connect(merge(...this.resizeSensors.map(sensor => sensor.resize)));\n }\n syncContainerHeight() {\n [maybeNativeElement(this.lockedContainer)].filter(isPresent).map(el => {\n el.style.height = '';\n let height = this.container.nativeElement.offsetHeight;\n if (hasScrollbar(this.table, this.container)) {\n height -= this.supportService.scrollbarWidth;\n }\n return {\n el,\n height\n };\n }).forEach(setHeight(this.renderer));\n }\n updateViewportColumns(range) {\n const columns = this.columns.nonLockedLeafColumns.toArray();\n // eslint-disable-next-line prefer-const\n let {\n startIdx,\n endIdx,\n offset\n } = range || this.calculateViewportColumns();\n const start = Math.max(0, startIdx - bufferSize);\n const end = Math.min(endIdx + bufferSize, columns.length - 1);\n if (start < startIdx) {\n for (let idx = startIdx - 1; idx >= start; idx--) {\n offset -= columns[idx].width;\n }\n }\n let currentColumns = columns.slice(start, end + 1);\n this.viewportColumnsWidth = currentColumns.reduce((total, column) => total + column.width, 0);\n const stickyBeforeStart = columns.slice(0, start).filter(c => c.sticky && !currentColumns.some(col => col === c));\n const stickyAfterEnd = columns.slice(end, columns.length).filter(c => c.sticky && !currentColumns.some(col => col === c));\n currentColumns = [...stickyBeforeStart, ...currentColumns, ...stickyAfterEnd];\n if (start > 0) {\n const offsetColumn = new ColumnBase();\n offsetColumn.width = offset;\n currentColumns.unshift(offsetColumn);\n }\n this.viewportColumns = new QueryList();\n this.viewportColumns.reset(currentColumns);\n this.columnsStartIdx = start;\n this.columnsEndIdx = end;\n this.columnInfo.columnRangeChange.emit({\n start,\n end,\n offset\n });\n if (!range) {\n this.updateColumnViewport(startIdx, endIdx);\n }\n }\n handleColumnScroll() {\n const container = this.container.nativeElement;\n const scrollLeft = container.scrollLeft;\n if (this.scrollLeft !== scrollLeft) {\n this.scrollLeft = scrollLeft;\n const range = this.calculateViewportColumns();\n this.updateColumnViewport(range.startIdx, range.endIdx);\n if (range.startIdx < this.columnsStartIdx || this.columnsEndIdx < range.endIdx) {\n cancelAnimationFrame(this.columnUpdateFrame);\n this.columnUpdateFrame = requestAnimationFrame(() => {\n this.ngZone.run(() => {\n this.updateViewportColumns(range);\n this.changeDetector.markForCheck();\n });\n });\n }\n }\n }\n updateColumnViewport(startIdx, endIdx) {\n const lockedCount = this.lockedLeafColumns.length;\n const leafColumns = this.nonLockedLeafColumns.toArray();\n const viewportStart = lockedCount + startIdx + (this.detailTemplate && startIdx > 0 ? 1 : 0);\n let viewportEnd = lockedCount + endIdx + (this.detailTemplate ? 1 : 0);\n for (let idx = 0; idx < leafColumns.length; idx++) {\n const column = leafColumns[idx];\n if (column.isSpanColumn) {\n viewportEnd += column.childColumns.length;\n }\n }\n this.navigationService.setColumnViewport(viewportStart, viewportEnd);\n }\n calculateViewportColumns() {\n const {\n scrollLeft,\n clientWidth\n } = this.container.nativeElement;\n const columns = this.columns.nonLockedLeafColumns.toArray();\n const normalizedScrollLeft = this.normalizeScrollLeft(scrollLeft);\n const viewportEnd = normalizedScrollLeft + clientWidth;\n let startIdx;\n let endIdx = 0;\n let current = 0;\n let offset = 0;\n let idx;\n for (idx = 0; idx < columns.length; idx++) {\n const column = columns[idx];\n current += column.width || 0;\n if (startIdx === undefined && current > normalizedScrollLeft) {\n startIdx = idx;\n offset = current - (column.width || 0);\n }\n if (current >= viewportEnd) {\n endIdx = idx;\n break;\n }\n }\n if (!endIdx && idx > 0) {\n endIdx = columns.length - 1;\n }\n return {\n startIdx,\n endIdx,\n offset\n };\n }\n viewportWidthChange() {\n const currentWidth = this.viewportColumns.toArray().reduce((total, column) => total + column.width, 0);\n return currentWidth !== this.viewportColumnsWidth;\n }\n normalizeScrollLeft(position) {\n return this.rtl ? rtlScrollPosition(position, this.container.nativeElement, this.supportService.rtlScrollLeft) : position;\n }\n elementScrollLeft(element) {\n if (this.rtl) {\n return this.normalizeScrollLeft(this.container.nativeElement.scrollWidth - element.offsetLeft - element.offsetWidth);\n }\n return element.offsetLeft;\n }\n }\n ListComponent.ɵfac = function ListComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ListComponent)(i0.ɵɵdirectiveInject(SCROLLER_FACTORY_TOKEN), i0.ɵɵdirectiveInject(DetailsService), i0.ɵɵdirectiveInject(ChangeNotificationService), i0.ɵɵdirectiveInject(SuspendService), i0.ɵɵdirectiveInject(GroupsService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ScrollSyncService), i0.ɵɵdirectiveInject(ResizeService), i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(BrowserSupportService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(ScrollRequestService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(ColumnResizingService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(PDFService), i0.ɵɵdirectiveInject(ColumnInfoService));\n };\n ListComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ListComponent,\n selectors: [[\"kendo-grid-list\"]],\n viewQuery: function ListComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c48, 7);\n i0.ɵɵviewQuery(_c49, 5);\n i0.ɵɵviewQuery(_c50, 5);\n i0.ɵɵviewQuery(_c51, 7);\n i0.ɵɵviewQuery(ResizeSensorComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lockedContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lockedTable = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.table = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.resizeSensors = _t);\n }\n },\n hostVars: 3,\n hostBindings: function ListComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.hostRole);\n i0.ɵɵclassProp(\"k-grid-container\", ctx.hostClass);\n }\n },\n inputs: {\n data: \"data\",\n groups: \"groups\",\n total: \"total\",\n rowHeight: \"rowHeight\",\n stickyRowHeight: \"stickyRowHeight\",\n detailRowHeight: \"detailRowHeight\",\n take: \"take\",\n skip: \"skip\",\n columns: \"columns\",\n detailTemplate: \"detailTemplate\",\n noRecordsTemplate: \"noRecordsTemplate\",\n selectable: \"selectable\",\n groupable: \"groupable\",\n filterable: \"filterable\",\n rowClass: \"rowClass\",\n rowSticky: \"rowSticky\",\n loading: \"loading\",\n trackBy: \"trackBy\",\n virtualColumns: \"virtualColumns\",\n isVirtual: \"isVirtual\",\n cellLoadingTemplate: \"cellLoadingTemplate\",\n loadingTemplate: \"loadingTemplate\",\n sort: \"sort\",\n size: \"size\"\n },\n outputs: {\n contentScroll: \"contentScroll\",\n pageChange: \"pageChange\",\n scrollBottom: \"scrollBottom\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: SCROLLER_FACTORY_TOKEN,\n useValue: DEFAULT_SCROLLER_FACTORY\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 13,\n vars: 38,\n consts: [[\"container\", \"\"], [\"table\", \"\"], [\"lockedContainer\", \"\"], [\"lockedTable\", \"\"], [\"class\", \"k-grid-content-locked\", \"role\", \"presentation\", \"tabindex\", \"-1\", 3, \"width\", \"kendoEventsOutsideAngular\", \"scope\", 4, \"ngIf\"], [1, \"k-grid-content\", \"k-virtual-content\", 3, \"kendoGridResizableContainer\", \"lockedWidth\"], [\"role\", \"presentation\", 1, \"k-grid-table-wrap\"], [\"kendoGridResizableTable\", \"\", \"kendoGridTable\", \"\", \"role\", \"presentation\", 1, \"k-grid-table\", 3, \"virtualColumns\", \"size\"], [\"kendoGridColGroup\", \"\", 3, \"groups\", \"columns\", \"detailTemplate\", \"sort\"], [\"kendoGridTableBody\", \"\", \"role\", \"rowgroup\", 3, \"skipGroupDecoration\", \"data\", \"groups\", \"showGroupFooters\", \"columns\", \"allColumns\", \"detailTemplate\", \"noRecordsTemplate\", \"lockedColumnsCount\", \"totalColumnsCount\", \"totalColumns\", \"skip\", \"selectable\", \"trackBy\", \"filterable\", \"rowClass\", \"rowSticky\", \"virtualColumns\", \"isLoading\", \"isVirtual\", \"cellLoadingTemplate\"], [4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-height-container\"], [\"class\", \"k-width-container\", \"role\", \"presentation\", 4, \"ngIf\"], [\"role\", \"presentation\", \"tabindex\", \"-1\", 1, \"k-grid-content-locked\", 3, \"kendoEventsOutsideAngular\", \"scope\"], [\"kendoGridResizableTable\", \"\", \"role\", \"presentation\", \"kendoGridTable\", \"\", 1, \"k-grid-table\", 3, \"locked\", \"size\"], [\"kendoGridTableBody\", \"\", \"role\", \"presentation\", 3, \"groups\", \"isLocked\", \"data\", \"noRecordsText\", \"columns\", \"totalColumnsCount\", \"totalColumns\", \"detailTemplate\", \"showGroupFooters\", \"skip\", \"selectable\", \"trackBy\", \"filterable\", \"rowClass\", \"isLoading\", \"isVirtual\", \"cellLoadingTemplate\"], [\"role\", \"presentation\", 1, \"k-width-container\"]],\n template: function ListComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ListComponent_div_0_Template, 10, 36, \"div\", 4);\n i0.ɵɵelementStart(1, \"div\", 5, 0)(3, \"div\", 6)(4, \"table\", 7, 1);\n i0.ɵɵelement(6, \"colgroup\", 8)(7, \"tbody\", 9);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(8, ListComponent_kendo_resize_sensor_8_Template, 1, 0, \"kendo-resize-sensor\", 10);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, ListComponent_kendo_resize_sensor_9_Template, 1, 0, \"kendo-resize-sensor\", 10);\n i0.ɵɵelementStart(10, \"div\", 11);\n i0.ɵɵelement(11, \"div\");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(12, ListComponent_div_12_Template, 2, 2, \"div\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.isLocked);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"kendoGridResizableContainer\", ctx.lockedLeafColumns.length > 0)(\"lockedWidth\", ctx.lockedWidth + 1);\n i0.ɵɵadvance(3);\n i0.ɵɵstyleProp(\"width\", ctx.nonLockedWidth, \"px\");\n i0.ɵɵproperty(\"virtualColumns\", ctx.virtualColumns)(\"size\", ctx.size);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"groups\", ctx.isLocked ? i0.ɵɵpureFunction0(37, _c52) : ctx.groups)(\"columns\", ctx.nonLockedColumnsToRender)(\"detailTemplate\", ctx.detailTemplate)(\"sort\", ctx.sort);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"skipGroupDecoration\", ctx.isLocked)(\"data\", ctx.data)(\"groups\", ctx.groups)(\"showGroupFooters\", ctx.showFooter)(\"columns\", ctx.nonLockedColumnsToRender)(\"allColumns\", ctx.nonLockedLeafColumns)(\"detailTemplate\", ctx.detailTemplate)(\"noRecordsTemplate\", ctx.noRecordsTemplate)(\"lockedColumnsCount\", ctx.lockedLeafColumns.length)(\"totalColumnsCount\", ctx.leafColumns.length)(\"totalColumns\", ctx.columns)(\"skip\", ctx.skip)(\"selectable\", ctx.selectable)(\"trackBy\", ctx.trackBy)(\"filterable\", ctx.filterable)(\"rowClass\", ctx.rowClass)(\"rowSticky\", ctx.rowSticky)(\"virtualColumns\", ctx.virtualColumns)(\"isLoading\", ctx.loading)(\"isVirtual\", ctx.isVirtual)(\"cellLoadingTemplate\", ctx.cellLoadingTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.isLocked);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.isLocked || ctx.virtualColumns);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"height\", ctx.totalHeight, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.virtualColumns);\n }\n },\n dependencies: [NgIf, EventsOutsideAngularDirective, TableDirective, GridTableDirective, ColGroupComponent, TableBodyComponent, ResizeSensorComponent, ResizableContainerDirective],\n encapsulation: 2\n });\n return ListComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet ToolbarComponent = /*#__PURE__*/(() => {\n class ToolbarComponent {\n constructor(ctx, wrapper) {\n this.ctx = ctx;\n this.wrapper = wrapper;\n this.context = {};\n this.role = 'toolbar';\n this._size = 'medium';\n this.navigationService = this.ctx[`${this.wrapper.nativeElement.getAttribute('position')}ToolbarNavigation`];\n }\n get sizeSmallClass() {\n return this.size === 'small';\n }\n get sizeMediumClass() {\n return this.size === 'medium' || !this.size;\n }\n set position(value) {\n this.context.position = value;\n }\n set size(size) {\n this._size = size;\n if (size === 'none') {\n this.wrapper.nativeElement.classList.remove('k-toolbar-sm', 'k-toolbar-md');\n }\n }\n get size() {\n return this._size;\n }\n clickHandler(ev) {\n if (this.navigable && isDocumentAvailable()) {\n const closestFocusable = closest$1(ev.target, isFocusable$1);\n const targetIndex = this.navigationService.navigableElements.indexOf(closestFocusable);\n if (targetIndex > -1) {\n this.navigationService.currentActiveIndex = targetIndex;\n }\n this.navigationService.updateFocus();\n if (ev.target === this.wrapper.nativeElement) {\n this.navigationService.focus();\n }\n }\n }\n arrowLeftListener() {\n if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {\n this.navigationService.currentActiveIndex--;\n if (this.navigationService.currentActiveIndex < 0) {\n this.navigationService.currentActiveIndex = this.navigationService.navigableElements.length - 1;\n }\n this.navigationService.updateFocus();\n }\n }\n arrowRightListener() {\n if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {\n this.navigationService.currentActiveIndex++;\n if (this.navigationService.currentActiveIndex >= this.navigationService.navigableElements.length) {\n this.navigationService.currentActiveIndex = 0;\n }\n this.navigationService.updateFocus();\n }\n }\n homeKeyListener(e) {\n if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {\n e.preventDefault();\n this.navigationService.currentActiveIndex = 0;\n this.navigationService.updateFocus();\n }\n }\n endKeyListener(e) {\n if (this.navigable && isDocumentAvailable() && this.navigationService.navigableElements.length) {\n e.preventDefault();\n this.navigationService.currentActiveIndex = this.navigationService.navigableElements.length - 1;\n this.navigationService.updateFocus();\n }\n }\n get toolbarTemplateRef() {\n return this.ctx.grid.toolbarTemplate ? this.ctx.grid.toolbarTemplate.templateRef : undefined;\n }\n }\n ToolbarComponent.ɵfac = function ToolbarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ToolbarComponent)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n ToolbarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ToolbarComponent,\n selectors: [[\"kendo-grid-toolbar\"]],\n hostVars: 5,\n hostBindings: function ToolbarComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function ToolbarComponent_click_HostBindingHandler($event) {\n return ctx.clickHandler($event);\n })(\"keydown.arrowleft\", function ToolbarComponent_keydown_arrowleft_HostBindingHandler($event) {\n return ctx.arrowLeftListener($event);\n })(\"keydown.arrowright\", function ToolbarComponent_keydown_arrowright_HostBindingHandler($event) {\n return ctx.arrowRightListener($event);\n })(\"keydown.home\", function ToolbarComponent_keydown_home_HostBindingHandler($event) {\n return ctx.homeKeyListener($event);\n })(\"keydown.end\", function ToolbarComponent_keydown_end_HostBindingHandler($event) {\n return ctx.endKeyListener($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.role);\n i0.ɵɵclassProp(\"k-toolbar-sm\", ctx.sizeSmallClass)(\"k-toolbar-md\", ctx.sizeMediumClass);\n }\n },\n inputs: {\n position: \"position\",\n size: \"size\",\n navigable: \"navigable\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 1,\n consts: [[4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function ToolbarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ToolbarComponent_0_Template, 1, 2, null, 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.toolbarTemplateRef);\n }\n },\n dependencies: [NgIf, NgTemplateOutlet],\n encapsulation: 2\n });\n return ToolbarComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet GridMessages = /*#__PURE__*/(() => {\n class GridMessages extends ComponentMessages {}\n GridMessages.ɵfac = /* @__PURE__ */(() => {\n let ɵGridMessages_BaseFactory;\n return function GridMessages_Factory(__ngFactoryType__) {\n return (ɵGridMessages_BaseFactory || (ɵGridMessages_BaseFactory = i0.ɵɵgetInheritedFactory(GridMessages)))(__ngFactoryType__ || GridMessages);\n };\n })();\n GridMessages.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GridMessages,\n selectors: [[\"kendo-grid-messages-base\"]],\n inputs: {\n groupPanelEmpty: \"groupPanelEmpty\",\n noRecords: \"noRecords\",\n pagerLabel: \"pagerLabel\",\n pagerFirstPage: \"pagerFirstPage\",\n pagerLastPage: \"pagerLastPage\",\n pagerPreviousPage: \"pagerPreviousPage\",\n pagerNextPage: \"pagerNextPage\",\n pagerPage: \"pagerPage\",\n pagerItemsPerPage: \"pagerItemsPerPage\",\n pagerOf: \"pagerOf\",\n pagerItems: \"pagerItems\",\n pagerPageNumberInputTitle: \"pagerPageNumberInputTitle\",\n selectPage: \"selectPage\",\n filter: \"filter\",\n filterInputLabel: \"filterInputLabel\",\n filterMenuTitle: \"filterMenuTitle\",\n filterMenuOperatorsDropDownLabel: \"filterMenuOperatorsDropDownLabel\",\n filterMenuLogicDropDownLabel: \"filterMenuLogicDropDownLabel\",\n filterCellOperatorLabel: \"filterCellOperatorLabel\",\n booleanFilterCellLabel: \"booleanFilterCellLabel\",\n filterEqOperator: \"filterEqOperator\",\n filterNotEqOperator: \"filterNotEqOperator\",\n filterIsNullOperator: \"filterIsNullOperator\",\n filterIsNotNullOperator: \"filterIsNotNullOperator\",\n filterIsEmptyOperator: \"filterIsEmptyOperator\",\n filterIsNotEmptyOperator: \"filterIsNotEmptyOperator\",\n filterStartsWithOperator: \"filterStartsWithOperator\",\n filterContainsOperator: \"filterContainsOperator\",\n filterNotContainsOperator: \"filterNotContainsOperator\",\n filterEndsWithOperator: \"filterEndsWithOperator\",\n filterGteOperator: \"filterGteOperator\",\n filterGtOperator: \"filterGtOperator\",\n filterLteOperator: \"filterLteOperator\",\n filterLtOperator: \"filterLtOperator\",\n filterIsTrue: \"filterIsTrue\",\n filterIsFalse: \"filterIsFalse\",\n filterBooleanAll: \"filterBooleanAll\",\n filterAfterOrEqualOperator: \"filterAfterOrEqualOperator\",\n filterAfterOperator: \"filterAfterOperator\",\n filterBeforeOperator: \"filterBeforeOperator\",\n filterBeforeOrEqualOperator: \"filterBeforeOrEqualOperator\",\n filterFilterButton: \"filterFilterButton\",\n filterClearButton: \"filterClearButton\",\n filterAndLogic: \"filterAndLogic\",\n filterOrLogic: \"filterOrLogic\",\n loading: \"loading\",\n gridLabel: \"gridLabel\",\n columnMenu: \"columnMenu\",\n setColumnPosition: \"setColumnPosition\",\n columns: \"columns\",\n lock: \"lock\",\n unlock: \"unlock\",\n stick: \"stick\",\n unstick: \"unstick\",\n sortable: \"sortable\",\n sortAscending: \"sortAscending\",\n sortDescending: \"sortDescending\",\n autosizeThisColumn: \"autosizeThisColumn\",\n autosizeAllColumns: \"autosizeAllColumns\",\n sortedAscending: \"sortedAscending\",\n sortedDescending: \"sortedDescending\",\n sortedDefault: \"sortedDefault\",\n columnsApply: \"columnsApply\",\n columnsReset: \"columnsReset\",\n detailExpand: \"detailExpand\",\n detailCollapse: \"detailCollapse\",\n filterDateToday: \"filterDateToday\",\n filterDateToggle: \"filterDateToggle\",\n filterNumericDecrement: \"filterNumericDecrement\",\n filterNumericIncrement: \"filterNumericIncrement\",\n selectionCheckboxLabel: \"selectionCheckboxLabel\",\n selectAllCheckboxLabel: \"selectAllCheckboxLabel\",\n groupCollapse: \"groupCollapse\",\n groupExpand: \"groupExpand\",\n topToolbarLabel: \"topToolbarLabel\",\n bottomToolbarLabel: \"bottomToolbarLabel\",\n groupPanelLabel: \"groupPanelLabel\",\n dragRowHandleLabel: \"dragRowHandleLabel\",\n columnMenuFilterTabTitle: \"columnMenuFilterTabTitle\",\n columnMenuGeneralTabTitle: \"columnMenuGeneralTabTitle\",\n columnMenuColumnsTabTitle: \"columnMenuColumnsTabTitle\",\n groupChipMenuPrevious: \"groupChipMenuPrevious\",\n groupChipMenuNext: \"groupChipMenuNext\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return GridMessages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet LocalizedMessagesDirective = /*#__PURE__*/(() => {\n class LocalizedMessagesDirective extends GridMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n }\n LocalizedMessagesDirective.ɵfac = function LocalizedMessagesDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocalizedMessagesDirective)(i0.ɵɵdirectiveInject(i1$2.LocalizationService));\n };\n LocalizedMessagesDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LocalizedMessagesDirective,\n selectors: [[\"\", \"kendoGridLocalizedMessages\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: GridMessages,\n useExisting: forwardRef(() => LocalizedMessagesDirective)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n return LocalizedMessagesDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst createControl = source => (acc, key) => {\n acc[key] = new FormControl(source[key]);\n return acc;\n};\nconst validateColumnsField = columns => expandColumns(columns.toArray()).filter(isColumnComponent).filter(({\n field\n}) => !isValidFieldName(field)).forEach(({\n field\n}) => console.warn(ColumnConfigurationErrorMessages.fieldName(field)));\nconst handleExpandCollapseGroupsService = (service, expandEmitter, collapseEmitter, map) => service.changes.pipe(filter(({\n group,\n emit\n}) => emit && isPresent(group))).subscribe(x => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x)));\nconst handleExpandCollapseDetailsService = (service, expandEmitter, collapseEmitter, map) => service.changes.pipe(filter(({\n dataItem\n}) => isPresent(dataItem))).subscribe(x => x.expand ? expandEmitter.emit(map(x)) : collapseEmitter.emit(map(x)));\nconst isInEditedCell = (element, gridElement) => closest(element, matchesClasses('k-grid-edit-cell')) && closest(element, matchesNodeName('kendo-grid')) === gridElement;\nconst NOTIFY_DELAY = 500;\n/**\n * Represents the Kendo UI for Angular Data Grid component.\n *\n * @example\n * ```html\n * \n * ```\n */\nlet GridComponent = /*#__PURE__*/(() => {\n class GridComponent {\n constructor(supportService, selectionService, cellSelectionService, wrapper, groupInfoService, groupsService, changeNotification, detailsService, editService, filterService, pdfService, responsiveService, renderer, excelService, ngZone, scrollSyncService, domEvents, columnResizingService, changeDetectorRef, columnReorderService, columnInfoService, navigationService, sortService, scrollRequestService, localization, ctx, sizingService, rowReorderService) {\n this.supportService = supportService;\n this.selectionService = selectionService;\n this.cellSelectionService = cellSelectionService;\n this.wrapper = wrapper;\n this.groupInfoService = groupInfoService;\n this.groupsService = groupsService;\n this.changeNotification = changeNotification;\n this.detailsService = detailsService;\n this.editService = editService;\n this.filterService = filterService;\n this.pdfService = pdfService;\n this.responsiveService = responsiveService;\n this.renderer = renderer;\n this.excelService = excelService;\n this.ngZone = ngZone;\n this.scrollSyncService = scrollSyncService;\n this.domEvents = domEvents;\n this.columnResizingService = columnResizingService;\n this.changeDetectorRef = changeDetectorRef;\n this.columnReorderService = columnReorderService;\n this.columnInfoService = columnInfoService;\n this.navigationService = navigationService;\n this.sortService = sortService;\n this.scrollRequestService = scrollRequestService;\n this.localization = localization;\n this.ctx = ctx;\n this.sizingService = sizingService;\n this.rowReorderService = rowReorderService;\n /**\n * Defines the scroll mode used by the Grid.\n *\n * @default 'scrollable'\n */\n this.scrollable = 'scrollable';\n /**\n * Enables the [single-row selection](slug:grid_row_selection) of the Grid.\n *\n * @default false\n */\n this.selectable = false;\n /**\n * A function that defines how to track changes for the data rows.\n * By default, the Grid tracks changes by the index of the data item.\n * Edited rows are tracked by reference.\n * [See example](slug:track_changes_grid)\n */\n this.trackBy = defaultTrackBy;\n /**\n * If set to `true`, the grid will render only the columns in the current viewport.\n * @default false\n */\n this.virtualColumns = false;\n /**\n * @hidden\n */\n this.gridData = () => {\n return this.flatData;\n };\n /**\n * Enables the [filtering]({% slug filtering_grid %}) of the Grid columns that have their `field` option set.\n * @default false\n */\n this.filterable = false;\n /**\n * Enables the [sorting]({% slug sorting_grid %}) of the Grid columns that have their `field` option set.\n * @default false\n */\n this.sortable = false;\n /**\n * Configures the pager of the Grid ([see example](slug:paging_grid_settings)).\n * @default false\n */\n this.pageable = false;\n /**\n * If set to `true`, the user can group the Grid by dragging the column header cells ([see example]({% slug grouping_grid %})).\n * @default false\n */\n this.groupable = false;\n /**\n * Indicates whether the Grid columns will be resized during initialization so that\n * they fit their headers and row content.\n * Columns with `autoSize` set to `false` are excluded.\n * To dynamically update the column width to match the new content,\n * refer to [this example]({% slug resizing_columns_grid %}).\n * @default false\n */\n this.autoSize = false;\n /**\n * If set to `true`, the user can resize columns by dragging the edges (resize handles) of their header cells\n * ([see example]({% slug resizing_columns_grid %})).\n *\n * @default false\n */\n this.resizable = false;\n /**\n * If set to `true`, the user can reorder columns by dragging their header cells\n * ([see example]({% slug reordering_columns_grid %})).\n *\n * @default false\n */\n this.reorderable = false;\n /**\n * Specifies if the column menu of the columns will be displayed ([see example]({% slug columnmenu_grid %})).\n *\n * @default false\n */\n this.columnMenu = false;\n /**\n * Specifies if the header of the grid will be hidden. The header is visible by default.\n * The header includes column headers and the [filter row](slug:filter_row).\n * @default false\n */\n this.hideHeader = false;\n /**\n * Fires when the Grid filter is modified through the UI.\n * You have to handle the event yourself and filter the data.\n */\n this.filterChange = new EventEmitter();\n /**\n * Fires when the page of the Grid is changed ([see example]({% slug paging_grid %})).\n * You have to handle the event yourself and page the data.\n */\n this.pageChange = new EventEmitter();\n /**\n * Fires when the grouping of the Grid is changed.\n * You have to handle the event yourself and group the data ([see example]({% slug grouping_grid %})).\n */\n this.groupChange = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the sorting of the Grid is changed ([see example]({% slug sorting_grid %})).\n * You have to handle the event yourself and sort the data.\n */\n this.sortChange = new EventEmitter();\n /**\n * Fires when the user selects a Grid row.\n */\n this.selectionChange = new EventEmitter();\n /**\n * Fires when the user drops the dragged row and reordering is performed.\n */\n this.rowReorder = new EventEmitter();\n /**\n * Fires when the data state of the Grid is changed.\n */\n this.dataStateChange = new EventEmitter();\n /**\n * Fires when the user expands a group header.\n */\n this.groupExpand = new EventEmitter();\n /**\n * Fires when the user collapses a group header.\n */\n this.groupCollapse = new EventEmitter();\n /**\n * Fires when the user expands a master row.\n */\n this.detailExpand = new EventEmitter();\n /**\n * Fires when the user collapses a master row.\n */\n this.detailCollapse = new EventEmitter();\n /**\n * Fires when the user clicks the **Edit** command button to edit a row\n * ([see example])({% slug inline_editing_grid %}#toc-editing-records-1).\n */\n this.edit = new EventEmitter();\n /**\n * Fires when the user clicks the **Cancel** command button to close a row\n * ([see example]({% slug inline_editing_grid %}#toc-canceling-editing-1)).\n */\n this.cancel = new EventEmitter();\n /**\n * Fires when the user clicks the **Save** command button to save changes in a row\n * ([see example]({% slug inline_editing_grid %}#toc-saving-records-1)).\n */\n this.save = new EventEmitter();\n /**\n * Fires when the user clicks the **Remove** command button to remove a row\n * ([see example]({% slug inline_editing_grid %}#toc-removing-records-1)).\n */\n this.remove = new EventEmitter();\n /**\n * Fires when the user clicks the **Add** command button to add a new row\n * ([see example]({% slug inline_editing_grid %}#toc-adding-records-1)).\n */\n this.add = new EventEmitter();\n /**\n * Fires when the user leaves an edited cell ([see example](slug:editing_incell_grid)).\n */\n this.cellClose = new EventEmitter();\n /**\n * Fires when the user clicks a cell ([see example](slug:editing_incell_grid)).\n */\n this.cellClick = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the user clicks the **Export to PDF** command button.\n */\n this.pdfExport = new EventEmitter();\n /**\n * Fires when the user clicks the **Export to Excel** command button.\n */\n this.excelExport = new EventEmitter();\n /**\n * Fires when the user completes the resizing of the column.\n */\n this.columnResize = new ZoneAwareEventEmitter(this.ngZone);\n /**\n * Fires when the user completes the reordering of the column.\n */\n this.columnReorder = new EventEmitter();\n /**\n * Fires when the user changes the visibility of the columns from the column menu or column chooser.\n */\n this.columnVisibilityChange = new EventEmitter();\n /**\n * Fires when the user changes the locked state of the columns from the column menu or by reordering the columns.\n */\n this.columnLockedChange = new EventEmitter();\n /**\n * Fires when the user changes the sticky state of the columns from the column menu.\n */\n this.columnStickyChange = new EventEmitter();\n /**\n * Fires when the user scrolls to the last record on the page and enables endless scrolling\n * ([see example]({% slug scrollmmodes_grid %}#toc-endless-scrolling)).\n * You have to handle the event yourself and page the data.\n */\n this.scrollBottom = new EventEmitter();\n /**\n * Fires when the grid content is scrolled.\n * For performance reasons, the event is triggered outside the Angular zone. Enter the Angular zone if you make any changes that require change detection.\n */\n this.contentScroll = new EventEmitter();\n /**\n * A query list of all declared columns.\n */\n this.columns = new QueryList();\n this.hostClass = true;\n this.footer = new QueryList();\n this.selectionDirective = false;\n this.ariaRootId = `k-${guid()}`;\n /**\n * @hidden\n */\n this.showLicenseWatermark = false;\n this.columnsContainer = new ColumnsContainer(() => this.columnList.filterHierarchy(column => {\n if (!isUniversal()) {\n column.matchesMedia = this.matchesMedia(column);\n }\n return column.isVisible;\n }));\n this.view = new DataCollection(() => new DataResultIterator(this.data, this.skip, this.hasGroupFooters));\n this.shouldGenerateColumns = true;\n this.notifyTimeout = null;\n this._sort = new Array();\n this._group = new Array();\n this._skip = 0;\n this._data = [];\n this.cachedWindowWidth = 0;\n this._rowSelected = null;\n this._cellSelected = null;\n this._rowReorderable = false;\n this._navigable = [];\n this._size = 'medium';\n this._loading = false;\n this.rtl = false;\n this._rowClass = () => null;\n const isValid = validatePackage(packageMetadata);\n this.showLicenseWatermark = shouldShowValidationUI(isValid);\n this.ctx.grid = this;\n this.localizationSubscription = this.localization.changes.subscribe(({\n rtl\n }) => {\n this.rtl = rtl;\n this.direction = this.rtl ? 'rtl' : 'ltr';\n });\n this.groupInfoService.registerColumnsContainer(() => this.columnList);\n this.columnInfoService.init(this.columnsContainer, () => this.columnList);\n this.columnVisibilityChangeSubscription = this.columnInfoService.visibilityChange.subscribe(changed => {\n this.columnVisibilityChange.emit(new ColumnVisibilityChangeEvent(changed));\n });\n this.columnLockedChangeSubscription = this.columnInfoService.lockedChange.subscribe(changed => {\n this.columnLockedChange.emit(new ColumnLockedChangeEvent(changed));\n });\n this.columnStickyChangeSubscription = this.columnInfoService.stickyChange.subscribe(changed => {\n this.columnStickyChange.emit(new ColumnStickyChangeEvent(changed));\n });\n this.groupExpandCollapseSubscription = handleExpandCollapseGroupsService(groupsService, this.groupExpand, this.groupCollapse, ({\n group,\n groupIndex,\n parentGroup\n }) => ({\n group,\n groupIndex,\n parentGroup\n }));\n this.detailsServiceSubscription = handleExpandCollapseDetailsService(detailsService, this.detailExpand, this.detailCollapse, args => args);\n this.filterSubscription = this.filterService.changes.subscribe(x => {\n this.filterChange.emit(x);\n });\n this.sortSubscription = this.sortService.changes.subscribe(x => {\n this.sortChange.emit(x);\n });\n this.attachStateChangesEmitter();\n this.attachEditHandlers();\n this.attachDomEventHandlers();\n this.pdfSubscription = this.pdfService.exportClick.subscribe(this.emitPDFExportEvent.bind(this));\n this.excelSubscription = this.excelService.exportClick.subscribe(this.saveAsExcel.bind(this));\n this.columnsContainerChange();\n this.handleColumnResize();\n this.columnList = new ColumnList(this.columns);\n this.columnReorderSubscription = this.columnReorderService.changes.subscribe(this.reorder.bind(this));\n this.columnRangeChangeSubscription = this.columnInfoService.columnRangeChange.subscribe(this.onColumnRangeChange.bind(this));\n }\n /**\n * Sets the data of the Grid. If an array is provided, the Grid automatically gets the total count\n * ([more information and example]({% slug binding_grid %})).\n */\n set data(value) {\n this._data = value;\n if (this.notifyTimeout) {\n clearTimeout(this.notifyTimeout);\n this.notifyTimeout = null;\n }\n if (this.rowReorderable) {\n this.ngZone.runOutsideAngular(() => {\n this.notifyTimeout = setTimeout(() => {\n this.notifyReorderContainers();\n }, NOTIFY_DELAY);\n });\n }\n }\n get data() {\n return this._data;\n }\n get hintText() {\n return this.rowReorderService.getDefaultHintText(this.columnList, this.flatData);\n }\n /**\n * Defines the number of records to be skipped by the pager.\n * Required by the [paging]({% slug paging_grid %}) functionality.\n */\n get skip() {\n return this._skip;\n }\n set skip(value) {\n if (typeof value === 'number' && value >= 0) {\n this._skip = this.rowReorderService.skip = value;\n }\n }\n /**\n * The descriptors by which the data will be sorted ([see example]({% slug sorting_grid %})).\n */\n set sort(value) {\n if (isArray(value)) {\n this._sort = value;\n }\n }\n get sort() {\n return this._sort;\n }\n /**\n * Specifies the sizing of various Grid building blocks (e.g. tables, buttons, inputs, dropdowns, etc.)\n * @default 'medium'\n */\n set size(size) {\n this._size = size;\n if (size === 'none') {\n this.wrapper.nativeElement.classList.remove('k-grid-sm', 'k-grid-md');\n }\n this.sizingService.changes.next(this.size);\n }\n get size() {\n return this._size;\n }\n /**\n * The descriptors by which the data will be grouped ([see example]({% slug grouping_grid %})).\n */\n set group(value) {\n if (isArray(value)) {\n this._group = value;\n }\n }\n /**\n */\n get group() {\n return this._group;\n }\n /**\n * @hidden\n */\n get showStatusBar() {\n return !!this.selectable;\n }\n /**\n * @hidden\n */\n get showTopToolbar() {\n return this.toolbarTemplate && ['top', 'both'].indexOf(this.toolbarTemplate.position) > -1;\n }\n /**\n * @hidden\n */\n get showBottomToolbar() {\n return this.toolbarTemplate && ['bottom', 'both'].indexOf(this.toolbarTemplate.position) > -1;\n }\n /**\n * @hidden\n */\n get isLocked() {\n return this.lockedLeafColumns.length > 0;\n }\n /**\n * @hidden\n */\n get showTopPager() {\n const position = this.pageable.position;\n return !this.isVirtual && this.pageable !== false && ['top', 'both'].indexOf(position) > -1;\n }\n /**\n * @hidden\n */\n get showBottomPager() {\n const position = this.pageable.position;\n return !this.isVirtual && this.pageable !== false && position !== 'top';\n }\n /**\n * @hidden\n */\n get hasPager() {\n return this.showTopPager || this.showBottomPager;\n }\n /**\n * @hidden\n */\n get showGroupPanel() {\n return this.groupable && this.groupable.enabled !== false;\n }\n /**\n * @hidden\n */\n get groupableEmptyText() {\n return this.groupable.emptyText;\n }\n /**\n * @hidden\n */\n get marqueeSelection() {\n return this.selectionService.enableMarquee || this.cellSelectionService.enableMarquee;\n }\n /**\n * Enables the [row reordering]({% slug reordering_rows_grid %}) of the Grid.\n * @default false\n */\n set rowReorderable(value) {\n this._rowReorderable = value;\n if (value) {\n this.rowReorderSubscription = this.rowReorderService.rowReorder.subscribe(args => {\n this.ngZone.run(() => {\n this.rowReorder.emit(args);\n });\n });\n } else {\n this.rowReorderSubscription?.unsubscribe();\n }\n }\n get rowReorderable() {\n return this._rowReorderable;\n }\n /**\n * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.\n * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.\n * To enable navigation through separate Grid sections only, provide a [`GridNavigableSection`]({% slug api_grid_gridnavigablesection %}) array.\n */\n set navigable(value) {\n if (typeof value === 'boolean') {\n this._navigable = value ? ['table', 'pager', 'toolbar'] : [];\n this.ctx.navigable = value;\n return;\n } else {\n this.ctx.navigable = value.includes('table');\n }\n this._navigable = value;\n }\n get navigable() {\n return this._navigable;\n }\n /**\n * @hidden\n *\n * An alias for `navigable` for users who migrate from Kendo UI for jQuery.\n */\n set navigatable(value) {\n this.navigable = value;\n }\n /**\n * @hidden\n */\n get navigatable() {\n return this.navigable;\n }\n /**\n * Defines a function that is executed for every data row in the component\n * ([see example](slug:styling_grid_rows)).\n */\n set rowClass(fn) {\n if (isDevMode() && typeof fn !== 'function') {\n throw new Error(GridConfigurationErrorMessages.functionType('rowClass', fn));\n }\n this._rowClass = fn;\n }\n get rowClass() {\n return this._rowClass;\n }\n /**\n * Defines a function that is executed for every data row in the component,\n * and determines whether the row will be sticky, i.e. always visible after scrolling.\n */\n set rowSticky(fn) {\n if (isDevMode() && isPresent(fn) && typeof fn !== 'function') {\n throw new Error(GridConfigurationErrorMessages.functionType('rowSticky', fn));\n }\n if (isPresent(fn)) {\n this._rowSticky = fn;\n }\n }\n get rowSticky() {\n return this._rowSticky;\n }\n /**\n * Defines a Boolean function that is executed for each data row in the component\n * ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-rows)).\n * Determines whether the row will be selected.\n */\n set rowSelected(fn) {\n if (isDevMode() && typeof fn !== 'function') {\n throw new Error(GridConfigurationErrorMessages.functionType('rowSelected', fn));\n }\n this._rowSelected = fn;\n }\n get rowSelected() {\n return this._rowSelected;\n }\n /**\n * Defines a function that determines the selected state of a data cell.\n * Returns an object with `selected` and `item` properties.\n * The cell is marked as selected only if the `selected` property equals `true`.\n *\n * The function is executed for each data cell and may be called more than once\n * as part of a change detection cycle. ([see example]({% slug grid_selection_custom %}#toc-setting-the-selected-cells))\n */\n set cellSelected(fn) {\n if (isDevMode() && typeof fn !== 'function') {\n throw new Error(GridConfigurationErrorMessages.functionType('cellSelected', fn));\n }\n this._cellSelected = fn;\n }\n get cellSelected() {\n return this._cellSelected;\n }\n /**\n * Returns the currently focused cell (if any).\n */\n get activeCell() {\n return this.navigationService.activeCell;\n }\n /**\n * Returns the currently focused row (if any).\n */\n get activeRow() {\n return this.navigationService.activeRow;\n }\n /**\n * Returns the current Grid selection.\n *\n * @hidden\n */\n get selection() {\n return this.selectable || this.selectionDirective ? this.defaultSelection ? this.defaultSelection.stateToArray() : this.selectionDirective.stateToArray() : [];\n }\n /**\n * Specifies if the loading indicator of the Grid will be displayed ([see example]({% slug binding_grid %})).\n *\n * @default false\n */\n set loading(value) {\n this._loading = value;\n this.rowReorderable && this.notifyReorderContainers();\n }\n get loading() {\n return this._loading;\n }\n get dir() {\n return this.direction;\n }\n get sizeSmallClass() {\n return this.size === 'small';\n }\n get sizeMediumClass() {\n return this.size === 'medium' || !this.size;\n }\n get lockedClasses() {\n return this.lockedLeafColumns.length > 0;\n }\n get virtualClasses() {\n return this.isVirtual;\n }\n get noScrollbarClass() {\n return this.scrollbarWidth === 0;\n }\n get detailTemplate() {\n if (this._customDetailTemplate) {\n return this._customDetailTemplate;\n }\n return this.detailTemplateChildren ? this.detailTemplateChildren.first : undefined;\n }\n set detailTemplate(detailTemplate) {\n this._customDetailTemplate = detailTemplate;\n }\n get cellLoadingTemplate() {\n if (this._cellLoadingTemplate) {\n return this._customDetailTemplate;\n }\n return this.cellLoadingTemplateChildren ? this.cellLoadingTemplateChildren.first : undefined;\n }\n set cellLoadingTemplate(cellLoadingTemplate) {\n this._cellLoadingTemplate = cellLoadingTemplate;\n }\n get loadingTemplate() {\n if (this._loadingTemplate) {\n return this._loadingTemplate;\n }\n return this.loadingTemplateChildren ? this.loadingTemplateChildren.first : undefined;\n }\n set loadingTemplate(loadingTemplate) {\n this._loadingTemplate = loadingTemplate;\n }\n get statusBarTemplate() {\n if (this._statusBarTemplate) {\n return this._statusBarTemplate;\n }\n return this.statusBarTemplateChildren ? this.statusBarTemplateChildren.first : undefined;\n }\n set statusBarTemplate(statusBarTemplate) {\n this._statusBarTemplate = statusBarTemplate;\n }\n get noRecordsTemplate() {\n if (this._customNoRecordsTemplate) {\n return this._customNoRecordsTemplate;\n }\n return this.noRecordsTemplateChildren ? this.noRecordsTemplateChildren.first : undefined;\n }\n set noRecordsTemplate(customNoRecordsTemplate) {\n this._customNoRecordsTemplate = customNoRecordsTemplate;\n }\n get pagerTemplate() {\n if (this._customPagerTemplate) {\n return this._customPagerTemplate;\n }\n return this.pagerTemplateChildren ? this.pagerTemplateChildren.first : undefined;\n }\n set pagerTemplate(customPagerTemplate) {\n this._customPagerTemplate = customPagerTemplate;\n }\n get toolbarTemplate() {\n if (this._customToolbarTemplate) {\n return this._customToolbarTemplate;\n }\n return this.toolbarTemplateChildren ? this.toolbarTemplateChildren.first : undefined;\n }\n set toolbarTemplate(customToolbarTemplate) {\n this._customToolbarTemplate = customToolbarTemplate;\n }\n get scrollbarWidth() {\n return this.supportService.scrollbarWidth;\n }\n get headerPadding() {\n if (isUniversal()) {\n return \"\";\n }\n const padding = Math.max(0, this.scrollbarWidth) + 'px';\n const right = this.rtl ? 0 : padding;\n const left = this.rtl ? padding : 0;\n return `0 ${right} 0 ${left}`;\n }\n get hasGroupFooters() {\n return this.columnsContainer.hasGroupFooter;\n }\n get showFooter() {\n return this.columnsContainer.hasFooter;\n }\n get showGroupFooters() {\n return this.groupable && this.groupable.showFooter;\n }\n get ariaRowCount() {\n return this.totalColumnLevels + 1 + this.view.total + (hasFilterRow(this.filterable) ? 1 : 0);\n }\n get ariaColCount() {\n return this.columnsContainer.leafColumnsToRender.length;\n }\n get navigation() {\n return this.navigationService;\n }\n get isVirtual() {\n return this.scrollable === 'virtual';\n }\n get isScrollable() {\n return this.scrollable !== 'none';\n }\n get visibleColumns() {\n return this.columnsContainer.allColumns;\n }\n get lockedColumns() {\n return this.columnsContainer.lockedColumns;\n }\n get nonLockedColumns() {\n return this.columnsContainer.nonLockedColumns;\n }\n get lockedLeafColumns() {\n return this.columnsContainer.lockedLeafColumns;\n }\n get stickyColumns() {\n return this.columns.filter(column => column.sticky);\n }\n get nonLockedLeafColumns() {\n return this.columnsContainer.nonLockedLeafColumns;\n }\n get leafColumns() {\n return this.columnsContainer.leafColumns;\n }\n get totalColumnLevels() {\n return this.columnsContainer.totalLevels;\n }\n get headerColumns() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.viewportColumns;\n }\n return this.nonLockedColumns;\n }\n get headerLeafColumns() {\n if (this.virtualColumns && !this.pdfService.exporting) {\n return this.leafViewportColumns;\n }\n return this.nonLockedLeafColumns;\n }\n get lockedWidth() {\n const groupCellsWidth = this.group.length * GROUP_CELL_WIDTH;\n return expandColumns(this.lockedLeafColumns.toArray()).reduce((prev, curr) => prev + (curr.width || 0), groupCellsWidth);\n }\n get nonLockedWidth() {\n if (!this.rtl && this.lockedLeafColumns.length || this.virtualColumns) {\n return !this.virtualColumns ? this.columnsContainer.unlockedWidth : this.leafViewportColumns.reduce((acc, column) => acc + (column.width || 0), 0);\n }\n return undefined;\n }\n get selectableSettings() {\n if (this.selectionService) {\n return this.selectionService.options;\n }\n return undefined;\n }\n get columnMenuTemplate() {\n const template = this.columnMenuTemplates.first;\n return template ? template.templateRef : null;\n }\n get totalCount() {\n if (this.isVirtual || !isPresent(this.pageSize)) {\n return this.view.total;\n }\n return this.pageSize;\n }\n /**\n * @hidden\n */\n getDefaultSelectors(type) {\n return this.rowReorderService.defaultSelectors[type];\n }\n /**\n * @hidden\n */\n getHintSettings(type) {\n return this.rowReorderService[type];\n }\n /**\n * Expands the specified master row ([see example]({% slug hierarchy_grid %})).\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded state internally using the data row index.\n *\n * For new development, use the [kendoGridDetailsExpandBy directive]({% slug api_grid_expanddetailsdirective %})\n * or provide an isDetailExpanded callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %})\n * for examples on how to control the expanded state.\n *\n * @param index - The data row index of the master row.\n */\n expandRow(index) {\n this.toggleDetailRowLegacy(index, true);\n }\n /**\n * Collapses the specified master row ([see example]({% slug hierarchy_grid %})).\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded state internally using the data row index.\n *\n * For new development, use the [kendoGridDetailsExpandBy directive]({% slug api_grid_expanddetailsdirective %})\n * or provide an isDetailExpanded callback. See [Controlling the Expanded State]({% slug master_detail_expanded_state_grid %})\n * for examples on how to control the expanded state.\n *\n * @param index - The data row index of the master row.\n */\n collapseRow(index) {\n this.toggleDetailRowLegacy(index, false);\n }\n /**\n * Expands a group header item for the given index. For example,\n * `0_1` expands the second inner group of the first master group.\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded group state internally using the hierarchical group index.\n *\n * When a Grid is pageable, the indexes of the groups are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).\n *\n * @param {string} index - The underscore separated hierarchical index of the group.\n */\n expandGroup(index) {\n this.toggleGroupRowLegacy(index, true);\n }\n /**\n * Collapses a group header item for the given index. For example,\n * `0_1` collapses the second inner group of the first master group.\n *\n * This method is provided only for backwards-compatibility with legacy versions.\n * These versions tracked the expanded group state internally using the hierarchical group index.\n *\n * When a Grid is pageable, the indexes of the groups are offset by the current Grid [skip]({% slug api_grid_gridcomponent %}#toc-skip).\n *\n * @param {string} index - The underscore separated hierarchical index of the group.\n */\n collapseGroup(index) {\n this.toggleGroupRowLegacy(index, false);\n }\n /**\n * @hidden\n */\n resetGroupsState() {\n this.groupsService.reset();\n }\n /**\n * @hidden\n */\n onDataChange() {\n this.autoGenerateColumns();\n this.changeNotification.notify();\n this.pdfService.dataChanged.emit();\n if (isPresent(this.defaultSelection)) {\n this.defaultSelection.reset();\n }\n this.initSelectionService();\n this.updateNavigationMetadata();\n }\n ngOnChanges(changes) {\n if (isChanged$1(\"data\", changes)) {\n this.onDataChange();\n }\n if (this.lockedLeafColumns.length && anyChanged([\"pageSize\", \"skip\", \"sort\", \"group\"], changes)) {\n this.changeNotification.notify();\n }\n if (anyChanged([\"pageSize\", \"scrollable\", 'virtualColumns'], changes)) {\n this.updateNavigationMetadata();\n }\n if (isChanged$1(\"virtualColumns\", changes)) {\n this.viewportColumns = this.leafViewportColumns = null;\n }\n if (isChanged$1(\"height\", changes, false)) {\n this.renderer.setStyle(this.wrapper.nativeElement, 'height', `${this.height}px`);\n }\n if (isChanged$1(\"filterable\", changes) && this.lockedColumns.length) {\n this.syncHeaderHeight(this.ngZone.onStable.asObservable().pipe(take(1)));\n }\n if (anyChanged([\"columnMenu\", \"sortable\", \"filterable\"], changes, false)) {\n this.columnMenuOptions = this.columnMenu && Object.assign({\n filter: Boolean(this.filterable),\n sort: Boolean(this.sortable)\n }, this.columnMenu);\n }\n if (isChanged$1(\"scrollable\", changes) && this.isScrollable) {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.attachScrollSync());\n }\n if (isChanged$1(\"selectable\", changes) && this.shouldResetSelection(changes['selectable'])) {\n if (this.defaultSelection) {\n this.defaultSelection.reset();\n } else if (this.selectionDirective) {\n this.selectionDirective.reset();\n }\n }\n if (isChanged$1('groupable', changes, true)) {\n this.groupable = changes['groupable'].currentValue;\n }\n if (isChanged$1('navigable', changes, true)) {\n if (this.navigationService.enabled) {\n this.navigationService.setActiveSections(this.navigable);\n } else {\n if (this.navigable.length) {\n this.navigationService.init(this.navigationMetadata(), this.navigable);\n }\n }\n }\n }\n ngAfterViewInit() {\n this.attachScrollSync();\n this.attachElementEventHandlers();\n this.updateNavigationMetadata();\n this.applyAutoSize();\n }\n ngAfterContentChecked() {\n this.columnsContainer.refresh();\n this.verifySettings();\n this.initSelectionService();\n }\n ngAfterContentInit() {\n this.shouldGenerateColumns = !this.columns.length;\n this.autoGenerateColumns();\n this.columnList = new ColumnList(this.columns);\n this.columnsChangeSubscription = this.columns.changes.subscribe(() => this.verifySettings());\n }\n ngOnInit() {\n if (this.navigable.length) {\n this.navigationService.init(this.navigationMetadata(), this.navigable);\n }\n }\n ngOnDestroy() {\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (this.stateChangeSubscription) {\n this.stateChangeSubscription.unsubscribe();\n }\n if (this.groupExpandCollapseSubscription) {\n this.groupExpandCollapseSubscription.unsubscribe();\n }\n if (this.detailsServiceSubscription) {\n this.detailsServiceSubscription.unsubscribe();\n }\n if (this.editServiceSubscription) {\n this.editServiceSubscription.unsubscribe();\n }\n if (this.pdfSubscription) {\n this.pdfSubscription.unsubscribe();\n }\n if (this.filterSubscription) {\n this.filterSubscription.unsubscribe();\n }\n if (this.sortSubscription) {\n this.sortSubscription.unsubscribe();\n }\n if (this.columnsChangeSubscription) {\n this.columnsChangeSubscription.unsubscribe();\n }\n if (this.excelSubscription) {\n this.excelSubscription.unsubscribe();\n }\n if (this.columnsContainerChangeSubscription) {\n this.columnsContainerChangeSubscription.unsubscribe();\n }\n if (this.scrollSyncService) {\n this.scrollSyncService.destroy();\n }\n if (this.detachElementEventHandlers) {\n this.detachElementEventHandlers();\n }\n if (this.defaultSelection) {\n this.defaultSelection.destroy();\n }\n if (this.cellClickSubscription) {\n this.cellClickSubscription.unsubscribe();\n }\n if (this.footerChangeSubscription) {\n this.footerChangeSubscription.unsubscribe();\n }\n this.ngZone = null;\n if (this.columnResizingSubscription) {\n this.columnResizingSubscription.unsubscribe();\n }\n if (this.columnReorderSubscription) {\n this.columnReorderSubscription.unsubscribe();\n }\n if (this.localizationSubscription) {\n this.localizationSubscription.unsubscribe();\n }\n if (this.columnVisibilityChangeSubscription) {\n this.columnVisibilityChangeSubscription.unsubscribe();\n }\n if (this.columnLockedChangeSubscription) {\n this.columnLockedChangeSubscription.unsubscribe();\n }\n if (this.columnStickyChangeSubscription) {\n this.columnStickyChangeSubscription.unsubscribe();\n }\n if (this.focusElementSubscription) {\n this.focusElementSubscription.unsubscribe();\n }\n if (this.rowReorderSubscription) {\n this.rowReorderSubscription.unsubscribe();\n }\n this.columnRangeChangeSubscription.unsubscribe();\n }\n /**\n * @hidden\n */\n attachScrollSync() {\n if (isUniversal()) {\n return;\n }\n if (this.header) {\n this.scrollSyncService.registerEmitter(this.header.nativeElement, \"header\");\n }\n if (this.footer) {\n this.footerChangeSubscription = observe(this.footer).subscribe(footers => footers.map(footer => footer.nativeElement).filter(isPresent).forEach(element => {\n this.scrollSyncService.registerEmitter(element, \"footer\");\n // sync footers and content scroll positions when footer visibility is changed dynamically\n element.scrollLeft = this.wrapper.nativeElement.querySelector('.k-grid-content')?.scrollLeft;\n }));\n }\n }\n /**\n * @hidden\n */\n get ariaLabel() {\n return this.localization.get('gridLabel');\n }\n /**\n * @hidden\n */\n messageFor(token) {\n return this.localization.get(token);\n }\n /**\n * Switches the specified table row in the edit mode ([see example]({% slug inline_editing_grid %}#toc-editing-records-1)).\n *\n * @param rowIndex - The data row index that will be switched in the edit mode.\n * @param group - The [FormGroup](link:site.data.urls.angular['formgroupapi'])\n * that describes the edit form.\n * @param options - Additional options configuring the focus target once the editor opens.\n */\n editRow(rowIndex, group, options) {\n this.editService.editRow(rowIndex, group);\n if (isPresent(options) && options.skipFocus) {\n return;\n }\n const row = `tr[data-kendo-grid-item-index=\"${rowIndex}\"]`;\n const columnIndex = options && options.columnIndex;\n const target = isNaN(columnIndex) ? row : `${row} td[data-kendo-grid-column-index=\"${columnIndex}\"]`;\n this.focusEditElement(target);\n }\n /**\n * Closes the editor for a given row ([see example]({% slug inline_editing_grid %}#toc-canceling-editing-1)).\n *\n * @param {number} index - The row index that will be switched out of the edit mode. If no index is provided, it is assumed\n * that the new item editor will be closed.\n */\n closeRow(index) {\n this.editService.close(index);\n }\n /**\n * Creates a new row editor ([see example]({% slug inline_editing_grid %}#toc-adding-records-1)).\n *\n * @param {FormGroup} group - The [FormGroup](link:site.data.urls.angular['formgroupapi']) that describes\n * the edit form. If called with a data item, it will build the `FormGroup` from the data item fields.\n */\n addRow(group) {\n const isFormGroup = group instanceof FormGroup;\n if (!isFormGroup) {\n const fields = Object.keys(group).reduce(createControl(group), {}); // FormBuilder?\n group = new FormGroup(fields);\n }\n this.editService.addRow(group);\n this.focusEditElement('.k-grid-add-row');\n }\n /**\n * Puts the cell that is specified by the table row and column in edit mode ([see example](slug:editing_incell_grid)).\n *\n * @param {number} rowIndex - The data row index that will be switched in the edit mode.\n * @param {number|string|any} column - The leaf column index, or the field name or the column instance that should be edited.\n * @param {FormGroup} group - The [FormGroup](link:site.data.urls.angular['formgroupapi'])\n * that describes the edit form.\n */\n editCell(rowIndex, column, group) {\n const instance = this.columnInstance(column);\n this.editService.editCell(rowIndex, instance, group);\n this.focusEditElement('.k-grid-edit-cell');\n }\n /**\n * Closes the current cell in edit mode and fires\n * the [cellClose]({% slug api_grid_gridcomponent %}#toc-cellclose) event.\n *\n * @return {boolean} Indicates whether the edited cell was closed.\n * A `false` value indicates that the\n * [cellClose]({% slug api_grid_gridcomponent %}#toc-cellclose) event was prevented.\n */\n closeCell() {\n return !this.editService.closeCell();\n }\n /**\n * Closes the current cell in edit mode.\n */\n cancelCell() {\n this.editService.cancelCell();\n }\n /**\n * Returns a flag which indicates if a row or a cell is currently edited.\n *\n * @return {boolean} A flag which indicates if a row or a cell is currently edited.\n */\n isEditing() {\n return this.editService.isEditing();\n }\n /**\n * Returns a flag which indicates if a cell is currently edited.\n *\n * @return {boolean} A flag which indicates if a cell is currently being edited.\n */\n isEditingCell() {\n return this.editService.isEditingCell();\n }\n /**\n * Initiates the PDF export ([see example]({% slug pdfexport_grid %})).\n */\n saveAsPDF() {\n this.pdfService.save(this);\n }\n /**\n * Exports the Grid element to a Drawing [Group]({% slug api_kendo-drawing_group %}) by using the `kendo-grid-pdf` component options.\n * ([see example]({% slug pdfexport_grid %}#toc-exporting-multiple-grids-to-the-same-pdf)).\n *\n * @return {Promise} A promise that will be resolved with the Drawing `Group`.\n */\n drawPDF() {\n const promise = createPromise();\n this.pdfService.draw(this, promise);\n return promise;\n }\n /**\n * Initiates the Excel export ([see example]({% slug excelexport_grid %})).\n */\n saveAsExcel() {\n this.excelService.save(this);\n }\n /**\n * Applies the minimum possible width for the specified column,\n * so that the whole text fits without wrapping. This method expects the Grid\n * to be [resizable](slug:resizing_columns_grid). The method must be executed\n * after the Grid is already populated with data.\n * [See example](slug:resizing_columns_grid#toc-auto-fitting-the-content)\n */\n autoFitColumn(column) {\n this.columnResizingService.autoFit(column);\n }\n /**\n * Adjusts the width of the specified columns to fit the entire content, including headers, without wrapping.\n * If no columns are specified, `autoFitColumns` is applied to all columns.The method must be executed\n * after the Grid is already populated with data.\n * [See example](slug:resizing_columns_grid#toc-auto-fitting-the-content)\n *\n */\n autoFitColumns(columns = this.columns) {\n let cols;\n if (columns instanceof QueryList) {\n cols = columns.toArray();\n } else {\n cols = columns;\n }\n this.columnResizingService.autoFit(...cols);\n }\n /**\n * @hidden\n */\n notifyPageChange(source, event) {\n if (source === \"list\" && !this.isVirtual) {\n return;\n }\n this.pageChange.emit(event);\n }\n /**\n * @hidden\n */\n notifyScrollBottom() {\n if (this.scrollable === 'none') {\n return;\n }\n if (hasObservers(this.scrollBottom)) {\n this.ngZone.run(() => this.scrollBottom.emit({\n sender: this\n }));\n }\n }\n /**\n * @hidden\n */\n focusEditElement(containerSelector) {\n if (this.focusElementSubscription) {\n this.focusElementSubscription.unsubscribe();\n }\n this.ngZone.runOutsideAngular(() => {\n this.focusElementSubscription = this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const wrapper = this.wrapper.nativeElement;\n if (!this.setEditFocus(wrapper.querySelector(containerSelector)) && this.isLocked) {\n this.setEditFocus(wrapper.querySelector(`.k-grid-content ${containerSelector}`));\n }\n this.focusElementSubscription = null;\n });\n });\n }\n /**\n * Focuses the last active or the first cell of the Grid.\n *\n * @returns {NavigationCell} The focused cell.\n */\n focus() {\n this.assertNavigable();\n return this.navigationService.focusCell();\n }\n /**\n * Focuses the cell with the specified row and column index.\n *\n * The row index is based on the logical structure of the Grid and does not correspond to the data item index.\n * Header rows are included, starting at index 0.\n * Group headers and footers are included.\n * The row indexing is absolute and does not change with paging.\n *\n * If the Grid is configured for scrolling, including virtual scrolling, the scroll position will be updated.\n * If the row is not present on the current page, the method will have no effect.\n *\n * @param rowIndex - The logical row index to focus. The top header row has an index 0.\n * @param colIndex - The column index to focus.\n * @returns {NavigationCell} The focused cell.\n *\n */\n focusCell(rowIndex, colIndex) {\n this.assertNavigable();\n return this.navigationService.focusCell(rowIndex, colIndex);\n }\n /**\n * Focuses the next cell, optionally wrapping to the next row.\n *\n * @param wrap - A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.\n * @returns {NavigationCell} The focused cell. If the focus is already on the last cell, returns `null`.\n */\n focusNextCell(wrap = true) {\n this.assertNavigable();\n return this.navigationService.focusNextCell(wrap);\n }\n /**\n * Focuses the previous cell. Optionally wraps to the previous row.\n *\n * @param wrap - A Boolean value which indicates if the focus will move to the next row. Defaults to `true`.\n * @returns {NavigationCell} The focused cell. If the focus is already on the first cell, returns `null`.\n */\n focusPrevCell(wrap = true) {\n this.assertNavigable();\n return this.navigationService.focusPrevCell(wrap);\n }\n /**\n * Scrolls to the specified row and column ([see example](slug:scrollmmodes_grid#toc-scrolling-to-a-specific-row-and-column)).\n */\n scrollTo(request) {\n this.scrollRequestService.scrollTo(request, false);\n }\n /**\n * Scrolls to the specified data item and column ([see example](slug:scrollmmodes_grid#toc-scrolling-to-a-specific-item)).\n */\n scrollToItem(request) {\n this.scrollRequestService.scrollToItem(request);\n }\n /**\n * Changes the position of the specified column.\n * The reordering of columns operates only on the level\n * which is inferred by the source column.\n * For the `reorderColumn` method to work properly,\n * the `source` column has to be visible.\n *\n * @param {ColumnBase} source - The column whose position will be changed.\n * @param {number} destIndex - The new position of the column.\n * @param {ColumnReorderConfig} options - Additional options.\n *\n */\n reorderColumn(source, destIndex, options = {\n before: false\n }) {\n const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));\n let target = columnsForLevel[destIndex];\n if (!target) {\n return;\n }\n const lastNonLocked = target.isLocked && !source.isLocked && this.columnsContainer.nonLockedColumns.length === 1;\n if (lastNonLocked) {\n return;\n }\n if (isSpanColumnComponent(target) && !options.before) {\n target = target.childColumns.last;\n }\n this.reorder({\n before: options.before,\n source: source,\n target: target\n });\n }\n /**\n * A function which determines if a specific row is expanded.\n */\n set isDetailExpanded(callback) {\n this.detailsService.userCallback = callback;\n }\n get isDetailExpanded() {\n return this.detailsService.userCallback;\n }\n /**\n * A function which determines if a specific group row is expanded.\n */\n set isGroupExpanded(callback) {\n this.groupsService.userCallback = callback;\n this.groupable = isPresent(callback);\n }\n get isGroupExpanded() {\n return this.groupsService.userCallback;\n }\n /**\n * @hidden\n */\n handleReorderEvents(ev, evType) {\n this.rowReorderService[evType](ev);\n }\n /**\n * @hidden\n */\n reorder({\n target,\n source,\n before,\n changeContainer\n }) {\n this.ngZone.run(() => {\n const columnsForLevel = sortColumns(this.allColumnsForLevel(source.level));\n let newIndex = columnsForLevel.indexOf(target);\n if (target.parent && target.parent.isSpanColumn) {\n newIndex = columnsForLevel.indexOf(target.parent);\n if (before) {\n target = target.parent;\n }\n }\n const oldIndex = columnsForLevel.indexOf(source);\n if (changeContainer) {\n if (before && 0 < newIndex && oldIndex < newIndex) {\n // dropped before the first not locked column\n newIndex--;\n } else if (!before && oldIndex > newIndex) {\n // dropped after the last locked column\n newIndex++;\n }\n }\n const args = new ColumnReorderEvent({\n column: source,\n oldIndex: oldIndex,\n newIndex: newIndex\n });\n this.columnReorder.emit(args);\n if (args.isDefaultPrevented()) {\n return;\n }\n if (changeContainer) {\n this.columnLockedChange.emit(new ColumnLockedChangeEvent([source]));\n }\n this.updateColumnIndices({\n columnsForLevel,\n source,\n target,\n before\n });\n if (source.locked !== target.locked) {\n source.locked = target.locked;\n }\n this.columnsContainer.refresh();\n this.changeDetectorRef.markForCheck();\n });\n }\n updateColumnIndices({\n columnsForLevel,\n source,\n target,\n before\n }) {\n const expandedColumns = expandColumnsWithSpan(columnsForLevel);\n const sourceColumnIndex = expandedColumns.indexOf(source);\n let nextSourceIndex = 0;\n let nextIndex = 0;\n let toSkip = 1;\n // Possible only when called from the API.\n if (source.isSpanColumn) {\n toSkip += source.childColumns.length;\n }\n let i = 0;\n while (i < expandedColumns.length) {\n const column = expandedColumns[i];\n if (column === target) {\n nextSourceIndex = before ? nextIndex : nextIndex + 1;\n nextIndex = before ? nextIndex + toSkip : nextIndex;\n column.orderIndex = nextIndex;\n if (nextSourceIndex === nextIndex + 1) {\n nextIndex += toSkip;\n }\n } else if (column === source) {\n i += toSkip;\n continue;\n } else {\n column.orderIndex = nextIndex;\n }\n nextIndex++;\n i++;\n }\n for (i = sourceColumnIndex; i < sourceColumnIndex + toSkip; i++) {\n expandedColumns[i].orderIndex = nextSourceIndex++;\n }\n this.updateIndicesForLevel(source.level + 1);\n }\n updateIndicesForLevel(level) {\n const colsForParentLevel = this.allColumnsForLevel(level - 1);\n const colsForLevel = [];\n sortColumns(colsForParentLevel).forEach(c => {\n if (c.isColumnGroup) {\n colsForLevel.push(...c.childrenArray.sort((a, b) => a.orderIndex - b.orderIndex));\n }\n });\n expandColumnsWithSpan(colsForLevel).map((c, i) => c.orderIndex = i);\n if (level < this.columnList.totalColumnLevels()) {\n this.updateIndicesForLevel(level + 1);\n }\n }\n allColumnsForLevel(level) {\n return this.columnList.toArray().filter(column => column.level === level);\n }\n initSelectionService() {\n if (!this.selectable) {\n this.selectionService.ngOnDestroy();\n this.cellSelectionService.ngOnDestroy();\n return;\n }\n if (!this.selectionDirective && !isPresent(this.defaultSelection)) {\n this.defaultSelection = new Selection(this.ctx, this.changeDetectorRef);\n }\n const cellSelectionMode = this.selectable['cell'];\n const activeService = cellSelectionMode ? this.cellSelectionService : this.selectionService;\n const inactiveService = cellSelectionMode ? this.selectionService : this.cellSelectionService;\n if (inactiveService.active) {\n inactiveService.ngOnDestroy();\n activeService.addSubscriptions();\n inactiveService.active = false;\n }\n activeService.active = true;\n activeService.init({\n cellSelected: cellSelectionMode ? this.cellSelected : undefined,\n rowSelected: cellSelectionMode ? undefined : this.rowSelected,\n selectable: this.selectable,\n view: this.view,\n columns: cellSelectionMode ? this.columnList.toArray() : undefined\n });\n if (!this.selectionDirective && !this.selectableSettings.enabled) {\n this.defaultSelection.reset();\n }\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (cellSelectionMode) {\n this.selectionSubscription = this.cellSelectionService.changes.subscribe(event => {\n this.ngZone.run(() => this.selectionChange.emit(event));\n });\n } else {\n this.selectionSubscription = this.selectionService.changes.subscribe(event => {\n this.ngZone.run(() => this.selectionChange.emit(event));\n });\n }\n }\n setEditFocus(element) {\n if (element) {\n return this.navigationService.tryFocus(element);\n }\n }\n columnInstance(column) {\n let instance;\n if (typeof column === 'number') {\n instance = this.columnsContainer.lockedLeafColumns.toArray().concat(this.columnsContainer.nonLockedLeafColumns.toArray())[column];\n } else if (typeof column === 'string') {\n instance = this.columnList.filter(item => item.field === column)[0];\n } else {\n instance = column;\n }\n if (!instance && isDevMode()) {\n throw new Error(ColumnConfigurationErrorMessages.invalidColumn(column));\n }\n return instance;\n }\n verifySettings() {\n if (isDevMode()) {\n const locked = this.lockedLeafColumns.length || this.columnMenu && this.columnMenu.lock;\n const stickyColumns = this.stickyColumns.length || this.columnMenu && this.columnMenu.stick;\n if (locked && this.detailTemplate) {\n throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('detail template', 'locked columns'));\n }\n if (stickyColumns && this.detailTemplate) {\n throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('detail template', 'sticky columns'));\n }\n if (this.lockedLeafColumns.length && !this.nonLockedLeafColumns.length) {\n console.warn(GridConfigurationErrorMessages.nonLockedColumnPresent);\n }\n if ((locked || this.virtualColumns) && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {\n console.warn(ColumnConfigurationErrorMessages.requiredWidth(locked ? 'Locked' : 'Virtual'));\n }\n if (locked && !this.isScrollable) {\n console.warn(ColumnConfigurationErrorMessages.requiredScroll('Locked'));\n }\n if (stickyColumns && !this.isScrollable) {\n console.warn(ColumnConfigurationErrorMessages.requiredScroll('Sticky'));\n }\n if (this.virtualColumns && !this.isScrollable) {\n console.warn(ColumnConfigurationErrorMessages.requiredScroll('Virtual'));\n }\n if (this.columnList.filter(isColumnGroupComponent).filter(x => !x.hasChildren).length) {\n throw new Error(ColumnConfigurationErrorMessages.groupColumnContent);\n }\n if (this.columnList.filter(x => x.locked && x.parent && !x.parent.isLocked).length) {\n throw new Error(ColumnConfigurationErrorMessages.lockedParent);\n }\n if ((this.rowHeight || this.detailRowHeight) && !this.isVirtual) {\n console.warn(GridConfigurationErrorMessages.rowHeightVirtual);\n }\n if (!this.rowHeight && this.isVirtual) {\n console.warn(GridConfigurationErrorMessages.rowHeightVirtual);\n }\n if (!this.detailRowHeight && this.isVirtual && this.detailTemplate) {\n console.warn(GridConfigurationErrorMessages.rowHeightVirtual);\n }\n if (stickyColumns && expandColumns(this.columnList.toArray()).filter(column => !column.width && !isColumnGroupComponent(column)).length) {\n console.warn(ColumnConfigurationErrorMessages.requiredWidth('Sticky'));\n }\n if (this.rowSticky && this.scrollable === 'virtual') {\n throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('sticky rows', 'row virtualization (scrollable=\"virtual\")'));\n }\n if (this.rowSticky && this.groupable) {\n throw new Error(GridConfigurationErrorMessages.incompatibleFeatures('sticky rows', 'grouping'));\n }\n validateColumnsField(this.columnList);\n }\n }\n autoGenerateColumns() {\n if (this.shouldGenerateColumns && !this.columns.length && this.view.length) {\n this.columns.reset(Object.keys(this.view.at(0)).map(field => {\n const column = new ColumnComponent();\n column.field = field;\n return column;\n }));\n }\n }\n attachStateChangesEmitter() {\n this.stateChangeSubscription = merge(this.pageChange.pipe(map(x => ({\n filter: this.filter,\n group: this.group,\n skip: x.skip,\n sort: this.sort,\n take: x.take\n }))), this.sortChange.pipe(map(sort => ({\n filter: this.filter,\n group: this.group,\n skip: this.skip,\n sort: sort,\n take: this.pageSize\n }))), this.groupChange.pipe(map(group => ({\n filter: this.filter,\n group: group,\n skip: this.skip,\n sort: this.sort,\n take: this.pageSize\n }))), this.filterChange.pipe(map(filter => ({\n filter: filter,\n group: this.group,\n skip: 0,\n sort: this.sort,\n take: this.pageSize\n })))).subscribe(x => {\n this.closeCell();\n this.cancelCell();\n this.dataStateChange.emit(x);\n });\n }\n attachEditHandlers() {\n if (!this.editService) {\n return;\n }\n this.editServiceSubscription = this.editService.changes.subscribe(this.emitCRUDEvent.bind(this));\n }\n emitCRUDEvent(args) {\n const {\n action,\n rowIndex,\n formGroup\n } = args;\n let dataItem = this.view.at(rowIndex - this.skip);\n if (action !== 'add' && !dataItem) {\n dataItem = formGroup.value;\n }\n this.closeCell();\n Object.assign(args, {\n dataItem: dataItem,\n sender: this\n });\n switch (action) {\n case 'add':\n this.add.emit(args);\n break;\n case 'cancel':\n this.cancel.emit(args);\n break;\n case 'edit':\n this.edit.emit(args);\n break;\n case 'remove':\n this.remove.emit(args);\n break;\n case 'save':\n this.save.emit(args);\n break;\n case 'cellClose':\n this.cellClose.emit(args);\n break;\n default:\n break;\n }\n }\n attachDomEventHandlers() {\n this.cellClickSubscription = this.domEvents.cellClick.subscribe(args => {\n this.cellClick.emit(Object.assign({\n sender: this\n }, args));\n });\n }\n attachElementEventHandlers() {\n if (isUniversal()) {\n return;\n }\n const wrapper = this.wrapper.nativeElement;\n const ariaRoot = this.ariaRoot.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n const resizeCheck = this.resizeCheck.bind(this);\n const resizeSubscription = this.renderer.listen('window', 'resize', resizeCheck);\n const orientationSubscription = this.renderer.listen('window', 'orientationchange', resizeCheck);\n const documentClickSubscription = this.renderer.listen('document', 'click', args => {\n const activeElement = document.activeElement;\n if (this.editService.shouldCloseCell() && !closest(args.target, matchesClasses('k-animation-container k-grid-ignore-click')) && !(activeElement && (closest(activeElement, matchesClasses('k-animation-container')) || isInEditedCell(activeElement, this.wrapper.nativeElement)))) {\n this.editService.closeCell(args);\n }\n });\n const windowBlurSubscription = this.renderer.listen('window', 'blur', args => {\n const activeElement = document.activeElement;\n if (activeElement && !(matchesNodeName('input')(activeElement) && activeElement.type === 'file' && isInEditedCell(activeElement, this.wrapper.nativeElement))) {\n this.editService.closeCell(args);\n }\n this.domEvents.windowBlur.emit(args);\n });\n const clickSubscription = this.renderer.listen(wrapper, 'click', args => {\n this.domEvents.click.emit(args);\n });\n const keydownSubscription = this.renderer.listen(wrapper, 'keydown', args => {\n this.domEvents.keydown.emit(args);\n });\n // focusIn and focusOut are relative to the element with ARIA role \"grid\"\n let focused = false;\n const focusInSubscription = this.renderer.listen(ariaRoot, 'focusin', args => {\n this.domEvents.focus.emit(args);\n if (!focused) {\n this.domEvents.focusIn.emit(args);\n focused = true;\n }\n });\n const focusOutSubscription = this.renderer.listen(ariaRoot, 'focusout', args => {\n const next = args.relatedTarget || document.activeElement;\n const outside = !closest(next, node => node === ariaRoot);\n if (outside) {\n this.domEvents.focusOut.emit(args);\n focused = false;\n }\n });\n this.detachElementEventHandlers = () => {\n resizeSubscription();\n orientationSubscription();\n documentClickSubscription();\n windowBlurSubscription();\n clickSubscription();\n keydownSubscription();\n focusInSubscription();\n focusOutSubscription();\n };\n });\n }\n matchesMedia(c) {\n return this.responsiveService.matchesMedia(c.media);\n }\n resizeCheck() {\n if (window.innerWidth !== this.cachedWindowWidth) {\n this.cachedWindowWidth = window.innerWidth;\n let hasChanges = false;\n this.columnList.filterHierarchy(column => {\n const matchesMedia = this.matchesMedia(column);\n if (column.matchesMedia !== matchesMedia) {\n hasChanges = true;\n column.matchesMedia = matchesMedia;\n }\n return column.isVisible;\n });\n if (hasChanges) {\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n }\n }\n }\n emitPDFExportEvent() {\n const args = new PDFExportEvent();\n this.pdfExport.emit(args);\n if (!args.isDefaultPrevented()) {\n this.saveAsPDF();\n }\n }\n syncHeaderHeight(observable) {\n return observable.pipe(filter(() => isPresent(this.lockedHeader))).subscribe(() => syncRowsHeight(this.lockedHeader.nativeElement.children[0], this.header.nativeElement.children[0]));\n }\n columnsContainerChange() {\n this.columnsContainerChangeSubscription = this.syncHeaderHeight(this.columnsContainer.changes.pipe(filter(() => this.lockedColumns.length > 0), switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1)))));\n }\n handleColumnResize() {\n const resizes = this.columnResizingService.changes;\n this.columnResizingSubscription = resizes.pipe(tap(e => {\n if (e.type === 'start') {\n this.renderer.addClass(this.wrapper.nativeElement, 'k-grid-column-resizing');\n } else if (e.type === 'end') {\n this.renderer.removeClass(this.wrapper.nativeElement, 'k-grid-column-resizing');\n }\n }), filter(e => e.type === 'start'), switchMap(() => resizes.pipe(takeUntil(resizes.pipe(filter(e => e.type === 'triggerAutoFit'))), filter(e => e.type === 'end')))).subscribe(this.notifyResize.bind(this));\n }\n notifyResize(e) {\n const args = e.resizedColumns.filter(item => isTruthy(item.column.resizable) && !item.column.isColumnGroup).map(item => ({\n column: item.column,\n newWidth: item.column.width,\n oldWidth: item.oldWidth\n }));\n this.columnResize.emit(args);\n }\n assertNavigable() {\n if (isDevMode() && !this.navigationService.enabled) {\n throw new Error(GridConfigurationErrorMessages.focusNavigable);\n }\n }\n navigationMetadata() {\n const isVirtual = this.isVirtual;\n const pageSize = this.pageSize;\n const dataRows = isVirtual ? this.view.total : pageSize;\n const addRowOffset = this.editService.hasNewItem ? 1 : 0;\n const filterRowOffset = hasFilterRow(this.filterable) ? 1 : 0;\n const headerRows = this.totalColumnLevels + 1 + filterRowOffset + addRowOffset;\n return new NavigationMetadata(dataRows, headerRows, isVirtual, this.hasPager, isPresent(this.detailTemplate), this.wrapper, this.virtualColumns, this.columnsContainer);\n }\n updateNavigationMetadata() {\n this.navigationService.metadata = this.navigationMetadata();\n }\n applyAutoSize() {\n const cols = this.columns.filter(c => this.autoSize ? c.autoSize !== false : c.autoSize);\n if (cols.length > 0) {\n this.ngZone.onStable.pipe(take(1)).subscribe(_ => this.autoFitColumns(cols));\n }\n }\n onColumnRangeChange(range) {\n const viewportColumns = this.viewportColumns = [];\n const columnsArray = this.columnsContainer.nonLockedLeafColumns.toArray();\n let leafViewportColumns = columnsArray.slice(range.start, range.end + 1);\n const stickyBeforeStart = columnsArray.slice(0, range.start).filter(c => c.sticky && !leafViewportColumns.some(col => col === c));\n const stickyAfterEnd = columnsArray.slice(range.end, columnsArray.length).filter(c => c.sticky && !leafViewportColumns.some(col => col === c));\n leafViewportColumns = [...stickyBeforeStart, ...leafViewportColumns, ...stickyAfterEnd];\n for (let idx = 0; idx < leafViewportColumns.length; idx++) {\n let column = leafViewportColumns[idx];\n while (column.parent) {\n column = column.parent;\n }\n const toAdd = [column];\n while (toAdd.length) {\n column = toAdd.shift();\n viewportColumns.push(column);\n if (column.isColumnGroup) {\n toAdd.unshift(...column.childrenArray);\n }\n }\n const lastFromGroup = viewportColumns[viewportColumns.length - 1];\n column = leafViewportColumns[idx];\n while (column !== lastFromGroup && idx < leafViewportColumns.length) {\n idx++;\n column = leafViewportColumns[idx];\n }\n }\n if (range.start > 0) {\n const first = leafViewportColumns[0];\n let offset = range.offset;\n let current = viewportColumns[0];\n let index = 0;\n while (current !== first) {\n offset -= current.isColumnGroup ? 0 : current.width;\n index++;\n current = viewportColumns[index];\n }\n if (offset > 0) {\n const totalLevels = this.columnsContainer.totalLevels;\n let previous;\n for (let idx = 0; idx <= totalLevels; idx++) {\n const offsetColumn = idx < totalLevels ? new ColumnGroupComponent(previous) : new ColumnBase(previous);\n previous = offsetColumn;\n offsetColumn.title = \"\\u00A0\";\n offsetColumn.width = offset;\n viewportColumns.unshift(offsetColumn);\n }\n }\n }\n this.leafViewportColumns = viewportColumns.filter(c => !c.isColumnGroup);\n }\n toggleDetailRowLegacy(index, expand) {\n const hasCallback = typeof this.isDetailExpanded === 'function';\n if (isDevMode() && hasCallback) {\n throw new Error(GridConfigurationErrorMessages.expandCollapseMethods('expandRow', 'collapseRow', 'kendoGridDetailsExpandBy', 'isDetailExpanded'));\n }\n if (!isDevMode() && hasCallback) {\n return;\n }\n if (this.detailsService.isExpanded(index, null) !== expand) {\n this.detailsService.toggleRow(index, null);\n }\n }\n toggleGroupRowLegacy(index, expand) {\n const hasCallback = typeof this.isGroupExpanded === 'function';\n if (isDevMode() && hasCallback) {\n throw new Error(GridConfigurationErrorMessages.expandCollapseMethods('expandGroup', 'collapseGroup', 'kendoGridExpandGroupBy', 'isGroupExpanded'));\n }\n if (!isDevMode() && hasCallback) {\n return;\n }\n if (this.groupsService.isExpanded({\n groupIndex: index\n }) !== expand) {\n this.groupsService.toggleRow({\n index\n }, false);\n if (this.ctx.groupBindingDirective) {\n this.ctx.groupBindingDirective[`group${expand ? 'Expand' : 'Collapse'}`]({\n groupIndex: index\n });\n }\n }\n }\n shouldResetSelection(selectableChanges) {\n const previousValue = selectableChanges.previousValue;\n if (!previousValue) {\n // Selection was disabled, no need to reset.\n return false;\n }\n const currentValue = selectableChanges.currentValue;\n if (!currentValue || currentValue.enabled === false) {\n // Selection disabled, reset.\n return true;\n }\n return previousValue.cell !== currentValue.cell;\n }\n notifyReorderContainers() {\n this.dragTargetContainer?.notify();\n this.dropTargetContainer?.notify();\n }\n get flatData() {\n return isArray(this.data) ? this.data : this.data.data;\n }\n }\n GridComponent.ɵfac = function GridComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridComponent)(i0.ɵɵdirectiveInject(BrowserSupportService), i0.ɵɵdirectiveInject(SelectionService), i0.ɵɵdirectiveInject(CellSelectionService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(GroupInfoService), i0.ɵɵdirectiveInject(GroupsService), i0.ɵɵdirectiveInject(ChangeNotificationService), i0.ɵɵdirectiveInject(DetailsService), i0.ɵɵdirectiveInject(EditService), i0.ɵɵdirectiveInject(FilterService), i0.ɵɵdirectiveInject(PDFService), i0.ɵɵdirectiveInject(ResponsiveService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(ExcelService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(ScrollSyncService), i0.ɵɵdirectiveInject(DomEventsService), i0.ɵɵdirectiveInject(ColumnResizingService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ColumnReorderService), i0.ɵɵdirectiveInject(ColumnInfoService), i0.ɵɵdirectiveInject(NavigationService), i0.ɵɵdirectiveInject(SortService), i0.ɵɵdirectiveInject(ScrollRequestService), i0.ɵɵdirectiveInject(i1$2.LocalizationService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(SizingOptionsService), i0.ɵɵdirectiveInject(RowReorderService));\n };\n GridComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GridComponent,\n selectors: [[\"kendo-grid\"]],\n contentQueries: function GridComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, ColumnBase, 4);\n i0.ɵɵcontentQuery(dirIndex, DetailTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, CellLoadingTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, LoadingTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, StatusBarTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, NoRecordsTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, PagerTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, ToolbarTemplateDirective, 4);\n i0.ɵɵcontentQuery(dirIndex, ColumnMenuTemplateDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columns = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.detailTemplateChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cellLoadingTemplateChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingTemplateChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.statusBarTemplateChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noRecordsTemplateChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pagerTemplateChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.toolbarTemplateChildren = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnMenuTemplates = _t);\n }\n },\n viewQuery: function GridComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c54, 5);\n i0.ɵɵviewQuery(_c55, 5);\n i0.ɵɵviewQuery(_c56, 7);\n i0.ɵɵviewQuery(DragTargetContainerDirective, 5);\n i0.ɵɵviewQuery(DropTargetContainerDirective, 5);\n i0.ɵɵviewQuery(_c57, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lockedHeader = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.header = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ariaRoot = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dragTargetContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropTargetContainer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footer = _t);\n }\n },\n hostVars: 13,\n hostBindings: function GridComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"dir\", ctx.dir);\n i0.ɵɵclassProp(\"k-grid\", ctx.hostClass)(\"k-grid-sm\", ctx.sizeSmallClass)(\"k-grid-md\", ctx.sizeMediumClass)(\"k-grid-lockedcolumns\", ctx.lockedClasses)(\"k-grid-virtual\", ctx.virtualClasses)(\"k-grid-no-scrollbar\", ctx.noScrollbarClass);\n }\n },\n inputs: {\n data: \"data\",\n pageSize: \"pageSize\",\n height: \"height\",\n rowHeight: \"rowHeight\",\n detailRowHeight: \"detailRowHeight\",\n skip: \"skip\",\n scrollable: \"scrollable\",\n selectable: \"selectable\",\n sort: \"sort\",\n size: \"size\",\n trackBy: \"trackBy\",\n filter: \"filter\",\n group: \"group\",\n virtualColumns: \"virtualColumns\",\n filterable: \"filterable\",\n sortable: \"sortable\",\n pageable: \"pageable\",\n groupable: \"groupable\",\n rowReorderable: \"rowReorderable\",\n navigable: \"navigable\",\n navigatable: \"navigatable\",\n autoSize: \"autoSize\",\n rowClass: \"rowClass\",\n rowSticky: \"rowSticky\",\n rowSelected: \"rowSelected\",\n cellSelected: \"cellSelected\",\n resizable: \"resizable\",\n reorderable: \"reorderable\",\n loading: \"loading\",\n columnMenu: \"columnMenu\",\n hideHeader: \"hideHeader\",\n isDetailExpanded: \"isDetailExpanded\",\n isGroupExpanded: \"isGroupExpanded\"\n },\n outputs: {\n filterChange: \"filterChange\",\n pageChange: \"pageChange\",\n groupChange: \"groupChange\",\n sortChange: \"sortChange\",\n selectionChange: \"selectionChange\",\n rowReorder: \"rowReorder\",\n dataStateChange: \"dataStateChange\",\n groupExpand: \"groupExpand\",\n groupCollapse: \"groupCollapse\",\n detailExpand: \"detailExpand\",\n detailCollapse: \"detailCollapse\",\n edit: \"edit\",\n cancel: \"cancel\",\n save: \"save\",\n remove: \"remove\",\n add: \"add\",\n cellClose: \"cellClose\",\n cellClick: \"cellClick\",\n pdfExport: \"pdfExport\",\n excelExport: \"excelExport\",\n columnResize: \"columnResize\",\n columnReorder: \"columnReorder\",\n columnVisibilityChange: \"columnVisibilityChange\",\n columnLockedChange: \"columnLockedChange\",\n columnStickyChange: \"columnStickyChange\",\n scrollBottom: \"scrollBottom\",\n contentScroll: \"contentScroll\"\n },\n exportAs: [\"kendoGrid\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([BrowserSupportService, LocalizationService, ColumnInfoService, SelectionService, CellSelectionService, DetailsService, GroupsService, GroupInfoService, ChangeNotificationService, EditService, PDFService, SuspendService, {\n provide: CELL_CONTEXT,\n useValue: EMPTY_CELL_CONTEXT\n }, {\n provide: L10N_PREFIX,\n useValue: 'kendo.grid'\n }, FilterService, ResponsiveService, PagerContextService, ExcelService, ScrollSyncService, ResizeService, LocalDataChangesService, DomEventsService, ColumnResizingService, SinglePopupService, DragAndDropService, DragHintService, DropCueService, ColumnReorderService, NavigationService, FocusRoot, IdService, CellSelectionAggregateService, ScrollRequestService, SortService, ContextService, SizingOptionsService, RowReorderService, ClipboardService]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 16,\n vars: 22,\n consts: () => {\n let i18n_0;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label visible in the Grid group panel when it is empty\n * @meaning kendo.grid.groupPanelEmpty\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_0 = goog.getMsg(\"Drag a column header and drop it here to group by that column\");\n i18n_0 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_0;\n } else {\n i18n_0 = $localize`:kendo.grid.groupPanelEmpty|The label visible in the Grid group panel when it is empty:Drag a column header and drop it here to group by that column`;\n }\n let i18n_1;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label visible in the Grid when there are no records\n * @meaning kendo.grid.noRecords\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_1 = goog.getMsg(\"No records available.\");\n i18n_1 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_1;\n } else {\n i18n_1 = $localize`:kendo.grid.noRecords|The label visible in the Grid when there are no records:No records available.`;\n }\n let i18n_2;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the first page button in Grid pager\n * @meaning kendo.grid.pagerFirstPage\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_2 = goog.getMsg(\"Go to the first page\");\n i18n_2 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_2;\n } else {\n i18n_2 = $localize`:kendo.grid.pagerFirstPage|The label for the first page button in Grid pager:Go to the first page`;\n }\n let i18n_3;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the previous page button in Grid pager\n * @meaning kendo.grid.pagerPreviousPage\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_3 = goog.getMsg(\"Go to the previous page\");\n i18n_3 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_3;\n } else {\n i18n_3 = $localize`:kendo.grid.pagerPreviousPage|The label for the previous page button in Grid pager:Go to the previous page`;\n }\n let i18n_4;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the next page button in Grid pager\n * @meaning kendo.grid.pagerNextPage\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_4 = goog.getMsg(\"Go to the next page\");\n i18n_4 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_4;\n } else {\n i18n_4 = $localize`:kendo.grid.pagerNextPage|The label for the next page button in Grid pager:Go to the next page`;\n }\n let i18n_5;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the last page button in Grid pager\n * @meaning kendo.grid.pagerLastPage\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_5 = goog.getMsg(\"Go to the last page\");\n i18n_5 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_5;\n } else {\n i18n_5 = $localize`:kendo.grid.pagerLastPage|The label for the last page button in Grid pager:Go to the last page`;\n }\n let i18n_6;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label before the current page number in the Grid pager\n * @meaning kendo.grid.pagerPage\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_6 = goog.getMsg(\"Page\");\n i18n_6 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_6;\n } else {\n i18n_6 = $localize`:kendo.grid.pagerPage|The label before the current page number in the Grid pager:Page`;\n }\n let i18n_7;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label before the total pages number in the Grid pager\n * @meaning kendo.grid.pagerOf\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_7 = goog.getMsg(\"of\");\n i18n_7 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_7;\n } else {\n i18n_7 = $localize`:kendo.grid.pagerOf|The label before the total pages number in the Grid pager:of`;\n }\n let i18n_8;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label after the total pages number in the Grid pager\n * @meaning kendo.grid.pagerItems\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_8 = goog.getMsg(\"items\");\n i18n_8 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_8;\n } else {\n i18n_8 = $localize`:kendo.grid.pagerItems|The label after the total pages number in the Grid pager:items`;\n }\n let i18n_9;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the pager input in the Grid pager\n * @meaning kendo.grid.pagerPageNumberInputTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_9 = goog.getMsg(\"Page Number\");\n i18n_9 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_9;\n } else {\n i18n_9 = $localize`:kendo.grid.pagerPageNumberInputTitle|The label for the pager input in the Grid pager:Page Number`;\n }\n let i18n_10;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the page size chooser in the Grid pager\n * @meaning kendo.grid.pagerItemsPerPage\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_10 = goog.getMsg(\"items per page\");\n i18n_10 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_10;\n } else {\n i18n_10 = $localize`:kendo.grid.pagerItemsPerPage|The label for the page size chooser in the Grid pager:items per page`;\n }\n let i18n_11;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter cell or icon\n * @meaning kendo.grid.filter\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_11 = goog.getMsg(\"Filter\");\n i18n_11 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_11;\n } else {\n i18n_11 = $localize`:kendo.grid.filter|The label of the filter cell or icon:Filter`;\n }\n let i18n_12;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the equal filter operator\n * @meaning kendo.grid.filterEqOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_12 = goog.getMsg(\"Is equal to\");\n i18n_12 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_12;\n } else {\n i18n_12 = $localize`:kendo.grid.filterEqOperator|The text of the equal filter operator:Is equal to`;\n }\n let i18n_13;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the not equal filter operator\n * @meaning kendo.grid.filterNotEqOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_13 = goog.getMsg(\"Is not equal to\");\n i18n_13 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_13;\n } else {\n i18n_13 = $localize`:kendo.grid.filterNotEqOperator|The text of the not equal filter operator:Is not equal to`;\n }\n let i18n_14;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is null filter operator\n * @meaning kendo.grid.filterIsNullOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_14 = goog.getMsg(\"Is null\");\n i18n_14 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_14;\n } else {\n i18n_14 = $localize`:kendo.grid.filterIsNullOperator|The text of the is null filter operator:Is null`;\n }\n let i18n_15;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is not null filter operator\n * @meaning kendo.grid.filterIsNotNullOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_15 = goog.getMsg(\"Is not null\");\n i18n_15 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_15;\n } else {\n i18n_15 = $localize`:kendo.grid.filterIsNotNullOperator|The text of the is not null filter operator:Is not null`;\n }\n let i18n_16;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is empty filter operator\n * @meaning kendo.grid.filterIsEmptyOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_16 = goog.getMsg(\"Is empty\");\n i18n_16 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_16;\n } else {\n i18n_16 = $localize`:kendo.grid.filterIsEmptyOperator|The text of the is empty filter operator:Is empty`;\n }\n let i18n_17;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the is not empty filter operator\n * @meaning kendo.grid.filterIsNotEmptyOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_17 = goog.getMsg(\"Is not empty\");\n i18n_17 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_17;\n } else {\n i18n_17 = $localize`:kendo.grid.filterIsNotEmptyOperator|The text of the is not empty filter operator:Is not empty`;\n }\n let i18n_18;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the starts with filter operator\n * @meaning kendo.grid.filterStartsWithOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_18 = goog.getMsg(\"Starts with\");\n i18n_18 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_18;\n } else {\n i18n_18 = $localize`:kendo.grid.filterStartsWithOperator|The text of the starts with filter operator:Starts with`;\n }\n let i18n_19;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the contains filter operator\n * @meaning kendo.grid.filterContainsOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_19 = goog.getMsg(\"Contains\");\n i18n_19 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_19;\n } else {\n i18n_19 = $localize`:kendo.grid.filterContainsOperator|The text of the contains filter operator:Contains`;\n }\n let i18n_20;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the does not contain filter operator\n * @meaning kendo.grid.filterNotContainsOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_20 = goog.getMsg(\"Does not contain\");\n i18n_20 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_20;\n } else {\n i18n_20 = $localize`:kendo.grid.filterNotContainsOperator|The text of the does not contain filter operator:Does not contain`;\n }\n let i18n_21;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the ends with filter operator\n * @meaning kendo.grid.filterEndsWithOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_21 = goog.getMsg(\"Ends with\");\n i18n_21 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_21;\n } else {\n i18n_21 = $localize`:kendo.grid.filterEndsWithOperator|The text of the ends with filter operator:Ends with`;\n }\n let i18n_22;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the greater than or equal filter operator\n * @meaning kendo.grid.filterGteOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_22 = goog.getMsg(\"Is greater than or equal to\");\n i18n_22 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_22;\n } else {\n i18n_22 = $localize`:kendo.grid.filterGteOperator|The text of the greater than or equal filter operator:Is greater than or equal to`;\n }\n let i18n_23;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the greater than filter operator\n * @meaning kendo.grid.filterGtOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_23 = goog.getMsg(\"Is greater than\");\n i18n_23 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_23;\n } else {\n i18n_23 = $localize`:kendo.grid.filterGtOperator|The text of the greater than filter operator:Is greater than`;\n }\n let i18n_24;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the less than or equal filter operator\n * @meaning kendo.grid.filterLteOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_24 = goog.getMsg(\"Is less than or equal to\");\n i18n_24 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_24;\n } else {\n i18n_24 = $localize`:kendo.grid.filterLteOperator|The text of the less than or equal filter operator:Is less than or equal to`;\n }\n let i18n_25;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the less than filter operator\n * @meaning kendo.grid.filterLtOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_25 = goog.getMsg(\"Is less than\");\n i18n_25 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_25;\n } else {\n i18n_25 = $localize`:kendo.grid.filterLtOperator|The text of the less than filter operator:Is less than`;\n }\n let i18n_26;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the IsTrue boolean filter option\n * @meaning kendo.grid.filterIsTrue\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_26 = goog.getMsg(\"Is True\");\n i18n_26 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_26;\n } else {\n i18n_26 = $localize`:kendo.grid.filterIsTrue|The text of the IsTrue boolean filter option:Is True`;\n }\n let i18n_27;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the IsFalse boolean filter option\n * @meaning kendo.grid.filterIsFalse\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_27 = goog.getMsg(\"Is False\");\n i18n_27 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_27;\n } else {\n i18n_27 = $localize`:kendo.grid.filterIsFalse|The text of the IsFalse boolean filter option:Is False`;\n }\n let i18n_28;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the (All) boolean filter option\n * @meaning kendo.grid.filterBooleanAll\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_28 = goog.getMsg(\"(All)\");\n i18n_28 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_28;\n } else {\n i18n_28 = $localize`:kendo.grid.filterBooleanAll|The text of the (All) boolean filter option:(All)`;\n }\n let i18n_29;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the after or equal date filter operator\n * @meaning kendo.grid.filterAfterOrEqualOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_29 = goog.getMsg(\"Is after or equal to\");\n i18n_29 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_29;\n } else {\n i18n_29 = $localize`:kendo.grid.filterAfterOrEqualOperator|The text of the after or equal date filter operator:Is after or equal to`;\n }\n let i18n_30;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the after date filter operator\n * @meaning kendo.grid.filterAfterOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_30 = goog.getMsg(\"Is after\");\n i18n_30 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_30;\n } else {\n i18n_30 = $localize`:kendo.grid.filterAfterOperator|The text of the after date filter operator:Is after`;\n }\n let i18n_31;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the before date filter operator\n * @meaning kendo.grid.filterBeforeOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_31 = goog.getMsg(\"Is before\");\n i18n_31 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_31;\n } else {\n i18n_31 = $localize`:kendo.grid.filterBeforeOperator|The text of the before date filter operator:Is before`;\n }\n let i18n_32;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the before or equal date filter operator\n * @meaning kendo.grid.filterBeforeOrEqualOperator\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_32 = goog.getMsg(\"Is before or equal to\");\n i18n_32 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_32;\n } else {\n i18n_32 = $localize`:kendo.grid.filterBeforeOrEqualOperator|The text of the before or equal date filter operator:Is before or equal to`;\n }\n let i18n_33;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the filter button\n * @meaning kendo.grid.filterFilterButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_33 = goog.getMsg(\"Filter\");\n i18n_33 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_33;\n } else {\n i18n_33 = $localize`:kendo.grid.filterFilterButton|The text of the filter button:Filter`;\n }\n let i18n_34;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the clear filter button\n * @meaning kendo.grid.filterClearButton\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_34 = goog.getMsg(\"Clear\");\n i18n_34 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_34;\n } else {\n i18n_34 = $localize`:kendo.grid.filterClearButton|The text of the clear filter button:Clear`;\n }\n let i18n_35;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the And filter logic\n * @meaning kendo.grid.filterAndLogic\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_35 = goog.getMsg(\"And\");\n i18n_35 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_35;\n } else {\n i18n_35 = $localize`:kendo.grid.filterAndLogic|The text of the And filter logic:And`;\n }\n let i18n_36;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Or filter logic\n * @meaning kendo.grid.filterOrLogic\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_36 = goog.getMsg(\"Or\");\n i18n_36 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_36;\n } else {\n i18n_36 = $localize`:kendo.grid.filterOrLogic|The text of the Or filter logic:Or`;\n }\n let i18n_37;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The loading text\n * @meaning kendo.grid.loading\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_37 = goog.getMsg(\"Loading\");\n i18n_37 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_37;\n } else {\n i18n_37 = $localize`:kendo.grid.loading|The loading text:Loading`;\n }\n let i18n_38;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The Grid aria-label\n * @meaning kendo.grid.gridLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_38 = goog.getMsg(\"Data table\");\n i18n_38 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_38;\n } else {\n i18n_38 = $localize`:kendo.grid.gridLabel|The Grid aria-label:Data table`;\n }\n let i18n_39;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the columns item\n * @meaning kendo.grid.columns\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_39 = goog.getMsg(\"Columns\");\n i18n_39 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_39;\n } else {\n i18n_39 = $localize`:kendo.grid.columns|The text shown in the column menu for the columns item:Columns`;\n }\n let i18n_40;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the lock item\n * @meaning kendo.grid.lock\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_40 = goog.getMsg(\"Lock\");\n i18n_40 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_40;\n } else {\n i18n_40 = $localize`:kendo.grid.lock|The text shown in the column menu for the lock item:Lock`;\n }\n let i18n_41;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the unlock item\n * @meaning kendo.grid.unlock\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_41 = goog.getMsg(\"Unlock\");\n i18n_41 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_41;\n } else {\n i18n_41 = $localize`:kendo.grid.unlock|The text shown in the column menu for the unlock item:Unlock`;\n }\n let i18n_42;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the set column position item\n * @meaning kendo.grid.setColumnPosition\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_42 = goog.getMsg(\"Set Column Position\");\n i18n_42 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_42;\n } else {\n i18n_42 = $localize`:kendo.grid.setColumnPosition|The text shown in the column menu for the set column position item:Set Column Position`;\n }\n let i18n_43;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the stick item\n * @meaning kendo.grid.stick\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_43 = goog.getMsg(\"Stick\");\n i18n_43 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_43;\n } else {\n i18n_43 = $localize`:kendo.grid.stick|The text shown in the column menu for the stick item:Stick`;\n }\n let i18n_44;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the unstick item\n * @meaning kendo.grid.unstick\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_44 = goog.getMsg(\"Unstick\");\n i18n_44 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_44;\n } else {\n i18n_44 = $localize`:kendo.grid.unstick|The text shown in the column menu for the unstick item:Unstick`;\n }\n let i18n_45;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the sort icon\n * @meaning kendo.grid.sortable\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_45 = goog.getMsg(\"Sortable\");\n i18n_45 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_45;\n } else {\n i18n_45 = $localize`:kendo.grid.sortable|The label of the sort icon:Sortable`;\n }\n let i18n_46;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the sort ascending item\n * @meaning kendo.grid.sortAscending\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_46 = goog.getMsg(\"Sort Ascending\");\n i18n_46 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_46;\n } else {\n i18n_46 = $localize`:kendo.grid.sortAscending|The text shown in the column menu for the sort ascending item:Sort Ascending`;\n }\n let i18n_47;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the sort descending item\n * @meaning kendo.grid.sortDescending\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_47 = goog.getMsg(\"Sort Descending\");\n i18n_47 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_47;\n } else {\n i18n_47 = $localize`:kendo.grid.sortDescending|The text shown in the column menu for the sort descending item:Sort Descending`;\n }\n let i18n_48;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the autosize all columns item\n * @meaning kendo.grid.autosizeAllColumns\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_48 = goog.getMsg(\"Autosize All Columns\");\n i18n_48 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_48;\n } else {\n i18n_48 = $localize`:kendo.grid.autosizeAllColumns|The text shown in the column menu for the autosize all columns item:Autosize All Columns`;\n }\n let i18n_49;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu for the autosize this column item\n * @meaning kendo.grid.autosizeThisColumn\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_49 = goog.getMsg(\"Autosize This Column\");\n i18n_49 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_49;\n } else {\n i18n_49 = $localize`:kendo.grid.autosizeThisColumn|The text shown in the column menu for the autosize this column item:Autosize This Column`;\n }\n let i18n_50;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The status announcement when a column is no longer sorted\n * @meaning kendo.grid.sortedDefault\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_50 = goog.getMsg(\"Not Sorted\");\n i18n_50 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_50;\n } else {\n i18n_50 = $localize`:kendo.grid.sortedDefault|The status announcement when a column is no longer sorted:Not Sorted`;\n }\n let i18n_51;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Group Chip indicating the ascending sorting order of the groups\n * @meaning kendo.grid.sortedAscending\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_51 = goog.getMsg(\"Sorted Ascending\");\n i18n_51 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_51;\n } else {\n i18n_51 = $localize`:kendo.grid.sortedAscending|The title of the Group Chip indicating the ascending sorting order of the groups:Sorted Ascending`;\n }\n let i18n_52;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Group Chip indicating the descending sorting order of the groups\n * @meaning kendo.grid.sortedDescending\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_52 = goog.getMsg(\"Sorted Descending\");\n i18n_52 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_52;\n } else {\n i18n_52 = $localize`:kendo.grid.sortedDescending|The title of the Group Chip indicating the descending sorting order of the groups:Sorted Descending`;\n }\n let i18n_53;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu or column chooser for the columns apply button\n * @meaning kendo.grid.columnsApply\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_53 = goog.getMsg(\"Apply\");\n i18n_53 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_53;\n } else {\n i18n_53 = $localize`:kendo.grid.columnsApply|The text shown in the column menu or column chooser for the columns apply button:Apply`;\n }\n let i18n_54;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text shown in the column menu or column chooser for the columns reset button\n * @meaning kendo.grid.columnsReset\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_54 = goog.getMsg(\"Reset\");\n i18n_54 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_54;\n } else {\n i18n_54 = $localize`:kendo.grid.columnsReset|The text shown in the column menu or column chooser for the columns reset button:Reset`;\n }\n let i18n_55;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the expand icon of detail rows.\n * @meaning kendo.grid.detailExpand\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_55 = goog.getMsg(\"Expand Details\");\n i18n_55 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_55;\n } else {\n i18n_55 = $localize`:kendo.grid.detailExpand|The title of the expand icon of detail rows.:Expand Details`;\n }\n let i18n_56;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the collapse icon of detail rows.\n * @meaning kendo.grid.detailCollapse\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_56 = goog.getMsg(\"Collapse Details\");\n i18n_56 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_56;\n } else {\n i18n_56 = $localize`:kendo.grid.detailCollapse|The title of the collapse icon of detail rows.:Collapse Details`;\n }\n let i18n_57;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the Today button of the Date filter.\n * @meaning kendo.grid.filterDateToday\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_57 = goog.getMsg(\"TODAY\");\n i18n_57 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_57;\n } else {\n i18n_57 = $localize`:kendo.grid.filterDateToday|The text of the Today button of the Date filter.:TODAY`;\n }\n let i18n_58;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Toggle button of the Date filter.\n * @meaning kendo.grid.filterDateToggle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_58 = goog.getMsg(\"Toggle Calendar\");\n i18n_58 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_58;\n } else {\n i18n_58 = $localize`:kendo.grid.filterDateToggle|The title of the Toggle button of the Date filter.:Toggle Calendar`;\n }\n let i18n_59;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Decrement button of the Numeric filter.\n * @meaning kendo.grid.filterNumericDecrement\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_59 = goog.getMsg(\"Decrement\");\n i18n_59 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_59;\n } else {\n i18n_59 = $localize`:kendo.grid.filterNumericDecrement|The title of the Decrement button of the Numeric filter.:Decrement`;\n }\n let i18n_60;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the Increment button of the Numeric filter.\n * @meaning kendo.grid.filterNumericIncrement\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_60 = goog.getMsg(\"Increment\");\n i18n_60 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_60;\n } else {\n i18n_60 = $localize`:kendo.grid.filterNumericIncrement|The title of the Increment button of the Numeric filter.:Increment`;\n }\n let i18n_61;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The labels of the checkbox column checkboxes.\n * @meaning kendo.grid.selectionCheckboxLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_61 = goog.getMsg(\"Select Row\");\n i18n_61 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_61;\n } else {\n i18n_61 = $localize`:kendo.grid.selectionCheckboxLabel|The labels of the checkbox column checkboxes.:Select Row`;\n }\n let i18n_62;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the checkbox column select all checkbox.\n * @meaning kendo.grid.selectAllCheckboxLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_62 = goog.getMsg(\"Select All Rows\");\n i18n_62 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_62;\n } else {\n i18n_62 = $localize`:kendo.grid.selectAllCheckboxLabel|The label of the checkbox column select all checkbox.:Select All Rows`;\n }\n let i18n_63;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the title and aria-label attributes applied to the collapse icon of group rows.\n * @meaning kendo.grid.groupCollapse\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_63 = goog.getMsg(\"Collapse Group\");\n i18n_63 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_63;\n } else {\n i18n_63 = $localize`:kendo.grid.groupCollapse|The text of the title and aria-label attributes applied to the collapse icon of group rows.:Collapse Group`;\n }\n let i18n_64;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the title and aria-label attributes applied to the expand icon of group rows.\n * @meaning kendo.grid.groupExpand\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_64 = goog.getMsg(\"Expand Group\");\n i18n_64 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_64;\n } else {\n i18n_64 = $localize`:kendo.grid.groupExpand|The text of the title and aria-label attributes applied to the expand icon of group rows.:Expand Group`;\n }\n let i18n_65;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text of the title and aria-label attributes applied to the page chooser in the Grid Pager\n * @meaning kendo.grid.selectPage\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_65 = goog.getMsg(\"Select page\");\n i18n_65 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_65;\n } else {\n i18n_65 = $localize`:kendo.grid.selectPage|The text of the title and aria-label attributes applied to the page chooser in the Grid Pager:Select page`;\n }\n let i18n_66;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Grid top toolbar\n * @meaning kendo.grid.topToolbarLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_66 = goog.getMsg(\"Top toolbar\");\n i18n_66 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_66;\n } else {\n i18n_66 = $localize`:kendo.grid.topToolbarLabel|The label for the Grid top toolbar:Top toolbar`;\n }\n let i18n_67;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Grid bottom toolbar\n * @meaning kendo.grid.bottomToolbarLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_67 = goog.getMsg(\"Bottom toolbar\");\n i18n_67 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_67;\n } else {\n i18n_67 = $localize`:kendo.grid.bottomToolbarLabel|The label for the Grid bottom toolbar:Bottom toolbar`;\n }\n let i18n_68;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Grid group panel toolbar\n * @meaning kendo.grid.groupPanelLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_68 = goog.getMsg(\"Group panel\");\n i18n_68 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_68;\n } else {\n i18n_68 = $localize`:kendo.grid.groupPanelLabel|The label for the Grid group panel toolbar:Group panel`;\n }\n let i18n_69;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Grid drag row handle\n * @meaning kendo.grid.dragRowHandleLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_69 = goog.getMsg(\"Drag row\");\n i18n_69 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_69;\n } else {\n i18n_69 = $localize`:kendo.grid.dragRowHandleLabel|The label for the Grid drag row handle:Drag row`;\n }\n let i18n_70;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the column menu Filter tab\n * @meaning kendo.grid.columnMenuFilterTabTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_70 = goog.getMsg(\"Filter\");\n i18n_70 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_70;\n } else {\n i18n_70 = $localize`:kendo.grid.columnMenuFilterTabTitle|The title for the column menu Filter tab:Filter`;\n }\n let i18n_71;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the column menu General tab\n * @meaning kendo.grid.columnMenuGeneralTabTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_71 = goog.getMsg(\"General\");\n i18n_71 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_71;\n } else {\n i18n_71 = $localize`:kendo.grid.columnMenuGeneralTabTitle|The title for the column menu General tab:General`;\n }\n let i18n_72;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title for the column menu Columns tab\n * @meaning kendo.grid.columnMenuColumnsTabTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_72 = goog.getMsg(\"Columns\");\n i18n_72 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_72;\n } else {\n i18n_72 = $localize`:kendo.grid.columnMenuColumnsTabTitle|The title for the column menu Columns tab:Columns`;\n }\n let i18n_73;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Group pane Chip Menu Move as previous item\n * @meaning kendo.grid.groupChipMenuPrevious\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_73 = goog.getMsg(\"Move as previous\");\n i18n_73 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_73;\n } else {\n i18n_73 = $localize`:kendo.grid.groupChipMenuPrevious|The text for the Group pane Chip Menu Move as previous item:Move as previous`;\n }\n let i18n_74;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The text for the Group pane Chip Menu Move as next item\n * @meaning kendo.grid.groupChipMenuNext\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_74 = goog.getMsg(\"Move as next\");\n i18n_74 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_74;\n } else {\n i18n_74 = $localize`:kendo.grid.groupChipMenuNext|The text for the Group pane Chip Menu Move as next item:Move as next`;\n }\n let i18n_75;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label for the Grid pager\n * @meaning kendo.grid.pagerLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_75 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ 'Page navigation, page {currentPage} of {totalPages}' }}\"\n }\n });\n i18n_75 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_75;\n } else {\n i18n_75 = $localize`:kendo.grid.pagerLabel|The label for the Grid pager:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n let i18n_76;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter row and menu inputs\n * @meaning kendo.grid.filterInputLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_76 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ '{columnName} Filter' }}\"\n }\n });\n i18n_76 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_76;\n } else {\n i18n_76 = $localize`:kendo.grid.filterInputLabel|The label of the filter row and menu inputs:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n let i18n_77;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the filter menu icon\n * @meaning kendo.grid.filterMenuTitle\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_77 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ '{columnName} Filter Menu' }}\"\n }\n });\n i18n_77 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_77;\n } else {\n i18n_77 = $localize`:kendo.grid.filterMenuTitle|The title of the filter menu icon:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n let i18n_78;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter menu operators dropdown\n * @meaning kendo.grid.filterMenuOperatorsDropDownLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_78 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ '{columnName} Filter Operators' }}\"\n }\n });\n i18n_78 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_78;\n } else {\n i18n_78 = $localize`:kendo.grid.filterMenuOperatorsDropDownLabel|The label of the filter menu operators dropdown:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n let i18n_79;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter cell operators dropdown\n * @meaning kendo.grid.filterCellOperatorLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_79 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ 'Filter cell operators for {columnName}' }}\"\n }\n });\n i18n_79 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_79;\n } else {\n i18n_79 = $localize`:kendo.grid.filterCellOperatorLabel|The label of the filter cell operators dropdown:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n let i18n_80;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the boolean filter cell dropdown\n * @meaning kendo.grid.booleanFilterCellLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_80 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ 'Boolean filter cell for {columnName}' }}\"\n }\n });\n i18n_80 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_80;\n } else {\n i18n_80 = $localize`:kendo.grid.booleanFilterCellLabel|The label of the boolean filter cell dropdown:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n let i18n_81;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The label of the filter menu logic dropdown\n * @meaning kendo.grid.filterMenuLogicDropDownLabel\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_81 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ '{columnName} Filter Logic' }}\"\n }\n });\n i18n_81 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_81;\n } else {\n i18n_81 = $localize`:kendo.grid.filterMenuLogicDropDownLabel|The label of the filter menu logic dropdown:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n let i18n_82;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc The title of the column menu icon\n * @meaning kendo.grid.columnMenu\n */\n const MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_82 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ '{columnName} Column Menu' }}\"\n }\n });\n i18n_82 = MSG_D__BUILDAGENT_MEDSOFTINC_WORKINGFOLDERS_WF_1_42_S_WEB_EUCLID_WEB_PATIENTCARE_NODE_MODULES__PROGRESS_KENDO_ANGULAR_GRID_FESM2020_PROGRESS_KENDO_ANGULAR_GRID_MJS_82;\n } else {\n i18n_82 = $localize`:kendo.grid.columnMenu|The title of the column menu icon:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n return [[\"ariaRoot\", \"\"], [\"defaultHint\", \"\"], [\"header\", \"\"], [\"lockedHeader\", \"\"], [\"footer\", \"\"], [\"pagerLabel\", i18n_75, \"filterInputLabel\", i18n_76, \"filterMenuTitle\", i18n_77, \"filterMenuOperatorsDropDownLabel\", i18n_78, \"filterCellOperatorLabel\", i18n_79, \"booleanFilterCellLabel\", i18n_80, \"filterMenuLogicDropDownLabel\", i18n_81, \"columnMenu\", i18n_82], [\"kendoGridLocalizedMessages\", \"\", \"groupPanelEmpty\", i18n_0, \"noRecords\", i18n_1, \"pagerFirstPage\", i18n_2, \"pagerPreviousPage\", i18n_3, \"pagerNextPage\", i18n_4, \"pagerLastPage\", i18n_5, \"pagerPage\", i18n_6, \"pagerOf\", i18n_7, \"pagerItems\", i18n_8, \"pagerPageNumberInputTitle\", i18n_9, \"pagerItemsPerPage\", i18n_10, \"filter\", i18n_11, \"filterEqOperator\", i18n_12, \"filterNotEqOperator\", i18n_13, \"filterIsNullOperator\", i18n_14, \"filterIsNotNullOperator\", i18n_15, \"filterIsEmptyOperator\", i18n_16, \"filterIsNotEmptyOperator\", i18n_17, \"filterStartsWithOperator\", i18n_18, \"filterContainsOperator\", i18n_19, \"filterNotContainsOperator\", i18n_20, \"filterEndsWithOperator\", i18n_21, \"filterGteOperator\", i18n_22, \"filterGtOperator\", i18n_23, \"filterLteOperator\", i18n_24, \"filterLtOperator\", i18n_25, \"filterIsTrue\", i18n_26, \"filterIsFalse\", i18n_27, \"filterBooleanAll\", i18n_28, \"filterAfterOrEqualOperator\", i18n_29, \"filterAfterOperator\", i18n_30, \"filterBeforeOperator\", i18n_31, \"filterBeforeOrEqualOperator\", i18n_32, \"filterFilterButton\", i18n_33, \"filterClearButton\", i18n_34, \"filterAndLogic\", i18n_35, \"filterOrLogic\", i18n_36, \"loading\", i18n_37, \"gridLabel\", i18n_38, \"columns\", i18n_39, \"lock\", i18n_40, \"unlock\", i18n_41, \"setColumnPosition\", i18n_42, \"stick\", i18n_43, \"unstick\", i18n_44, \"sortable\", i18n_45, \"sortAscending\", i18n_46, \"sortDescending\", i18n_47, \"autosizeAllColumns\", i18n_48, \"autosizeThisColumn\", i18n_49, \"sortedDefault\", i18n_50, \"sortedAscending\", i18n_51, \"sortedDescending\", i18n_52, \"columnsApply\", i18n_53, \"columnsReset\", i18n_54, \"detailExpand\", i18n_55, \"detailCollapse\", i18n_56, \"filterDateToday\", i18n_57, \"filterDateToggle\", i18n_58, \"filterNumericDecrement\", i18n_59, \"filterNumericIncrement\", i18n_60, \"selectionCheckboxLabel\", i18n_61, \"selectAllCheckboxLabel\", i18n_62, \"groupCollapse\", i18n_63, \"groupExpand\", i18n_64, \"selectPage\", i18n_65, \"topToolbarLabel\", i18n_66, \"bottomToolbarLabel\", i18n_67, \"groupPanelLabel\", i18n_68, \"dragRowHandleLabel\", i18n_69, \"columnMenuFilterTabTitle\", i18n_70, \"columnMenuGeneralTabTitle\", i18n_71, \"columnMenuColumnsTabTitle\", i18n_72, \"groupChipMenuPrevious\", i18n_73, \"groupChipMenuNext\", i18n_74, 6, \"pagerLabel\", \"filterInputLabel\", \"filterMenuTitle\", \"filterMenuOperatorsDropDownLabel\", \"filterCellOperatorLabel\", \"booleanFilterCellLabel\", \"filterMenuLogicDropDownLabel\", \"columnMenu\"], [\"class\", \"k-toolbar k-grid-toolbar\", \"position\", \"top\", 3, \"size\", \"navigable\", 4, \"ngIf\"], [\"class\", \"k-grid-pager-top k-pager\", 3, \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"size\", \"options\", \"pageChange\", 4, \"ngIf\"], [\"role\", \"toolbar\", 3, \"navigable\", \"text\", \"groups\", \"change\", 4, \"ngIf\"], [\"role\", \"grid\", 1, \"k-grid-aria-root\", 3, \"id\"], [4, \"ngIf\"], [\"kendoGridLoading\", \"\", 3, \"loadingTemplate\", 4, \"ngIf\"], [3, \"statusBarTemplate\", 4, \"ngIf\"], [\"class\", \"k-pager\", 3, \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"size\", \"options\", \"pageChange\", 4, \"ngIf\"], [\"class\", \"k-toolbar k-grid-toolbar k-grid-toolbar-bottom\", \"position\", \"bottom\", 3, \"size\", \"navigable\", 4, \"ngIf\"], [\"kendoWatermarkOverlay\", \"\", 4, \"ngIf\"], [\"position\", \"top\", 1, \"k-toolbar\", \"k-grid-toolbar\", 3, \"size\", \"navigable\"], [1, \"k-grid-pager-top\", \"k-pager\", 3, \"pageChange\", \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"size\", \"options\"], [\"role\", \"toolbar\", 3, \"change\", \"navigable\", \"text\", \"groups\"], [\"class\", \"k-grid-header\", \"role\", \"presentation\", 3, \"padding\", 4, \"ngIf\"], [\"kendoDragTargetContainer\", \"\", \"kendoDropTargetContainer\", \"\", \"mode\", \"manual\", \"kendoDraggable\", \"\", \"kendoGridSelectionMarquee\", \"\", 3, \"onPress\", \"onDragStart\", \"onDrag\", \"onDragEnter\", \"onDragLeave\", \"onDragEnd\", \"onDrop\", \"pageChange\", \"scrollBottom\", \"contentScroll\", \"dragDisabled\", \"dropDisabled\", \"dragTargetFilter\", \"dropTargetFilter\", \"dragHandle\", \"hint\", \"dragData\", \"data\", \"rowHeight\", \"detailRowHeight\", \"total\", \"take\", \"groups\", \"groupable\", \"skip\", \"trackBy\", \"columns\", \"selectable\", \"filterable\", \"detailTemplate\", \"noRecordsTemplate\", \"size\", \"rowClass\", \"rowSticky\", \"loading\", \"isVirtual\", \"cellLoadingTemplate\", \"loadingTemplate\", \"virtualColumns\", \"enableDrag\", \"sort\"], [\"class\", \"k-grid-footer\", 3, \"padding\", 4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-grid-header\"], [\"role\", \"presentation\", \"class\", \"k-grid-header-locked\", 3, \"width\", 4, \"ngIf\"], [\"role\", \"presentation\", \"data-scrollable\", \"\", 1, \"k-grid-header-wrap\", 3, \"kendoGridResizableContainer\", \"lockedWidth\"], [\"role\", \"presentation\", \"kendoGridResizableTable\", \"\", \"kendoGridTable\", \"\", 1, \"k-grid-header-table\", 3, \"virtualColumns\", \"size\"], [\"kendoGridColGroup\", \"\", 3, \"columns\", \"groups\", \"detailTemplate\"], [\"kendoGridHeader\", \"\", \"role\", \"rowgroup\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"sort\", \"filter\", \"filterable\", \"groupable\", \"reorderable\", \"groups\", \"sortable\", \"columnMenu\", \"columnMenuTemplate\", \"lockedColumnsCount\", \"totalColumnsCount\", \"totalColumns\", \"detailTemplate\", \"tabIndex\"], [\"class\", \"k-width-container\", \"role\", \"presentation\", 4, \"ngIf\"], [\"role\", \"presentation\", 1, \"k-grid-header-locked\"], [\"kendoGridResizableTable\", \"\", \"role\", \"presentation\", \"kendoGridTable\", \"\", 1, \"k-grid-header-table\", 3, \"locked\", \"size\"], [\"kendoGridHeader\", \"\", \"role\", \"rowgroup\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"sort\", \"groups\", \"filter\", \"filterable\", \"groupable\", \"reorderable\", \"sortable\", \"columnMenu\", \"columnMenuTemplate\", \"totalColumnsCount\", \"totalColumns\", \"detailTemplate\", \"tabIndex\"], [\"role\", \"presentation\", 1, \"k-width-container\"], [1, \"k-grid-footer\"], [\"class\", \"k-grid-footer-locked\", 3, \"width\", 4, \"ngIf\"], [\"data-scrollable\", \"\", 1, \"k-grid-footer-wrap\", 3, \"kendoGridResizableContainer\", \"lockedWidth\"], [\"role\", \"presentation\", \"kendoGridTable\", \"\", \"kendoGridResizableTable\", \"\", 1, \"k-grid-footer-table\", 3, \"size\"], [\"kendoGridFooter\", \"\", 3, \"logicalRowIndex\", \"scrollable\", \"groups\", \"columns\", \"lockedColumnsCount\", \"detailTemplate\", \"totalColumns\"], [1, \"k-grid-footer-locked\"], [\"role\", \"presentation\", \"kendoGridResizableTable\", \"\", \"kendoGridTable\", \"\", 1, \"k-grid-footer-table\", 3, \"locked\", \"size\"], [\"kendoGridFooter\", \"\", 3, \"scrollable\", \"groups\", \"columns\", \"detailTemplate\", \"logicalRowIndex\", \"totalColumns\"], [\"kendoGridTable\", \"\", \"kendoGridResizableTable\", \"\", \"role\", \"presentation\", 3, \"size\"], [\"kendoGridHeader\", \"\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"totalColumns\", \"groups\", \"groupable\", \"reorderable\", \"sort\", \"sortable\", \"filter\", \"filterable\", \"columnMenu\", \"columnMenuTemplate\", \"detailTemplate\", \"tabIndex\", 4, \"ngIf\"], [\"kendoGridTableBody\", \"\", \"kendoDraggable\", \"\", \"kendoGridSelectionMarquee\", \"\", 3, \"isLoading\", \"groups\", \"data\", \"skip\", \"columns\", \"selectable\", \"filterable\", \"noRecordsTemplate\", \"detailTemplate\", \"showGroupFooters\", \"trackBy\", \"rowClass\", \"enableDrag\"], [\"kendoGridFooter\", \"\", 3, \"scrollable\", \"logicalRowIndex\", \"groups\", \"columns\", \"detailTemplate\", \"totalColumns\", 4, \"ngIf\"], [\"kendoGridHeader\", \"\", 3, \"resizable\", \"scrollable\", \"columns\", \"totalColumnLevels\", \"totalColumns\", \"groups\", \"groupable\", \"reorderable\", \"sort\", \"sortable\", \"filter\", \"filterable\", \"columnMenu\", \"columnMenuTemplate\", \"detailTemplate\", \"tabIndex\"], [\"kendoGridFooter\", \"\", 3, \"scrollable\", \"logicalRowIndex\", \"groups\", \"columns\", \"detailTemplate\", \"totalColumns\"], [\"kendoGridLoading\", \"\", 3, \"loadingTemplate\"], [3, \"statusBarTemplate\"], [1, \"k-pager\", 3, \"pageChange\", \"tabindex\", \"template\", \"pageSize\", \"total\", \"skip\", \"size\", \"options\"], [\"position\", \"bottom\", 1, \"k-toolbar\", \"k-grid-toolbar\", \"k-grid-toolbar-bottom\", 3, \"size\", \"navigable\"], [\"innerCssClass\", \"k-drag-status\", 3, \"name\", \"svgIcon\"], [\"kendoWatermarkOverlay\", \"\"]];\n },\n template: function GridComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0, 6);\n i0.ɵɵi18nAttributes(1, 5);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(2, GridComponent_kendo_grid_toolbar_2_Template, 1, 4, \"kendo-grid-toolbar\", 7)(3, GridComponent_kendo_pager_3_Template, 1, 8, \"kendo-pager\", 8)(4, GridComponent_kendo_grid_group_panel_4_Template, 1, 5, \"kendo-grid-group-panel\", 9);\n i0.ɵɵelementStart(5, \"div\", 10, 0);\n i0.ɵɵtemplate(7, GridComponent_ng_container_7_Template, 4, 35, \"ng-container\", 11)(8, GridComponent_ng_container_8_Template, 6, 21, \"ng-container\", 11)(9, GridComponent_div_9_Template, 1, 1, \"div\", 12);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(10, GridComponent_kendo_grid_status_bar_10_Template, 1, 1, \"kendo-grid-status-bar\", 13)(11, GridComponent_kendo_pager_11_Template, 1, 8, \"kendo-pager\", 14)(12, GridComponent_kendo_grid_toolbar_12_Template, 1, 4, \"kendo-grid-toolbar\", 15)(13, GridComponent_ng_template_13_Template, 2, 3, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(15, GridComponent_div_15_Template, 1, 0, \"div\", 16);\n }\n if (rf & 2) {\n i0.ɵɵi18nExp(\"Page navigation, page {currentPage} of {totalPages}\")(\"{columnName} Filter\")(\"{columnName} Filter Menu\")(\"{columnName} Filter Operators\")(\"Filter cell operators for {columnName}\")(\"Boolean filter cell for {columnName}\")(\"{columnName} Filter Logic\")(\"{columnName} Column Menu\");\n i0.ɵɵi18nApply(1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.showTopToolbar);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showTopPager);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showGroupPanel);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"id\", ctx.ariaRootId);\n i0.ɵɵattribute(\"aria-label\", ctx.ariaLabel)(\"aria-rowcount\", ctx.ariaRowCount)(\"aria-colcount\", ctx.ariaColCount);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.isScrollable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.isScrollable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.loading);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showStatusBar);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showBottomPager);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showBottomToolbar);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx.showLicenseWatermark);\n }\n },\n dependencies: [LocalizedMessagesDirective, NgIf, ToolbarComponent, PagerComponent, GroupPanelComponent, TableDirective, GridTableDirective, ColGroupComponent, HeaderComponent, ResizableContainerDirective, ListComponent, DragTargetContainerDirective, DropTargetContainerDirective, DraggableDirective, GridMarqueeDirective, FooterComponent, TableBodyComponent, LoadingComponent, StatusBarComponent, IconWrapperComponent, WatermarkOverlayComponent],\n encapsulation: 2\n });\n return GridComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Custom component messages override default component messages\n * ([see example](slug:globalization_grid#toc-custom-messages)).\n */\nlet CustomMessagesComponent = /*#__PURE__*/(() => {\n class CustomMessagesComponent extends GridMessages {\n constructor(service) {\n super();\n this.service = service;\n }\n get override() {\n return true;\n }\n }\n CustomMessagesComponent.ɵfac = function CustomMessagesComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CustomMessagesComponent)(i0.ɵɵdirectiveInject(i1$2.LocalizationService));\n };\n CustomMessagesComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CustomMessagesComponent,\n selectors: [[\"kendo-grid-messages\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: GridMessages,\n useExisting: forwardRef(() => CustomMessagesComponent)\n }]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function CustomMessagesComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return CustomMessagesComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which encapsulates the in-memory handling of data operations such as [paging]({% slug paging_grid %}),\n * [sorting]({% slug sorting_grid %}), and [grouping]({% slug grouping_grid %})\n * ([more information and examples]({% slug local_data_grid %}#toc-using-the-data-binding-directive)).\n *\n * @example\n * ```html\n * \n * ```\n */\nlet DataBindingDirective = /*#__PURE__*/(() => {\n class DataBindingDirective {\n constructor(grid, changeDetector, localDataChangesService, rowReorderService) {\n this.grid = grid;\n this.changeDetector = changeDetector;\n this.localDataChangesService = localDataChangesService;\n this.rowReorderService = rowReorderService;\n this.state = {\n skip: 0\n };\n this.originalData = [];\n if (localDataChangesService) {\n this.dataChangedSubscription = this.localDataChangesService.changes.subscribe(this.rebind.bind(this));\n }\n }\n /**\n * Defines the number of records that will be skipped by the pager.\n * @default 0\n */\n set skip(value) {\n if (!isPresent(value)) {\n value = 0;\n }\n this.grid.skip = this.state.skip = value;\n if (this.rowReorderService) {\n this.rowReorderService.skip = value;\n }\n }\n /**\n * Defines the descriptors by which the data will be sorted.\n */\n set sort(value) {\n this.grid.sort = this.state.sort = value;\n }\n /**\n * Defines the descriptor by which the data will be filtered.\n */\n set filter(value) {\n this.grid.filter = this.state.filter = value;\n }\n /**\n * Defines the page size used by the Grid pager.\n */\n set pageSize(value) {\n this.grid.pageSize = this.state.take = value;\n }\n /**\n * The descriptors by which the data will be grouped.\n */\n set group(value) {\n this.grid.group = this.state.group = value;\n }\n /**\n * The array of data which will be used to populate the Grid.\n */\n set data(value) {\n this.originalData = value || [];\n if (this.localDataChangesService) {\n this.localDataChangesService.data = value;\n }\n this.dataChanged = true;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.applyState(this.state);\n this.stateChangeSubscription = this.grid.dataStateChange.subscribe(this.onStateChange.bind(this));\n if (this.rowReorderService) {\n this.rowReorderSubscription = this.grid.rowReorder.subscribe(this.onRowReorder.bind(this));\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.stateChangeSubscription) {\n this.stateChangeSubscription.unsubscribe();\n }\n if (this.dataChangedSubscription) {\n this.dataChangedSubscription.unsubscribe();\n }\n if (this.rowReorderSubscription) {\n this.rowReorderSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n if (anyChanged([\"pageSize\", \"skip\", \"sort\", \"group\", \"filter\"], changes)) {\n this.rebind();\n }\n }\n ngDoCheck() {\n if (this.dataChanged) {\n this.updateGridData();\n }\n }\n /**\n * @hidden\n */\n onStateChange(state) {\n this.applyState(state);\n this.rebind();\n }\n /**\n * @hidden\n */\n onRowReorder(ev) {\n this.rowReorderService.reorderRows(ev, this.originalData);\n this.rebind();\n }\n /**\n * @hidden\n */\n rebind() {\n this.data = this.originalData;\n this.updateGridData();\n this.notifyDataChange();\n }\n /**\n * Notifies the Grid that its data has changed.\n */\n notifyDataChange() {\n this.grid.onDataChange();\n if (this.changeDetector) {\n this.changeDetector.markForCheck();\n }\n }\n process(state) {\n return process(this.originalData, state);\n }\n applyState({\n skip,\n take,\n sort,\n group,\n filter\n }) {\n this.skip = skip;\n this.pageSize = take;\n this.sort = sort;\n this.group = group;\n this.filter = filter;\n }\n updateGridData() {\n this.grid.data = this.process(this.state);\n this.dataChanged = false;\n }\n }\n DataBindingDirective.ɵfac = function DataBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataBindingDirective)(i0.ɵɵdirectiveInject(GridComponent), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(LocalDataChangesService), i0.ɵɵdirectiveInject(RowReorderService));\n };\n DataBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataBindingDirective,\n selectors: [[\"\", \"kendoGridBinding\", \"\"]],\n inputs: {\n skip: \"skip\",\n sort: \"sort\",\n filter: \"filter\",\n pageSize: \"pageSize\",\n group: \"group\",\n data: [0, \"kendoGridBinding\", \"data\"]\n },\n exportAs: [\"kendoGridBinding\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return DataBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which stores the row selection state of the Grid in memory\n * ([see example]({% slug selection_grid %}#toc-toggling-the-selection-functionality)).\n */\nlet SelectionDirective = /*#__PURE__*/(() => {\n class SelectionDirective extends Selection {\n constructor(ctx, cd) {\n super(ctx, cd);\n this.ctx = ctx;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.ctx.grid.selectable === false) {\n this.ctx.grid.selectable = true;\n }\n this.ctx.grid.selectionDirective = this;\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n super.destroy();\n }\n }\n SelectionDirective.ɵfac = function SelectionDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SelectionDirective)(i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n SelectionDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SelectionDirective,\n selectors: [[\"\", \"kendoGridSelectBy\", \"\"]],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return SelectionDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass LocalEditService {\n constructor(grid, localDataChangesService) {\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n create(item) {\n if (this.hasLocalData && this.grid.skip) {\n this.localDataChangesService.data.splice(this.grid.skip, 0, item);\n } else {\n this.data.unshift(item);\n }\n this.dataChanged();\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n update(_item) {}\n remove(item) {\n const data = this.data;\n for (let idx = 0; idx < data.length; idx++) {\n if (item === data[idx]) {\n data.splice(idx, 1);\n this.dataChanged({\n action: 'remove',\n item: item\n });\n break;\n }\n }\n }\n assignValues(target, source) {\n Object.assign(target, source);\n }\n dataChanged(args = {}) {\n if (this.hasLocalData) {\n this.localDataChangesService.changes.emit(args);\n }\n }\n get hasLocalData() {\n return Array.isArray(this.localDataChangesService.data);\n }\n get data() {\n if (this.hasLocalData) {\n return this.localDataChangesService.data;\n }\n const data = this.grid.data;\n if (Array.isArray(data)) {\n return data;\n }\n if (isDevMode()) {\n throw new Error(GridConfigurationErrorMessages.requiredEditService);\n }\n return [];\n }\n}\n\n/**\n * @hidden\n */\nlet EditingDirectiveBase = /*#__PURE__*/(() => {\n class EditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n this.subscriptions = new Subscription();\n this.defaultEditService = this.createDefaultService();\n }\n // Consider adding support for the dependency injection of the service to allow for specifying a generic service without code.\n // The Input should still be kept.\n /**\n * The edit service that will handle the operations.\n */\n set editService(value) {\n this.userEditService = value;\n }\n get editService() {\n return this.userEditService || this.defaultEditService;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n this.subscriptions.add(this.grid.add.subscribe(this.addHandler.bind(this)));\n this.subscriptions.add(this.grid.remove.subscribe(this.removeHandler.bind(this)));\n this.subscriptions.add(this.grid.cancel.subscribe(this.cancelHandler.bind(this)));\n this.subscriptions.add(this.grid.save.subscribe(this.saveHandler.bind(this)));\n this.subscriptions.add(this.grid.dataStateChange.subscribe(this.onStateChange.bind(this)));\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n createDefaultService() {\n return new LocalEditService(this.grid, this.localDataChangesService);\n }\n addHandler() {\n this.grid.addRow(this.createModel({\n isNew: true\n }));\n }\n saveHandler(args) {\n const item = this.saveModel(args);\n if (item) {\n if (args.isNew) {\n this.editService.create(item);\n } else {\n this.editService.update(item);\n }\n }\n this.grid.closeRow(args.rowIndex);\n }\n cancelHandler({\n rowIndex\n }) {\n this.closeEditor(rowIndex);\n }\n removeHandler({\n dataItem\n }) {\n const removeItem = shouldRemove => {\n if (shouldRemove) {\n this.editService.remove(dataItem);\n }\n };\n if (this.removeConfirmation) {\n const result = this.removeConfirmation(dataItem);\n if (result instanceof Promise) {\n result.then(removeItem);\n } else if (result instanceof Observable) {\n result.pipe(take(1)).subscribe(removeItem);\n } else {\n removeItem(result);\n }\n } else {\n removeItem(true);\n }\n }\n onStateChange() {\n this.closeEditor();\n }\n closeEditor(rowIndex) {\n this.grid.closeRow(rowIndex);\n }\n }\n EditingDirectiveBase.ɵfac = function EditingDirectiveBase_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || EditingDirectiveBase)(i0.ɵɵdirectiveInject(GridComponent), i0.ɵɵdirectiveInject(LocalDataChangesService));\n };\n EditingDirectiveBase.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: EditingDirectiveBase,\n selectors: [[\"\", \"kendoGridEditingDirectiveBase\", \"\"]],\n inputs: {\n editService: \"editService\",\n removeConfirmation: \"removeConfirmation\"\n }\n });\n return EditingDirectiveBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nclass LocalRowEditService extends LocalEditService {\n update(_item) {\n this.dataChanged();\n }\n}\n\n/**\n * @hidden\n */\nlet RowEditingDirectiveBase = /*#__PURE__*/(() => {\n class RowEditingDirectiveBase extends EditingDirectiveBase {\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions.add(this.grid.edit.subscribe(this.editHandler.bind(this)));\n }\n createDefaultService() {\n return new LocalRowEditService(this.grid, this.localDataChangesService);\n }\n addHandler() {\n this.closeEditor();\n super.addHandler();\n }\n editHandler(args) {\n this.closeEditor();\n this.rowIndex = args.rowIndex;\n this.grid.editRow(args.rowIndex, this.createModel(args));\n }\n saveHandler(args) {\n super.saveHandler(args);\n this.clean();\n }\n closeEditor(rowIndex = this.rowIndex) {\n super.closeEditor(rowIndex);\n this.clean();\n }\n clean() {\n delete this.rowIndex;\n }\n }\n RowEditingDirectiveBase.ɵfac = /* @__PURE__ */(() => {\n let ɵRowEditingDirectiveBase_BaseFactory;\n return function RowEditingDirectiveBase_Factory(__ngFactoryType__) {\n return (ɵRowEditingDirectiveBase_BaseFactory || (ɵRowEditingDirectiveBase_BaseFactory = i0.ɵɵgetInheritedFactory(RowEditingDirectiveBase)))(__ngFactoryType__ || RowEditingDirectiveBase);\n };\n })();\n RowEditingDirectiveBase.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RowEditingDirectiveBase,\n selectors: [[\"\", \"kendoGridRowEditingDirectiveBase\", \"\"]],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return RowEditingDirectiveBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using\n * the Template-Driven Angular Forms ([see example]({% slug editing_directives_grid %}#toc-template-editing-directive)).\n */\nlet TemplateEditingDirective = /*#__PURE__*/(() => {\n class TemplateEditingDirective extends RowEditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n editHandler(args) {\n super.editHandler(args);\n this.dataItem = args.dataItem;\n this.originalValues = {};\n this.editService.assignValues(this.originalValues, this.dataItem);\n }\n closeEditor(rowIndex) {\n if (this.dataItem) {\n this.editService.assignValues(this.dataItem, this.originalValues);\n }\n super.closeEditor(rowIndex);\n }\n createModel(args) {\n if (args.isNew) {\n return this.createNewItem();\n }\n }\n saveModel(args) {\n return args.dataItem;\n }\n clean() {\n super.clean();\n delete this.dataItem;\n }\n }\n TemplateEditingDirective.ɵfac = function TemplateEditingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TemplateEditingDirective)(i0.ɵɵdirectiveInject(GridComponent), i0.ɵɵdirectiveInject(LocalDataChangesService));\n };\n TemplateEditingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TemplateEditingDirective,\n selectors: [[\"\", \"kendoGridTemplateEditing\", \"\"]],\n inputs: {\n createNewItem: [0, \"kendoGridTemplateEditing\", \"createNewItem\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return TemplateEditingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nconst markAllAsTouched = control => {\n control.markAsTouched();\n if (control.hasOwnProperty('controls')) {\n const controls = control.controls;\n for (const inner in controls) {\n if (controls.hasOwnProperty(inner)) {\n markAllAsTouched(controls[inner]);\n }\n }\n }\n};\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using the\n * Reactive Forms ([see example](slug:editing_directives_grid#toc-reactive-editing-directive)).\n */\nlet ReactiveEditingDirective = /*#__PURE__*/(() => {\n class ReactiveEditingDirective extends RowEditingDirectiveBase {\n constructor(grid, localDataChangesService) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n }\n createModel(args) {\n return this.createFormGroup(args);\n }\n saveModel({\n dataItem,\n formGroup,\n isNew\n }) {\n if (!formGroup.dirty && !isNew) {\n return;\n }\n if (formGroup.valid) {\n this.editService.assignValues(dataItem, formGroup.value);\n return dataItem;\n }\n markAllAsTouched(formGroup);\n }\n }\n ReactiveEditingDirective.ɵfac = function ReactiveEditingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ReactiveEditingDirective)(i0.ɵɵdirectiveInject(GridComponent), i0.ɵɵdirectiveInject(LocalDataChangesService));\n };\n ReactiveEditingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ReactiveEditingDirective,\n selectors: [[\"\", \"kendoGridReactiveEditing\", \"\"]],\n inputs: {\n createFormGroup: [0, \"kendoGridReactiveEditing\", \"createFormGroup\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return ReactiveEditingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which encapsulates the editing operations of the Grid when using the in-cell\n * editing with Reactive Forms ([see example]({% slug editing_directives_grid %}#toc-in-cell-editing)).\n */\nlet InCellEditingDirective = /*#__PURE__*/(() => {\n class InCellEditingDirective extends EditingDirectiveBase {\n constructor(grid, localDataChangesService, cdr) {\n super(grid, localDataChangesService);\n this.grid = grid;\n this.localDataChangesService = localDataChangesService;\n this.cdr = cdr;\n }\n // Need mixin\n createModel(args) {\n return this.createFormGroup(args);\n }\n saveModel({\n dataItem,\n formGroup,\n isNew\n }) {\n if (!formGroup.dirty && !isNew) {\n return;\n }\n if (formGroup.valid) {\n this.editService.assignValues(dataItem, formGroup.value);\n return dataItem;\n }\n markAllAsTouched(formGroup);\n }\n /**\n * @hidden\n */\n ngOnInit() {\n super.ngOnInit();\n this.subscriptions.add(this.grid.cellClick.subscribe(this.cellClickHandler.bind(this)));\n this.subscriptions.add(this.grid.cellClose.subscribe(this.cellCloseHandler.bind(this)));\n }\n removeHandler(args) {\n super.removeHandler(args);\n this.grid.cancelCell();\n }\n cellClickHandler(args) {\n if (!args.isEdited && args.type !== 'contextmenu') {\n this.grid.editCell(args.rowIndex, args.columnIndex, this.createFormGroup(args));\n this.cdr.markForCheck();\n }\n }\n cellCloseHandler(args) {\n const {\n formGroup,\n dataItem\n } = args;\n if (!formGroup.valid) {\n args.preventDefault();\n } else if (formGroup.dirty) {\n if (args.originalEvent && args.originalEvent.keyCode === Keys.Escape) {\n return;\n }\n this.editService.assignValues(dataItem, formGroup.value);\n this.editService.update(dataItem);\n }\n }\n }\n InCellEditingDirective.ɵfac = function InCellEditingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || InCellEditingDirective)(i0.ɵɵdirectiveInject(GridComponent), i0.ɵɵdirectiveInject(LocalDataChangesService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n InCellEditingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: InCellEditingDirective,\n selectors: [[\"\", \"kendoGridInCellEditing\", \"\"]],\n inputs: {\n createFormGroup: [0, \"kendoGridInCellEditing\", \"createFormGroup\"]\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return InCellEditingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive which controls the expanded state of the master detail rows. ([see example](slug:master_detail_expanded_state_grid#toc-built-in-directive))\n */\nlet ExpandDetailsDirective = /*#__PURE__*/(() => {\n class ExpandDetailsDirective {\n constructor(grid) {\n this.grid = grid;\n /**\n * Fires when the expandedDetailKeys are changed.\n */\n this.expandedDetailKeysChange = new EventEmitter();\n /**\n * Defines the collection that will store the expanded keys.\n */\n this.expandedDetailKeys = [];\n /**\n * Specifies if the items should be initially expanded.\n * When set to `true` items added to the `expandedDetailKeys` collection will be collapsed, and items that are not present in it will be expanded.\n *\n * @default false\n */\n this.initiallyExpanded = false;\n this.expandedState = new Set();\n this.subscriptions = new Subscription();\n this.grid.isDetailExpanded = this.isExpanded.bind(this);\n this.subscriptions.add(merge(this.grid.detailExpand.pipe(map(e => ({\n expand: true,\n ...e\n }))), this.grid.detailCollapse.pipe(map(e => ({\n expand: false,\n ...e\n })))).subscribe(this.toggleState.bind(this)));\n }\n /**\n * Defines the item key that will be stored in the `expandedDetailKeys` collection ([see example]({% slug master_detail_expanded_state_grid %}#toc-built-in-directive)).\n */\n get expandDetailsKey() {\n return this._expandBy;\n }\n set expandDetailsKey(key) {\n if (isString(key)) {\n this._expandBy = getter(key);\n } else {\n this._expandBy = key;\n }\n }\n /**\n *\n * @hidden\n * A deprecated alias for setting the `expandDetailsKey` property.\n */\n get expandDetailBy() {\n return this.expandDetailsKey;\n }\n set expandDetailBy(key) {\n this.expandDetailsKey = key;\n }\n ngOnChanges(changes) {\n // skip reinitialization if the user data is the same as the last state change\n if (isPresent(changes['expandedDetailKeys']) && this.lastExpandedState !== this.expandedDetailKeys) {\n this.expandedState = new Set(this.expandedDetailKeys);\n }\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n get keyGetter() {\n return this._expandBy || getter(undefined);\n }\n /**\n * @hidden\n */\n isExpanded(args) {\n const key = this.keyGetter(args.dataItem);\n const hasKey = this.expandedState.has(key);\n // when [initiallyExpanded]=\"true\" a present key means the corresponding detail row is collapsed\n return this.initiallyExpanded ? !hasKey : hasKey;\n }\n toggleState(args) {\n const key = this.keyGetter(args.dataItem);\n if (Boolean(this.initiallyExpanded) !== args.expand) {\n this.expandedState.add(key);\n } else {\n this.expandedState.delete(key);\n }\n this.notifyChange();\n }\n notifyChange() {\n this.lastExpandedState = Array.from(this.expandedState);\n this.expandedDetailKeysChange.emit(this.lastExpandedState);\n }\n }\n ExpandDetailsDirective.ɵfac = function ExpandDetailsDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpandDetailsDirective)(i0.ɵɵdirectiveInject(GridComponent));\n };\n ExpandDetailsDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ExpandDetailsDirective,\n selectors: [[\"\", \"kendoGridExpandDetailsBy\", \"\"]],\n inputs: {\n expandDetailsKey: [0, \"kendoGridExpandDetailsBy\", \"expandDetailsKey\"],\n expandDetailBy: \"expandDetailBy\",\n expandedDetailKeys: \"expandedDetailKeys\",\n initiallyExpanded: \"initiallyExpanded\"\n },\n outputs: {\n expandedDetailKeysChange: \"expandedDetailKeysChange\"\n },\n exportAs: [\"kendoGridExpandDetailsBy\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return ExpandDetailsDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst mapParentGroup = parentGroup => {\n const parentGroupKeys = [];\n while (parentGroup) {\n parentGroupKeys.push({\n field: parentGroup.group.field,\n value: parentGroup.group.value\n });\n parentGroup = parentGroup.parentGroup;\n }\n return parentGroupKeys;\n};\nconst DEFAULT_KEY_GETTER = groupRowArgs => ({\n field: groupRowArgs.group.field,\n value: groupRowArgs.group.value,\n parentGroupKeys: mapParentGroup(groupRowArgs.parentGroup)\n});\n/**\n * A directive which controls the expanded state of the group rows\n * ([see example]({% slug groups_expanded_state_grid %}#toc-built-in-directive)).\n */\nlet ExpandGroupDirective = /*#__PURE__*/(() => {\n class ExpandGroupDirective {\n constructor(grid) {\n this.grid = grid;\n /**\n * Fires when the expandedGroupKeys are changed.\n */\n this.expandedGroupKeysChange = new EventEmitter();\n /**\n * Specifies if the group items should be initially expanded.\n * @default false\n */\n this.groupsInitiallyExpanded = false;\n this.subscriptions = new Subscription();\n this.grid.isGroupExpanded = this.isExpanded.bind(this);\n this.subscriptions.add(merge(this.grid.groupExpand.pipe(map(e => ({\n expand: true,\n ...e\n }))), this.grid.groupCollapse.pipe(map(e => ({\n expand: false,\n ...e\n })))).subscribe(this.toggleState.bind(this)));\n }\n /**\n * Defines the item format that will be stored in the `expandedGroupKeys`\n * ([see example]({% slug groups_expanded_state_grid %}#toc-custom-group-key-format)).\n */\n get expandGroupBy() {\n return this._expandGroupBy;\n }\n set expandGroupBy(key) {\n if (typeof key === 'function') {\n this._expandGroupBy = key;\n }\n }\n /**\n * Defines the collection that will store the expanded group keys.\n */\n get expandedGroupKeys() {\n return this._expandedGroupKeys;\n }\n set expandedGroupKeys(expandedGroups) {\n this._expandedGroupKeys = (expandedGroups || []).slice();\n }\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n get keyGetter() {\n return this.expandGroupBy || DEFAULT_KEY_GETTER;\n }\n /**\n * @hidden\n */\n isExpanded(groupArgs) {\n const itemIndex = this.getItemIndex(groupArgs);\n return itemIndex > -1 ? !this.groupsInitiallyExpanded : this.groupsInitiallyExpanded;\n }\n getItemIndex(groupArgs) {\n if (this.expandGroupBy) {\n return this.expandedGroupKeys.indexOf(this.keyGetter(groupArgs));\n }\n return this.expandedGroupKeys.findIndex(item => {\n let index = 0;\n let parentGroup = groupArgs.parentGroup;\n while (isPresent(parentGroup)) {\n if (!isPresent(item.parentGroupKeys) || !isPresent(item.parentGroupKeys[index]) || parentGroup.group.value !== item.parentGroupKeys[index].value || parentGroup.group.field !== item.parentGroupKeys[index].field) {\n return false;\n }\n parentGroup = parentGroup.parentGroup;\n index++;\n }\n return item.value === groupArgs.group.value && item.field === groupArgs.group.field;\n });\n }\n toggleState(groupArgs) {\n const key = this.keyGetter(groupArgs);\n if (Boolean(this.groupsInitiallyExpanded) !== groupArgs.expand) {\n this.expandedGroupKeys.push(key);\n } else {\n const index = this.expandedGroupKeys.findIndex(group => {\n if (this.expandGroupBy) {\n return group === key;\n } else if (key.parentGroupKeys?.length === 0) {\n return group.value === key.value;\n }\n return JSON.stringify(group) === JSON.stringify(key);\n });\n this.expandedGroupKeys.splice(index, 1);\n }\n this.expandedGroupKeysChange.emit(this.expandedGroupKeys.slice());\n }\n }\n ExpandGroupDirective.ɵfac = function ExpandGroupDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExpandGroupDirective)(i0.ɵɵdirectiveInject(GridComponent));\n };\n ExpandGroupDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ExpandGroupDirective,\n selectors: [[\"\", \"kendoGridExpandGroupBy\", \"\"]],\n inputs: {\n expandGroupBy: [0, \"kendoGridExpandGroupBy\", \"expandGroupBy\"],\n expandedGroupKeys: \"expandedGroupKeys\",\n groupsInitiallyExpanded: \"groupsInitiallyExpanded\"\n },\n outputs: {\n expandedGroupKeysChange: \"expandedGroupKeysChange\"\n },\n exportAs: [\"kendoGridExpandGroupBy\"],\n standalone: true\n });\n return ExpandGroupDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst hasGroups = items => items && items.length && items[0].field && items[0].items;\nconst groupDescriptorsPresent = descriptors => isPresent(descriptors) && descriptors.length > 0;\nconst processGroups = (data, state) => process(data, state).data;\nconst removeParentDescriptors = (parents, owner) => g => g.field !== owner.field && !parents.some(y => y.field === g.field);\nconst findGroup = (groupIndex, groups) => {\n const parents = [];\n return {\n group: groupIndex.split(\"_\").reduce((acc, x) => {\n const idx = parseInt(x, 10);\n if (acc.items) {\n parents.push(acc);\n return acc.items[idx];\n }\n return isArray(acc) ? acc[idx] : acc;\n }, groups),\n parents\n };\n};\nconst findChildren = (data, parents) => {\n const filters = parents.map(p => ({\n field: p.field,\n operator: \"eq\",\n value: p.value\n }));\n return filterBy(data, {\n filters: filters,\n logic: \"and\"\n });\n};\n/**\n * @hidden\n */\nconst count = (groups, includeFooters = false) => groups.reduce((acc, group) => {\n if (!group.skipHeader) {\n acc++;\n }\n if (group.items) {\n const children = count(group.items, includeFooters);\n if (includeFooters && children && !group.hideFooter) {\n acc++;\n }\n acc += children;\n }\n return acc;\n}, 0);\n/**\n * @hidden\n */\nconst noDescriptors = descriptors => !isPresent(descriptors) || !descriptors.length;\n/**\n * @hidden\n */\nconst slice = (groups, skip, take, includeFooters = false) => {\n if (!isPresent(take)) {\n return groups;\n }\n const result = [];\n for (let idx = 0, length = groups.length; idx < length; idx++) {\n if (take <= 0) {\n break;\n }\n const group = groups[idx];\n const groupItems = group.items;\n let itemCount = count(groupItems, includeFooters);\n if (includeFooters && groupItems.length) {\n itemCount++;\n }\n const skipHeader = skip > 0;\n if (skip) {\n skip--;\n if (itemCount && skip >= itemCount) {\n skip -= itemCount;\n continue;\n }\n }\n if (!skipHeader || itemCount) {\n const items = [];\n let hideFooter = true;\n if (!skipHeader) {\n take--;\n }\n if (take) {\n if (hasGroups(groupItems)) {\n const children = slice(groupItems, skip, take, includeFooters);\n items.push(...children);\n take -= count(children, includeFooters);\n } else {\n items.push(...groupItems.slice(skip, Math.min(skip + take, groupItems.length)));\n take -= items.length;\n }\n if (take && includeFooters) {\n hideFooter = false;\n take--;\n }\n skip = 0;\n }\n result.push({\n aggregates: group.aggregates,\n field: group.field,\n hideFooter,\n items,\n offset: idx,\n skipHeader,\n value: group.value\n });\n }\n }\n return result;\n};\nconst skippedHeaders = groupItem => {\n let total = 0;\n while (groupItem) {\n if (groupItem.skipHeader) {\n total++;\n }\n groupItem = groupItem.items && groupItem.items[0] || null;\n }\n return total;\n};\n/**\n * A directive which encapsulates the in-memory handling of grouping with virtual scrolling.\n */\nlet GroupBindingDirective = /*#__PURE__*/(() => {\n class GroupBindingDirective extends DataBindingDirective {\n constructor(changeDetector, localDataChangesService, ctxService, groupsService) {\n super(ctxService.grid, changeDetector, localDataChangesService);\n this.groupsService = groupsService;\n this.gridSubs = new Subscription();\n ctxService.groupBindingDirective = this;\n }\n /**\n * The array of data which will be used to populate the Grid.\n */\n set kendoGridGroupBinding(value) {\n this.groups = null;\n this.grid.resetGroupsState();\n this.data = value;\n }\n /**\n * @hidden\n */\n set data(value) {\n this.originalData = value || [];\n this.dataChanged = true;\n }\n /**\n * Defines the descriptors by which the data will be sorted.\n */\n set sort(value) {\n const noCurrentDescriptors = noDescriptors(this.state.sort);\n const noIncomingDescriptors = noDescriptors(value);\n const clear = this.state.sort !== value && !(noCurrentDescriptors && noIncomingDescriptors);\n this.grid.sort = this.state.sort = value;\n if (clear) {\n this.groups = null;\n this.grid.resetGroupsState();\n }\n }\n /**\n * Defines the descriptor by which the data will be filtered.\n */\n set filter(value) {\n const clear = diffFilters(this.state.filter, value);\n if (clear) {\n this.state.filter = value;\n this.grid.filter = cloneFilters(value);\n this.groups = null;\n this.grid.resetGroupsState();\n }\n }\n /**\n * Defines the descriptors by which the data will be grouped.\n */\n set group(value) {\n // don't clear if no groups are present in previous and current value\n const groupsPresent = groupDescriptorsPresent(this.state.group) || groupDescriptorsPresent(value);\n const clear = this.state.group !== value && groupsPresent;\n this.grid.group = this.state.group = value;\n if (clear) {\n this.groups = null;\n this.grid.resetGroupsState();\n this.skip = 0;\n }\n }\n ngOnInit() {\n super.ngOnInit();\n this.gridSubs.add(this.grid.groupExpand.subscribe(this.groupExpand.bind(this)));\n this.gridSubs.add(this.grid.groupCollapse.subscribe(this.groupCollapse.bind(this)));\n }\n ngAfterContentInit() {\n if (isDevMode() && this.grid.isGroupExpanded) {\n throw new Error(GridConfigurationErrorMessages.groupBindingDirectives);\n }\n }\n ngOnDestroy() {\n this.gridSubs.unsubscribe();\n }\n /**\n * @hidden\n */\n toggleAll(expand) {\n this.skip = 0;\n this.grid.scrollTo({\n row: 0,\n column: 0\n });\n this.groups.forEach((gr, idx) => {\n const expanded = this.groupsService.isExpanded({\n group: gr,\n groupIndex: idx.toString(),\n parentGroup: undefined\n });\n const performToggle = expand && !expanded || !expand && expanded;\n if (performToggle) {\n this.grid.groupsService.toggleRow({\n type: 'group',\n data: gr,\n index: idx.toString(),\n level: 0,\n parentGroup: undefined\n });\n this[expand ? 'groupExpand' : 'groupCollapse']({\n groupIndex: idx.toString()\n });\n }\n });\n }\n /**\n * Collapses all expanded root level groups.\n */\n collapseAll() {\n this.toggleAll(false);\n }\n /**\n * Expands all expanded root level groups.\n */\n expandAll() {\n this.toggleAll(true);\n }\n /**\n * @hidden\n */\n groupExpand({\n groupIndex\n }) {\n const {\n group,\n parents\n } = findGroup(groupIndex, this.groups);\n if (!group) {\n return;\n }\n this.groupsService.expandChildren(groupIndex);\n if (!group.items.length) {\n const descriptors = this.state.group.filter(removeParentDescriptors(parents, group));\n const children = findChildren(this.originalData, parents.concat(group));\n group.items = processGroups(children, {\n filter: this.state.filter,\n group: descriptors,\n sort: this.state.sort\n });\n }\n this.grid.data = this.dataResult(this.state.skip, this.state.take);\n }\n /**\n * @hidden\n */\n groupCollapse({\n groupIndex\n }) {\n const {\n group\n } = findGroup(groupIndex, this.groups);\n if (group) {\n group.items = [];\n } else {\n return;\n }\n this.grid.data = this.dataResult(this.state.skip, this.state.take);\n }\n process(state) {\n if (state.group && state.group.length) {\n const groups = this.processGroups(state);\n this.grid.skip -= skippedHeaders(groups.data[0]);\n return groups;\n } else {\n this.groups = null;\n }\n return super.process(state);\n }\n processGroups(state) {\n if (!this.groups || !this.groups.length) {\n this.groups = processGroups(this.originalData, {\n filter: state.filter,\n group: state.group,\n sort: state.sort\n });\n }\n return this.dataResult(state.skip, state.take);\n }\n dataResult(skip, take) {\n const includeFooters = this.grid.showGroupFooters;\n return {\n data: slice(this.groups, skip, take, includeFooters),\n total: count(this.groups, includeFooters)\n };\n }\n applyState({\n skip,\n take,\n sort,\n group,\n filter\n }) {\n this.skip = skip;\n this.state.take = take;\n // this.pageSize = take; // do need to update take as the process with slice correctly\n this.sort = sort;\n this.group = group;\n this.filter = filter;\n }\n }\n GroupBindingDirective.ɵfac = function GroupBindingDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupBindingDirective)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(LocalDataChangesService), i0.ɵɵdirectiveInject(ContextService), i0.ɵɵdirectiveInject(GroupsService));\n };\n GroupBindingDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GroupBindingDirective,\n selectors: [[\"\", \"kendoGridGroupBinding\", \"\"]],\n inputs: {\n kendoGridGroupBinding: \"kendoGridGroupBinding\",\n sort: \"sort\",\n filter: \"filter\",\n group: \"group\"\n },\n exportAs: [\"kendoGridGroupBinding\"],\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return GroupBindingDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Represents the Kendo UI GridSpacer component for Angular.\n * Used to give additional white space between the Pager inner elements,\n * and provides a way for customizing the spacer width.\n * It can also be used in any flex container within the Grid\n * ([see example](slug:toolbartemplate_grid#toc-defining-the-spacing-between-toolbar-elements)).\n */\nlet GridSpacerComponent = /*#__PURE__*/(() => {\n class GridSpacerComponent {\n constructor() {\n this.hostClass = true;\n }\n get sizedClass() {\n return isPresent(this.width);\n }\n get flexBasisStyle() {\n return this.width;\n }\n }\n GridSpacerComponent.ɵfac = function GridSpacerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridSpacerComponent)();\n };\n GridSpacerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GridSpacerComponent,\n selectors: [[\"kendo-grid-spacer\"], [\"kendo-pager-spacer\"]],\n hostVars: 6,\n hostBindings: function GridSpacerComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"flex-basis\", ctx.flexBasisStyle);\n i0.ɵɵclassProp(\"k-spacer\", ctx.hostClass)(\"k-spacer-sized\", ctx.sizedClass);\n }\n },\n inputs: {\n width: \"width\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function GridSpacerComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n return GridSpacerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive applied to all toolbar elements that need to be a part of the Grid\n * keyboard navigation.\n */\nlet GridToolbarFocusableDirective = /*#__PURE__*/(() => {\n class GridToolbarFocusableDirective {\n constructor(host, ctx) {\n this.host = host;\n this.ctx = ctx;\n }\n /**\n * @hidden\n */\n get element() {\n return this.host.nativeElement;\n }\n /**\n * @hidden\n */\n get toolbarPosition() {\n return isDocumentAvailable() && this.host.nativeElement.closest('.k-toolbar')?.getAttribute('position');\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable() || !this.toolbarPosition) {\n return;\n }\n this.ctx[`${this.toolbarPosition}ToolbarNavigation`]?.navigableElements.push(this.element);\n this.ctx[`${this.toolbarPosition}ToolbarNavigation`]?.notify();\n }\n ngOnDestroy() {\n if (!isDocumentAvailable() || !this.toolbarPosition) {\n return;\n }\n const elements = this.ctx[`${this.toolbarPosition}ToolbarNavigation`].navigableElements;\n this.ctx[`${this.toolbarPosition}ToolbarNavigation`].navigableElements = elements.filter(el => el !== this.element);\n this.ctx[`${this.toolbarPosition}ToolbarNavigation`].notify();\n }\n }\n GridToolbarFocusableDirective.ɵfac = function GridToolbarFocusableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridToolbarFocusableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ContextService));\n };\n GridToolbarFocusableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GridToolbarFocusableDirective,\n selectors: [[\"\", \"kendoGridToolbarFocusable\", \"\"], [\"\", \"kendoGridAddCommand\", \"\"], [\"\", \"kendoGridCancelCommand\", \"\"], [\"\", \"kendoGridEditCommand\", \"\"], [\"\", \"kendoGridRemoveCommand\", \"\"], [\"\", \"kendoGridSaveCommand\", \"\"], [\"\", \"kendoGridExcelCommand\", \"\"], [\"\", \"kendoGridPDFCommand\", \"\"]],\n standalone: true\n });\n return GridToolbarFocusableDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The directive that enables the Grid built-in clipboard support. Allows copy, cut, and paste interactions\n * with the Grid.\n */\nlet GridClipboardDirective = /*#__PURE__*/(() => {\n class GridClipboardDirective {\n constructor(host, clipboardService, renderer, zone) {\n this.host = host;\n this.clipboardService = clipboardService;\n this.renderer = renderer;\n this.zone = zone;\n /**\n * Fires when the user performs `cut`, `copy` or `paste` action within the Grid content area.\n */\n this.clipboard = new EventEmitter();\n this._target = 'selection';\n this._clipboardSettings = {\n wholeRow: false,\n copyHeaders: false,\n copy: true,\n cut: true,\n paste: true\n };\n this.subs = new Subscription();\n this.onClipboard = (operationType, args) => {\n if (!this.clipboardSettings[operationType] || !this.inGrid(args)) {\n return;\n }\n const gridData = Array.isArray(this.host.data) ? this.host.data : this.host.data.data;\n const gridDataItems = gridData.flatMap(recursiveFlatMap);\n const selection = this.host.selection;\n const selectionDirective = this.host.selectionDirective;\n const targetType = this.clipboardTarget;\n const isCellSelection = this.host.selectable?.cell || selectionDirective.isCellSelectionMode;\n let clipboardData = [];\n switch (targetType) {\n case 'activeCell':\n {\n const targetCell = {\n ...this.host.activeCell\n };\n clipboardData = targetCell && [{\n dataItem: targetCell.dataItem,\n dataRowIndex: targetCell.dataRowIndex,\n colIndex: targetCell.colIndex\n }];\n }\n break;\n case 'selection':\n {\n const identifier = selectionDirective.selectionKey;\n clipboardData = gridDataItems.flatMap((item, index) => {\n if (identifier) {\n const key = typeof identifier === 'string' ? item[identifier] : identifier({\n index: index + this.host.skip,\n dataItem: item\n });\n return isCellSelection ? selection.some(s => s.itemKey === key) ? [{\n dataItem: item,\n dataRowIndex: index + this.host.skip\n }] : [] : selection.indexOf(key) > -1 ? [{\n dataItem: item,\n dataRowIndex: index + this.host.skip\n }] : [];\n }\n return isCellSelection ? selection.some(s => s.itemKey === index + this.host.skip) ? [{\n dataItem: item,\n dataRowIndex: index + this.host.skip\n }] : [] : selection.indexOf(index + this.host.skip) > -1 ? [{\n dataItem: item,\n dataRowIndex: index + this.host.skip\n }] : [];\n });\n }\n break;\n }\n const isPaste = operationType === 'paste';\n const pastedData = args.clipboardData.getData('text');\n const visibleCols = this.host.columns.toArray().filter(c => c.isVisible);\n const data = isPaste ? {\n dataString: pastedData,\n gridItems: this.clipboardService.getGridData(pastedData, visibleCols, this.clipboardTarget, clipboardData[0]?.dataRowIndex, {\n wholeRow: this.clipboardSettings.wholeRow,\n isCellSelection\n })\n } : this.clipboardService.createClipboardData(clipboardData || [], visibleCols, {\n wholeRow: this.clipboardSettings.wholeRow || this.clipboardTarget === 'selection' && !isCellSelection,\n target: this.clipboardTarget,\n copyHeaders: this.clipboardSettings.copyHeaders,\n operationType\n });\n !isPaste && navigator.clipboard.writeText(data.dataString);\n if (hasObservers(this.clipboard)) {\n this.zone.run(() => {\n this.clipboard.emit({\n type: operationType,\n originalEvent: args,\n clipboardData: data.dataString,\n gridData: data.gridItems,\n target: {\n dataRowIndex: this.clipboardService.targetRowIndex,\n colField: this.clipboardService.targetColField,\n dataItem: clipboardData.find(item => item.dataRowIndex === this.clipboardService.targetRowIndex)?.dataItem\n }\n });\n });\n }\n this.clipboardService.targetColField = this.clipboardService.targetRowIndex = null;\n };\n this.inGrid = args => {\n const target = document.activeElement.matches('.k-table-td') ? document.activeElement : args.target;\n const inContentArea = closest(target, node => node.parentElement?.classList.contains('k-grid-container'));\n const inHost = contains$1(this.host.wrapper.nativeElement, target);\n return target && inHost && inContentArea;\n };\n }\n /**\n * Determines the target of the clipboard operation ([see example]({% slug clipboard_grid %}#toc-clipboard-target)). The possible options are:\n * - `activeCell`\n * - `selection`\n *\n * @default 'selection'\n */\n set clipboardTarget(value) {\n if (isDevMode()) {\n this.zone.onStable.pipe(take(1)).subscribe(() => {\n if (value === 'activeCell' && !this.host.navigable.length) {\n console.warn(ClipboardErrorMessages.clipboardTarget.activeCellNavigable);\n } else if (value === 'selection' && !(this.host.selectable || this.host.selectionDirective)) {\n console.warn(ClipboardErrorMessages.selectionSelectable);\n }\n });\n }\n this._target = value;\n }\n get clipboardTarget() {\n return this._target;\n }\n /**\n * The `GridClipboardDirective` settings.\n *\n * @default { wholeRow: false, copyHeaders: false copy: true, cut: true, paste: true }\n */\n set clipboardSettings(value) {\n this._clipboardSettings = Object.assign({}, this._clipboardSettings, value);\n }\n get clipboardSettings() {\n return this._clipboardSettings;\n }\n ngAfterViewInit() {\n if (!isDocumentAvailable()) {\n return;\n }\n if (this.clipboardTarget === 'selection' && !(this.host.selectable || this.host.selectionDirective)) {\n console.warn(ClipboardErrorMessages.selectionSelectable);\n }\n // needed due to the following issue in Chrome\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1156117&q=focus%20programmatically%20paste&can=2\n this.zone.runOutsideAngular(() => {\n this.subs.add(this.renderer.listen(document, 'copy', args => this.onClipboard('copy', args)));\n this.subs.add(this.renderer.listen(document, 'cut', args => this.onClipboard('cut', args)));\n this.subs.add(this.renderer.listen(document, 'paste', args => this.onClipboard('paste', args)));\n });\n }\n ngOnDestroy() {\n this.subs.unsubscribe();\n }\n }\n GridClipboardDirective.ɵfac = function GridClipboardDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridClipboardDirective)(i0.ɵɵdirectiveInject(GridComponent), i0.ɵɵdirectiveInject(ClipboardService), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n GridClipboardDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: GridClipboardDirective,\n selectors: [[\"\", \"kendoGridClipboard\", \"\"]],\n inputs: {\n clipboardTarget: \"clipboardTarget\",\n clipboardSettings: \"clipboardSettings\"\n },\n outputs: {\n clipboard: \"clipboard\"\n },\n exportAs: [\"kendoGridClipboard\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([ClipboardService])]\n });\n return GridClipboardDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// DRAGGABLE COLUMN\n/**\n * @hidden\n *\n * Utility array that contains all column dragging components and directives\n */\nconst KENDO_GRID_COLUMN_DRAGANDDROP = [DraggableColumnDirective, DropTargetDirective];\n/**\n * @hidden\n *\n * Utility array that contains the former Shared module exports\n */\nconst KENDO_GRID_SHARED = [ColumnComponent, ColumnGroupComponent, LogicalCellDirective, LogicalRowDirective, FocusableDirective, FooterTemplateDirective, ColGroupComponent, ResizableContainerDirective, TemplateContextDirective, FieldAccessorPipe, DetailTemplateDirective, SpanColumnComponent, LoadingComponent, GridTableDirective];\n/**\n * @hidden\n *\n * Utility array that contains the former Group module exports\n */\nconst KENDO_GRID_GROUP_EXPORTS = [GroupHeaderTemplateDirective, GroupHeaderColumnTemplateDirective, GroupFooterTemplateDirective, GroupHeaderComponent, GroupPanelComponent];\n/**\n * @hidden\n *\n * Utility array that contains the filter operator components\n */\nconst KENDO_GRID_FILTER_OPERATORS = [FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent];\n/**\n * @hidden\n *\n * Utility array that contains the former SharedFilterModule exports\n */\nconst KENDO_GRID_FILTER_SHARED = [...KENDO_GRID_SHARED, ...KENDO_GRID_FILTER_OPERATORS, FilterInputDirective];\n/**\n * @hidden\n *\n * Utility array that contains the former FilterMenuModule declarations\n */\nconst KENDO_GRID_FILTER_MENU_EXPORTS = [FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, FilterMenuTemplateDirective, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, FilterMenuHostDirective, BooleanFilterMenuComponent, FilterMenuDropDownListDirective, BooleanFilterRadioButtonDirective];\n/**\n * @hidden\n *\n * Utility array that contains the former FilterMenuModule exports\n */\nconst KENDO_GRID_FILTER_MENU = [...KENDO_GRID_FILTER_SHARED, ...KENDO_GRID_FILTER_MENU_EXPORTS];\n/**\n * @hidden\n *\n * Utility array that contains the former RowFilterModule declarations\n */\nconst KENDO_GRID_FILTER_ROW_EXPORTS = [FilterRowComponent, FilterCellComponent, FilterCellTemplateDirective, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellHostDirective, FilterCellWrapperComponent, DateFilterCellComponent];\n/**\n * @hidden\n *\n * Utility array that contains the former RowFilterModule exports\n */\nconst KENDO_GRID_FILTER_ROW = [...KENDO_GRID_FILTER_ROW_EXPORTS, ...KENDO_GRID_FILTER_SHARED];\n/**\n * @hidden\n *\n * Utility array that contains the former ColumnMenu module declarations\n */\nconst KENDO_GRID_COLUMN_MENU_DECLARATIONS = [ColumnMenuChooserItemCheckedDirective, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent];\n/**\n * @hidden\n *\n * Utility array that contains the former ColumnMenu module exports\n */\nconst KENDO_GRID_COLUMN_MENU_EXPORTS = [ColumnChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuSortComponent, ColumnMenuLockComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuChooserComponent, ColumnMenuTemplateDirective, ColumnMenuContainerComponent, ColumnMenuItemDirective, ColumnMenuComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent];\n/**\n * @hidden\n */\nconst KENDO_GRID_HEADER_EXPORTS = [HeaderComponent, HeaderTemplateDirective, ColumnHandleDirective, SelectAllCheckboxDirective];\n/**\n * @hidden\n *\n * Utility array that contains the Footer module exports\n */\nconst KENDO_GRID_FOOTER_EXPORTS = [FooterComponent];\n/**\n * @hidden\n *\n * Utility array that contains the Body module exports\n */\nconst KENDO_GRID_BODY_EXPORTS = [CommandColumnComponent, CheckboxColumnComponent, SelectionCheckboxDirective, CellTemplateDirective, EditTemplateDirective, TableBodyComponent, NoRecordsTemplateDirective, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, CellLoadingTemplateDirective, LoadingTemplateDirective, RowReorderColumnComponent];\n/**\n * @hidden\n *\n * Utility array that contains the Pager module exports\n */\nconst KENDO_GRID_PAGER_EXPORTS = [PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, PagerTemplateDirective, PagerDropDownListDirective, PagerInputDirective];\n/**\n * @hidden\n *\n * Utility array that contains the Grid module declarations\n */\nconst KENDO_GRID_DECLARATIONS = [GridComponent, ListComponent, ToolbarComponent, LocalizedMessagesDirective, CustomMessagesComponent, DataBindingDirective, ToolbarTemplateDirective, SelectionDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GroupBindingDirective, GridMarqueeDirective, GridSpacerComponent, GridToolbarFocusableDirective, StatusBarComponent, StatusBarTemplateDirective, GridClipboardDirective];\n/**\n * @hidden\n *\n * Utility array that contains the Grid module exports\n */\nconst KENDO_GRID_EXPORTS = [GridComponent, ToolbarTemplateDirective, ToolbarComponent, GridSpacerComponent, StatusBarTemplateDirective, DataBindingDirective, SelectionDirective, CustomMessagesComponent, GroupBindingDirective, TemplateEditingDirective, ReactiveEditingDirective, InCellEditingDirective, ExpandDetailsDirective, ExpandGroupDirective, GridToolbarFocusableDirective, ...KENDO_GRID_GROUP_EXPORTS, ...KENDO_GRID_SHARED, ...KENDO_GRID_BODY_EXPORTS, ...KENDO_GRID_HEADER_EXPORTS, ...KENDO_GRID_PAGER_EXPORTS, ...KENDO_GRID_FILTER_ROW_EXPORTS, ...KENDO_GRID_FILTER_OPERATORS, ...KENDO_GRID_FILTER_MENU_EXPORTS, ...KENDO_GRID_COLUMN_MENU_EXPORTS, GridClipboardDirective];\n/**\n * @hidden\n *\n * Utility array that contains the ExcelExport module exports\n */\nconst KENDO_GRID_EXCEL_EXPORT = [ExcelComponent, ExcelCommandDirective];\n/**\n * @hidden\n *\n * Utility array that contains the PDFModule declarations and exports\n */\nconst KENDO_GRID_PDF_EXPORT = [PDFComponent, PDFMarginComponent, PDFCommandDirective, PDFTemplateDirective];\n/**\n * Utility array that contains all `Grid` related components and directives\n */\nconst KENDO_GRID = [...KENDO_GRID_EXPORTS, ...KENDO_GRID_EXCEL_EXPORT, ...KENDO_GRID_PDF_EXPORT];\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Grid component.\n *\n * @example\n *\n * ```ts\n * import { NgModule } from '@angular/core';\n * import { GridModule } from '@progress/kendo-angular-grid';\n * import { BrowserModule } from \"@angular/platform-browser\";\n * import { AppComponent } from './app.component';\n *\n * @NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, GridModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nlet GridModule = /*#__PURE__*/(() => {\n class GridModule {}\n GridModule.ɵfac = function GridModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GridModule)();\n };\n GridModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: GridModule\n });\n GridModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService$1],\n imports: [GroupHeaderComponent, GroupPanelComponent, ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, CommandColumnComponent, CheckboxColumnComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, RowReorderColumnComponent, HeaderComponent, KENDO_GRID_FOOTER_EXPORTS, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent, FilterRowComponent, FilterCellComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuContainerComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, GridComponent, ListComponent, ToolbarComponent, CustomMessagesComponent, GridSpacerComponent, StatusBarComponent]\n });\n return GridModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet SharedModule = /*#__PURE__*/(() => {\n class SharedModule {}\n SharedModule.ɵfac = function SharedModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SharedModule)();\n };\n SharedModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: SharedModule\n });\n SharedModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService],\n imports: [ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, DraggableModule]\n });\n return SharedModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ENTRY_COMPONENTS$1 = [StringFilterCellComponent, NumericFilterCellComponent, BooleanFilterCellComponent, DateFilterCellComponent];\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet RowFilterModule = /*#__PURE__*/(() => {\n class RowFilterModule {}\n RowFilterModule.ɵfac = function RowFilterModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || RowFilterModule)();\n };\n RowFilterModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: RowFilterModule\n });\n RowFilterModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService$1],\n imports: [FilterRowComponent, FilterCellComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent]\n });\n return RowFilterModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ENTRY_COMPONENTS = [StringFilterMenuComponent, NumericFilterMenuComponent, DateFilterMenuComponent, BooleanFilterMenuComponent];\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet FilterMenuModule = /*#__PURE__*/(() => {\n class FilterMenuModule {}\n FilterMenuModule.ɵfac = function FilterMenuModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FilterMenuModule)();\n };\n FilterMenuModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: FilterMenuModule\n });\n FilterMenuModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService$1],\n imports: [ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent]\n });\n return FilterMenuModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst importedModules$1 = [...KENDO_GRID_SHARED, ...KENDO_GRID_GROUP_EXPORTS];\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet BodyModule = /*#__PURE__*/(() => {\n class BodyModule {}\n BodyModule.ɵfac = function BodyModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BodyModule)();\n };\n BodyModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: BodyModule\n });\n BodyModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService, PopupService, ResizeBatchService, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService$1],\n imports: [ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, GroupHeaderComponent, GroupPanelComponent, CommandColumnComponent, CheckboxColumnComponent, TableBodyComponent, CellComponent, EditCommandDirective, CancelCommandDirective, SaveCommandDirective, RemoveCommandDirective, AddCommandDirective, RowReorderColumnComponent]\n });\n return BodyModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet GroupModule = /*#__PURE__*/(() => {\n class GroupModule {}\n GroupModule.ɵfac = function GroupModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GroupModule)();\n };\n GroupModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: GroupModule\n });\n GroupModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService, PopupService, ResizeBatchService],\n imports: [ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, KENDO_CHIPLIST, KENDO_POPUP, GroupHeaderComponent, GroupPanelComponent]\n });\n return GroupModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst importedModules = [...KENDO_GRID_GROUP_EXPORTS, ...KENDO_GRID_FILTER_ROW, ...KENDO_GRID_FILTER_MENU, ...KENDO_GRID_SHARED, ...KENDO_GRID_COLUMN_DRAGANDDROP, ...KENDO_GRID_COLUMN_MENU_DECLARATIONS];\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet HeaderModule = /*#__PURE__*/(() => {\n class HeaderModule {}\n HeaderModule.ɵfac = function HeaderModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || HeaderModule)();\n };\n HeaderModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: HeaderModule\n });\n HeaderModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService$1],\n imports: [GroupHeaderComponent, GroupPanelComponent, FilterRowComponent, FilterCellComponent, StringFilterCellComponent, NumericFilterCellComponent, AutoCompleteFilterCellComponent, BooleanFilterCellComponent, FilterCellWrapperComponent, DateFilterCellComponent, ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuInputWrapperComponent, StringFilterMenuInputComponent, StringFilterMenuComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, DateFilterMenuInputComponent, DateFilterMenuComponent, BooleanFilterMenuComponent, ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, ColumnListComponent, ColumnChooserComponent, ColumnMenuChooserComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuSortComponent, ColumnMenuComponent, ColumnMenuLockComponent, ColumnMenuContainerComponent, ColumnMenuStickComponent, ColumnMenuPositionComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuAutoSizeAllColumnsComponent, HeaderComponent]\n });\n return HeaderModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet FooterModule = /*#__PURE__*/(() => {\n class FooterModule {}\n FooterModule.ɵfac = function FooterModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FooterModule)();\n };\n FooterModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: FooterModule\n });\n FooterModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService],\n imports: [ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FooterComponent]\n });\n return FooterModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n */\nlet PagerModule = /*#__PURE__*/(() => {\n class PagerModule {}\n PagerModule.ɵfac = function PagerModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PagerModule)();\n };\n PagerModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PagerModule\n });\n PagerModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService, PopupService, ResizeBatchService, DialogContainerService, DialogService, WindowService, WindowContainerService],\n imports: [ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, PagerComponent, PagerPrevButtonsComponent, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerInputComponent, PagerInfoComponent, PagerPageSizesComponent]\n });\n return PagerModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Grid PDF component.\n *\n * @example\n *\n * ```ts\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from \"@angular/platform-browser\";\n * import { GridModule, PDFModule } from '@progress/kendo-angular-grid';\n * import { AppComponent } from './app.component';\n *\n * @NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, GridModule, PDFModule],\n * bootstrap: [AppComponent]\n * })\n *\n * export class AppModule {}\n *\n * ```\n */\nlet PDFModule = /*#__PURE__*/(() => {\n class PDFModule {}\n PDFModule.ɵfac = function PDFModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PDFModule)();\n };\n PDFModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: PDFModule\n });\n PDFModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService],\n imports: [KENDO_ICONS, PDFComponent, PDFMarginComponent, PDFCommandDirective]\n });\n return PDFModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// IMPORTANT: NgModule export kept for backwards compatibility\n/**\n * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])\n * definition for the Excel component of the Grid.\n *\n * @example\n *\n * ```ts\n * import { NgModule } from '@angular/core';\n * import { BrowserModule } from \"@angular/platform-browser\";\n * import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';\n * import { AppComponent } from './app.component';\n *\n * _@NgModule({\n * declarations: [AppComponent],\n * imports: [BrowserModule, GridModule, ExcelModule],\n * bootstrap: [AppComponent]\n * })\n * export class AppModule {}\n *\n * ```\n */\nlet ExcelModule = /*#__PURE__*/(() => {\n class ExcelModule {}\n ExcelModule.ɵfac = function ExcelModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ExcelModule)();\n };\n ExcelModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ExcelModule\n });\n ExcelModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [IconsService],\n imports: [KENDO_ICONS, KENDO_GRID_EXCEL_EXPORT, ExcelExportModule]\n });\n return ExcelModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @hidden\n *\n * This module is deprecated and will be removed in a future major version release.\n */\nlet SharedFilterModule = /*#__PURE__*/(() => {\n class SharedFilterModule {}\n SharedFilterModule.ɵfac = function SharedFilterModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SharedFilterModule)();\n };\n SharedFilterModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: SharedFilterModule\n });\n SharedFilterModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [PopupService, ResizeBatchService, IconsService, DialogContainerService, DialogService, WindowService, WindowContainerService, CalendarDOMService, CenturyViewService, DecadeViewService, MonthViewService, YearViewService, WeekNamesService, NavigationService$1],\n imports: [ColumnComponent, ColumnGroupComponent, ColGroupComponent, SpanColumnComponent, LoadingComponent, FilterCellOperatorsComponent, ContainsFilterOperatorComponent, DoesNotContainFilterOperatorComponent, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, NotEqualFilterOperatorComponent, StartsWithFilterOperatorComponent, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, AfterFilterOperatorComponent, AfterEqFilterOperatorComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent]\n });\n return SharedFilterModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AddCommandDirective, AfterEqFilterOperatorComponent, AfterFilterOperatorComponent, AutoCompleteFilterCellComponent, BaseFilterCellComponent, BeforeEqFilterOperatorComponent, BeforeFilterOperatorComponent, BodyModule, BooleanFilterCellComponent, BooleanFilterComponent, BooleanFilterMenuComponent, BooleanFilterRadioButtonDirective, BrowserSupportService, CELL_CONTEXT, CancelCommandDirective, CellCloseEvent, CellComponent, CellLoadingTemplateDirective, CellSelectionAggregateService, CellSelectionService, CellTemplateDirective, ChangeNotificationService, CheckboxColumnComponent, ColGroupComponent, ColumnBase, ColumnChooserComponent, ColumnComponent, ColumnGroupComponent, ColumnHandleDirective, ColumnInfoService, ColumnListComponent, ColumnLockedChangeEvent, ColumnMenuAutoSizeAllColumnsComponent, ColumnMenuAutoSizeColumnComponent, ColumnMenuChooserComponent, ColumnMenuComponent, ColumnMenuContainerComponent, ColumnMenuFilterComponent, ColumnMenuItemComponent, ColumnMenuItemContentTemplateDirective, ColumnMenuItemDirective, ColumnMenuLockComponent, ColumnMenuPositionComponent, ColumnMenuService, ColumnMenuSortComponent, ColumnMenuStickComponent, ColumnMenuTemplateDirective, ColumnReorderEvent, ColumnReorderService, ColumnResizingService, ColumnStickyChangeEvent, ColumnVisibilityChangeEvent, ColumnsContainer, CommandColumnComponent, ContainsFilterOperatorComponent, ContextService, CustomMessagesComponent, DEFAULT_SCROLLER_FACTORY, DataBindingDirective, DateFilterCellComponent, DateFilterComponent, DateFilterMenuComponent, DateFilterMenuInputComponent, DetailCollapseEvent, DetailExpandEvent, DetailTemplateDirective, DetailsService, DoesNotContainFilterOperatorComponent, DomEventsService, DragAndDropService, DragHintService, DropCueService, EditCommandDirective, EditService, EditTemplateDirective, EditingDirectiveBase, EndsWithFilterOperatorComponent, EqualFilterOperatorComponent, ExcelCommandDirective, ExcelComponent, ExcelExportEvent, ExcelModule, ExcelService, ExpandDetailsDirective, ExpandGroupDirective, FieldAccessorPipe, FilterCellComponent, FilterCellHostDirective, FilterCellOperatorsComponent, FilterCellTemplateDirective, FilterCellWrapperComponent, FilterInputDirective, FilterMenuComponent, FilterMenuContainerComponent, FilterMenuDropDownListDirective, FilterMenuHostDirective, FilterMenuInputWrapperComponent, FilterMenuModule, FilterMenuTemplateDirective, FilterRowComponent, FilterService, FocusRoot, FocusableDirective, FooterComponent, FooterModule, FooterTemplateDirective, GreaterFilterOperatorComponent, GreaterOrEqualToFilterOperatorComponent, GridClipboardDirective, GridComponent, GridModule, GridSpacerComponent, GridTableDirective, GridToolbarFocusableDirective, GridToolbarNavigationService, GroupBindingDirective, GroupFooterTemplateDirective, GroupHeaderColumnTemplateDirective, GroupHeaderComponent, GroupHeaderTemplateDirective, GroupInfoService, GroupModule, GroupPanelComponent, GroupsService, HeaderComponent, HeaderModule, HeaderTemplateDirective, IdService, InCellEditingDirective, IsEmptyFilterOperatorComponent, IsNotEmptyFilterOperatorComponent, IsNotNullFilterOperatorComponent, IsNullFilterOperatorComponent, KENDO_GRID, KENDO_GRID_BODY_EXPORTS, KENDO_GRID_COLUMN_DRAGANDDROP, KENDO_GRID_COLUMN_MENU_DECLARATIONS, KENDO_GRID_COLUMN_MENU_EXPORTS, KENDO_GRID_DECLARATIONS, KENDO_GRID_EXCEL_EXPORT, KENDO_GRID_EXPORTS, KENDO_GRID_FILTER_MENU, KENDO_GRID_FILTER_MENU_EXPORTS, KENDO_GRID_FILTER_OPERATORS, KENDO_GRID_FILTER_ROW, KENDO_GRID_FILTER_ROW_EXPORTS, KENDO_GRID_FILTER_SHARED, KENDO_GRID_FOOTER_EXPORTS, KENDO_GRID_GROUP_EXPORTS, KENDO_GRID_HEADER_EXPORTS, KENDO_GRID_PAGER_EXPORTS, KENDO_GRID_PDF_EXPORT, KENDO_GRID_SHARED, LessFilterOperatorComponent, LessOrEqualToFilterOperatorComponent, ListComponent, LoadingComponent, LoadingTemplateDirective, LocalDataChangesService, LogicalCellDirective, LogicalRowDirective, MenuTabbingService, NavigationService, NoRecordsTemplateDirective, NotEqualFilterOperatorComponent, NumericFilterCellComponent, NumericFilterComponent, NumericFilterMenuComponent, NumericFilterMenuInputComponent, PDFCommandDirective, PDFComponent, PDFMarginComponent, PDFModule, PDFService, PDFTemplateDirective, PagerComponent, PagerContextService, PagerDropDownListDirective, PagerInfoComponent, PagerInputComponent, PagerInputDirective, PagerModule, PagerNextButtonsComponent, PagerNumericButtonsComponent, PagerPageSizesComponent, PagerPrevButtonsComponent, PagerTemplateDirective, PopupCloseEvent, ReactiveEditingDirective, RemoveCommandDirective, ResizableContainerDirective, ResizeService, ResponsiveService, RowEditingDirectiveBase, RowFilterModule, RowReorderColumnComponent, RowReorderService, SaveCommandDirective, ScrollRequestService, ScrollSyncService, SelectAllCheckboxDirective, SelectionCheckboxDirective, SelectionDirective, SelectionService, SharedFilterModule, SharedModule, SinglePopupService, SizingOptionsService, Skip, SortService, SpanColumnComponent, StartsWithFilterOperatorComponent, StatusBarTemplateDirective, StringFilterCellComponent, StringFilterComponent, StringFilterMenuComponent, StringFilterMenuInputComponent, SuspendService, TableBodyComponent, TableDirective, TemplateEditingDirective, ToolbarComponent, ToolbarTemplateDirective, count, defaultTrackBy, hasFilterMenu, hasFilterRow, isFilterable, slice };","import { Injectable, TemplateRef } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ElementReferenceService {\r\n\r\n private itemTemplateDict: { [name: string]: TemplateRef } = {};\r\n\r\n setItemTemplate(name: string, itemTemplate: TemplateRef) {\r\n this.itemTemplateDict[name] = itemTemplate;\r\n }\r\n\r\n getItemTemplate(name: string) {\r\n return this.itemTemplateDict[name];\r\n }\r\n}\r\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\nexport default listCacheClear;","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\nexport default eq;","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\nexport default assocIndexOf;","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\nexport default listCacheDelete;","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\nexport default listCacheGet;","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\nexport default listCacheHas;","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\nexport default listCacheSet;","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\nexport default ListCache;","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\nexport default stackClear;","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\nexport default stackDelete;","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\nexport default stackGet;","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\nexport default stackHas;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nexport default freeGlobal;","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\nexport default root;","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\nexport default Symbol;","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\nexport default getRawTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\nexport default objectToString;","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\nexport default baseGetTag;","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\nexport default isObject;","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\nexport default isFunction;","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\nexport default coreJsData;","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\nexport default isMasked;","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n}\nexport default toSource;","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\nexport default baseIsNative;","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\nexport default getValue;","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\nexport default getNative;","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\nexport default Map;","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\nexport default nativeCreate;","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\nexport default hashClear;","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\nexport default hashDelete;","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\nexport default hashGet;","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\nexport default hashHas;","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n}\nexport default hashSet;","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\nexport default Hash;","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n}\nexport default mapCacheClear;","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\nexport default isKeyable;","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\nexport default getMapData;","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\nexport default mapCacheDelete;","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\nexport default mapCacheGet;","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\nexport default mapCacheHas;","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\nexport default mapCacheSet;","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\nexport default MapCache;","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\nexport default stackSet;","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\nexport default Stack;","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\nexport default arrayEach;","import getNative from './_getNative.js';\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\nexport default defineProperty;","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\nexport default baseAssignValue;","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\nexport default assignValue;","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\nexport default copyObject;","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\nexport default baseTimes;","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\nexport default isObjectLike;","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\nexport default baseIsArguments;","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\nexport default isArguments;","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\nexport default isArray;","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\nexport default stubFalse;","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\nexport default isBuffer;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\nexport default isIndex;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\nexport default isLength;","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\nexport default baseIsTypedArray;","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\nexport default baseUnary;","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\nexport default nodeUtil;","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nexport default isTypedArray;","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') ||\n // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\nexport default arrayLikeKeys;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\nexport default isPrototype;","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\nexport default overArg;","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\nexport default nativeKeys;","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\nexport default baseKeys;","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\nexport default isArrayLike;","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\nexport default keys;","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\nexport default baseAssign;","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\nexport default nativeKeysIn;","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\nexport default baseKeysIn;","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\nexport default keysIn;","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\nexport default baseAssignIn;","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n}\nexport default cloneBuffer;","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\nexport default copyArray;","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nexport default arrayFilter;","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\nexport default stubArray;","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\nexport default getSymbols;","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\nexport default copySymbols;","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\nexport default arrayPush;","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\nexport default getPrototype;","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\nexport default getSymbolsIn;","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\nexport default copySymbolsIn;","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\nexport default baseGetAllKeys;","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\nexport default getAllKeys;","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\nexport default getAllKeysIn;","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\nexport default DataView;","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\nexport default Promise;","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\nexport default Set;","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\nexport default WeakMap;","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function (value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n}\nexport default getTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\nexport default initCloneArray;","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\nexport default Uint8Array;","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\nexport default cloneArrayBuffer;","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\nexport default cloneDataView;","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\nexport default cloneRegExp;","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\nexport default cloneSymbol;","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\nexport default cloneTypedArray;","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n case dataViewTag:\n return cloneDataView(object, isDeep);\n case float32Tag:\n case float64Tag:\n case int8Tag:\n case int16Tag:\n case int32Tag:\n case uint8Tag:\n case uint8ClampedTag:\n case uint16Tag:\n case uint32Tag:\n return cloneTypedArray(object, isDeep);\n case mapTag:\n return new Ctor();\n case numberTag:\n case stringTag:\n return new Ctor(object);\n case regexpTag:\n return cloneRegExp(object);\n case setTag:\n return new Ctor();\n case symbolTag:\n return cloneSymbol(object);\n }\n}\nexport default initCloneByTag;","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = function () {\n function object() {}\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n}();\nexport default baseCreate;","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\nexport default initCloneObject;","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\nexport default baseIsMap;","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\nexport default isMap;","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\nexport default baseIsSet;","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\nexport default isSet;","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || isFunc && !object) {\n result = isFlat || isFunc ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack());\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n if (isSet(value)) {\n value.forEach(function (subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function (subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\nexport default baseClone;","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\nexport default cloneDeep;","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\nexport default identity;","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\nexport default apply;","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\nexport default shortOut;","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function () {\n return value;\n };\n}\nexport default constant;","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\nexport default baseSetToString;","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\nexport default setToString;","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\nexport default overRest;","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\nexport default baseRest;","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n}\nexport default isIterateeCall;","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\nexport default createAssigner;","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\nexport default isPlainObject;","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nexport default compact;","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\nexport default createBaseFor;","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\nexport default baseFor;","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\nexport default assignMergeValue;","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\nexport default isArrayLikeObject;","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n if (key == '__proto__') {\n return;\n }\n return object[key];\n}\nexport default safeGet;","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\nexport default toPlainObject;","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer ? customizer(objValue, srcValue, key + '', object, source, stack) : undefined;\n var isCommon = newValue === undefined;\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\nexport default baseMergeDeep;","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function (srcValue, key) {\n stack || (stack = new Stack());\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + '', object, source, stack) : undefined;\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\nexport default baseMerge;","/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n}\nexport default fromPairs;","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function (object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\nexport default merge;"],"mappings":"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","names":["userAuthGuard","_route","_state","router","inject","Router","AccountService","isAuthenticated","queryString","parseQueryString","url","contains","substring","indexOf","navigate","queryParams","patientPortalAuthGuard","isInRole","returnUrl","paymentPortalAuthGuard","isMerchantAvailable","relativeUrl","queryStringIndex","searchParams","URLSearchParams","forEach","value","key","_c0","_c1","a0","a1","_c2","TreeViewGroupComponent_li_0_span_2_Template","rf","ctx","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","ctx_r1","ɵɵnextContext","node_r3","index_r4","ctx_r4","ɵɵresetView","ɵɵelement","ɵɵelementEnd","ɵɵclassProp","ɵɵproperty","ɵɵadvance","TreeViewGroupComponent_li_0_kendo_checkbox_3_Template","_r6","checkbox_r7","ɵɵreference","TreeViewGroupComponent_li_0_ng_container_7_ng_template_1_Template","TreeViewGroupComponent_li_0_ng_container_7_Template","ɵɵelementContainerStart","ɵɵtemplate","ɵɵelementContainerEnd","ɵɵpureFunction2","TreeViewGroupComponent_li_0_ng_container_8_Template","ɵɵtext","ɵɵtextInterpolate1","TreeViewGroupComponent_li_0_ul_9_Template","TreeViewGroupComponent_li_0_Template","ɵɵattribute","ɵɵstyleProp","TreeViewGroupComponent_li_1_span_2_Template","TreeViewGroupComponent_li_1_5_ng_template_0_Template","TreeViewGroupComponent_li_1_5_Template","ɵɵpureFunction1","TreeViewGroupComponent_li_1_ng_container_6_Template","TreeViewGroupComponent_li_1_Template","_c3","_c4","TreeViewComponent_span_1_ng_template_3_Template","TreeViewComponent_span_1_Template","$event","_c5","a2","a3","DragClueComponent_ng_container_0_Template","ctx_r0","ɵɵtextInterpolate","DragClueComponent_1_ng_template_0_Template","DragClueComponent_1_Template","ɵɵpureFunction4","_c6","DropHintComponent_div_0_Template","DropHintComponent_1_ng_template_0_ng_template_0_Template","DropHintComponent_1_ng_template_0_Template","DropHintComponent_1_Template","ɵɵpureFunction3","packageMetadata","DataChangeNotificationService","EventEmitter","hasChildren","isChecked","isDisabled","hasCheckbox","isExpanded","isSelected","isVisible","trackBy","_","item","ExpandStateService","Subject","index","dataItem","__ngFactoryType__","ɵɵdefineInjectable","IndexBuilderService","parentIndex","level","parts","LoadingNotificationService","focusableRegex","match","element","selector","matcher","closestWithMatch","parent","noop","isPresent","value","isBlank","isArray","isNullOrEmptyString","isBoolean","closestNode","isDocumentAvailable","isFocusable","tagName","tabIndex","skipTab","focusable","isContent","scopeSelector","node","getContentElement","isLoadMoreButton","closest","predicate","hasParent","container","focusableNode","nodeId","node","nodeIndex","item","dataItemsEqual","first","second","isPresent","getDataItem","lookup","isArrayWithAtLeastOneItem","v","filterTree","items","term","operator","ignoreCase","mode","textField","depth","field","wrapper","isMatch","matchByFieldAndCase","setParentChain","makeAllVisible","nodes","operators","a","b","matchByCase","matcher","dataItem","getter","buildTreeIndex","parentIndex","itemIndex","part","buildTreeItem","currentLevelIndex","sameValues","as","bs","v","getSizeClass","component","size","safe","node","safeChildren","lastVisibleNode","nodes","lastIndex","index","NavigationModel","IndexBuilderService","isPresent","children","lastVisibleChild","prev","sibling","parentLevel","child","item","parent","levelIndex","prevNodesHidden","currentNode","hasVisibleChildren","id","disabled","loadMoreButton","visible","level","childLevel","indexToMatch","isLeaf","n","offset","container","nextItemIndex","nextItem","NavigationService","localization","Subject","Keys","e","model","nodeIndex","shouldScroll","itemAtIndex","moveAction","expand","intercept","event","__ngFactoryType__","ɵɵinject","LocalizationService","ɵɵdefineInjectable","NodeChildrenService","NodeTemplateDirective","templateRef","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","LoadMoreButtonTemplateDirective","DataBoundComponent","ExpandableComponent","SelectionService","selected","dataItem","INDEX_REGEX","TreeViewLookupService","currentLookup","current","parentItem","c","TreeViewItemContentDirective","element","navigationService","selectionService","renderer","isSelected","Subscription","filter","changes","addClass","className","action","ElementRef","Renderer2","ɵɵNgOnChangesFeature","LoadingIndicatorDirective","expandService","loadingService","cd","value","loadingNotifications","tap","switchMap","x","of","delay","takeUntil","ExpandStateService","LoadingNotificationService","ChangeDetectorRef","rf","ctx","ɵɵclassProp","buildItem","TREE_ITEM_ROLE","BUTTON_ROLE","TreeViewItemDirective","lookupService","ib","checked","isExpanded","anyChanged","list","callback","navState","shouldExpand","scrollIntoView","parentDataItem","parentIndex","oldIndex","indexChange","currentValue","firstChange","previousValue","service","attr","TOP_ITEM","MID_ITEM","BOT_ITEM","TreeViewGroupComponent","indexBuilder","treeViewLookupService","nodeChildrenService","dataChangeNotification","changeDetectorRef","caretAltDownIcon","caretAltRightIcon","caretAltLeftIcon","pageSize","normalizedSizeValue","data","checkBox","textField","isArray","getter","state","catchError","EMPTY","dataLength","initialLoadMoreButtonIndex","finalize","items","idx","contentChildren","mappedChildren","DataChangeNotificationService","ɵɵdefineComponent","ɵɵattribute","ɵɵStandaloneFeature","_c0","ɵɵtemplate","TreeViewGroupComponent_li_0_Template","TreeViewGroupComponent_li_1_Template","ɵɵproperty","ɵɵadvance","NgForOf","NgClass","NgIf","IconWrapperComponent","CheckBoxComponent","NgSwitch","NgSwitchCase","NgTemplateOutlet","NgSwitchDefault","trigger","transition","style","animate","TreeViewMessages","ComponentMessages","ɵTreeViewMessages_BaseFactory","ɵɵgetInheritedFactory","ɵɵInheritDefinitionFeature","LocalizedMessagesDirective","ɵɵProvidersFeature","forwardRef","nextId","LOAD_MORE_DOC_LINK$1","providers","L10N_PREFIX","TreeViewComponent","ngZone","searchIcon","EventEmitter","trackBy","isDisabled","hasCheckbox","isVisible","BehaviorSubject","validatePackage","packageMetadata","template","hasChildren","isChecked","newSize","subscription","hasObservers","isDocumentAvailable","target","focusableNode","focusIndex","focusItem","match","isFocusable","closestNode","nodeId","hasParent","isLoadMoreButton","isContent","lookup","isDevMode","treeItems","buildTreeItem","NgZone","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_c3","ViewContainerRef","_c4","ɵɵsyntheticHostProperty","i18n_0","ɵɵelementContainer","TreeViewComponent_span_1_Template","ɵɵelement","TextBoxComponent","TextBoxPrefixTemplateDirective","DropAction","DropPosition","ScrollDirection","PreventableEvent","TreeItemDropEvent","initializer","originalEvent","isValid","TreeItemDragStartEvent","DragClueComponent","cdr","DropAction","plusIcon","insertTopIcon","insertBottomIcon","insertMiddleIcon","cancelIcon","__ngFactoryType__","ɵɵdirectiveInject","ChangeDetectorRef","ɵɵdefineComponent","rf","ctx","ɵɵstyleProp","ɵɵclassProp","ɵɵStandaloneFeature","ɵɵtemplate","DragClueComponent_ng_container_0_Template","DragClueComponent_1_Template","ɵɵproperty","ɵɵadvance","NgIf","IconWrapperComponent","NgTemplateOutlet","DragAndDropAssetService","isPresent","componentRef","left","top","offset","ɵɵdefineInjectable","hasRelativeStackingContext","memoize","isDocumentAvailable","parent","innerDiv","isDifferent","fn","result","called","args","getContainerOffset","element","offsetParent","rect","getDropAction","dropPosition","dropTarget","DropPosition","closestNode","getDropPosition","draggedItem","target","clientY","targetTreeView","containerOffset","item","closestWithMatch","content","getContentElement","targetChildOfDraggedItem","hasParent","itemViewPortCoords","itemDivisionHeight","isContent","pointerPosition","itemTop","treeItemFromEventTarget","treeView","node","index","nodeId","lookup","collapseEmptyParent","parentNodes","treeview","expandDropTarget","getDropTarget","event","updateMovedItemIndex","newIndex","originalIndex","movedItemNewIndexParts","originalItemIndexParts","originalItemParentPathLength","originalItemParentPath","movedItemParentPath","originalItemIndexLevel","originalItemLevelIndex","movedItemLevelIndex","SCROLLBAR_REG_EXP","getScrollableContainer","hasOverflow","hasScrollbar","isTopReached","isBottomReached","scrollElementBy","step","direction","initialScrollTop","currentStep","iterations","ScrollDirection","CLUE_OFFSET","RETURN_ANIMATION_DURATION","DragClueService","componentFactoryResolver","container","template","clueComponentFactory","targetElementViewPortCoords","clueElementViewPortCoords","action","sourceItem","destinationItem","dragClue","dataItemsEqual","text","interval","scrollableContainer","containerRect","clueRect","firstVisibleClientTopPart","topLimit","bottomLimit","ɵɵinject","ComponentFactoryResolver$1","DropHintComponent","changeDetectorRef","DropHintComponent_div_0_Template","DropHintComponent_1_Template","DropHintService","hintComponentFactory","dropHint","DragClueTemplateDirective","templateRef","TemplateRef","ɵɵdefineDirective","DropHintTemplateDirective","DEFAULT_SCROLL_SETTINGS","DragAndDropDirective","zone","dragClueService","dropHintService","userProvidedSettings","originalEvent","clientX","hasObservers","dropHintAnchor","dropAction","sourceTree","destinationTree","anchorViewPortCoords","Draggable","TreeItemDragStartEvent","dragEvent","TreeItemDropEvent","dragEndEvent","treeViewTagName","currentPointerCoords","ElementRef","NgZone","TreeViewComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵProvidersFeature","DEFAULT_FILTER_EXPAND_SETTINGS","ExpandDirective","component","EventEmitter","Subscription","collection","autoExpandMatches","isArrayWithAtLeastOneItem","child","merge","map","e","__spreadValues","dataItem","value","settings","isBoolean","__spreadProps","changes","isChanged","expand","key","isExpanded","notify","nodes","matchCount","term","maxAutoExpandResults","expandedOnClear","exitingFilteredState","maxExceeded","sameValues","acc","rootNode","indicesToExpand","ExpandableComponent","ɵɵNgOnChangesFeature","compose","data","curr","copyPageSize","source","sourceGroupSize","incrementPageSize","currentPageSize","decrementPageSize","FlatEditingService","flatBinding","clonedSourceDataItem","getDataItem","destinationItemId","getter","setter","targetIndex","focusTarget","buildTreeIndex","shiftIndex","destinationItemParentId","parentIndex","updatedParent","sourceDataItem","sourceItemIndex","parentChildren","itemChildren","take","children","visibleNodesCount","visibleChildren","lastNode","DEFAULT_FILTER_SETTINGS","FilteringBase","filterTree","items","wrapper","DataBoundComponent","findChildren","prop","x","indexBuilder$1","IndexBuilderService","mapToTree","currentLevelNodes","allNodes","parentIdField","idField","idx","FlatDataBindingDirective","fetchChildren","of","anyChanged","values","isNullOrEmptyString","isBlank","ɵɵInheritDefinitionFeature","HierarchyEditingService","hierarchyBinding","destinationChildren","destinationParentNodes","sourceParentNodes","indexBuilder","mapToWrappers","childrenField","HierarchyBindingDirective","dragAndDropDirective","shouldFilter","isVisible","SelectDirective","treeView","navigationService","EventEmitter","Subscription","e","dataItem","index","node","value","defaultOptions","isPresent","selectionSettings","isBoolean","changes","isChanged","isSelectionBooleanTrue","enabled","mode","performSelection","noop","key","isSelected","__ngFactoryType__","ɵɵdirectiveInject","TreeViewComponent","NavigationService","ɵɵdefineDirective","rf","ctx","ɵɵattribute","ɵɵNgOnChangesFeature","_c0","_c1","_c2","_c3","_c4","a0","a1","a2","_c5","_c6","ListComponent_div_0_1_ng_template_0_Template","rf","ctx","ListComponent_div_0_1_Template","ɵɵtemplate","ctx_r1","ɵɵnextContext","ɵɵproperty","ɵɵpureFunction2","ListComponent_div_0_ng_template_2_Template","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵclassMap","ɵɵadvance","ɵɵtextInterpolate","ListComponent_div_0_Template","ɵɵpureFunction3","ListComponent_5_ng_template_0_input_1_Template","_r3","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","itemIndex_r4","ɵɵresetView","ListComponent_5_ng_template_0_2_ng_template_0_Template","ListComponent_5_ng_template_0_2_Template","dataItem_r5","ListComponent_5_ng_template_0_ng_template_3_Template","ListComponent_5_ng_template_0_Template","ɵɵattribute","ListComponent_5_Template","ListComponent_6_ng_template_0_li_0_3_ng_template_0_Template","ListComponent_6_ng_template_0_li_0_3_Template","dataItem_r6","ListComponent_6_ng_template_0_li_0_ng_template_4_Template","ListComponent_6_ng_template_0_li_0_Template","ctx_r6","itemIndex_r8","ɵɵclassProp","ListComponent_6_ng_template_0_li_1_2_ng_template_0_Template","ListComponent_6_ng_template_0_li_1_2_Template","ListComponent_6_ng_template_0_li_1_ng_template_3_Template","ListComponent_6_ng_template_0_li_1_Template","ListComponent_6_ng_template_0_Template","ListComponent_6_Template","ListComponent_kendo_resize_sensor_7_Template","_r9","ListComponent_div_8_Template","_r10","ɵɵstyleProp","_c7","_c8","ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_ng_template_2_Template","ɵɵelement","ResponsiveRendererComponent_ng_template_2_kendo_textbox_10_Template","_r4","ctx_r2","ResponsiveRendererComponent_ng_template_2_ng_container_13_Template","ɵɵelementContainer","ResponsiveRendererComponent_ng_template_2_div_14_Template","_r5","ɵɵtextInterpolate1","ResponsiveRendererComponent_ng_template_2_Template","_r2","_c9","_c10","_c11","_c12","AutoCompleteComponent_span_2_ng_template_1_Template","AutoCompleteComponent_span_2_Template","AutoCompleteComponent_kendo_separator_3_Template","AutoCompleteComponent_span_5_Template","AutoCompleteComponent_span_6_Template","AutoCompleteComponent_kendo_separator_7_Template","AutoCompleteComponent_span_8_ng_template_1_Template","AutoCompleteComponent_span_8_Template","AutoCompleteComponent_ng_template_9_ng_container_0_Template","AutoCompleteComponent_ng_template_9_Template","sharedPopupActionSheetTemplate_r4","ɵɵreference","AutoCompleteComponent_kendo_resize_sensor_13_Template","AutoCompleteComponent_ng_template_15_0_ng_template_0_Template","AutoCompleteComponent_ng_template_15_0_Template","ɵɵpureFunction1","AutoCompleteComponent_ng_template_15_div_3_ng_template_1_Template","AutoCompleteComponent_ng_template_15_div_3_ng_template_2_Template","AutoCompleteComponent_ng_template_15_div_3_Template","AutoCompleteComponent_ng_template_15_4_ng_template_0_Template","AutoCompleteComponent_ng_template_15_4_Template","AutoCompleteComponent_ng_template_15_Template","_r6","_c13","_c14","ComboBoxComponent_span_2_ng_template_1_Template","ComboBoxComponent_span_2_Template","ComboBoxComponent_kendo_separator_3_Template","ComboBoxComponent_span_5_Template","ComboBoxComponent_span_6_Template","ComboBoxComponent_kendo_separator_7_Template","ComboBoxComponent_span_8_ng_template_1_Template","ComboBoxComponent_span_8_Template","ComboBoxComponent_ng_template_12_ng_container_0_Template","ComboBoxComponent_ng_template_12_Template","ComboBoxComponent_kendo_resize_sensor_14_Template","ComboBoxComponent_ng_template_18_0_ng_template_0_Template","ComboBoxComponent_ng_template_18_0_Template","ComboBoxComponent_ng_template_18_div_3_ng_template_1_Template","ComboBoxComponent_ng_template_18_div_3_ng_template_2_Template","ComboBoxComponent_ng_template_18_div_3_Template","ComboBoxComponent_ng_template_18_4_ng_template_0_Template","ComboBoxComponent_ng_template_18_4_Template","ComboBoxComponent_ng_template_18_Template","_c15","DropDownListComponent_3_ng_template_0_Template","DropDownListComponent_3_Template","DropDownListComponent_ng_template_4_Template","DropDownListComponent_span_5_Template","DropDownListComponent_ng_template_8_ng_container_0_Template","DropDownListComponent_ng_template_8_Template","sharedPopupActionSheetTemplate_r3","DropDownListComponent_kendo_resize_sensor_10_Template","DropDownListComponent_ng_template_14_ng_template_0_Template","ɵɵtwoWayListener","ɵɵtwoWayBindingSet","searchInput_r7","ɵɵtwoWayProperty","DropDownListComponent_ng_template_14_ng_template_1_Template","DropDownListComponent_ng_template_14_ng_template_2_ng_template_2_Template","DropDownListComponent_ng_template_14_ng_template_2_Template","DropDownListComponent_ng_template_14_3_ng_template_0_Template","DropDownListComponent_ng_template_14_3_Template","DropDownListComponent_ng_template_14_div_6_ng_template_1_Template","DropDownListComponent_ng_template_14_div_6_ng_template_2_Template","DropDownListComponent_ng_template_14_div_6_Template","DropDownListComponent_ng_template_14_7_ng_template_0_Template","DropDownListComponent_ng_template_14_7_Template","DropDownListComponent_ng_template_14_Template","_c16","_c17","a3","a4","a5","a6","a7","a8","a9","a10","a11","TagListComponent_div_0_2_ng_template_0_Template","TagListComponent_div_0_2_Template","TagListComponent_div_0_ng_template_3_1_ng_template_0_Template","TagListComponent_div_0_ng_template_3_1_Template","tag_r2","TagListComponent_div_0_ng_template_3_ng_template_2_Template","ɵɵtextInterpolate2","TagListComponent_div_0_ng_template_3_Template","TagListComponent_div_0_ng_template_5_1_ng_template_0_Template","TagListComponent_div_0_ng_template_5_1_Template","TagListComponent_div_0_ng_template_5_ng_template_2_Template","ctx_r3","index_r5","TagListComponent_div_0_ng_template_5_Template","TagListComponent_div_0_Template","_r1","ɵɵtemplateRefExtractor","ctx_r5","groupTag_r7","singleTag_r8","ɵɵpureFunctionV","MultiSelectComponent_span_2_ng_template_1_Template","MultiSelectComponent_span_2_Template","MultiSelectComponent_kendo_separator_3_Template","MultiSelectComponent_span_7_Template","MultiSelectComponent_span_8_Template","MultiSelectComponent_kendo_separator_9_Template","MultiSelectComponent_span_10_ng_template_1_Template","MultiSelectComponent_span_10_Template","MultiSelectComponent_ng_template_11_ng_container_0_Template","MultiSelectComponent_ng_template_11_Template","MultiSelectComponent_kendo_resize_sensor_13_Template","MultiSelectComponent_ng_template_17_0_ng_template_0_Template","MultiSelectComponent_ng_template_17_0_Template","MultiSelectComponent_ng_template_17_div_1_2_ng_template_0_Template","MultiSelectComponent_ng_template_17_div_1_2_Template","MultiSelectComponent_ng_template_17_div_1_ng_template_3_Template","MultiSelectComponent_ng_template_17_div_1_Template","default_custom_item_template_r7","MultiSelectComponent_ng_template_17_div_4_ng_template_1_Template","MultiSelectComponent_ng_template_17_div_4_ng_template_2_Template","MultiSelectComponent_ng_template_17_div_4_Template","MultiSelectComponent_ng_template_17_5_ng_template_0_Template","MultiSelectComponent_ng_template_17_5_Template","MultiSelectComponent_ng_template_17_Template","_c18","_c19","_c20","MultiColumnComboBoxComponent_span_2_ng_template_1_Template","MultiColumnComboBoxComponent_span_2_Template","MultiColumnComboBoxComponent_kendo_separator_3_Template","MultiColumnComboBoxComponent_span_5_Template","MultiColumnComboBoxComponent_span_6_Template","MultiColumnComboBoxComponent_kendo_separator_7_Template","MultiColumnComboBoxComponent_span_8_ng_template_1_Template","MultiColumnComboBoxComponent_span_8_Template","MultiColumnComboBoxComponent_ng_template_12_ng_container_0_Template","MultiColumnComboBoxComponent_ng_template_12_Template","MultiColumnComboBoxComponent_kendo_resize_sensor_14_Template","MultiColumnComboBoxComponent_ng_template_18_0_ng_template_0_Template","MultiColumnComboBoxComponent_ng_template_18_0_Template","MultiColumnComboBoxComponent_ng_template_18_ng_container_8_col_1_Template","column_r7","MultiColumnComboBoxComponent_ng_template_18_ng_container_8_Template","ɵɵelementContainerStart","ɵɵelementContainerEnd","MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_ng_container_1_Template","column_r8","MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_2_ng_template_0_Template","MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_2_Template","MultiColumnComboBoxComponent_ng_template_18_ng_container_11_th_1_Template","MultiColumnComboBoxComponent_ng_template_18_ng_container_11_Template","MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_ng_container_1_Template","column_r9","dataItem_r10","MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_2_ng_template_0_Template","MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_2_Template","ɵɵpureFunction4","MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_span_1_Template","MultiColumnComboBoxComponent_ng_template_18_ng_template_12_ng_container_0_Template","MultiColumnComboBoxComponent_ng_template_18_ng_template_12_Template","MultiColumnComboBoxComponent_ng_template_18_div_16_ng_template_1_Template","MultiColumnComboBoxComponent_ng_template_18_div_16_ng_template_2_Template","MultiColumnComboBoxComponent_ng_template_18_div_16_Template","MultiColumnComboBoxComponent_ng_template_18_ng_container_17_ng_template_6_Template","MultiColumnComboBoxComponent_ng_template_18_ng_container_17_Template","MultiColumnComboBoxComponent_ng_template_18_Template","header_r11","headerWrap_r12","rowTemplate_r13","_c21","_c22","_c23","DropDownTreeComponent_3_ng_template_0_Template","DropDownTreeComponent_3_Template","DropDownTreeComponent_ng_template_4_Template","DropDownTreeComponent_span_5_Template","DropDownTreeComponent_span_6_Template","DropDownTreeComponent_ng_template_9_ng_container_0_Template","DropDownTreeComponent_ng_template_9_Template","DropDownTreeComponent_ng_template_14_span_0_Template","filterInput_r6","DropDownTreeComponent_ng_template_14_1_ng_template_0_Template","DropDownTreeComponent_ng_template_14_1_Template","DropDownTreeComponent_ng_template_14_kendo_treeview_2_Template","_r7","DropDownTreeComponent_ng_template_14_3_ng_template_0_Template","DropDownTreeComponent_ng_template_14_3_Template","DropDownTreeComponent_ng_template_14_div_4_ng_template_1_Template","DropDownTreeComponent_ng_template_14_div_4_ng_template_2_Template","DropDownTreeComponent_ng_template_14_div_4_Template","DropDownTreeComponent_ng_template_14_Template","DropDownTreeComponent_kendo_resize_sensor_16_Template","_r8","_c24","_c25","MultiSelectTreeComponent_span_3_Template","MultiSelectTreeComponent_span_4_Template","MultiSelectTreeComponent_span_5_Template","MultiSelectTreeComponent_ng_template_6_ng_container_0_Template","MultiSelectTreeComponent_ng_template_6_Template","MultiSelectTreeComponent_ng_template_11_div_0_Template","filterInput_r7","MultiSelectTreeComponent_ng_template_11_1_ng_template_0_Template","MultiSelectTreeComponent_ng_template_11_1_Template","MultiSelectTreeComponent_ng_template_11_div_2_Template","treeview_r9","MultiSelectTreeComponent_ng_template_11_5_ng_template_0_Template","MultiSelectTreeComponent_ng_template_11_5_Template","MultiSelectTreeComponent_ng_template_11_div_6_ng_template_1_Template","MultiSelectTreeComponent_ng_template_11_div_6_ng_template_2_Template","MultiSelectTreeComponent_ng_template_11_div_6_Template","MultiSelectTreeComponent_ng_template_11_Template","MultiSelectTreeComponent_kendo_resize_sensor_13_Template","packageMetadata","isPresent","value","isNumber","guid","id","i","random","combineStr","begin","end","isArray","value","isObject","isPresent","isEmptyString","resolveValuesInArray","values","data","valueField","item","getter","validateComplexValues","resolveAllValues","customValues","isObjectArray","selectedIndices","extractedValues","arr","index","dataItem","field","sameCharsOnly","word","character","idx","shuffleData","data","splitIndex","defaultItem","result","matchText","text","ignoreCase","isPresent","temp","hasProps","obj","props","isPresent","prop","isUntouched","element","noop","_","matches","selector","matcher","closest","parent","parseNumber","num","defaultValue","normalizedValue","inDropDown","host","target","popupRef","getHierarchicalItemLevel","index","fetchDescendentNodes","lookup","filterExpression","descendants","descendent","child","valueFrom","dataItem","level","valueField","fields","valueLevel","normalizedLevel","field","getter","getSizeClass","component","size","getRoundedClass","rounded","getFillModeClass","fillMode","filterAndMap","arr","predicate","mapper","acc","curr","isJapanese","input","isLetter","text","getSearchableItems","treeViewId","element","nodeSeletor","liElement","windowSize","isTruthy","value","updateActionSheetAdaptiveAppearance","actionSheet","renderer","animationContainer","setListBoxAriaLabelledBy","optionsList","listBox","ariaLabel","setActionSheetTitle","actionSheetTitle","animationDuration","SearchBarComponent","localization","injector","input","ngZone","EventEmitter","Subscription","readonly","disabled","isRequired","isSuggestable","isFilterable","userInput","NgControl","attributes","isObjectPresent","removeHTMLAttributes","parseAttributes","text","rtl","changes","isDocumentAvailable","previousUserInput","caretStart","caretAtEnd","combineStr","isSafari","event","start","end","target","isJapanese","keyCode","Keys","lengthOf","x","placeholderLength","textLength","size","attributesToRender","setHTMLAttributes","__ngFactoryType__","ɵɵdirectiveInject","LocalizationService","Renderer2","Injector","ElementRef","NgZone","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","_c0","ItemTemplateDirective","templateRef","TemplateRef","ɵɵdefineDirective","HeaderTemplateDirective","FooterTemplateDirective","GroupTemplateDirective","FixedGroupTemplateDirective","DataService","data","isPresent","item","hasProps","groupIndices","i","predicate","result","matches","startFrom","index","itemIndex","match","dataItem","filterAndMap","mappedItem","fieldName","getter","group","offset","groupIndex","flat","ɵɵdefineInjectable","DisabledItemsService","dataService","ɵɵinject","SelectionService","disabledItemsService","current","preventClosingPopup","indices","position","newSelection","from","to","addedIndices","indicesToBeUnselected","startOfSelection","endOfSelection","totalItems","NavigationAction","MIN_INDEX","NavigationEvent","originalEvent","NavigationService","selectionService","args","altKey","shiftKey","ctrlKey","openOnSpace","closeOnSpace","action","eventData","step","nextIndex","firstFocusableIndex","inversedStep","min","max","startIndex","NoDataTemplateDirective","PreventableEvent","FilterableComponent","ListItemDirective","SelectableDirective","ɵɵlistener","$event","ɵɵstyleProp","ɵɵclassProp","ListComponent","wrapper","cdr","zone","merge","map","switchMap","take","getSizeClass","getRoundedClass","isChanged","fromEvent","auditTime","tap","liItems","isGroup","childrenliItemsIds","firstGroupReached","previousGroup","li","idx","scrollTarget","isChecked","normalizedIndex","content","rect","el","closest","visibleItems","offsetY","down","nextPage","leftOver","prevPage","flatIndex","items","contentOffsetHeight","contentScrollTop","itemOffsetTop","itemOffsetHeight","bottomDistance","nativeElement","overflow","virtualOffsetHeight","ChangeDetectorRef","ɵɵviewQuery","_c1","_c2","_c3","_t","ɵɵqueryRefresh","ɵɵloadQuery","_r1","ɵɵgetCurrentView","ɵɵtemplate","ListComponent_div_0_Template","ɵɵelementStart","ɵɵrestoreView","ɵɵresetView","ListComponent_5_Template","ListComponent_6_Template","ListComponent_kendo_resize_sensor_7_Template","ɵɵelementEnd","ListComponent_div_8_Template","ɵɵproperty","ɵɵadvance","ɵɵclassMap","NgIf","NgStyle","TemplateContextDirective","NgForOf","NgClass","ResizeSensorComponent","DEFAULTS","normalizeVirtualizationSettings","settings","defaultOverrides","defaults","__spreadValues","ResponsiveRendererComponent","xIcon","key","ActionSheetComponent","_c7","ResponsiveRendererComponent_ng_template_2_Template","ɵɵpureFunction1","_c8","ActionSheetTemplateDirective","ButtonComponent","TextBoxComponent","TextBoxPrefixTemplateDirective","IconComponent","NgTemplateOutlet","SharedDropDownEventsDirective","hostElement","cursorInsideWrapper","tabbing","Messages","ComponentMessages","ɵMessages_BaseFactory","ɵɵgetInheritedFactory","ɵɵInheritDefinitionFeature","LocalizedMessagesDirective","service","ɵɵProvidersFeature","forwardRef","NO_VALUE","DEFAULT_SIZE$5","DEFAULT_ROUNDED$5","DEFAULT_FILL_MODE$5","AUTOCOMPLETE_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","AutoCompleteComponent","popupService","navigationService","_zone","guid","noop","Subject","validatePackage","packageMetadata","wrapperOffsetWidth","width","minWidth","maxWidth","popupHeight","containerClasses","hasMatch","appendTo","touchEnabled","isControlRequired","open","shouldOpen","isDisabled","sameState","virtual","newValue","_subtitle","_listHeight","fn","tabIndex","newSize","rounded","newRounded","fillMode","newFillMode","getFillModeClass","isFocused","isInRange","popupWrapper","isDevMode","focused","currentTextLength","hasObservers","valueHasChanged","isUntouched","exactMatch","insensitiveMatch","hasChange","inDropDown","_event","horizontalAlign","anchorPosition","popupPosition","eventArgs","maxIndex","itemText","PopupService","dirIndex","ɵɵcontentQuery","SuffixTemplateDirective","PrefixTemplateDirective","_c9","ViewContainerRef","_c10","_c11","L10N_PREFIX","KendoInput","i18n_0","i18n_1","i18n_2","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵtwoWayListener","ɵɵtwoWayBindingSet","AutoCompleteComponent_span_2_Template","AutoCompleteComponent_kendo_separator_3_Template","AutoCompleteComponent_span_5_Template","AutoCompleteComponent_span_6_Template","AutoCompleteComponent_kendo_separator_7_Template","AutoCompleteComponent_span_8_Template","ɵɵelementContainerEnd","AutoCompleteComponent_ng_template_9_Template","ɵɵtemplateRefExtractor","AutoCompleteComponent_kendo_resize_sensor_13_Template","AutoCompleteComponent_ng_template_15_Template","sharedPopupActionSheetTemplate_r4","ɵɵreference","ɵɵtwoWayProperty","SeparatorComponent","IconWrapperComponent","MultiselectMessages","MultiSelectTreeMessages","ComboBoxMessages","MultiColumnComboBoxMessages","DropDownListMessages","DropDownTreeMessages","COMBOBOX_VALUE_ACCESSOR","ComboBoxComponent","DEFAULT_SIZE$4","DEFAULT_ROUNDED$4","DEFAULT_FILL_MODE$4","MultiTabStop","caretAltDownIcon","_","isPrimitive","valueStream","filter","candidate","newText","customValueStreams","partition","throttleTime","allowCustomValueStream","normalizedValue","disableCustomValueStream","clearValueStream","merged","catchError","selectionChanged","of","state","selectionArgs","anyChanged","textEmpty","isEmptyString","valueEmpty","valueField","resolved","confirm","clear","comparer","hasSelected","shouldSuggest","hasFocused","previousText","focusedItemText","textHasChanged","unresolvedSelection","currentText","isCustom","focusedDataItem","isInDropDown","selectElement","pointers","_c13","i18n_3","i18n_4","i18n_5","i18n_6","ComboBoxComponent_span_2_Template","ComboBoxComponent_kendo_separator_3_Template","ComboBoxComponent_span_5_Template","ComboBoxComponent_span_6_Template","ComboBoxComponent_kendo_separator_7_Template","ComboBoxComponent_span_8_Template","ɵɵelement","ComboBoxComponent_ng_template_12_Template","ComboBoxComponent_kendo_resize_sensor_14_Template","ComboBoxComponent_ng_template_18_Template","_c14","EventsOutsideAngularDirective","ValueTemplateDirective","FilterInputDirective","DROPDOWNLIST_VALUE_ACCESSOR","DropDownListComponent","DEFAULT_SIZE$3","DEFAULT_ROUNDED$3","DEFAULT_FILL_MODE$3","searchIcon","wrapperWidth","providedTabIndex","firstIndex","isHomeEnd","focusedItemNotSelected","leftRightKeys","shouldUsePrevious","shouldUseNewValue","skipWhile","concatMap","interval","takeUntil","searchInput","selectedIndex","character","isInLoop","sameCharsOnly","dataLength","defaultItem","shuffleData","loopMatch","matchText","nextMatch","prop","textField","primitive","defaultValue","currentValue","ofSameType","trimmed","i18n_7","i18n_8","i18n_9","i18n_10","DropDownListComponent_3_Template","DropDownListComponent_ng_template_4_Template","DropDownListComponent_span_5_Template","DropDownListComponent_ng_template_8_Template","DropDownListComponent_kendo_resize_sensor_10_Template","DropDownListComponent_ng_template_14_Template","sharedPopupActionSheetTemplate_r3","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormsModule","NgModel","CustomItemTemplateDirective","TagTemplateDirective","GroupTagTemplateDirective","RemoveTagEvent","normalizeCheckboxesSettings","isObject","TagListComponent","xCircleIcon","tag","propField","positionIndex","_tag","fieldsCount","depth","_c16","ɵɵprojectionDef","TagListComponent_div_0_Template","ɵɵprojection","MULTISELECT_VALUE_ACCESSOR","MultiSelectComponent","DEFAULT_SIZE$2","DEFAULT_ROUNDED$2","DEFAULT_FILL_MODE$2","differs","plusIcon","tags","matchingValue","matchingItem","values","focusedTagIndex","focusedListIndex","prefix","focusedIndex","isArray","isObjectArray","newItem","selection","selectedIndices","resolveAllValues","navigateInput","selectValue","deleteTag","selected","_item","isOpen","isClosed","isTagFocused","dataItems","dataItemValues","isDataItemDisabled","isNumber","customItem","inputElement","a","b","selectedItemsCount","dataItemsCount","dataItemsWithoutHeadersCount","focusedItem","largestIndex","lastItemIndex","indexToSelect","lastClickedIndex","last","startsFrom","acc","f","KeyValueDiffers","i18n_11","i18n_12","i18n_13","i18n_14","i18n_15","MultiSelectComponent_span_2_Template","MultiSelectComponent_kendo_separator_3_Template","MultiSelectComponent_span_7_Template","MultiSelectComponent_span_8_Template","MultiSelectComponent_kendo_separator_9_Template","MultiSelectComponent_span_10_Template","MultiSelectComponent_ng_template_11_Template","MultiSelectComponent_kendo_resize_sensor_13_Template","MultiSelectComponent_ng_template_17_Template","ColumnCellTemplateDirective","ColumnHeaderTemplateDirective","ComboBoxColumnComponent","SCROLLBAR_WIDTH","scrollbarWidth","div","allColumnsWidthsSet","columns","column","getRowWidthFromColumnsMeta","initialRowWidht","totalWidth","MultiColumnComboBoxComponent","changeDetector","header","field","headerPaddingPosition","matchesMedia","_c18","i18n_16","i18n_17","i18n_18","i18n_19","MultiColumnComboBoxComponent_span_2_Template","MultiColumnComboBoxComponent_kendo_separator_3_Template","MultiColumnComboBoxComponent_span_5_Template","MultiColumnComboBoxComponent_span_6_Template","MultiColumnComboBoxComponent_kendo_separator_7_Template","MultiColumnComboBoxComponent_span_8_Template","MultiColumnComboBoxComponent_ng_template_12_Template","MultiColumnComboBoxComponent_kendo_resize_sensor_14_Template","MultiColumnComboBoxComponent_ng_template_18_Template","NodeTemplateDirective","DEFAULT_POPUP_SETTINGS$1","hasChildren$1","fetchChildren$1","itemDisabled$1","isNodeVisible$1","DEFAULT_SIZE$1","DEFAULT_ROUNDED$1","DEFAULT_FILL_MODE$1","stopPropagation","DropDownTreeComponent","treeview","defaultTabIndex","callback","nodes","char","itemToFocus","node","debounceTime","relatedTarget","isLetter","lookup","sub","_c21","_c22","DataBoundComponent","ExpandableComponent","i18n_20","i18n_21","i18n_22","i18n_23","i18n_24","DropDownTreeComponent_3_Template","DropDownTreeComponent_ng_template_4_Template","DropDownTreeComponent_span_5_Template","DropDownTreeComponent_span_6_Template","DropDownTreeComponent_ng_template_9_Template","DropDownTreeComponent_ng_template_14_Template","DropDownTreeComponent_kendo_resize_sensor_16_Template","TreeViewComponent","SelectDirective","nodeIndex$1","buildTreeItem","dataItem","valueField","currentLevelIndex","isPresent","valueFrom","MultiSelectTreeLookupService","index","children","item","parent","currentLookup","nodeIndex$1","c","__ngFactoryType__","ɵɵdefineInjectable","BaseCheckDirective","level","getHierarchicalItemLevel","key","candidate","__spreadProps","__spreadValues","ɵɵdefineDirective","CheckDirective","treeView","EventEmitter","Subscription","changes","node","filter","event","lookup","target","pendingCheck","fetchDescendentNodes","shouldCheck","currentParent","child","ɵɵdirectiveInject","TreeViewComponent","ɵɵInheritDefinitionFeature","ɵɵNgOnChangesFeature","CheckAllDirective","element","zone","cdr","renderer","_value","itemIndex","itemLookup","isIndeterminate","_node","fn","ElementRef","NgZone","ChangeDetectorRef","Renderer2","rf","ctx","ɵɵlistener","$event","DEFAULT_POPUP_SETTINGS","DEFAULT_CHECKABLE_SETTINGS","hasChildren","fetchChildren","of","itemDisabled","isNodeVisible","DEFAULT_SIZE","DEFAULT_ROUNDED","DEFAULT_FILL_MODE","MultiSelectTreeComponent","injector","wrapper","popupService","navigationService","_zone","localization","touchEnabled","animationDuration","searchIcon","xIcon","guid","tags","Subject","noop","NgControl","text","getSearchableItems","_subtitle","input","Keys","isLetter","eventData","action","NavigationAction","spaceKeyDownEvent","treeview","value","providedTabIndex","parseNumber","defaultTabIndex","size","newSize","getSizeClass","rounded","newRounded","getRoundedClass","fillMode","newFillMode","getFillModeClass","settings","data","items","hasProps","_listHeight","isFocused","isTruthy","wrapperWidth","width","minWidth","maxWidth","popupHeight","appendTo","containerClasses","nodes","callback","windowSize","popupWrapper","min","max","tap","char","itemToFocus","debounceTime","rtl","isDocumentAvailable","anyChanged","isArray","open","shouldOpen","hasObservers","relatedTarget","isUntouched","isDisabled","sameState","tag","eventArgs","RemoveTagEvent","_item","i","itemKey","keysToRemove","showAfter","_depth","isDevMode","MultiSelectTreeMessages","isObject","isEveryDataItemObject","isObjectArray","PreventableEvent","horizontalAlign","anchorPosition","popupPosition","merge","sub","isFirstNodeActive","last","source","a","b","newValue","indices","parentItem","levelIndex","parentIndex","treeItems","setActionSheetTitle","updateActionSheetAdaptiveAppearance","Injector","PopupService","NavigationService","LocalizationService","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","HeaderTemplateDirective","FooterTemplateDirective","NodeTemplateDirective","NoDataTemplateDirective","TagTemplateDirective","GroupTagTemplateDirective","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","ResponsiveRendererComponent","_c10","_c9","ViewContainerRef","_c21","_c22","_c24","ɵɵattribute","ɵɵclassProp","ɵɵProvidersFeature","DataService","DisabledItemsService","SelectionService","L10N_PREFIX","NG_VALUE_ACCESSOR","forwardRef","DataBoundComponent","ExpandableComponent","KendoInput","ɵɵStandaloneFeature","i18n_25","i18n_26","i18n_27","i18n_28","i18n_29","i18n_30","i18n_31","_r1","ɵɵgetCurrentView","ɵɵelementContainer","ɵɵelementStart","ɵɵrestoreView","ɵɵresetView","ɵɵelementEnd","ɵɵtemplate","MultiSelectTreeComponent_span_3_Template","MultiSelectTreeComponent_span_4_Template","MultiSelectTreeComponent_span_5_Template","MultiSelectTreeComponent_ng_template_6_Template","ɵɵtemplateRefExtractor","MultiSelectTreeComponent_ng_template_11_Template","MultiSelectTreeComponent_kendo_resize_sensor_13_Template","sharedPopupActionSheetTemplate_r4","ɵɵreference","ɵɵadvance","ɵɵproperty","LocalizedMessagesDirective","TagListComponent","NgIf","IconWrapperComponent","NgTemplateOutlet","NgClass","FilterInputDirective","EventsOutsideAngularDirective","TemplateContextDirective","ResizeSensorComponent","DropDownTreeFlatBindingDirective","FlatDataBindingDirective","dropDownTree","term","isChanged","DropDownTreeHierarchyBindingDirective","HierarchyBindingDirective","dropDownTree","term","changes","isChanged","__ngFactoryType__","ɵɵdirectiveInject","DataBoundComponent","ɵɵdefineDirective","ɵɵInheritDefinitionFeature","ɵɵNgOnChangesFeature","MultiSelectTreeFlatBindingDirective","FlatDataBindingDirective","multiSelectTree","MultiSelectTreeHierarchyBindingDirective","DropDownTreesExpandDirective","ExpandDirective","value","ExpandableComponent","DEFAULT_FILTER_SETTINGS","FilterDirective","component","data","isPresent","query","item","normalizedQuery","fields","field","getter","target","normalizedValue","providedFields","isArray","settings","FilterableComponent","CustomMessagesComponent","Messages","service","LocalizationService","ɵɵdefineComponent","ɵɵProvidersFeature","forwardRef","ɵɵStandaloneFeature","rf","ctx","SummaryTagDirective","multiSelectComponent","showAfter","parseNumber","tags","result","MultiSelectComponent","MultiSelectTreeSummaryTagDirective","multiSelectTreeComponent","MultiSelectTreeComponent","KENDO_AUTOCOMPLETE","AutoCompleteComponent","FixedGroupTemplateDirective","FooterTemplateDirective","GroupTemplateDirective","HeaderTemplateDirective","ItemTemplateDirective","NoDataTemplateDirective","SuffixTemplateDirective","PrefixTemplateDirective","SeparatorComponent","KENDO_COMBOBOX","ComboBoxComponent","KENDO_MULTICOLUMNCOMBOBOX","MultiColumnComboBoxComponent","ComboBoxColumnComponent","ColumnHeaderTemplateDirective","ColumnCellTemplateDirective","KENDO_DROPDOWNLIST","DropDownListComponent","ValueTemplateDirective","KENDO_MULTISELECT","CustomItemTemplateDirective","GroupTagTemplateDirective","TagTemplateDirective","KENDO_DROPDOWNTREE","DropDownTreeComponent","DropDownTreeFlatBindingDirective","NodeTemplateDirective","KENDO_MULTISELECTTREE","KENDO_DROPDOWNS","ComboBoxModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","PopupService","ResizeBatchService","IconsService","ComboBoxComponent","CustomMessagesComponent","SeparatorComponent","MultiColumnComboBoxComponent","ComboBoxColumnComponent","AdornmentsModule","isPresent","value","isBlank","isArray","isFunction","isString","isNullOrEmptyString","value","isBlank","isNotNullOrEmptyString","isNumeric","isDate","isCompositeFilterDescriptor","source","isPresent","ifElse","predicate","right","left","value","compose","args","data","acc","curr","constant","x","toUTC","date","isDateValue","x","isDate","operatorMap","key","normalizeOperator","descriptor","filter","result","isCompositeFilterDescriptor","isString","normalizeDescriptor","isArray","normalizeFilters","isPresent","emptyString","constant","getterCache","FIELD_REGEX","obj","getter","field","safe","key","fields","_","index","indexAccessor","isPresent","result","idx","pairwise","key","value","empty","isNotEmptyArray","isPresent","isArray","has","accessor","isNotEmpty","runOrEmpty","predicate","fn","ifElse","calcPage","skip","take","formatDescriptors","formatter","state","removeAfter","what","str","replace","patterns","compose","left","right","s","sanitizeDateLiterals","removeAfterDot","directionFormatter","field","dir","aggregateFormatter","aggregate","getter","aggregates","group","sort","formatSort","formatGroup","formatAggregates","prefixDateValue","formatDateValue","toUTC","formatDate","ignoreCase","operator","normalizeSort","isNotNullOrEmptyString","transformSkip","transformTake","transformGroup","transformSort","transformAggregates","serializePage","serializePageSize","serializeGroup","serializeAggregates","serializeSort","filterFormatter","field","operator","value","dateFormatter","ifElse","isDateValue","compose","formatDate","set","field","target","value","toCamelCase","str","_","g1","prop","fieldName","obj","isPresent","member","aggregateMethodName","convert","mapper","values","translateAggregate","source","acc","translateAggregates","valueOrDefault","defaultValue","normalizeGroup","group","translateGroup","compose","hasSubgroups","aggregates","items","compare","a","b","isBlank","compareDesc","descriptorAsFunc","descriptor","prop","getter","initial","_a","_b","composeSortDescriptors","descriptors","x","isPresent","acc","curr","valueToString","value","isPresent","groupCombinator","field","prop","getter","position","agg","groupValue","key","values","expandAggregates","result","aggregates","aggregate","aggregatesFuncs","name","count","curr","isNumeric","state","isDate","aggregatesCombinator","descriptors","functions","descriptor","fieldAccessor","aggregateName","aggregateAccessor","fieldAggregates","aggregateFunction","calc","concat","arr","map","transform","reduce","acc","index","filter","predicate","isTransformerResult","source","reduced","x","take","skip","count","reduce","acc","curr","exec","transform","initialValue","data","result","idx","length","isTransformerResult","identity","map","x","aggregateBy","data","descriptors","transformers","initialValue","result","exec","aggregatesCombinator","expandAggregates","logic","acc","fn","a","operatorsMap","b","isPresent","isBlank","dateRegExp","convertValue","value","ignoreCase","isString","date","isDate","typedGetter","prop","x","isNumeric","transformFilter","field","operator","itemProp","isFunction","getter","op","transformCompositeFilter","filter","combiner","isCompositeFilterDescriptor","compileFilter","descriptor","transformCompositeFilter","filterBy","data","isPresent","isCompositeFilterDescriptor","normalizeFilters","normalizeGroups","descriptors","isArray","x","identity","map","groupBy","data","transformers","originalData","descriptor","initialValue","view","exec","groupCombinator","result","field","value","group","aggregateResult","filteredData","isPresent","filterBy","aggregateBy","orderBy","data","descriptors","x","isPresent","comparer","composeSortDescriptors","count","data","predicate","counter","idx","length","limit","process","state","skipCount","takeCount","filterDescriptor","sort","group","sortDescriptors","normalizeGroups","orderBy","hasFilters","isPresent","filter","hasGroups","total","transformers","compileFilter","normalizeFilters","skip","take","transform","compose","groupBy","exec","concat","FilterOperator","_c0","_c1","ProgressBarComponent_span_2_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r0","ɵɵnextContext","ɵɵadvance","ɵɵtextInterpolate","ProgressBarComponent_span_7_Template","ChunkProgressBarComponent_li_2_Template","ɵɵelement","chunk_r1","i_r2","ctx_r2","ɵɵstyleProp","ɵɵclassProp","ɵɵproperty","_c2","_c3","_c4","_c5","CircularProgressBarComponent_div_11_ng_template_2_Template","CircularProgressBarComponent_div_11_Template","ɵɵtemplate","ctx_r1","packageMetadata","MIN_MAX_ERROR_MESSAGE","LABEL_DECIMALS","MIN_RATIO","formatValue","value","min","max","label","defaultFormattedValue","truncateNumber","calculatePercentage","validateRange","isDevMode","adjustValueToRange","numberParts","calculateRatio","extractValueFromChanges","changes","type","runAnimation","animation","previousValue","displayValue","stopCurrentAnimation","isAnimationChanged","hasAnimation","setProgressBarStyles","props","renderer","prop","removeProgressBarStyles","hasElementSize","element","ProgressBarBase","elem","localization","validatePackage","rtl","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","Renderer2","LocalizationService","ɵɵdefineComponent","ɵɵattribute","ɵɵNgOnChangesFeature","ProgressBarMessages","ComponentMessages","ɵProgressBarMessages_BaseFactory","ɵɵgetInheritedFactory","ɵɵdefineDirective","ɵɵInheritDefinitionFeature","LocalizedProgressBarMessagesDirective","service","ɵɵProvidersFeature","forwardRef","ProgressBarComponent","zone","EventEmitter","wrapperElement","animationOptions","animate","elapsed","position","size","wrapperSize","hasObservers","isHorizontal","previousRatio","previousStatusWidth","previousStatusHeight","property","startTime","startSize","deltaSize","duration","newSize","newWrapperSize","NgZone","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","L10N_PREFIX","ɵɵStandaloneFeature","i18n_0","ɵɵelementContainer","NgStyle","NgClass","NgIf","ChunkProgressBarComponent","count","chunks","completedChunks","i","i18n_1","NgForOf","CircularProgressbarCenterTemplateDirective","templateRef","TemplateRef","DEFAULT_SURFACE_SIZE","CircularProgressBarComponent","cdr","Subscription","indeterminate","isDocumentAvailable","ariaLabel","isChanged","take","progressArc","radius","circumference","dir","strokeDashOffest","progressCalculations","forwardProgress","backwardProgress","from","scale","surface","elWidth","surfaceSize","attributesArray","rotate","color","indeterminateStyles","labelEl","elHeight","elementSize","left","top","labelCalculations","to","ChangeDetectorRef","dirIndex","ɵɵcontentQuery","i18n_2","_r1","ɵɵgetCurrentView","ɵɵnamespaceSVG","ɵɵnamespaceHTML","ɵɵlistener","ɵɵrestoreView","ɵɵresetView","NgTemplateOutlet","ResizeSensorComponent","ProgressBarCustomMessagesComponent","KENDO_CHUNKPROGRESSBAR","KENDO_CIRCULARPROGRESSBAR","KENDO_PROGRESSBAR","KENDO_PROGRESSBARS","_c0","_c1","_c2","_c3","_c4","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","_c5","_c6","_c7","PanelBarItemComponent_kendo_icon_wrapper_2_Template","rf","ctx","ɵɵelement","ctx_r1","ɵɵnextContext","ɵɵproperty","PanelBarItemComponent_img_3_Template","ɵɵsanitizeUrl","PanelBarItemComponent_ng_container_4_Template","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelementContainerEnd","ɵɵadvance","ɵɵtextInterpolate","PanelBarItemComponent_5_ng_template_0_Template","PanelBarItemComponent_5_Template","ɵɵtemplate","ɵɵpureFunction1","ɵɵpureFunctionV","PanelBarItemComponent_kendo_icon_wrapper_6_Template","PanelBarItemComponent_div_7_div_2_Template","ɵɵprojection","ɵɵstyleProp","PanelBarItemComponent_div_7_div_3_ng_template_1_Template","PanelBarItemComponent_div_7_div_3_Template","ɵɵpureFunction6","PanelBarItemComponent_div_7_div_4_ng_container_1_kendo_panelbar_item_1_Template","item_r3","PanelBarItemComponent_div_7_div_4_ng_container_1_Template","PanelBarItemComponent_div_7_div_4_Template","PanelBarItemComponent_div_7_div_5_ng_template_1_Template","PanelBarItemComponent_div_7_div_5_ng_template_2_Template","PanelBarItemComponent_div_7_div_5_Template","PanelBarItemComponent_div_7_Template","ɵɵattribute","PanelBarComponent_ng_content_0_Template","PanelBarComponent_ng_template_1_ng_container_0_kendo_panelbar_item_1_Template","item_r1","PanelBarComponent_ng_template_1_ng_container_0_Template","PanelBarComponent_ng_template_1_Template","PanelBarComponent_div_2_Template","_c8","SplitterPaneComponent_ng_container_0_Template","SplitterPaneComponent_div_1_Template","SplitterBarComponent_div_0_Template","_r1","ɵɵgetCurrentView","ɵɵlistener","ɵɵrestoreView","ɵɵresetView","SplitterBarComponent_div_2_Template","_r3","_c9","_c10","_c11","SplitterComponent_ng_container_1_kendo_splitter_bar_1_Template","index_r1","ɵɵpureFunction2","SplitterComponent_ng_container_1_Template","last_r3","_c12","_c13","TabComponent_ng_container_0_span_1_Template","ctx_r0","TabComponent_ng_container_0_span_2_ng_template_1_Template","TabComponent_ng_container_0_span_2_Template","TabComponent_ng_container_0_Template","TabComponent_ng_template_1_Template","TabComponent_button_3_Template","_r2","_c14","_c15","_c16","_c17","TabStripComponent_ng_container_1_ng_container_1_Template","ɵɵelementContainer","TabStripComponent_ng_container_1_ng_container_2_ng_container_1_Template","TabStripComponent_ng_container_1_ng_container_2_Template","content_r1","ɵɵreference","TabStripComponent_ng_container_1_Template","heading_r3","TabStripComponent_ng_container_2_ng_container_1_ng_container_1_Template","TabStripComponent_ng_container_2_ng_container_1_Template","TabStripComponent_ng_container_2_ng_container_2_Template","TabStripComponent_ng_container_2_Template","TabStripComponent_ng_template_3_span_1_Template","_r4","$event","TabStripComponent_ng_template_3_ng_container_4_Template","_r5","i_r6","tab_r7","TabStripComponent_ng_template_3_span_5_Template","_r8","TabStripComponent_ng_template_3_Template","TabStripComponent_ng_template_5_ng_template_0_div_0_ng_template_1_Template","TabStripComponent_ng_template_5_ng_template_0_div_0_Template","ctx_r8","tab_r10","i_r11","TabStripComponent_ng_template_5_ng_template_0_Template","TabStripComponent_ng_template_5_Template","TabStripComponent_kendo_resize_sensor_7_Template","_r12","TabStripComponent_div_8_Template","_c18","_c19","DrawerItemComponent_0_ng_template_0_Template","DrawerItemComponent_0_Template","ɵɵpureFunction4","DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_1_Template","DrawerItemComponent_ng_template_1_ng_container_0_span_4_Template","DrawerItemComponent_ng_template_1_ng_container_0_kendo_icon_wrapper_5_Template","DrawerItemComponent_ng_template_1_ng_container_0_Template","DrawerItemComponent_ng_template_1_ng_container_1_kendo_icon_wrapper_1_Template","DrawerItemComponent_ng_template_1_ng_container_1_Template","DrawerItemComponent_ng_template_1_Template","_c20","DrawerListComponent_ng_container_0_li_1_Template","v_r2","idx_r3","ctx_r3","ɵɵclassMapInterpolate1","DrawerListComponent_ng_container_0_li_2_Template","DrawerListComponent_ng_container_0_Template","DrawerComponent_div_0_ng_container_1_1_ng_template_0_Template","DrawerComponent_div_0_ng_container_1_1_Template","DrawerComponent_div_0_ng_container_1_3_ng_template_0_Template","DrawerComponent_div_0_ng_container_1_3_Template","DrawerComponent_div_0_ng_container_1_Template","DrawerComponent_div_0_2_ng_template_0_Template","DrawerComponent_div_0_2_Template","DrawerComponent_div_0_Template","DrawerComponent_div_1_Template","DrawerContainerComponent_div_0_Template","_c21","_c22","_c23","StepperStepComponent_2_ng_template_0_Template","StepperStepComponent_2_Template","StepperStepComponent_ng_container_3_span_1_1_ng_template_0_Template","StepperStepComponent_ng_container_3_span_1_1_Template","StepperStepComponent_ng_container_3_span_1_ng_container_2_kendo_icon_wrapper_1_Template","StepperStepComponent_ng_container_3_span_1_ng_container_2_span_2_Template","StepperStepComponent_ng_container_3_span_1_ng_container_2_Template","StepperStepComponent_ng_container_3_span_1_Template","StepperStepComponent_ng_container_3_span_2_1_ng_template_0_Template","StepperStepComponent_ng_container_3_span_2_1_Template","StepperStepComponent_ng_container_3_span_2_ng_container_2_span_1_Template","StepperStepComponent_ng_container_3_span_2_ng_container_2_kendo_icon_wrapper_2_Template","StepperStepComponent_ng_container_3_span_2_ng_container_2_span_3_Template","ɵɵtextInterpolate1","StepperStepComponent_ng_container_3_span_2_ng_container_2_Template","StepperStepComponent_ng_container_3_span_2_Template","StepperStepComponent_ng_container_3_Template","_c24","StepperListComponent_ng_container_0_Template","step_r1","idx_r2","ctx_r2","ɵɵclassProp","StepperComponent_kendo_progressbar_2_Template","AvatarComponent_ng_content_1_Template","AvatarComponent_ng_container_2_Template","ɵɵpropertyInterpolate","AvatarComponent_ng_container_3_Template","AvatarComponent_ng_container_4_Template","CardActionsComponent_ng_content_0_Template","CardActionsComponent_ng_container_1_button_1_Template","action_r2","CardActionsComponent_ng_container_1_Template","CardActionsComponent_2_ng_template_0_Template","CardActionsComponent_2_Template","_c25","ExpansionPanelComponent_ng_container_2_div_1_Template","ExpansionPanelComponent_ng_container_2_div_3_Template","ExpansionPanelComponent_ng_container_2_Template","ExpansionPanelComponent_3_ng_template_0_Template","ExpansionPanelComponent_3_Template","TileLayoutItemComponent_kendo_tilelayout_item_header_0_Template","TileLayoutItemComponent_ng_container_2_div_1_Template","dir_r2","TileLayoutItemComponent_ng_container_2_Template","_c26","TileLayoutComponent_div_3_Template","_c27","_c28","_c29","_c30","_c31","TimelineCardComponent_div_3_2_ng_template_0_Template","TimelineCardComponent_div_3_2_Template","TimelineCardComponent_div_3_div_3_button_3_Template","TimelineCardComponent_div_3_div_3_Template","TimelineCardComponent_div_3_div_4_Template","TimelineCardComponent_div_3_kendo_card_body_5_1_ng_template_0_Template","TimelineCardComponent_div_3_kendo_card_body_5_1_Template","TimelineCardComponent_div_3_kendo_card_body_5_div_2_p_1_Template","TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_img_1_Template","image_r4","TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_img_2_Template","TimelineCardComponent_div_3_kendo_card_body_5_div_2_ng_container_2_Template","TimelineCardComponent_div_3_kendo_card_body_5_div_2_Template","TimelineCardComponent_div_3_kendo_card_body_5_Template","TimelineCardComponent_div_3_kendo_card_actions_6_1_ng_template_0_Template","TimelineCardComponent_div_3_kendo_card_actions_6_1_Template","TimelineCardComponent_div_3_kendo_card_actions_6_ng_container_2_a_1_Template","action_r6","TimelineCardComponent_div_3_kendo_card_actions_6_ng_container_2_Template","TimelineCardComponent_div_3_kendo_card_actions_6_Template","TimelineCardComponent_div_3_Template","_c32","_c33","_c34","_c35","_c36","_c37","_c38","_c39","_c40","TimelineHorizontalComponent_ng_container_7_li_1_Template","event_r2","TimelineHorizontalComponent_ng_container_7_li_2_span_3_Template","ɵɵpipe","ɵɵpipeBind2","TimelineHorizontalComponent_ng_container_7_li_2_Template","index_r5","TimelineHorizontalComponent_ng_container_7_Template","TimelineHorizontalComponent_ul_9_li_1_Template","_r7","index_r8","ɵɵpureFunction0","TimelineHorizontalComponent_ul_9_Template","_r6","_c41","_c42","_c43","TimelineVerticalComponent_ul_0_ng_container_1_li_1_Template","event_r1","TimelineVerticalComponent_ul_0_ng_container_1_span_5_Template","TimelineVerticalComponent_ul_0_ng_container_1_Template","i_r3","TimelineVerticalComponent_ul_0_Template","TimelineComponent_kendo_timeline_vertical_2_Template","TimelineComponent_kendo_timeline_horizontal_3_Template","packageMetadata","PanelBarExpandMode","nextPanelbarId","PanelBarService","Subject","BehaviorSubject","keepContent","event","__ngFactoryType__","ɵɵdefineInjectable","PanelBarContentDirective","templateRef","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","PanelBarItemTitleDirective","nextId$1","SIZES","ROUNDNESS","SHAPE_TO_ROUNDED","parsePanelBarItems","data","item","isPresent","value","isHorizontalArrowKey","keyCode","Keys","isVerticalArrowKey","isArrowKey","isNavigationKey","getStylingClasses","componentType","stylingOption","previousValue","newValue","mapShapeToRounded","shape","isNumber","focusableRegex","toClassList","classNames","isFocusable","element","tagName","tabIndex","skipTab","focusable","hasClass","className","name","closestInScope","target","predicate","scope","targetAttr","itemIndex","indexAttr","hasItemIndex","closestItem","nextId","PanelBarItemComponent","parent","eventService","renderer","Subscription","focused","icon","isDevMode","activeState","chevronUpIcon","chevronDownIcon","subTree","child","ElementRef","Renderer2","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","ɵɵhostProperty","ɵɵStandaloneFeature","ɵɵprojectionDef","NgIf","IconWrapperComponent","NgTemplateOutlet","NgForOf","trigger","state","style","transition","animate","AUTO_STYLE","PanelBarItemTemplateDirective","PreventableEvent","args","PanelBarCollapseEvent","PanelBarExpandEvent","PanelBarSelectEvent","PanelBarStateChangeEvent","PanelBarComponent","elementRef","eventService","localization","PanelBarExpandMode","EventEmitter","Subscription","childrenHeight","panelbarHeight","contentOverflow","item","isValid","validatePackage","packageMetadata","shouldShowValidationUI","event","ev","keepItemContent","data","parsePanelBarItems","original","inverted","Keys","changes","itemClicked","isFocusable","visibleItems","handler","eventArgs","PanelBarSelectEvent","PanelBarCollapseEvent","PanelBarExpandEvent","treeItems","isDevMode","modifiedItems","selectPreventedItems","currentItem","selectedState","focusedState","siblings","preventedCollapseItem","expandedItems","expandedState","isEventPrevented","expandMode","PanelBarStateChangeEvent","i","action","currentIndex","nextItem","focusedItem","from","to","firstChildIndex","listOfItems","flattedItems","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","PanelBarService","LocalizationService","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","PanelBarItemTemplateDirective","PanelBarItemComponent","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","ɵɵlistener","$event","ɵɵattribute","ɵɵstyleProp","ɵɵclassProp","ɵɵProvidersFeature","L10N_PREFIX","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","_c3","ɵɵprojectionDef","_c2","ɵɵtemplate","PanelBarComponent_ng_content_0_Template","PanelBarComponent_ng_template_1_Template","PanelBarComponent_div_2_Template","ɵɵproperty","ɵɵadvance","NgIf","NgForOf","WatermarkOverlayComponent","SplitterPaneComponent","element","renderer","cdr","paneOrder","newSize","value","show","Renderer2","ChangeDetectorRef","_c8","SplitterPaneComponent_ng_container_0_Template","SplitterPaneComponent_div_1_Template","shouldTogglePrev","keyCode","prev","next","leftArrow","upArrow","collapsePrev","expandPrev","shouldToggleNext","collapseNext","expandNext","shouldToggleOrResize","orientation","isHorizontal","isHorizontalChange","isVerticalChange","SIZING_DOC_LINK","SplitterService","zone","paneIndex","pane","notCollapsed","p","allHaveFixedSize","index","state","step","splitbarIndex","total","px","s","delta","clamp","min","max","v","resize","paneState","change","splitterSize","size","splitBarIndex","betweenResizablePanes","nearCollapsedPane","nearCollapsiblePane","panes","containerSize","direction","allPanesWithSize","hasResizedPane","result","emitter","args","ɵɵinject","NgZone","ɵɵdefineInjectable","stopPropagation","preventOnDblClick","release","mouseDown","of","delay","takeUntil","classFromObject","classes","c","createMoveStream","draggable","map","pageX","pageY","SplitterBarComponent","splitterService","isDraggable","isStatic","listener","tap","filter","switchMap","originalX","originalY","iconName","relatedPaneIndex","relatedPane","isCollapsible","isCollapsed","isRTL","caretAltLeftIcon","caretAltRightIcon","caretAltUpIcon","caretAltDownIcon","shouldToggle","DraggableDirective","ɵɵclassMap","SplitterBarComponent_div_0_Template","ɵɵelement","SplitterBarComponent_div_2_Template","IconWrapperComponent","SplitterComponent","enclosingPane","splitbars","isPresent","isDocumentAvailable","panesArray","splitBarsArray","elements","b","component","splitbar","_c10","_c9","ɵɵprojection","SplitterComponent_ng_container_1_Template","NgStyle","TabContentDirective","templateRef","TemplateRef","ɵɵdefineDirective","TabTitleDirective","TabTemplateDirective","TabStripTabComponent","QueryList","TabCloseEvent","tab","SelectEvent","PreventableEvent","title","isTabElement","target","targetId","isTabClosable","tabStripClosable","tabStripHasScrollButtons","scrollableSettings","mouseScrollEnabled","getActiveTab","tabs","focusedTab","selectedTab","focusedIndex","selectedIndex","getTabByIndex","filtered","_tab","getTabHeaderByIndex","tabHeaderContainers","_tabHeader","resetTabFocus","resetTabSelection","isTablistHorizontal","tabPosition","getId$1","prefix","tabStripId","tabIndex","TabStripService","ngZone","key","isNavigationKey","isArrowKey","selectArgs","activeTab","activeIndex","nextIndex","activeTabIndex","isHorizontalArrowKey","isVerticalArrowKey","MOUSE_SCROLL_SPEED","BUTTON_SCROLL_SPEED","HIDDEN_CLASS","DIRECTION_CLASSES","DEFAULT_SCROLL_BEHAVIOR","ScrollService","ngZone","Subject","buttonType","hostElement","wrapperWidth","wrapperHeight","isTablistHorizontal","isDocumentAvailable","isHorizontal","overflowSize","prevRect","prevSize","nextRect","nextSize","currentPrevButtonActive","currentNextButtonActive","calculatedPrevButtonActive","calculatedNextButtonActive","activeIndex","getActiveTab","isFirstTabActive","isLastTabActive","activeTabRect","tablistRect","end","start","activeTabStart","activeTabEnd","tablistStart","tablistEnd","tabEndIsInVisibleRange","tabStartIsInVisibleRange","event","mouseScrollEnabled","direction","scrollSpeed","adjustedMaxScroll","active","__ngFactoryType__","ɵɵinject","NgZone","ɵɵdefineInjectable","normalizeSettings","enabled","scrollButtons","mouseScroll","buttonScrollSpeed","BUTTON_SCROLL_SPEED","mouseScrollSpeed","MOUSE_SCROLL_SPEED","prevButtonIcon","nextButtonIcon","prevSVGButtonIcon","nextSVGButtonIcon","normalizeScrollableSettings","settings","TabScrollEvent","PreventableEvent","args","TabStripScrollableButtonComponent","host","renderer","localization","EventEmitter","caretAltLeftIcon","caretAltRightIcon","caretAltUpIcon","caretAltDownIcon","Subscription","scrollEvent","show","defaultPrevIcon","defaultNextIcon","prevIcon","nextIcon","defaultPrevSVGIcon","defaultNextSVGIcon","ɵɵdirectiveInject","ElementRef","Renderer2","LocalizationService","ɵɵdefineComponent","rf","ctx","ɵɵclassProp","ɵɵStandaloneFeature","_c12","ɵɵelement","ɵɵproperty","IconWrapperComponent","TabComponent","xIcon","index","closeArgs","TabCloseEvent","ɵɵattribute","_c13","ɵɵtemplate","TabComponent_ng_container_0_Template","TabComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","TabComponent_button_3_Template","tabTemplate_r3","ɵɵreference","ɵɵadvance","NgIf","NgTemplateOutlet","ButtonComponent","TabStripMessages","ComponentMessages","ɵTabStripMessages_BaseFactory","ɵɵgetInheritedFactory","ɵɵdefineDirective","ɵɵInheritDefinitionFeature","LocalizedTabStripMessagesDirective","service","ɵɵProvidersFeature","forwardRef","TabStripComponent","wrapper","tabstripService","scrollService","QueryList","guid","isValid","validatePackage","packageMetadata","shouldShowValidationUI","activeButtonSettings","action","value","icon","isDevMode","take","changes","positionChange","tabsAtBottomChanged","tabStripHasScrollButtons","tab","getTabByIndex","idx","getId$1","originalEvent","tabIndex","isFocusable","targetElement","hasClass","tablist","ev","resetTabFocus","tabsOverflow","scrollButtonsSetting","scrollButtonsArePresent","shouldShowButtons","shouldHideButtons","alwaysVisible","wheelEvent","TabStripService","dirIndex","ɵɵcontentQuery","TabStripTabComponent","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_c14","_c15","_c16","_c17","L10N_PREFIX","ɵɵNgOnChangesFeature","i18n_0","i18n_1","i18n_2","ɵɵelementContainer","TabStripComponent_ng_container_1_Template","TabStripComponent_ng_container_2_Template","TabStripComponent_ng_template_3_Template","TabStripComponent_ng_template_5_Template","TabStripComponent_kendo_resize_sensor_7_Template","TabStripComponent_div_8_Template","NgClass","NgForOf","NgStyle","ResizeSensorComponent","WatermarkOverlayComponent","trigger","state","style","transition","animate","TabStripCustomMessagesComponent","DrawerTemplateDirective","templateRef","TemplateRef","DrawerItemTemplateDirective","DrawerHeaderTemplateDirective","DrawerFooterTemplateDirective","defaultIsItemExpanded","_item","DrawerService","rootItems","item","isPresent","items","keyName","currentItem","nextItem","level","children","isExpanded","i","selectedIdx","drawer","miniExpandPush","duration","width","miniWidth","miniCollapsePush","miniExpandOverlay","expandPush","collapsePush","expandRTLOverlay","expandOverlay","position","miniCollapseOverlay","collapseOverlay","translateDir","collapseRTLOverlay","expandAnimation","mode","mini","rtl","collapseAnimation","DRAWER_ITEM_INDEX","DRAWER_LINK_SELECTOR","ACTIVE_NESTED_LINK_SELECTOR","nestedLink","element","selector","DrawerListSelectEvent","DrawerItemComponent","drawerService","chevronUpIcon","chevronDownIcon","elem","link","_c18","DrawerItemComponent_0_Template","DrawerItemComponent_ng_template_1_Template","defaultTemplate_r2","DrawerListComponent","_index","viewItem","nativeElement","e","isEnterOrSpace","Keys","isArrowUpOrDown","viewItemIdx","selectedItemIndex","target","closestItem","itemIndex","_c20","DrawerListComponent_ng_container_0_Template","DEFAULT_ANIMATION","DrawerComponent","builder","localizationService","fn","expanded","previous","current","currentExpanded","animation","animatedElement","player","AnimationBuilder","ɵɵstyleProp","DrawerComponent_div_0_Template","DrawerComponent_div_1_Template","DrawerContainerComponent","_c8","ɵɵprojectionDef","DrawerContainerComponent_div_0_Template","ɵɵprojection","DrawerContentComponent","StepperStepTemplateDirective","templateRef","__ngFactoryType__","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","StepperLabelTemplateDirective","StepperIndicatorTemplateDirective","DEFAULT_CURRENT_STEP","handlers","Keys","handlersRTL","StepperActivateEvent$1","PreventableEvent","args","StepperService","localization","ngZone","changeDetector","EventEmitter","event","eventArgs","stepper","hasObservers","currentIdx","originalEvent","current","handler","isPresent","focusedIdx","index","ɵɵinject","LocalizationService","NgZone","ChangeDetectorRef","ɵɵdefineInjectable","STEPPER_STEP_INDEX","StepperStepComponent","service","checkCircleIcon","exclamationCircleIcon","validatePackage","packageMetadata","changes","active","text","ɵɵdefineComponent","rf","ctx","ɵɵviewQuery","_c21","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵclassProp","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","_c22","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","ɵɵresetView","ɵɵtemplate","StepperStepComponent_2_Template","StepperStepComponent_ng_container_3_Template","ɵɵelementEnd","ɵɵattribute","ɵɵadvance","ɵɵproperty","NgIf","NgTemplateOutlet","IconWrapperComponent","StepperListComponent","renderer","element","arg","dimension","nativeElement","clickSubscription","keydownSubscription","e","hasClass","stepIdx","step","target","closestItem","itemIndex","Renderer2","ElementRef","_c24","StepperListComponent_ng_container_0_Template","NgForOf","NgClass","NgStyle","StepperMessages","ComponentMessages","ɵStepperMessages_BaseFactory","ɵɵgetInheritedFactory","ɵɵInheritDefinitionFeature","LocalizedStepperMessagesDirective","ɵɵProvidersFeature","forwardRef","DEFAULT_ANIMATION_DURATION","StepperComponent","elem","stepperService","rtl","value","steps","icon","stepFramesStyle","stepFramesValue","dirIndex","ɵɵcontentQuery","ɵɵstyleProp","L10N_PREFIX","i18n_3","ɵɵelementContainer","$event","StepperComponent_kendo_progressbar_2_Template","ProgressBarComponent","StepperCustomMessagesComponent","StepperMessages","service","__ngFactoryType__","ɵɵdirectiveInject","LocalizationService","ɵɵdefineComponent","ɵɵProvidersFeature","forwardRef","ɵɵInheritDefinitionFeature","ɵɵStandaloneFeature","rf","ctx","Messages","ComponentMessages","ɵMessages_BaseFactory","ɵɵgetInheritedFactory","ɵɵdefineDirective","LocalizedAvatarMessagesDirective","DEFAULT_ROUNDED","DEFAULT_SIZE","DEFAULT_THEME_COLOR","DEFAULT_FILL_MODE","AvatarComponent","localization","renderer","element","validatePackage","packageMetadata","shape","mapShapeToRounded","size","newSize","rounded","newRounded","themeColor","newThemeColor","fillMode","newFillMode","icon","isDevMode","input","value","styleType","elem","classes","getStylingClasses","fill","wrapperElement","cl","key","Renderer2","ElementRef","ɵɵstyleProp","ɵɵclassProp","L10N_PREFIX","_c8","i18n_4","ɵɵprojectionDef","ɵɵelementContainer","ɵɵtemplate","AvatarComponent_ng_content_1_Template","AvatarComponent_ng_container_2_Template","AvatarComponent_ng_container_3_Template","AvatarComponent_ng_container_4_Template","ɵɵadvance","ɵɵproperty","NgIf","NgStyle","IconWrapperComponent","AvatarCustomMessagesComponent","CardComponent","localizationService","rtl","ɵɵattribute","ɵɵprojection","CardHeaderComponent","CardBodyComponent","CardFooterComponent","CardActionsComponent","EventEmitter","TemplateRef","action","CardActionsComponent_ng_content_0_Template","CardActionsComponent_ng_container_1_Template","CardActionsComponent_2_Template","NgForOf","NgTemplateOutlet","CardSeparatorDirective","CardTitleDirective","CardSubtitleDirective","CardMediaDirective","ExpansionPanelTitleDirective","templateRef","__ngFactoryType__","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","expand","duration","height","style","animate","collapse","ExpansionPanelActionEvent","PreventableEvent","args","DEFAULT_DURATION","CONTENT_HIDDEN_CLASS","ExpansionPanelComponent","renderer","hostElement","ngZone","localizationService","builder","EventEmitter","Subscription","caretAltDownIcon","caretAltUpIcon","validatePackage","packageMetadata","value","icon","isDevMode","rtl","elem","header","ev","Keys","hasClass","isFocusable","eventArgs","expanded","previous","current","isPresent","el","contentHeight","animation","player","take","animatedElement","Renderer2","ElementRef","NgZone","LocalizationService","AnimationBuilder","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","_c25","_c0","ɵɵattribute","ɵɵclassProp","ɵɵProvidersFeature","L10N_PREFIX","ɵɵStandaloneFeature","_c8","_r1","ɵɵgetCurrentView","ɵɵprojectionDef","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","ɵɵtemplate","ExpansionPanelComponent_ng_container_2_Template","ExpansionPanelComponent_3_Template","ɵɵelement","ɵɵelementEnd","ɵɵprojection","ɵɵadvance","ɵɵproperty","NgIf","NgTemplateOutlet","IconWrapperComponent","idx","getId","prefix","normalizeValue","isRowItemPresent","items","item","propsChanged","initialProps","newProps","i","getDropTarget","event","isDocumentAvailable","setElementStyles","styles","p","calculateCellFromPosition","coordinates","tileLayoutElement","gap","cellSize","columns","tileLayoutRect","totalRows","distanceFromTop","distanceFromLeft","distanceFromRight","distanceToCellWidthRatio","cappedColumnPosition","distanceToCellHeightRatio","cappedRowPosition","col","shouldResize","keyCode","col","selectedTile","settings","resizeRight","Keys","resizeLeft","resizeDown","resizeUp","shouldReorder","reorderRight","reorderLeft","getCurrentCol","rtl","rects","targetSize","width","height","calculateCellFromPosition","RESIZE_HANDLE_UNIDIRECTIONAL_SIZE","RESIZE_HANDLE_BIDIRECTIONAL_SIZE","RESIZE_HANDLE_UNIDIRECTIONAL_OVERLAP","RESIZE_HANDLE_BIDIRECTIONAL_OVERLAP","DRAGGED_ZINDEX","RESIZE_DIRECTIONS","RTL_RESIZE_DIRECTIONS","RESIZE_HANDLE_DIMENSIONS","OVERLAP_THRESHOLD","REVERSE_OVERLAP_THRESHOLD","HINT_BORDERS_HEIGHT","TileLayoutReorderEvent","PreventableEvent","item","items","newIndex","oldIndex","newCol","oldCol","newRow","oldRow","TileLayoutResizeEvent","newRowSpan","oldRowSpan","newColSpan","oldColSpan","TileLayoutDraggingService","zone","renderer","cdr","localization","BehaviorSubject","Subject","originalEvent","resizing","closestTile","closestInScope","el","closestHeader","reordering","focusableTarget","isFocusable","tileRect","setElementStyles","headerEl","initialOrder","initialCol","initialRow","targetCol","normalizeValue","targetRow","propsChanged","reorderEvent","i","initialRowSpan","initialColSpan","targetColSpan","targetRowSpan","isRowItemPresent","resizeEvent","event","getDropTarget","t","tileOrder","deltaX","deltaY","directionX","directionY","rect","horizontalGap","verticalGap","targetStartCol","row","targetStartRow","hintBefore","hintAfter","currentWidth","currentHeight","hintRect","hintWidth","hintHeight","horizontalDragDirection","verticalDragDirection","startCol","maxWidth","resizeHorizontally","totalWidth","leftBoundary","x","y","right","resizedColSpan","expandingCondition","shrinkingCondition","resizeVertically","grabHandle","itemRect","startingCell","targetEndCell","direction","totalHintCellsHeight","totalHintGapsHeight","__ngFactoryType__","ɵɵinject","NgZone","Renderer2","ChangeDetectorRef","LocalizationService","ɵɵdefineInjectable","TileLayoutKeyboardNavigationService","elem","focusableItems","isTileFocused","focusedTile","isTargetFocusable","isRelatedTargetFocusable","tabIndex","focusItem","parent","focusableSelector","element","resizeHorizontal","resizeVertical","resizeDir","onReorderRight","nextTile","onReorderLeft","prevTile","reorderDir","wrapper","firstFocusable","lastFocusable","tabAfterLastFocusable","shiftTabAfterFirstFocusable","all","offset","TileLayoutItemHeaderComponent","hostEl","value","hostElement","ɵɵdirectiveInject","ElementRef","ɵɵdefineComponent","rf","ctx","ɵɵclassProp","ɵɵStandaloneFeature","_c8","ɵɵprojectionDef","ɵɵprojection","TileLayoutResizeHandleDirective","handleWidth","handleHeight","ɵɵdefineDirective","TileLayoutItemComponent","draggingService","keyboardNavigationService","Subscription","resizable","getId","isPresent","keyboardNavigation","reorderable","isNavigable","changes","isReorderable","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵattribute","ɵɵstyleProp","ɵɵNgOnChangesFeature","ɵɵtemplate","TileLayoutItemComponent_kendo_tilelayout_item_header_0_Template","TileLayoutItemComponent_ng_container_2_Template","ɵɵproperty","ɵɵadvance","NgIf","NgForOf","autoFlowClasses","TileLayoutComponent","navigationService","EventEmitter","isValid","validatePackage","packageMetadata","shouldShowValidationUI","hasObservers","isChanged","colWidth","gridTemplateColumnsStyle","gridAutoRowsStyle","Draggable","classToRemove","classToAdd","index","ɵɵviewQuery","_c26","ɵɵProvidersFeature","L10N_PREFIX","ɵɵelement","TileLayoutComponent_div_3_Template","WatermarkOverlayComponent","TileLayoutItemBodyComponent","VERTICAL_SUFFIX","JUSTIFY_PREFIX","GRID_JUSTIFY_PREFIX","ALIGN_PREFIX","normalizeGap","gap","parsedGap","generateGapStyle","rowStyle","colStyle","generateGridStyle","itemType","styling","rowHeight","validateGridLayoutRowsCols","arr","GridLayoutComponent","align","gapStyle","type","isDevMode","valueType","gridTemplateStyle","gridStyle","GridLayoutItemComponent","rowSpan","colSpan","gridAreaStyle","StackLayoutComponent","isNumber","TimelineMessages","ComponentMessages","ɵTimelineMessages_BaseFactory","ɵɵgetInheritedFactory","ɵɵInheritDefinitionFeature","TimelineCustomMessagesComponent","service","forwardRef","TimelineCardActionsTemplateDirective","templateRef","TemplateRef","TimelineCardBodyTemplateDirective","TimelineCardHeaderTemplateDirective","defaultModelFields","processItems","fields","parseItem","TimelineService","event","__ngFactoryType__","ɵɵdefineInjectable","TimelineCardComponent","element","timelineService","renderer","chevronRightIcon","value","Keys","changes","isChanged","cardBody","ɵɵdirectiveInject","ElementRef","Renderer2","ɵɵdefineComponent","rf","ctx","ɵɵviewQuery","_c27","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵlistener","$event","ɵɵclassProp","ɵɵProvidersFeature","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵrestoreView","ɵɵresetView","ɵɵelement","ɵɵtemplate","TimelineCardComponent_div_3_Template","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c28","ɵɵattribute","ɵɵadvance","ɵɵpureFunction3","_c29","CardComponent","NgStyle","NgClass","NgIf","CardHeaderComponent","NgTemplateOutlet","CardTitleDirective","ButtonComponent","CardSubtitleDirective","CardBodyComponent","NgForOf","CardMediaDirective","CardActionsComponent","trigger","state","style","transition","animate","DEFAULT_TAB_WIDTH","SPACE_BETWEEN_TABS","TRANSITION_EVENTS_COUNT","TimelineHorizontalComponent","cdr","_zone","localization","caretAltLeftIcon","caretAltRightIcon","Subscription","newSelectedIndex","isDocumentAvailable","fromEvent","card","index","trackItemIndex","start","eventIndex","forward","width","position","isPresent","circleCenter","trackOffset","selectedTrackItem","newTrackItem","innerCard","selectedCircle","cardElement","dateElement","dateLabelId","guid","cardId","direction","offset","newIndex","selectedIndex","selectFirst","selectLast","end","interval","item","ChangeDetectorRef","NgZone","LocalizationService","_c32","_c33","_c34","_c35","_c36","TimelineHorizontalComponent_ng_container_7_Template","TimelineHorizontalComponent_ul_9_Template","ɵɵpureFunction2","_c31","_c37","DatePipe","TimelineVerticalComponent","innerDate","_c41","_c42","TimelineVerticalComponent_ul_0_Template","LocalizedTimelineMessagesDirective","TimelineMessages","service","ɵɵdefineDirective","forwardRef","ɵɵInheritDefinitionFeature","DEFAULT_HORIZONTAL_ANIMATION_DURATION","DEFAULT_VERTICAL_ANIMATION_DURATION","DEFAULT_EVENT_WIDTH","DEFAULT_EVENT_HEIGHT","DEFAULT_DATE_FORMAT","TimelineComponent","EventEmitter","defaultModelFields","events","processItems","a","b","flag","__spreadValues","dirIndex","ɵɵcontentQuery","TimelineCardHeaderTemplateDirective","TimelineCardBodyTemplateDirective","TimelineCardActionsTemplateDirective","L10N_PREFIX","i18n_5","i18n_6","ɵɵelementContainer","TimelineComponent_kendo_timeline_vertical_2_Template","TimelineComponent_kendo_timeline_horizontal_3_Template","KENDO_AVATAR","AvatarComponent","AvatarCustomMessagesComponent","KENDO_CARD","CardFooterComponent","CardSeparatorDirective","KENDO_DRAWER","DrawerComponent","DrawerContainerComponent","DrawerContentComponent","DrawerTemplateDirective","DrawerFooterTemplateDirective","DrawerHeaderTemplateDirective","DrawerItemTemplateDirective","KENDO_EXPANSIONPANEL","ExpansionPanelComponent","ExpansionPanelTitleDirective","KENDO_GRIDLAYOUT","GridLayoutComponent","GridLayoutItemComponent","KENDO_PANELBAR","PanelBarComponent","PanelBarItemComponent","PanelBarContentDirective","PanelBarItemTemplateDirective","PanelBarItemTitleDirective","KENDO_SPLITTER","SplitterComponent","SplitterPaneComponent","KENDO_STACKLAYOUT","StackLayoutComponent","KENDO_STEPPER","StepperComponent","StepperCustomMessagesComponent","StepperIndicatorTemplateDirective","StepperLabelTemplateDirective","StepperStepTemplateDirective","KENDO_TABSTRIP","TabStripComponent","TabStripTabComponent","TabContentDirective","TabTitleDirective","TabStripCustomMessagesComponent","KENDO_TILELAYOUT","TileLayoutComponent","TileLayoutItemBodyComponent","TileLayoutItemComponent","TileLayoutItemHeaderComponent","KENDO_TIMELINE","TimelineCustomMessagesComponent","KENDO_LAYOUT","SplitterModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","KENDO_SPLITTER","saveAs","data","fileName","options","save","postToProxy","canDownload","saveAsDataURI","saveAsBlob","anchor","blob","parts","contentType","base64","array","idx","dataURI","fileSaver","e","form","formData","name","input","fromCharCode","current","template","TemplateService","userImplementation","template_service_default","FIELD_REGEX","getterCache","UNDEFINED","obj","getter","field","fields","match","index","indexAccessor","result","idx","map","array","func","result","el","i","val","defaultGroupHeaderTemplate","data","createArray","length","callback","result","idx","defaultItemId","item","ExcelExporter","options","map","column","columns","value","dataItem","getter","values","template_service_default","depth","level","cells","rows","dataCells","cellIdx","title","template","group","index","dataItems","itemLevel","itemId","hasFooter","parents","previousLevel","previousItemId","rootAggregate","currentLevel","parent","aggregates","colSpan","fieldAggregates","footer","templateData","key","exportable","visibleInExport","visibleInExportOnly","visible","row","groups","headers","cell","headerRows","parentCell","parentRow","childRow","totalColSpan","max","temp","colSplit","excel_exporter_default","current","value","IntlService","userImplementation","format","intl_service_default","external","support","blob","supported","buffer","_keyStr","encode","input","output","chr1","chr2","chr3","enc1","enc2","enc3","enc4","i","len","remainingBytes","isArray","decode","resultIndex","dataUrlPrefix","totalLength","string2binary","str","result","stringToArrayLike","newBlob","part","type","checkSupport","identity","array","stringifyByChunk","chunk","k","stringifyByChar","resultStr","fromCharCodeSupportsTypedArrays","arrayLikeToString","getTypeOf","canUseApply","applyFromCharCode","arrayLikeToArrayLike","arrayFrom","arrayTo","transform","transformTo","outputType","inputType","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","res","code","delay","callback","args","self","extend","attr","prepareContent","name","inputData","isBinary","isOptimizedBinaryString","isBase64","promise","data","isBlob","resolve","reject","reader","e","dataType","GenericWorker","listener","arg","next","previous","withError","key","value","me","utf8len","c","_utf8len","string2buf","buf","c2","m_pos","str_len","buf_len","utf8border","max","pos","buf2string","out","c_len","utf16buf","utf8encode","utf8decode","Utf8DecodeWorker","previousData","nextBoundary","usableData","Utf8EncodeWorker","ConvertWorker","destType","transformZipOutput","content","mimeType","concat","dataArray","index","accumulate","helper","updateCallback","chunkType","resultType","meta","err","StreamHelper","worker","internalType","updateCb","evt","fn","base64","binary","dir","createFolders","date","compression","compressionOptions","comment","unixPermissions","dosPermissions","defaults","DEFAULT_BLOCK_SIZE","DataWorker","dataP","size","nextIndex","DataLengthProbe","propName","length","makeTable","table","crc32","crc","t","end","crc32str","crc32wrapper","Crc32Probe","CompressedObject","compressedSize","uncompressedSize","that","uncompressedWorker","ZipObject","options","askUnicodeString","isUnicodeString","onUpdate","arrayType","resolved","FlateWorker","action","params","Deflate","Inflate","DEFLATE","STORE","compressions","LOCAL_FILE_HEADER","CENTRAL_FILE_HEADER","CENTRAL_DIRECTORY_END","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","DATA_DESCRIPTOR","decToHex","dec","bytes","hex","generateUnixExternalFileAttr","isDir","generateDosExternalFileAttr","generateZipParts","streamInfo","streamedContent","streamingEnded","offset","platform","encodeFileName","file","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","dosTime","dosDate","extraFields","unicodePathExtraField","unicodeCommentExtraField","dataInfo","bitflag","extFileAttr","versionMadeBy","header","fileRecord","dirRecord","generateCentralDirectoryEnd","entriesCount","centralDirLength","localDirLength","dirEnd","generateDataDescriptors","descriptor","ZipFileWorker","streamFiles","currentFilePercent","remainingFiles","record","sources","getCompression","fileCompression","zipCompression","compressionName","generateWorker","zip","zipFileWorker","relativePath","DataReader","newIndex","sig","dostime","ArrayReader","sig0","sig1","sig2","sig3","StringReader","Uint8ArrayReader","readerFor","MADE_BY_DOS","MADE_BY_UNIX","findCompression","compressionMethod","method","ZipEntry","loadOptions","localExtraFieldsLength","fileNameLength","madeBy","extraReader","extraFieldId","extraFieldLength","extraFieldValue","decodeParamType","upath","fileNameByteArray","ucomment","commentByteArray","upathField","ucommentField","ZipEntries","expectedSignature","signature","askedIndex","currentIndex","zipComment","decodeContent","extraDataSize","isGarbage","endOfCentralDirOffset","expectedEndOfCentralDirOffset","extraBytes","checkEntryCRC32","zipEntry","load","zipEntries","promises","files","results","fileAdd","originalOptions","parent","o","forceTrailingSlash","parentFolder","folderAdd","isCompressedEmpty","zipObjectContent","object","path","lastSlash","createFolders$1","isRegExp","JSZip","_JSZip","newObj","cb","filename","search","entry","regexp","obj","newFolder","ret","kids","opts","createZip","JSZip","dateToJulianDays","y","m","d","BASE_DATE","packDate","year","month","date","packTime","hh","mm","ss","ms","dateToSerial","time","serial","MIME_TYPE","DATA_URL_PREFIX","DATA_URL_OPTIONS","BLOB_OPTIONS","ARRAYBUFFER_OPTIONS","toDataURI","content","indexOf","thing","array","parseJSON","ESC","val","repeat","count","func","str","i","foreach","arr","key","XMLHEAD","RELS","CORE","creator","lastModifiedBy","created","modified","APP","sheets","sheet","CONTENT_TYPES","sheetCount","commentFiles","drawingFiles","idx","filename","WORKBOOK","filterNames","userNames","options","name","state","f","quoteSheet","WORKSHEET","frozenColumns","frozenRows","columns","defaults","data","index","mergeCells","autoFilter","filter","showGridLines","hyperlinks","validations","defaultCellStyleId","rtl","legacyDrawing","drawing","lastRow","lastCol","hasDisabledCells","ref","toWidth","column","ci","columnIndex","row","ri","toHeight","cell","writeFormula","spreadsheetFilters","link","WORKBOOK_RELS","WORKSHEET_RELS","comments","sheetIndex","drawings","COMMENTS_XML","comment","LEGACY_DRAWING","DRAWINGS_XML","DRAWINGS_RELS_XML","rels","rel","SHARED_STRINGS","uniqueCount","indexes","STYLES","formats","fonts","fills","borders","styles","format","fi","font","fill","borderTemplate","style","formula","numChar","colIndex","letter","rowIndex","$ref","filterRowIndex","px","stripFunnyChars","value","Worksheet","sharedStrings","rows","inflate","defaultCellStyle","freezePane","images","main","drw","parseRef","img","pixelsToExcel","result","json","border","rowData","cells","j","cellData","cellIndex","EMPTY_CELL","defStyle","add","prop","target","type","displayValue","intl_service_default","dateToSerial","cellName","anchor","v","tmp","MAP_EXCEL_TYPE","MAP_EXCEL_OPERATOR","countData","last","el","defaultFormats","maybeRGB","hex","x","m","opacity","convertColor","color","$0","$1","Workbook","map","mimeType","id","zip","createZip","docProps","xl","media","sheetIds","sheetName","a","from","to","def","worksheets","drawingsRels","sheetRels","sheetXML","relsXML","commentsXML","drawingsXML","hasFont","convertFontSize","fontInPx","fontInPt","borderStyle","width","alias","borderSideTemplate","diag","mergedCells","rowsByIndex","indexRows","sorted","sortByIndex","ctx","fillCells","callback","items","b","pushUnique","getSpan","topLeft","bottomRight","getcol","upperStr","col","getrow","rowSpan","colSpan","insertCell","topLeftRef","spanCell","nextRow","insertCellAt","appendCell","startIndex","SPREADSHEET_FILTERS","generators","SPREADSHEET_CUSTOM_FILTER","logic","criteria","op","SPREADSHEET_DYNAMIC_FILTER","SPREADSHEET_TOP_FILTER","SPREADSHEET_VALUE_FILTER","blanks","values","esc","compileTemplate","templateRef","context","updateContext","embeddedView","result","data","content","rootNode","updateGroupHeaderContext","updateGroupFooterContext","updateFooterContext","toExporterColumns","sourceColumns","exporterColumns","columnIndex","addColumns","columns","level","column","exporterColumn","ExporterColumn","c","children","destroyColumns","intl_service_default","toString","workbookOptions","options","excel_exporter_default","toDataURL","Workbook","isWorkbookOptions","value","ColumnBase","parent","__ngFactoryType__","ɵɵdirectiveInject","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","packageMetadata","ExcelExportComponent","localization","zone","QueryList","validatePackage","exportData","currentData","dataURL","saveAs","LocalizationService","NgZone","ɵɵProvidersFeature","L10N_PREFIX","ɵɵStandaloneFeature","FooterTemplateDirective","TemplateRef","ɵɵdefineDirective","GroupHeaderTemplateDirective","GroupHeaderColumnTemplateDirective","GroupFooterTemplateDirective","ColumnComponent","forwardRef","ɵɵInheritDefinitionFeature","ColumnGroupComponent","ExcelExportModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","ExcelExportComponent","ColumnComponent","ColumnGroupComponent","_c0","packageMetadata","PDFExportTemplateDirective","templateRef","__ngFactoryType__","ɵɵdirectiveInject","TemplateRef","ɵɵdefineDirective","FIELDS","PDFExportMarginComponent","options","idx","field","value","ɵɵdefineComponent","ɵɵStandaloneFeature","rf","ctx","compileTemplate","context","embeddedView","result","data","templateWrap","rootNode","PDFExportComponent","element","validatePackage","marginComponent","margin","fileName","group","dataUri","promise","cleanup","drawDOM","exportPDF","saveAs","ElementRef","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵprojectionDef","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","getRatio","element","target","elementRect","targetRect","top","left","right","bottom","width","height","targetArea","entryArea","intersectionArea","intersectionRatio","intersect","candidates","max","result","candidate","ration","detectBrowser","ua","browser","match","browserRxs","agent","getDocument","element","getWindow","document","scrollableRoot","support","isScrollable","el","overflow","getScrollableParent","root","parent","autoScrollVelocity","mouseX","mouseY","rect","velocity","AUTO_SCROLL_AREA","scrollableViewPort","window","isPointerInsideContainer","x","y","container","DRAG_AND_DROP_DISPATCH_ACTION","isTouchEvent","event","isScrollEvent","normalizeEvent","state","noop","dispatchDragAndDrop","action","callbacks","onIsPressedChange","onIsScrollingChange","onVelocityChange","onOffsetChange","onPageOffsetChange","onClientOffsetChange","onScrollOffsetChange","onInitialScrollOffsetChange","drag","element","hint","autoScrollDirection","overrideScrollableParent","scrollableParent","getScrollableParent","scrollOffset","document","getDocument","newVelocity","autoScrollVelocity","scrollableViewPort","getWindow","dropElement","intersect","drop","d","isPointerInsideContainer","autoScroll","scrollableParent","vel","yIsScrollable","xIsScrollable","scrollableRoot","yDelta","yInBounds","xDelta","xInBounds","_c0","a0","a1","a2","HintComponent_ng_container_0_Template","rf","ctx","ɵɵelementContainer","DragHandleDirective","element","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","ɵɵdefineDirective","ɵɵstyleProp","packageMetadata","isDocumentNode","container","getAction","event","draggable","dragTargetTransition","isPresent","value","closestBySelector","selector","matches","el","sel","node","intersect","candidates","max","result","candidate","ration","getRatio","target","elementRect","targetRect","top","left","right","bottom","width","height","targetArea","entryArea","intersectionArea","intersectionRatio","setElementStyles","renderer","elem","styles","p","allPointerDownEvents","allPointerMoveEvents","allPointerUpEvents","DragStateService","action","dispatchDragAndDrop","pressed","isScrolling","scrollableParent","getScrollableParent","autoScroll","velocity","offset","clientOffset","pageOffset","initialClientOffset","scrollOffset","initialScrollOffset","ɵɵdefineInjectable","HintComponent","ɵɵdefineComponent","ɵɵStandaloneFeature","ɵɵtemplate","ɵɵproperty","ɵɵpureFunction3","NgTemplateOutlet","DragTargetPressEvent","args","DragTargetDragReadyEvent","DragTargetDragStartEvent","PreventableEvent","DragTargetDragEndEvent","DragTargetDragEvent","DragTargetReleaseEvent","isDragStartPrevented$1","isDragPrevented$1","DragTargetContainerDirective","wrapper","ngZone","service","viewContainer","cdr","EventEmitter","validatePackage","fn","isDevMode","isTargetPresent","eventTarget","targetIdArgs","targetDataArgs","thresholdNotReached","isDroppedOverParentTarget","contains","isDocumentAvailable","pointerMoveStreams","ev","fromEvent","pointerUpStreams","merge","filter","e","pointerDownStreams","normalizedEvent","eventProps","eventArgs","parseCSSClassNames","className","dragTargetEl","dt","dragTarget","idx","serviceDragTarget","dh","handle","position","hintCoordinates","NgZone","Renderer2","ViewContainerRef","ChangeDetectorRef","isDragStartPrevented","isDragPrevented","DragTargetDirective","subscription","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","DropTargetEvent","DropTargetContainerDirective","currDropTargetElem","currDropTarget","dropTargetEl","dropTarget","serviceDropTarget","DropTargetDirective","KENDO_DRAGANDDROP","KENDO_UTILS","_c0","ColGroupComponent_col_1_Template","rf","ctx","ɵɵelement","ɵɵclassProp","ColGroupComponent_col_2_Template","ColGroupComponent_col_3_Template","column_r1","ctx_r1","ɵɵnextContext","ɵɵstyleProp","_c1","LoadingComponent_ng_container_0_Template","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelementContainerEnd","ctx_r0","ɵɵadvance","ɵɵtextInterpolate","LoadingComponent_1_ng_template_0_Template","LoadingComponent_1_Template","ɵɵtemplate","ɵɵproperty","_c2","_c3","a0","a1","a2","a3","a4","a5","a6","a7","_c4","GroupHeaderComponent_ng_container_0_td_1_Template","GroupHeaderComponent_ng_container_0_Template","GroupHeaderComponent_td_1_ng_container_2_ng_container_3_Template","ɵɵpipe","ɵɵtextInterpolate2","ɵɵpipeBind3","GroupHeaderComponent_td_1_ng_container_2_ng_template_4_Template","GroupHeaderComponent_td_1_ng_container_2_Template","_r2","ɵɵgetCurrentView","ɵɵlistener","ɵɵrestoreView","ɵɵresetView","ɵɵattribute","ɵɵpureFunction8","GroupHeaderComponent_td_1_Template","GroupHeaderComponent_ng_container_2_td_1_1_ng_template_0_Template","GroupHeaderComponent_ng_container_2_td_1_1_Template","column_r3","ɵɵpureFunction6","GroupHeaderComponent_ng_container_2_td_1_Template","index_r4","GroupHeaderComponent_ng_container_2_Template","_c5","_c6","_c7","_c8","GroupPanelComponent_div_0_Template","ɵɵpureFunction0","ɵɵtextInterpolate1","GroupPanelComponent_kendo_chiplist_1_kendo_chip_1_Template","group_r3","ctx_r3","first_r5","last_r6","chip_r7","ɵɵreference","$event","ctx_r7","index_r9","ɵɵpureFunction3","GroupPanelComponent_kendo_chiplist_1_Template","GroupPanelComponent_div_2_Template","GroupPanelComponent_ng_template_3_Template","ɵɵpureFunction2","_c9","_c10","FilterCellOperatorsComponent_kendo_dropdownlist_0_Template","_r1","FilterCellOperatorsComponent_button_1_Template","_r3","_c11","StringFilterMenuComponent_kendo_dropdownlist_1_Template","StringFilterMenuComponent_kendo_grid_string_filter_menu_input_2_Template","NumericFilterMenuComponent_kendo_dropdownlist_1_Template","NumericFilterMenuComponent_kendo_grid_numeric_filter_menu_input_2_Template","DateFilterMenuComponent_kendo_dropdownlist_1_Template","DateFilterMenuComponent_kendo_grid_date_filter_menu_input_2_Template","BooleanFilterMenuComponent_li_1_Template","item_r2","input_r3","_c12","_c13","FilterMenuContainerComponent_ng_container_3_Template","ɵɵelementContainer","FilterMenuContainerComponent_ng_container_4_1_ng_template_0_Template","FilterMenuContainerComponent_ng_container_4_1_Template","FilterMenuContainerComponent_ng_container_4_Template","_c14","_c15","FilterMenuComponent_ng_template_3_Template","_r4","ctx_r4","_c16","FilterCellComponent_ng_container_0_ng_container_2_Template","FilterCellComponent_ng_container_0_ng_container_3_1_ng_template_0_Template","FilterCellComponent_ng_container_0_ng_container_3_1_Template","FilterCellComponent_ng_container_0_ng_container_3_Template","FilterCellComponent_ng_container_0_Template","_c17","FilterRowComponent_td_0_Template","FilterRowComponent_td_1_Template","FilterRowComponent_td_2_Template","columnIndex_r2","ctx_r2","_c18","ColumnListComponent_label_1_Template","index_r2","ColumnListComponent_div_2_Template","_c19","ColumnChooserComponent_ng_template_2_Template","ColumnMenuItemComponent_div_3_Template","ColumnMenuAutoSizeAllColumnsComponent_kendo_grid_columnmenu_item_0_Template","ColumnMenuAutoSizeColumnComponent_kendo_grid_columnmenu_item_0_Template","ColumnMenuChooserComponent_ng_template_1_Template","ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_lock_0_Template","ColumnMenuPositionComponent_ng_template_1_kendo_grid_columnmenu_stick_1_Template","ColumnMenuPositionComponent_ng_template_1_Template","ColumnMenuFilterComponent_ng_template_1_Template","_c20","_c21","_c22","ColumnMenuComponent_ng_template_3_Template","defaultTemplate_r6","tabbedInterfaceTemplate_r7","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_sort_1_Template","sortItem_r9","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_lock_2_Template","lockItem_r10","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_stick_3_Template","stickItem_r11","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_position_4_Template","positionItem_r12","ColumnMenuComponent_ng_template_5_span_5_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_chooser_6_Template","chooserItem_r13","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_column_7_Template","autoSizeColumnItem_r14","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_autosize_all_columns_8_Template","autoSizeAllColumnsItem_r15","ColumnMenuComponent_ng_template_5_span_9_Template","ColumnMenuComponent_ng_template_5_kendo_grid_columnmenu_filter_10_Template","filterItem_r16","ColumnMenuComponent_ng_template_5_Template","_r8","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_1_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_ng_template_2_Template","_r18","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_2_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_1_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_sort_0_Template","sortItem_r19","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_1_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_lock_2_Template","lockItem_r20","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_stick_3_Template","stickItem_r21","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_4_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_position_5_Template","positionItem_r22","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_span_6_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_column_7_Template","autoSizeColumnItem_r23","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_kendo_grid_columnmenu_autosize_all_columns_8_Template","autoSizeAllColumnsItem_r24","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_ng_template_2_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_3_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_1_Template","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_ng_template_2_Template","_r25","ColumnMenuComponent_ng_template_7_kendo_tabstrip_tab_4_Template","ColumnMenuComponent_ng_template_7_Template","_r17","_c23","ExcelCommandDirective_kendo_icon_wrapper_0_Template","ExcelCommandDirective_span_1_Template","ɵɵsanitizeUrl","ExcelCommandDirective_span_2_Template","_c24","PDFCommandDirective_kendo_icon_wrapper_0_Template","PDFCommandDirective_span_1_Template","PDFCommandDirective_span_2_Template","_c25","_c26","_c27","_c28","HeaderComponent_tr_1_th_1_Template","HeaderComponent_tr_1_th_2_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_template_3_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_ng_container_4_Template","column_r2","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_filter_menu_5_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_kendo_grid_column_menu_6_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_1_Template","ɵɵpureFunction4","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_template_4_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_ng_container_5_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_icon_wrapper_7_Template","ɵɵpropertyInterpolate1","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_span_8_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_filter_menu_9_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_kendo_grid_column_menu_10_Template","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_2_Template","link_r5","HeaderComponent_tr_1_ng_container_3_th_1_ng_container_3_Template","HeaderComponent_tr_1_ng_container_3_th_1_span_4_Template","HeaderComponent_tr_1_ng_container_3_th_1_Template","ctx_r5","columnIndex_r7","last_r8","levelIndex_r9","HeaderComponent_tr_1_ng_container_3_th_2_ng_template_3_Template","HeaderComponent_tr_1_ng_container_3_th_2_ng_container_4_Template","HeaderComponent_tr_1_ng_container_3_th_2_kendo_grid_column_menu_5_Template","HeaderComponent_tr_1_ng_container_3_th_2_span_6_Template","HeaderComponent_tr_1_ng_container_3_th_2_Template","HeaderComponent_tr_1_ng_container_3_Template","HeaderComponent_tr_1_Template","HeaderComponent_tr_2_Template","_c29","FooterComponent_td_2_Template","FooterComponent_td_3_Template","FooterComponent_ng_container_4_td_1_ng_template_1_Template","FooterComponent_ng_container_4_td_1_Template","FooterComponent_ng_container_4_Template","_c30","_c31","CellComponent_ng_container_1_ng_container_1_1_ng_template_0_Template","CellComponent_ng_container_1_ng_container_1_1_Template","CellComponent_ng_container_1_ng_container_1_ng_container_2_ng_container_1_Template","childColumn_r2","CellComponent_ng_container_1_ng_container_1_ng_container_2_Template","CellComponent_ng_container_1_ng_container_1_ng_container_3_Template","CellComponent_ng_container_1_ng_container_1_ng_container_4_Template","CellComponent_ng_container_1_ng_container_1_ng_container_5_Template","CellComponent_ng_container_1_ng_container_1_Template","CellComponent_ng_container_1_ng_template_2_0_ng_template_0_Template","CellComponent_ng_container_1_ng_template_2_0_Template","ɵɵpureFunction1","CellComponent_ng_container_1_ng_template_2_div_1_Template","CellComponent_ng_container_1_ng_template_2_Template","CellComponent_ng_container_1_Template","ɵɵtemplateRefExtractor","loading_r3","CellComponent_ng_container_2_1_ng_template_0_Template","CellComponent_ng_container_2_1_Template","CellComponent_ng_container_2_ng_container_2_kendo_numerictextbox_1_Template","CellComponent_ng_container_2_ng_container_2_kendo_datepicker_2_Template","CellComponent_ng_container_2_ng_container_2_input_4_Template","CellComponent_ng_container_2_ng_container_2_input_5_Template","CellComponent_ng_container_2_ng_container_2_Template","CellComponent_ng_container_2_Template","_c32","_c33","_c34","_c35","_c36","TableBodyComponent_ng_container_0_ng_container_2_td_1_Template","TableBodyComponent_ng_container_0_ng_container_2_Template","TableBodyComponent_ng_container_0_td_3_Template","TableBodyComponent_ng_container_0_td_4_Template","columnIndex_r3","TableBodyComponent_ng_container_0_Template","TableBodyComponent_tr_1_2_ng_template_0_Template","TableBodyComponent_tr_1_2_Template","TableBodyComponent_tr_1_ng_container_3_Template","TableBodyComponent_tr_1_Template","TableBodyComponent_ng_container_2_tr_1_Template","item_r5","rowIndex_r6","TableBodyComponent_ng_container_2_tr_2_ng_container_1_td_1_Template","TableBodyComponent_ng_container_2_tr_2_ng_container_1_Template","TableBodyComponent_ng_container_2_tr_2_td_2_a_1_Template","_r7","TableBodyComponent_ng_container_2_tr_2_td_2_Template","TableBodyComponent_ng_container_2_tr_2_td_3_Template","column_r8","columnIndex_r9","TableBodyComponent_ng_container_2_tr_2_Template","ɵɵclassMap","TableBodyComponent_ng_container_2_tr_3_td_1_Template","TableBodyComponent_ng_container_2_tr_3_ng_template_4_Template","TableBodyComponent_ng_container_2_tr_3_Template","TableBodyComponent_ng_container_2_tr_4_ng_container_1_td_1_Template","TableBodyComponent_ng_container_2_tr_4_ng_container_1_Template","TableBodyComponent_ng_container_2_tr_4_td_2_Template","TableBodyComponent_ng_container_2_tr_4_td_3_ng_template_1_Template","TableBodyComponent_ng_container_2_tr_4_td_3_Template","column_r10","TableBodyComponent_ng_container_2_tr_4_Template","TableBodyComponent_ng_container_2_Template","TableBodyComponent_kendo_resize_sensor_3_Template","_r11","_c37","EditCommandDirective_kendo_icon_wrapper_0_Template","EditCommandDirective_span_1_Template","EditCommandDirective_span_2_Template","_c38","CancelCommandDirective_kendo_icon_wrapper_0_Template","CancelCommandDirective_span_1_Template","CancelCommandDirective_span_2_Template","_c39","SaveCommandDirective_kendo_icon_wrapper_0_Template","SaveCommandDirective_span_1_Template","SaveCommandDirective_span_2_Template","_c40","RemoveCommandDirective_kendo_icon_wrapper_0_Template","RemoveCommandDirective_span_1_Template","RemoveCommandDirective_span_2_Template","_c41","AddCommandDirective_kendo_icon_wrapper_0_Template","AddCommandDirective_span_1_Template","AddCommandDirective_span_2_Template","_c42","_c43","_c44","_c45","PagerNumericButtonsComponent_option_2_Template","PagerNumericButtonsComponent_option_3_Template","num_r3","PagerNumericButtonsComponent_option_4_Template","PagerNumericButtonsComponent_button_7_Template","PagerNumericButtonsComponent_button_8_Template","_r5","num_r6","PagerNumericButtonsComponent_button_9_Template","_c46","PagerComponent_div_0_Template","PagerComponent_ng_container_1_Template","PagerComponent_ng_container_2_kendo_pager_prev_buttons_2_Template","PagerComponent_ng_container_2_kendo_pager_numeric_buttons_3_Template","PagerComponent_ng_container_2_kendo_pager_input_4_Template","PagerComponent_ng_container_2_kendo_pager_next_buttons_5_Template","PagerComponent_ng_container_2_kendo_pager_info_6_Template","PagerComponent_ng_container_2_kendo_pager_page_sizes_7_Template","PagerComponent_ng_container_2_Template","PagerComponent_div_3_Template","PagerComponent_kendo_resize_sensor_4_Template","_c47","StatusBarComponent_0_ng_template_0_Template","StatusBarComponent_0_Template","_c48","_c49","_c50","_c51","_c52","_c53","ListComponent_div_0_Template","ListComponent_kendo_resize_sensor_8_Template","ListComponent_kendo_resize_sensor_9_Template","ListComponent_div_12_Template","ToolbarComponent_0_ng_template_0_Template","ToolbarComponent_0_Template","_c54","_c55","_c56","_c57","_c58","GridComponent_kendo_grid_toolbar_2_Template","GridComponent_kendo_pager_3_Template","GridComponent_kendo_grid_group_panel_4_Template","GridComponent_ng_container_7_div_1_div_1_Template","GridComponent_ng_container_7_div_1_div_7_Template","GridComponent_ng_container_7_div_1_Template","GridComponent_ng_container_7_div_3_div_1_Template","GridComponent_ng_container_7_div_3_Template","GridComponent_ng_container_7_Template","defaultHint_r5","GridComponent_ng_container_8_thead_3_Template","GridComponent_ng_container_8_tfoot_5_Template","GridComponent_ng_container_8_Template","GridComponent_div_9_Template","GridComponent_kendo_grid_status_bar_10_Template","GridComponent_kendo_pager_11_Template","_r6","GridComponent_kendo_grid_toolbar_12_Template","GridComponent_ng_template_13_Template","GridComponent_div_15_Template","append","element","isDocumentAvailable","appended","getDocument$1","getWindow$1","offset","clientTop","clientLeft","pageYOffset","pageXOffset","top","left","isTargetBefore","draggable","target","contains$2","container","position","before","targetRect","offsetWidth","offsetHeight","DragAndDropService","EventEmitter","current","mouseEvent","comparer","nativeElement","__ngFactoryType__","ɵɵdefineInjectable","updateClass","valid","svg","icon","path","plusIcon","cancelIcon","updateLock","locked","value","lockIcon","unlockIcon","decorate","svgIconsMarkup","viewBox","content","safeTitle","fontIconsMarkup","DragHintService","santizer","iconsService","title","SecurityContext","innerHtml","el","move","ɵɵinject","DomSanitizer","IconsService","DropCueService","height","width","EMPTY_REGEX","isPresent","isBlank","isArray","isTruthy","isNullOrEmptyString","observe","list","merge","of","isUniversal","isString","isNumber","extractFormat","format","not","fn","args","or","conditions","acc","x","and","Skip","InjectionToken","createPromise","resolveFn","rejectFn","promise","resolve","reject","data","iterator","getIterator$1","keys","proto","i","key","FRAME_DURATION","wnd","requestAnimationFrame","callback","cancelAnimationFrame","detectIE","ua","msie","trident","nodesToArray","nodes","replaceMessagePlaceholder","message","name","recursiveFlatMap","item","isGroupResult","__spreadValues","obj","FOCUS_ROOT_ACTIVE","FocusRoot","active","group","f","focusableRegex","NODE_NAME_PREDICATES","toClassList","classNames","hasClasses","namesList","className","matchesClasses","matchesNodeName","nodeName","closest","node","predicate","closestInScope","scope","contains$1","parent","matchSelf","child","isVisible","rect","hasSize","hasPosition","isFocusable","tagName","hasTabIndex","isFocusableWithTabKey","checkVisibility","visible","ariaHidden","tabIndex","findElement","findLastElement","last","findFocusable","findFocusableChild","findLastFocusableChild","rtlScrollPosition","initial","result","isButton","isInputTag","navigableRegex","isNavigableInput","isNavigable","DefaultFocusableElement","host","renderer","e","CELL_CONTEXT","EMPTY_CELL_CONTEXT","GridToolbarNavigationService","Renderer2","ContextService","localization","LocalizationService","FocusableDirective","cellContext","hostElement","ɵɵdirectiveInject","ElementRef","ɵɵdefineDirective","GridFocusableElement","navigationService","NavigationCursor","model","Subject","newActiveCol","row","rowIndex","colIndex","force","prevColIndex","prevRowIndex","cell","start","end","rowRange","cellRange","activeCol","activeRow","prevRow","lastIndex","virtualCol","nextColIndex","nextRowIndex","nextCell","maxIndex","nextIndex","nextRow","nextPos","ItemMap","NavigationModel","modelCell","index","match","modelRow","rows","currentIndex","firstCell","DomEventsService","PreventableEvent","CellCloseEvent","options","isEqual","isNotEqual","isNewRow","EditService","ngZone","switchMap","take","column","originalEvent","formGroup","NgZone","getGroupRowArgs","groupItem","isChildIndex","targetIndex","parentIndex","sameIndex","lastSeparatorIndex","sameSubGroupIndex","GroupsService","groupArgs","expanded","emit","parentGroup","expand","PagerContextService","changes","page","nextPage","prevPage","DetailCollapseEvent","DetailExpandEvent","DetailsService","dataItem","eventArg","ScrollRequestService","request","adjustIndex","isInSameGrid","gridElement","matchHeaderCell","matchDataCell","matchFooterCell","matchCell","gridCell","targetCell","isArrowKey","keyCode","Keys","isNavigationKey","isInput","isTextInput","isPrintableCharacter","str","NavigationViewport","firstItemIndex","lastItemIndex","dataRowIndex","NavigationService","zone","domEvents","pagerContextService","scrollRequestService","groupsService","detailsService","focusRoot","editService","cd","focusableParent","meta","navigableOptions","onStableSubscriber","operators","from","map","onStable","Subscription","filter","takeUntil","switchMapTo","interval","lastRow","oldMode","focusInCell","focusInActiveRowContent","alreadyActive","focusable","ahead","behind","activeColumnIndex","wrap","fwd","success","colIdx","preventDefault","modifier","step","nextItemIndex","viewportSize","firstColumnIndex","lastRowIndex","confirm","cancel","navigate","ChangeDetectorRef","preventOnDblClick$1","release","mouseDown","delay","hasClass","isDeleteButton","isSortIcon","skipButtons","elementUnderCursor","clientX","clientY","hideThenShow","cont","DraggableColumnDirective","service","hint","cue","nav","enabled","_","tap","down","upEvent","cursorElement","DraggableDirective","DropTargetDirective","type","CellTemplateDirective","templateRef","TemplateRef","GroupHeaderTemplateDirective","GroupHeaderColumnTemplateDirective","EditTemplateDirective","GroupFooterTemplateDirective","HeaderTemplateDirective","FooterTemplateDirective","ColumnMenuTemplateDirective","sequence","IdService","itemIndex","ColumnMenuErrorMessages","ClipboardErrorMessages","ColumnConfigurationErrorMessages","field","parsedValue","columnType","nestedColumnNameType","parentColumnType","GridConfigurationErrorMessages","propName","feat1Name","feat2Name","expandMethodName","collapseMethodName","directiveName","callbackName","exportedType","moduleName","componentSelector","methodName","suggestedMethodName","isSpanColumn","isCheckboxColumn","isRowReorderColumn","isColumnContainer","ColumnBase","idService","QueryList","isDevMode","totalColumnLevels","template","ɵɵdefineComponent","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","FilterCellTemplateDirective","FilterMenuTemplateDirective","isColumnComponent","ColumnComponent","ɵɵProvidersFeature","forwardRef","ɵɵInheritDefinitionFeature","ɵɵStandaloneFeature","isSpanColumnComponent","SpanColumnComponent","_value","total","editTemplate","c","expandColumns","columns","expandColumnsWithSpan","columnsToRender","sumProp","prop","array","prev","curr","sumColumnWidths","columnsSpan","validField","isValidFieldName","fieldName","children","leafColumns","someLeafColumn","resizableColumns","sortColumns","orderBy","isInSpanColumn$1","isColumnGroupComponent","ColumnGroupComponent","DetailTemplateDirective","ColGroupComponent","_item","state","NgForOf","NgIf","LoadingTemplateDirective","LoadingComponent","NgTemplateOutlet","ResizeService","throttleTime","resizes","ResizableContainerDirective","resizeService","refresh","containerElement","FocusGroup","root","focused","reset","lists","diff","idx","ColumnsContainer","currentLevels","lockedLeafColumns","nonLockedLeafColumns","lockedColumns","nonLockedColumns","allColumns","leafColumnsToRender","lockedColumnsToRender","nonLockedColumnsToRender","hasGroupHeaderColumn","hasGroupFooter","hasFooter","unlockedWidth","leafIndex","containerLeafColumns","containerColumns","toRenderContainer","leaf","NO_STICKY","ColumnInfoService","id$3","nextId$1","LogicalCellDirective","focusGroup","columnInfoService","indexChange","rowIndexChange","wasActive","ɵɵNgOnChangesFeature","id$2","nextId","LogicalRowDirective","navigation","ids","cellIndex","columnIndex","logicalSlaveRowChange","anyChanged","FORMAT_REGEX","FieldAccessorPipe","intlService","getter","intl","IntlService","ɵɵdefinePipe","GridTableDirective","wrapper","size","forEachColumn","forEachLevel","filterHierarchy","a","b","ColumnList","_ColumnList","totalLevels","GroupInfoService","groupField","GroupHeaderComponent","groupInfoService","caretAltDownIcon","caretAltRightIcon","caretAltLeftIcon","groupCount","detailOffset","columnCount","messageKey","IconWrapperComponent","TemplateContextDirective","withoutField","alreadyGrouped","groups","overSameTarget","overLastTarget","isLastGroup","isNotGroupable","columnRules","groupService","indicatorRules","GroupPanelComponent","popupService","arrowLeftIcon","arrowRightIcon","relatedItemType","menuItemEl","activeMenuItem","rtl","currentTitles","token","sortDescSmallIcon","sortAscSmallIcon","chip","first","anchor","popupAnchor","direction","dt","menuItems","fromEvent","event","enterStream","leaveStream","dropStream","focusAnchor","relatedItem","chips","groupChip","groupChipIndex","isPrev","PopupService","ɵɵviewQuery","ChipListComponent","ChipComponent","EventsOutsideAngularDirective","localizeOperators$1","operatorTexts","toJSON","xs","FilterOperatorBase","operator","update","ContainsFilterOperatorComponent","DoesNotContainFilterOperatorComponent","EndsWithFilterOperatorComponent","EqualFilterOperatorComponent","IsEmptyFilterOperatorComponent","IsNotEmptyFilterOperatorComponent","IsNotNullFilterOperatorComponent","IsNullFilterOperatorComponent","NotEqualFilterOperatorComponent","StartsWithFilterOperatorComponent","GreaterFilterOperatorComponent","GreaterOrEqualToFilterOperatorComponent","LessFilterOperatorComponent","LessOrEqualToFilterOperatorComponent","AfterFilterOperatorComponent","AfterEqFilterOperatorComponent","BeforeEqFilterOperatorComponent","BeforeFilterOperatorComponent","SizingOptionsService","FilterCellOperatorsComponent","sizing","filterClearIcon","filterIcon","localizationMsg","columnName","DropDownListComponent","ButtonComponent","FilterInputDirective","valueAccessors","unsubscribeStart","unsubscribeEnd","isChanged","debounceTime","ariaValue","focusableElement","inputElement","elementToSetLabel","NG_VALUE_ACCESSOR","KendoInput","MenuTabbingService","FilterService","menuTabbingService","ScrollSyncService","sourceType","obs","scrollLeft","subscription","distinctUntilChanged","y","contains","PopupCloseEvent","DEFAULT_POPUP_CLASS","SinglePopupService","scrollSyncService","popupRef","popupClass","toggle","popupEl","skipElement","insertDefaultFilter","rootFilter","setFilter","defaultOperator","logicOperators","flatten","isCompositeFilterDescriptor","trimFilterByField","filtersByField","filterByField","currentFilter","removeFilter","localizeOperators","BaseFilterCellComponent","filterService","values","q","areDifferent","len","diffFilters","copyObject","property","cloneFilter","cloneFilters","FilterHostDirective","resolver","instance","ViewContainerRef","ComponentFactoryResolver$1","stringOperators$1","StringFilterComponent","FilterMenuDropDownListDirective","wrapperElement","EMPTY_VALUE_OPERATORS","isEmptyValueOperator","FilterInputWrapperComponent","emptyValueOperator","disabled","FilterMenuInputWrapperComponent","shouldFocusFirstFocusable","isTabbedInterface","ɵɵprojectionDef","ɵɵprojection","StringFilterMenuInputComponent","TextBoxDirective","FormsModule","DefaultValueAccessor","NgControlStatus","NgModel","StringFilterMenuComponent","numericOperators","NumericFilterComponent","NumericFilterMenuInputComponent","NumericTextBoxComponent","NumericTextBoxCustomMessagesComponent","NumericFilterMenuComponent","dateOperators","DateFilterComponent","DateFilterMenuInputComponent","picker","picker_r2","DatePickerComponent","DatePickerCustomMessagesComponent","DateFilterMenuComponent","BooleanFilterComponent","BooleanFilterRadioButtonDirective","BooleanFilterMenuComponent","guid","input","radioValue","RadioButtonDirective","filterMenuComponentFactory","FilterMenuHostDirective","isNoValueOperator","validFilters","trimFilters","findParent","filters","parentLogicOfDefault","def","FilterMenuContainerComponent","parentService","childService","buttonType","ɵNgNoValidate","NgControlStatusGroup","NgForm","NgSwitch","NgSwitchCase","NgClass","id$1","getId$1","gridId","FilterMenuComponent","cdr","ariaRoot","popupAriaElement","popupId","anchor_r2","template_r3","EMPTY_FILTER_OPERATORS","FilterCellWrapperComponent","ɵɵtwoWayListener","ɵɵtwoWayBindingSet","ɵɵtwoWayProperty","stringOperators","AutoCompleteFilterCellComponent","sizingOptionsService","AutoCompleteComponent","BooleanFilterCellComponent","sizingService","DateFilterCellComponent","StringFilterCellComponent","TextBoxComponent","NumericFilterCellComponent","filterComponentFactory","FilterCellHostDirective","FilterCellComponent","FilterRowComponent","sticky","NgStyle","ColumnMenuChooserItemCheckedDirective","ColumnMenuService","ColumnListKeyboardNavigation","ColumnListComponent","listNavigationService","checkbox","closestItem","hidden","changed","checkboxes","length","checkedItems","checkedUnlocked","filteredColumns","classCommand","attributeCommand","ColumnChooserComponent","changeDetector","columnsIcon","popupElement","ColumnMenuItemBase","hasFilter","settings","hasSort","hasLock","hasStick","hasColumnChooser","hasAutoSizeColumn","hasAutoSizeAllColumns","autoSizeColumn","grid","hasItems","ColumnMenuItemContentTemplateDirective","ColumnMenuItemComponent","trigger","style","transition","animate","ColumnMenuAutoSizeAllColumnsComponent","displayInlineFlexIcon","ColumnMenuAutoSizeColumnComponent","maxWidthIcon","ColumnMenuChooserComponent","ColumnMenuStickComponent","stickIcon","unstickIcon","allChanged","ColumnMenuLockComponent","ColumnMenuPositionComponent","setColumnPositionIcon","isLastItem","lastFocusableIndex","ColumnMenuFilterComponent","ColumnMenuItemDirective","lastColumnMenuItem","isExpanded","firstItemKeydownSub","lastFocusableElement","lastItemKeydownSub","ColumnMenuContainerComponent","SortService","DEFAULTS","normalize$1","ColumnMenuSortComponent","sortService","descriptor","dir","mode","allowUnsort","sort","s","POPUP_CLASSES","id","getId","ColumnMenuComponent","slidersIcon","moreVerticalIcon","triggerFocus","menuItemSettings","TabStripComponent","TabStripTabComponent","TabTitleDirective","TabContentDirective","ExcelService","component","ExcelExportEvent","workbook","fetchComponentData","toExcelColumn","toExcelColumns","excelColumn","componentColumns","ExcelComponent","excelService","exportData","Observable","workbookOptions","toDataURL","dataURL","saveAs","ExcelCommandDirective","SuspendService","PDFService","emitter","PDFMarginComponent","PDFExportMarginComponent","ɵPDFMarginComponent_BaseFactory","ɵɵgetInheritedFactory","PDFTemplateDirective","PDFExportTemplateDirective","HEADER_CLASS","FOOTER_CLASS","GRID_LIST","TABLE","matchesList","matchesTable","suffix","GridQuery","FIRST_CLASS","INPUTS","cloneNode","clone","appendNodes","wrapTable","table","classes","createTableElement","sources","sourceCount","rowsCount","rowIdx","sourceIdx","setFirstCellClass","header","headers","firstCellIndex","createTable","colGroups","bodies","footers","colGroup","body","footer","exportElement","query","lockedContent","createElement$1","createDiv","PDFComponent","PDFExportComponent","pdfService","suspendService","pageSize","progress","overlay","overlayQuery","overlayContent","overlayLockedContent","originalColumns","skip","_take","PDFCommandDirective","hasFilterMenu","settings","hasFilterRow","ColumnReorderService","EventEmitter","__ngFactoryType__","ɵɵdefineInjectable","ColumnReorderEvent","PreventableEvent","column","newIndex","oldIndex","isLocked","resizeArgs","extra","leafColumns","ColumnResizingService","columns","deltaPercent","action","delta","state","tableMetadata","info","nonLockedColumns","lockedColumns","locked","onComplete","observables","table","zip","take","widths","i","fromPercentage","value","percent","sign","toPercentage","whole","headerWidth","handle","allLeafColumns","expandColumns","c","stopPropagation","event","createMoveStream","service","draggable","mouseDown","takeUntil","tap","map","pageX","preventOnDblClick","release","of","delay","isInSpanColumn","indexOf","target","list","index","ignore","skip","current","isParentSpanColumn","ColumnHandleDirective","element","zone","cdr","ctx","columnInfoService","Subscription","isTruthy","allLeafs","currentLeafs","columnInfo","isParentSpan","isLastInSpan","isBlank","filter","e","isPresent","switchMap","originalX","rtl","newWidth","tableDelta","width","w","col","level","columnsToRender","minWidth","maxWidth","startWidth","isAboveMin","isBelowMax","ɵɵdirectiveInject","DraggableDirective","ElementRef","NgZone","ChangeDetectorRef","ContextService","ColumnInfoService","ɵɵdefineDirective","rf","ɵɵlistener","ɵɵstyleProp","LocalDataChangesService","CellSelectionAggregateService","dataChanges","aggregate","cellAggregates","selectionDirective","selectionArgs","selectedItemsLength","fields","item","field","cellValue","itemKey","acc","curr","isTrueCount","bool","isFalseCount","rowOrCellSelect","rowOrCellDeselect","selectedItems","deselectedItems","row","elem","cell","ɵɵinject","SelectionService","domEvents","aggregateService","localDataChangesService","navigationService","ctxService","checkboxOnly","selectableSettings","dragAndMultiple","iterator","rowArgs","ev","ctrlKey","selectedRows","deselectedRows","itemToToggle","removedItem","start","end","next","idx","selectAllChecked","startIndex","endIndex","n","defaultOptions","args","accessor","DomEventsService","NavigationService","SelectAllCheckboxDirective","selectionService","el","renderer","ngZone","isChecked","detectIE","options","enabledAndMultiple","shouldEmitSelectAll","hasObservers","Renderer2","ɵɵattribute","ɵɵNgOnChangesFeature","mergeObjects","directions","initialDirection","isRootLevel","parent","ofColumnType","notSameElement","inSameParent","x","y","isInSpanColumn$1","sameParent","lastNonLocked","notInSpanColumn","reorderable","lockable","rules","and","not","modifierKeys","HeaderComponent","popupService","hint","cue","reorderService","idService","sortService","cd","contextService","QueryList","sortAscSmallIcon","sortDescSmallIcon","descriptor","link","closestInScope","isFocusable","modifier","toggledColumn","Keys","filterMenu","fm","columnMenu","cm","isCtrlOrMeta","gr","columnsCount","reorderDirection","rtlMultiplier","reorderDirectionOffset","normalizedNewIndex","gridInstance","showIndexes","normalize$1","dir","allowUnsort","mode","desc","multiSortKey","key","observe","isColumnGroupComponent","changes","sortChange","change","isTailing","hasItems","isNullOrEmptyString","canReorder","isColumnComponent","isCheckboxColumn","_item","stickyStyles","__spreadValues","first","second","sortColumns","enterStream","merge","leaveStream","dropStream","targetLocked","draggableLocked","arr","firstSpan","t","adjust","levelColumns","isFirst","changed","mouseEvent","changeContainer","targetElement","before","left","offset","halfWidth","isTargetBefore","position","SinglePopupService","DragHintService","DropCueService","IdService","SortService","ɵɵdefineComponent","ɵɵviewQuery","DropTargetDirective","FilterMenuComponent","ColumnMenuComponent","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵclassProp","ɵɵStandaloneFeature","_c25","ɵɵelementContainerStart","ɵɵtemplate","HeaderComponent_tr_1_Template","HeaderComponent_tr_2_Template","ɵɵelementContainerEnd","ɵɵadvance","ɵɵproperty","NgForOf","LogicalRowDirective","NgIf","LogicalCellDirective","DraggableColumnDirective","NgClass","NgStyle","TemplateContextDirective","IconWrapperComponent","FocusableDirective","FilterRowComponent","FooterComponent","_c29","ɵɵelementStart","FooterComponent_td_2_Template","FooterComponent_td_3_Template","FooterComponent_ng_container_4_Template","ɵɵelementEnd","CommandColumnComponent","ColumnBase","dirIndex","ɵɵcontentQuery","CellTemplateDirective","ɵɵProvidersFeature","forwardRef","ɵɵInheritDefinitionFeature","CheckboxColumnComponent","SelectionCheckboxDirective","ChangeNotificationService","NoRecordsTemplateDirective","templateRef","TemplateRef","defaultTrackBy","NON_DATA_CELL_CLASSES","NON_DATA_ROW_CLASSES","IGNORE_TARGET_CLASSSES","IGNORE_CONTAINER_CLASSES","CellSelectionService","selectedCellArgs","startRowIndex","startColIndex","endRowIndex","endColIndex","selectedCells","deselectedCells","selectedItem","cellsToRemove","contender","selectionStartRow","selectionStartCol","selectionEndRow","selectionEndCol","selected","isInRowRange","isInColRange","isInSelectionRect","CellComponent","editService","cellContext","reorderIcon","isRowReorderColumn","editContext","extractFormat","isSpanColumn","_changes","context","EditService","CELL_CONTEXT","_c30","CellComponent_ng_container_1_Template","CellComponent_ng_container_2_Template","NgSwitch","NgSwitchCase","NgTemplateOutlet","NumericTextBoxComponent","DatePickerComponent","NgSwitchDefault","FieldAccessorPipe","ReactiveFormsModule","DefaultValueAccessor","CheckboxControlValueAccessor","NgControlStatus","FormControlDirective","columnCellIndex","cells","cellIndex","hasClasses","TableBodyComponent","detailsService","groupsService","changeNotification","cellSelectionService","minusIcon","plusIcon","allColumns","allColumnsCount","contentColumnsCount","headerFooterColumnsCount","dataItem","viewItem","messageKey","footerItem","isChanged","rowIndex","pos","absoluteRowIndex","addRowOffset","filterRowOffset","headerRowCount","clickHandler","mousedownSubscription","mouseupSubscription","clickSubscription","contextmenuSubscription","touchstartSubscription","touchendSubscription","originalNoRecordText","columnsSpan","cols","newCols","SpanColumnComponent","eventArg","body","gridElement","currentTarget","closest","matchesNodeName","matchesClasses","isFocusableWithTabKey","columnIndex","isEditedColumn","isEditedRow","type","isDocumentAvailable","touch","stickyRows","nodesToArray","accumulatedHeight","stickyRowsOffsets","rowHeight","DetailsService","GroupsService","_c32","TableBodyComponent_ng_container_0_Template","TableBodyComponent_tr_1_Template","TableBodyComponent_ng_container_2_Template","TableBodyComponent_kendo_resize_sensor_3_Template","GroupHeaderComponent","ResizeSensorComponent","EditCommandDirective","ButtonComponent","$event","_c37","_c11","ɵɵprojectionDef","EditCommandDirective_kendo_icon_wrapper_0_Template","EditCommandDirective_span_1_Template","EditCommandDirective_span_2_Template","ɵɵprojection","CancelCommandDirective","_c38","CancelCommandDirective_kendo_icon_wrapper_0_Template","CancelCommandDirective_span_1_Template","CancelCommandDirective_span_2_Template","SaveCommandDirective","_c39","SaveCommandDirective_kendo_icon_wrapper_0_Template","SaveCommandDirective_span_1_Template","SaveCommandDirective_span_2_Template","RemoveCommandDirective","_c40","RemoveCommandDirective_kendo_icon_wrapper_0_Template","RemoveCommandDirective_span_1_Template","RemoveCommandDirective_span_2_Template","AddCommandDirective","_c41","AddCommandDirective_kendo_icon_wrapper_0_Template","AddCommandDirective_span_1_Template","AddCommandDirective_span_2_Template","CellLoadingTemplateDirective","RowReorderColumnComponent","normalizeSettings","buttonCount","pageSizes","previousNext","responsive","normalize","PagerTemplateDirective","GROUP_CELL_WIDTH","RESPONSIVE_BREAKPOINT_MEDIUM","RESPONSIVE_BREAKPOINT_LARGE","PagerElementComponent","pagerContext","caretAltLeftIcon","caretAltToLeftIcon","caretAltRightIcon","caretAltToRightIcon","page","PagerContextService","PagerInfoComponent","total","pageSize","ɵɵtext","ɵɵtextInterpolate5","PagerDropDownListDirective","host","DropDownListComponent","PagerPageSizesComponent","normalizedItems","_r1","ɵɵgetCurrentView","ɵɵrestoreView","ɵɵresetView","ɵɵelement","dropdownlist_r2","ɵɵreference","LabelComponent","PagerNumericButtonsComponent","result","reminder","num","pageText","valueAsNumber","_c42","_c43","PagerNumericButtonsComponent_option_2_Template","PagerNumericButtonsComponent_option_3_Template","PagerNumericButtonsComponent_option_4_Template","PagerNumericButtonsComponent_button_7_Template","PagerNumericButtonsComponent_button_8_Template","PagerNumericButtonsComponent_button_9_Template","ɵɵpureFunction2","_c44","PagerNextButtonsComponent","PagerInputDirective","inputElement","PagerInputComponent","incomingValue","inputValue","ɵɵtextInterpolate1","_c46","ɵɵtextInterpolate2","EventsOutsideAngularDirective","PagerPrevButtonsComponent","PagerComponent","focusRoot","focusGroup","selectElement","numbersElement","size","localizationMsg","replaceMessagePlaceholder","anyChanged","changesInTemplate","condition","findFocusableChild","last","findLastFocusableChild","FocusRoot","FocusGroup","FOCUS_ROOT_ACTIVE","PagerComponent_div_0_Template","PagerComponent_ng_container_1_Template","PagerComponent_ng_container_2_Template","PagerComponent_div_3_Template","PagerComponent_kendo_resize_sensor_4_Template","ZoneAwareEventEmitter","isAsync","generatorOrNext","error","complete","schedulerFn","errorFn","_","completeFn","err","packageMetadata","canCreateElement","cachedScrollbarWidth","cachedPixelRatio","cachedRtlScrollLeft","scrollbarWidth","div","rtlScrollLeft","outer","inner","initial","BrowserSupportService","changeDetector","fromEvent","auditTime","isGroupItem","source","isVirtualGroupItem","flattenGroups","groups","itemAt","data","getIterator","footers","dataIndex","parentGroupIndex","groupIndex","parentGroup","GroupIterator","ItemIterator","ArrayIterator","Iterator","resultMap","iter","group","prefix","s","outputFooters","parentIndex","DataResultIterator","groupFooters","fn","init","DataCollection","PairSet","items","keyXField","keyYField","keyX","keyY","pairs","pair","keysY","Selection","colIndex","itemIdentifiers","selection","columnKey","selectedKeys","set","clearHeight","right","arr1","arr2","len","setHeight$1","heights","getHeights","rows","height","offsetHeight2","syncRowsHeight","table1","table2","activeElement","PDFExportEvent","bootstrapToMedia","media","browserMatchMedia","ResponsiveService","ToolbarTemplateDirective","NavigationMetadata","dataRows","headerRows","isVirtual","hasPager","hasDetailTemplate","virtualColumns","ColumnVisibilityChangeEvent","ColumnLockedChangeEvent","ColumnStickyChangeEvent","isNextSibling","dropTarget","dragTarget","isPreviousSibling","isDifferentParent","getOffset","clientTop","clientLeft","getDocument","pageYOffset","pageXOffset","getWindow","top","hintIcons","hintSVGIcons","cancelIcon","insertMiddleIcon","dropPosition","hintStyles","hintClasses","dropIndicatorStyles","dropIndicatorClasses","defaultSelectors","RowReorderService","rowReorderArgs","collection","draggedRows","dropTargetRow","draggedDataItem","dropTargetDataItem","draggedItemIndex","dropTargetIndex","idxToAdd","hintText","columnFieldsArray","columnValue","dragRow","dropRow","dragRowData","dropRowData","className","style","dragIndex","dropIndex","itemViewPortCoords","itemDivisionHeight","pointerPosition","itemTop","currentDropPosition","destinationItemOffset","indicatorOffsetTop","indicatorOffsetLeft","StatusBarTemplateDirective","ClipboardService","fieldCols","ColumnComponent","clipboardData","colFields","tabular","colIdentifier","selectionKeys","selectedFieldCols","k","selectedColFields","itemString","existingItem","f","rowIdentifier","colField","title","copiedData","targetType","targetRowIndex","separator","rowData","activeCellIndex","visibleCols","rowString","targetColFieldIndex","affectedFields","groupBy","a","b","initialData","StatusBarComponent","StatusBarComponent_0_Template","createElement","marquee","marqueeColor","POINTER_OFFSET","MINIMAL_DRAG_DISTANCE","offsets","GridMarqueeDirective","cellSelection","isInvalidTarget","press","marqueeQuadrant","pointerX","pointerY","startX","startY","leftHalf","rightHalf","topHalf","bottomHalf","update","RowHeightService","detailRowHeight","agg","prev","adjustIndex","targetOffset","targetIndex","ScrollAction","PageAction","ScrollBottomAction","SCROLL_BOTTOM_THRESHOLD","ScrollerService","scrollObservable","rowHeightService","subject","BehaviorSubject","Observable","observer","scrollTop","offsetHeight","scrollHeight","clientHeight","up","firstItemIndex","firstItemOffset","lastItemIndex","overflow","nextTake","nonVisibleBuffer","columnsToResize","resizableColumns","selector","headerRow","offsetWidth","pipe","fns","TableDirective","obs","bufferCount","deltas","sum","dom","header","footer","elementAt","elements","elementOffset","elementIdx","rowAt","cellAt","EMPTY_OBJECT","SCROLLER_FACTORY_TOKEN","InjectionToken","DEFAULT_SCROLLER_FACTORY","observable","wheelDeltaY","deltaY","preventLockedScroll","translateY","maybeNativeElement","hasScrollbar","setHeight","bufferSize","ListComponent","scrollerFactory","suspendService","scrollSyncService","resizeService","supportService","scrollRequestService","columnResizingService","pdfService","ColumnsContainer","Subject","req","groupCellsWidth","sumColumnWidths","changesInSkip","isUniversal","lockedScrollTop","scrollDelta","expand","rowViewport","columnViewport","temp","shouldScroll","sub","onStable","switchMapTo","scrollLeft","sensor","itemIndex","adjustIndexForDetailTemplate","isNumber","startOffset","firstRow","dataItemIndex","recursiveFlatMap","r","dataAttribute","scrollBottom","lastItemOffset","viewportStart","viewportEnd","lastItemHeight","lastItemExpanded","lastItemDetailOverflows","range","startIdx","endIdx","currentColumns","stickyBeforeStart","stickyAfterEnd","offsetColumn","cancelAnimationFrame","requestAnimationFrame","lockedCount","clientWidth","normalizedScrollLeft","rtlScrollPosition","SuspendService","ScrollSyncService","ResizeService","ScrollRequestService","PDFService","_c48","_c49","_c50","_c51","ListComponent_div_0_Template","ListComponent_kendo_resize_sensor_8_Template","ListComponent_kendo_resize_sensor_9_Template","ListComponent_div_12_Template","ɵɵpureFunction0","_c52","GridTableDirective","ColGroupComponent","ResizableContainerDirective","ToolbarComponent","wrapper","closestFocusable","ToolbarComponent_0_Template","GridMessages","ComponentMessages","ɵGridMessages_BaseFactory","ɵɵgetInheritedFactory","LocalizedMessagesDirective","LocalizationService","createControl","FormControl","validateColumnsField","isValidFieldName","ColumnConfigurationErrorMessages","handleExpandCollapseGroupsService","expandEmitter","collapseEmitter","emit","handleExpandCollapseDetailsService","isInEditedCell","NOTIFY_DELAY","GridComponent","groupInfoService","filterService","responsiveService","excelService","changeDetectorRef","columnReorderService","localization","sizingService","rowReorderService","guid","isValid","validatePackage","shouldShowValidationUI","ColumnList","isArray","isDevMode","GridConfigurationErrorMessages","detailTemplate","cellLoadingTemplate","loadingTemplate","statusBarTemplate","customNoRecordsTemplate","customPagerTemplate","customToolbarTemplate","padding","template","token","FormGroup","instance","promise","createPromise","containerSelector","wrap","request","destIndex","isSpanColumnComponent","callback","evType","columnsForLevel","expandedColumns","expandColumnsWithSpan","sourceColumnIndex","nextSourceIndex","nextIndex","toSkip","colsForParentLevel","colsForLevel","cellSelectionMode","activeService","inactiveService","stickyColumns","sort","formGroup","ariaRoot","resizeCheck","resizeSubscription","orientationSubscription","documentClickSubscription","windowBlurSubscription","keydownSubscription","focused","focusInSubscription","focusOutSubscription","node","hasChanges","matchesMedia","resizes","viewportColumns","columnsArray","leafViewportColumns","toAdd","lastFromGroup","totalLevels","previous","ColumnGroupComponent","hasCallback","selectableChanges","previousValue","currentValue","GroupInfoService","FilterService","ExcelService","SizingOptionsService","DetailTemplateDirective","LoadingTemplateDirective","ColumnMenuTemplateDirective","_c54","_c55","_c56","DragTargetContainerDirective","DropTargetContainerDirective","_c57","EMPTY_CELL_CONTEXT","L10N_PREFIX","DragAndDropService","i18n_0","i18n_1","i18n_2","i18n_3","i18n_4","i18n_5","i18n_6","i18n_7","i18n_8","i18n_9","i18n_10","i18n_11","i18n_12","i18n_13","i18n_14","i18n_15","i18n_16","i18n_17","i18n_18","i18n_19","i18n_20","i18n_21","i18n_22","i18n_23","i18n_24","i18n_25","i18n_26","i18n_27","i18n_28","i18n_29","i18n_30","i18n_31","i18n_32","i18n_33","i18n_34","i18n_35","i18n_36","i18n_37","i18n_38","i18n_39","i18n_40","i18n_41","i18n_42","i18n_43","i18n_44","i18n_45","i18n_46","i18n_47","i18n_48","i18n_49","i18n_50","i18n_51","i18n_52","i18n_53","i18n_54","i18n_55","i18n_56","i18n_57","i18n_58","i18n_59","i18n_60","i18n_61","i18n_62","i18n_63","i18n_64","i18n_65","i18n_66","i18n_67","i18n_68","i18n_69","i18n_70","i18n_71","i18n_72","i18n_73","i18n_74","i18n_75","i18n_76","i18n_77","i18n_78","i18n_79","i18n_80","i18n_81","i18n_82","ɵɵi18nAttributes","GridComponent_kendo_grid_toolbar_2_Template","GridComponent_kendo_pager_3_Template","GridComponent_kendo_grid_group_panel_4_Template","GridComponent_ng_container_7_Template","GridComponent_ng_container_8_Template","GridComponent_div_9_Template","GridComponent_kendo_grid_status_bar_10_Template","GridComponent_kendo_pager_11_Template","GridComponent_kendo_grid_toolbar_12_Template","GridComponent_ng_template_13_Template","ɵɵtemplateRefExtractor","GridComponent_div_15_Template","ɵɵi18nExp","ɵɵi18nApply","GroupPanelComponent","LoadingComponent","WatermarkOverlayComponent","CustomMessagesComponent","DataBindingDirective","grid","process","SelectionDirective","LocalEditService","EditingDirectiveBase","removeItem","shouldRemove","LocalRowEditService","RowEditingDirectiveBase","ɵRowEditingDirectiveBase_BaseFactory","TemplateEditingDirective","markAllAsTouched","control","controls","ReactiveEditingDirective","isNew","InCellEditingDirective","ExpandDetailsDirective","isString","getter","hasKey","mapParentGroup","parentGroupKeys","DEFAULT_KEY_GETTER","groupRowArgs","ExpandGroupDirective","expandedGroups","groupArgs","hasGroups","groupDescriptorsPresent","descriptors","processGroups","removeParentDescriptors","parents","owner","g","findGroup","findChildren","filters","p","filterBy","count","includeFooters","children","noDescriptors","slice","length","groupItems","itemCount","skipHeader","hideFooter","skippedHeaders","groupItem","GroupBindingDirective","noCurrentDescriptors","noIncomingDescriptors","clear","diffFilters","cloneFilters","groupsPresent","expanded","GridSpacerComponent","GridToolbarFocusableDirective","GridClipboardDirective","clipboardService","operationType","gridDataItems","isCellSelection","targetCell","identifier","isPaste","pastedData","inContentArea","inHost","contains$1","ClipboardErrorMessages","KENDO_GRID_COLUMN_DRAGANDDROP","KENDO_GRID_SHARED","FooterTemplateDirective","KENDO_GRID_GROUP_EXPORTS","GroupHeaderTemplateDirective","GroupHeaderColumnTemplateDirective","GroupFooterTemplateDirective","KENDO_GRID_FILTER_OPERATORS","FilterCellOperatorsComponent","ContainsFilterOperatorComponent","DoesNotContainFilterOperatorComponent","EndsWithFilterOperatorComponent","EqualFilterOperatorComponent","IsEmptyFilterOperatorComponent","IsNotEmptyFilterOperatorComponent","IsNotNullFilterOperatorComponent","IsNullFilterOperatorComponent","NotEqualFilterOperatorComponent","StartsWithFilterOperatorComponent","GreaterFilterOperatorComponent","GreaterOrEqualToFilterOperatorComponent","LessFilterOperatorComponent","LessOrEqualToFilterOperatorComponent","AfterFilterOperatorComponent","AfterEqFilterOperatorComponent","BeforeEqFilterOperatorComponent","BeforeFilterOperatorComponent","KENDO_GRID_FILTER_SHARED","FilterInputDirective","KENDO_GRID_FILTER_MENU_EXPORTS","FilterMenuContainerComponent","FilterMenuInputWrapperComponent","StringFilterMenuInputComponent","StringFilterMenuComponent","FilterMenuTemplateDirective","NumericFilterMenuComponent","NumericFilterMenuInputComponent","DateFilterMenuInputComponent","DateFilterMenuComponent","FilterMenuHostDirective","BooleanFilterMenuComponent","FilterMenuDropDownListDirective","BooleanFilterRadioButtonDirective","KENDO_GRID_FILTER_MENU","KENDO_GRID_FILTER_ROW_EXPORTS","FilterCellComponent","FilterCellTemplateDirective","StringFilterCellComponent","NumericFilterCellComponent","AutoCompleteFilterCellComponent","BooleanFilterCellComponent","FilterCellHostDirective","FilterCellWrapperComponent","DateFilterCellComponent","KENDO_GRID_FILTER_ROW","KENDO_GRID_COLUMN_MENU_DECLARATIONS","ColumnMenuChooserItemCheckedDirective","ColumnListComponent","ColumnChooserComponent","ColumnMenuChooserComponent","ColumnMenuFilterComponent","ColumnMenuItemComponent","ColumnMenuItemContentTemplateDirective","ColumnMenuSortComponent","ColumnMenuLockComponent","ColumnMenuContainerComponent","ColumnMenuItemDirective","ColumnMenuStickComponent","ColumnMenuPositionComponent","ColumnMenuAutoSizeColumnComponent","ColumnMenuAutoSizeAllColumnsComponent","KENDO_GRID_COLUMN_MENU_EXPORTS","KENDO_GRID_HEADER_EXPORTS","HeaderTemplateDirective","KENDO_GRID_FOOTER_EXPORTS","KENDO_GRID_BODY_EXPORTS","EditTemplateDirective","KENDO_GRID_PAGER_EXPORTS","KENDO_GRID_EXPORTS","GridComponent","ToolbarTemplateDirective","ToolbarComponent","GridSpacerComponent","StatusBarTemplateDirective","DataBindingDirective","SelectionDirective","CustomMessagesComponent","GroupBindingDirective","TemplateEditingDirective","ReactiveEditingDirective","InCellEditingDirective","ExpandDetailsDirective","ExpandGroupDirective","GridToolbarFocusableDirective","KENDO_GRID_GROUP_EXPORTS","KENDO_GRID_SHARED","KENDO_GRID_BODY_EXPORTS","KENDO_GRID_HEADER_EXPORTS","KENDO_GRID_PAGER_EXPORTS","KENDO_GRID_FILTER_ROW_EXPORTS","KENDO_GRID_FILTER_OPERATORS","KENDO_GRID_FILTER_MENU_EXPORTS","KENDO_GRID_COLUMN_MENU_EXPORTS","GridClipboardDirective","KENDO_GRID_EXCEL_EXPORT","ExcelComponent","ExcelCommandDirective","KENDO_GRID_PDF_EXPORT","PDFComponent","PDFMarginComponent","PDFCommandDirective","PDFTemplateDirective","KENDO_GRID","GridModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","PopupService","ResizeBatchService","IconsService","DialogContainerService","DialogService","WindowService","WindowContainerService","CalendarDOMService","CenturyViewService","DecadeViewService","MonthViewService","YearViewService","WeekNamesService","NavigationService","GroupHeaderComponent","GroupPanelComponent","ColumnComponent","ColumnGroupComponent","ColGroupComponent","SpanColumnComponent","LoadingComponent","CommandColumnComponent","CheckboxColumnComponent","TableBodyComponent","CellComponent","EditCommandDirective","CancelCommandDirective","SaveCommandDirective","RemoveCommandDirective","AddCommandDirective","RowReorderColumnComponent","HeaderComponent","KENDO_GRID_FOOTER_EXPORTS","PagerComponent","PagerPrevButtonsComponent","PagerNextButtonsComponent","PagerNumericButtonsComponent","PagerInputComponent","PagerInfoComponent","PagerPageSizesComponent","FilterRowComponent","FilterCellComponent","StringFilterCellComponent","NumericFilterCellComponent","AutoCompleteFilterCellComponent","BooleanFilterCellComponent","FilterCellWrapperComponent","DateFilterCellComponent","FilterCellOperatorsComponent","ContainsFilterOperatorComponent","DoesNotContainFilterOperatorComponent","EndsWithFilterOperatorComponent","EqualFilterOperatorComponent","IsEmptyFilterOperatorComponent","IsNotEmptyFilterOperatorComponent","IsNotNullFilterOperatorComponent","IsNullFilterOperatorComponent","NotEqualFilterOperatorComponent","StartsWithFilterOperatorComponent","GreaterFilterOperatorComponent","GreaterOrEqualToFilterOperatorComponent","LessFilterOperatorComponent","LessOrEqualToFilterOperatorComponent","AfterFilterOperatorComponent","AfterEqFilterOperatorComponent","BeforeEqFilterOperatorComponent","BeforeFilterOperatorComponent","FilterMenuComponent","FilterMenuContainerComponent","FilterMenuInputWrapperComponent","StringFilterMenuInputComponent","StringFilterMenuComponent","NumericFilterMenuComponent","NumericFilterMenuInputComponent","DateFilterMenuInputComponent","DateFilterMenuComponent","BooleanFilterMenuComponent","ColumnListComponent","ColumnChooserComponent","ColumnMenuChooserComponent","ColumnMenuFilterComponent","ColumnMenuItemComponent","ColumnMenuSortComponent","ColumnMenuComponent","ColumnMenuLockComponent","ColumnMenuContainerComponent","ColumnMenuStickComponent","ColumnMenuPositionComponent","ColumnMenuAutoSizeColumnComponent","ColumnMenuAutoSizeAllColumnsComponent","ListComponent","StatusBarComponent","importedModules$1","KENDO_GRID_SHARED","KENDO_GRID_GROUP_EXPORTS","BodyModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","IconsService","PopupService","ResizeBatchService","CalendarDOMService","CenturyViewService","DecadeViewService","MonthViewService","YearViewService","WeekNamesService","NavigationService","ColumnComponent","ColumnGroupComponent","ColGroupComponent","SpanColumnComponent","LoadingComponent","GroupHeaderComponent","GroupPanelComponent","CommandColumnComponent","CheckboxColumnComponent","TableBodyComponent","CellComponent","EditCommandDirective","CancelCommandDirective","SaveCommandDirective","RemoveCommandDirective","AddCommandDirective","RowReorderColumnComponent","importedModules","KENDO_GRID_GROUP_EXPORTS","KENDO_GRID_FILTER_ROW","KENDO_GRID_FILTER_MENU","KENDO_GRID_SHARED","KENDO_GRID_COLUMN_DRAGANDDROP","KENDO_GRID_COLUMN_MENU_DECLARATIONS","ExcelModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","IconsService","KENDO_ICONS","KENDO_GRID_EXCEL_EXPORT","ExcelExportModule","ElementReferenceService","constructor","itemTemplateDict","setItemTemplate","name","itemTemplate","getItemTemplate","factory","ɵfac","providedIn","_ElementReferenceService","listCacheClear","listCacheClear_default","eq","value","other","eq_default","assocIndexOf","array","key","length","eq_default","assocIndexOf_default","arrayProto","splice","listCacheDelete","key","data","index","assocIndexOf_default","lastIndex","listCacheDelete_default","listCacheGet","key","data","index","assocIndexOf_default","listCacheGet_default","listCacheHas","key","assocIndexOf_default","listCacheHas_default","listCacheSet","key","value","data","index","assocIndexOf_default","listCacheSet_default","ListCache","entries","index","length","entry","listCacheClear_default","listCacheDelete_default","listCacheGet_default","listCacheHas_default","listCacheSet_default","ListCache_default","stackClear","ListCache_default","stackClear_default","stackDelete","key","data","result","stackDelete_default","stackGet","key","stackGet_default","stackHas","key","stackHas_default","freeGlobal","freeGlobal_default","freeSelf","root","freeGlobal_default","root_default","Symbol","root_default","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","Symbol_default","getRawTag","value","isOwn","tag","unmasked","result","getRawTag_default","objectProto","nativeObjectToString","objectToString","value","objectToString_default","nullTag","undefinedTag","symToStringTag","Symbol_default","baseGetTag","value","getRawTag_default","objectToString_default","baseGetTag_default","isObject","value","type","isObject_default","asyncTag","funcTag","genTag","proxyTag","isFunction","value","isObject_default","tag","baseGetTag_default","isFunction_default","coreJsData","root_default","coreJsData_default","maskSrcKey","uid","coreJsData_default","isMasked","func","isMasked_default","funcProto","funcToString","toSource","func","toSource_default","reRegExpChar","reIsHostCtor","funcProto","objectProto","funcToString","hasOwnProperty","reIsNative","baseIsNative","value","isObject_default","isMasked_default","pattern","isFunction_default","toSource_default","baseIsNative_default","getValue","object","key","getValue_default","getNative","object","key","value","getValue_default","baseIsNative_default","getNative_default","Map","getNative_default","root_default","Map_default","nativeCreate","getNative_default","nativeCreate_default","hashClear","nativeCreate_default","hashClear_default","hashDelete","key","result","hashDelete_default","HASH_UNDEFINED","objectProto","hasOwnProperty","hashGet","key","data","nativeCreate_default","result","hashGet_default","objectProto","hasOwnProperty","hashHas","key","data","nativeCreate_default","hashHas_default","HASH_UNDEFINED","hashSet","key","value","data","nativeCreate_default","hashSet_default","Hash","entries","index","length","entry","hashClear_default","hashDelete_default","hashGet_default","hashHas_default","hashSet_default","Hash_default","mapCacheClear","Hash_default","Map_default","ListCache_default","mapCacheClear_default","isKeyable","value","type","isKeyable_default","getMapData","map","key","data","isKeyable_default","getMapData_default","mapCacheDelete","key","result","getMapData_default","mapCacheDelete_default","mapCacheGet","key","getMapData_default","mapCacheGet_default","mapCacheHas","key","getMapData_default","mapCacheHas_default","mapCacheSet","key","value","data","getMapData_default","size","mapCacheSet_default","MapCache","entries","index","length","entry","mapCacheClear_default","mapCacheDelete_default","mapCacheGet_default","mapCacheHas_default","mapCacheSet_default","MapCache_default","LARGE_ARRAY_SIZE","stackSet","key","value","data","ListCache_default","pairs","Map_default","MapCache_default","stackSet_default","Stack","entries","data","ListCache_default","stackClear_default","stackDelete_default","stackGet_default","stackHas_default","stackSet_default","Stack_default","arrayEach","array","iteratee","index","length","arrayEach_default","defineProperty","func","getNative_default","defineProperty_default","baseAssignValue","object","key","value","defineProperty_default","baseAssignValue_default","objectProto","hasOwnProperty","assignValue","object","key","value","objValue","eq_default","baseAssignValue_default","assignValue_default","copyObject","source","props","object","customizer","isNew","index","length","key","newValue","baseAssignValue_default","assignValue_default","copyObject_default","baseTimes","n","iteratee","index","result","baseTimes_default","isObjectLike","value","isObjectLike_default","argsTag","baseIsArguments","value","isObjectLike_default","baseGetTag_default","baseIsArguments_default","objectProto","hasOwnProperty","propertyIsEnumerable","isArguments","baseIsArguments_default","value","isObjectLike_default","isArguments_default","isArray","isArray_default","stubFalse","stubFalse_default","freeExports","freeModule","moduleExports","Buffer","root_default","nativeIsBuffer","isBuffer","stubFalse_default","isBuffer_default","MAX_SAFE_INTEGER","reIsUint","isIndex","value","length","type","isIndex_default","MAX_SAFE_INTEGER","isLength","value","isLength_default","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","value","isObjectLike_default","isLength_default","baseGetTag_default","baseIsTypedArray_default","baseUnary","func","value","baseUnary_default","freeExports","freeModule","moduleExports","freeProcess","freeGlobal_default","nodeUtil","types","nodeUtil_default","nodeIsTypedArray","nodeUtil_default","isTypedArray","baseUnary_default","baseIsTypedArray_default","isTypedArray_default","objectProto","hasOwnProperty","arrayLikeKeys","value","inherited","isArr","isArray_default","isArg","isArguments_default","isBuff","isBuffer_default","isType","isTypedArray_default","skipIndexes","result","baseTimes_default","length","key","isIndex_default","arrayLikeKeys_default","objectProto","isPrototype","value","Ctor","proto","isPrototype_default","overArg","func","transform","arg","overArg_default","nativeKeys","overArg_default","nativeKeys_default","objectProto","hasOwnProperty","baseKeys","object","isPrototype_default","nativeKeys_default","result","key","baseKeys_default","isArrayLike","value","isLength_default","isFunction_default","isArrayLike_default","keys","object","isArrayLike_default","arrayLikeKeys_default","baseKeys_default","keys_default","baseAssign","object","source","copyObject_default","keys_default","baseAssign_default","nativeKeysIn","object","result","key","nativeKeysIn_default","objectProto","hasOwnProperty","baseKeysIn","object","isObject_default","nativeKeysIn_default","isProto","isPrototype_default","result","key","baseKeysIn_default","keysIn","object","isArrayLike_default","arrayLikeKeys_default","baseKeysIn_default","keysIn_default","baseAssignIn","object","source","copyObject_default","keysIn_default","baseAssignIn_default","freeExports","freeModule","moduleExports","Buffer","root_default","allocUnsafe","cloneBuffer","buffer","isDeep","length","result","cloneBuffer_default","copyArray","source","array","index","length","copyArray_default","arrayFilter","array","predicate","index","length","resIndex","result","value","arrayFilter_default","stubArray","stubArray_default","objectProto","propertyIsEnumerable","nativeGetSymbols","getSymbols","object","arrayFilter_default","symbol","stubArray_default","getSymbols_default","copySymbols","source","object","copyObject_default","getSymbols_default","copySymbols_default","arrayPush","array","values","index","length","offset","arrayPush_default","getPrototype","overArg_default","getPrototype_default","nativeGetSymbols","getSymbolsIn","object","result","arrayPush_default","getSymbols_default","getPrototype_default","stubArray_default","getSymbolsIn_default","copySymbolsIn","source","object","copyObject_default","getSymbolsIn_default","copySymbolsIn_default","baseGetAllKeys","object","keysFunc","symbolsFunc","result","isArray_default","arrayPush_default","baseGetAllKeys_default","getAllKeys","object","baseGetAllKeys_default","keys_default","getSymbols_default","getAllKeys_default","getAllKeysIn","object","baseGetAllKeys_default","keysIn_default","getSymbolsIn_default","getAllKeysIn_default","DataView","getNative_default","root_default","DataView_default","Promise","getNative_default","root_default","Promise_default","Set","getNative_default","root_default","Set_default","WeakMap","getNative_default","root_default","WeakMap_default","mapTag","objectTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","toSource_default","DataView_default","mapCtorString","Map_default","promiseCtorString","Promise_default","setCtorString","Set_default","weakMapCtorString","WeakMap_default","getTag","baseGetTag_default","value","result","Ctor","ctorString","getTag_default","objectProto","hasOwnProperty","initCloneArray","array","length","result","initCloneArray_default","Uint8Array","root_default","Uint8Array_default","cloneArrayBuffer","arrayBuffer","result","Uint8Array_default","cloneArrayBuffer_default","cloneDataView","dataView","isDeep","buffer","cloneArrayBuffer_default","cloneDataView_default","reFlags","cloneRegExp","regexp","result","cloneRegExp_default","symbolProto","Symbol_default","symbolValueOf","cloneSymbol","symbol","cloneSymbol_default","cloneTypedArray","typedArray","isDeep","buffer","cloneArrayBuffer_default","cloneTypedArray_default","boolTag","dateTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","initCloneByTag","object","tag","isDeep","Ctor","cloneArrayBuffer_default","cloneDataView_default","cloneTypedArray_default","cloneRegExp_default","cloneSymbol_default","initCloneByTag_default","objectCreate","baseCreate","object","proto","isObject_default","result","baseCreate_default","initCloneObject","object","isPrototype_default","baseCreate_default","getPrototype_default","initCloneObject_default","mapTag","baseIsMap","value","isObjectLike_default","getTag_default","baseIsMap_default","nodeIsMap","nodeUtil_default","isMap","baseUnary_default","baseIsMap_default","isMap_default","setTag","baseIsSet","value","isObjectLike_default","getTag_default","baseIsSet_default","nodeIsSet","nodeUtil_default","isSet","baseUnary_default","baseIsSet_default","isSet_default","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","cloneableTags","baseClone","value","bitmask","customizer","key","object","stack","result","isDeep","isFlat","isFull","isObject_default","isArr","isArray_default","initCloneArray_default","copyArray_default","tag","getTag_default","isFunc","isBuffer_default","cloneBuffer_default","initCloneObject_default","copySymbolsIn_default","baseAssignIn_default","copySymbols_default","baseAssign_default","initCloneByTag_default","Stack_default","stacked","isSet_default","subValue","isMap_default","keysFunc","getAllKeysIn_default","getAllKeys_default","keysIn_default","keys_default","props","arrayEach_default","assignValue_default","baseClone_default","CLONE_DEEP_FLAG","CLONE_SYMBOLS_FLAG","cloneDeep","value","baseClone_default","cloneDeep_default","identity","value","identity_default","apply","func","thisArg","args","apply_default","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","func","count","lastCalled","stamp","remaining","shortOut_default","constant","value","constant_default","baseSetToString","defineProperty_default","func","string","constant_default","identity_default","baseSetToString_default","setToString","shortOut_default","baseSetToString_default","setToString_default","nativeMax","overRest","func","start","transform","args","index","length","array","otherArgs","apply_default","overRest_default","baseRest","func","start","setToString_default","overRest_default","identity_default","baseRest_default","isIterateeCall","value","index","object","isObject_default","type","isArrayLike_default","isIndex_default","eq_default","isIterateeCall_default","createAssigner","assigner","baseRest_default","object","sources","index","length","customizer","guard","isIterateeCall_default","source","createAssigner_default","objectTag","funcProto","objectProto","funcToString","hasOwnProperty","objectCtorString","isPlainObject","value","isObjectLike_default","baseGetTag_default","proto","getPrototype_default","Ctor","isPlainObject_default","compact","array","index","length","resIndex","result","value","compact_default","createBaseFor","fromRight","object","iteratee","keysFunc","index","iterable","props","length","key","createBaseFor_default","baseFor","createBaseFor_default","baseFor_default","assignMergeValue","object","key","value","eq_default","baseAssignValue_default","assignMergeValue_default","isArrayLikeObject","value","isObjectLike_default","isArrayLike_default","isArrayLikeObject_default","safeGet","object","key","safeGet_default","toPlainObject","value","copyObject_default","keysIn_default","toPlainObject_default","baseMergeDeep","object","source","key","srcIndex","mergeFunc","customizer","stack","objValue","safeGet_default","srcValue","stacked","assignMergeValue_default","newValue","isCommon","isArr","isArray_default","isBuff","isBuffer_default","isTyped","isTypedArray_default","isArrayLikeObject_default","copyArray_default","cloneBuffer_default","cloneTypedArray_default","isPlainObject_default","isArguments_default","toPlainObject_default","isObject_default","isFunction_default","initCloneObject_default","baseMergeDeep_default","baseMerge","object","source","srcIndex","customizer","stack","baseFor_default","srcValue","key","Stack_default","isObject_default","baseMergeDeep_default","newValue","safeGet_default","assignMergeValue_default","keysIn_default","baseMerge_default","fromPairs","pairs","index","length","result","pair","fromPairs_default","merge","createAssigner_default","object","source","srcIndex","baseMerge_default","merge_default"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171]}