@syncfusion/ej2-navigations 27.2.4 → 28.1.33-686179
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +243 -260
- package/README.md +301 -301
- package/dist/ej2-navigations.umd.min.js +1 -10
- package/dist/ej2-navigations.umd.min.js.map +1 -1
- package/dist/es6/ej2-navigations.es2015.js +573 -386
- package/dist/es6/ej2-navigations.es2015.js.map +1 -1
- package/dist/es6/ej2-navigations.es5.js +819 -626
- package/dist/es6/ej2-navigations.es5.js.map +1 -1
- package/license +10 -10
- package/package.json +167 -167
- package/src/accordion/accordion-model.d.ts +199 -199
- package/src/accordion/accordion.js +19 -19
- package/src/appbar/appbar-model.d.ts +51 -51
- package/src/appbar/appbar.js +19 -19
- package/src/breadcrumb/breadcrumb-model.d.ts +114 -114
- package/src/breadcrumb/breadcrumb.js +19 -19
- package/src/carousel/carousel-model.d.ts +206 -194
- package/src/carousel/carousel.d.ts +11 -0
- package/src/carousel/carousel.js +43 -22
- package/src/common/h-scroll-model.d.ts +6 -6
- package/src/common/h-scroll.js +19 -19
- package/src/common/menu-base-model.d.ts +236 -229
- package/src/common/menu-base.d.ts +7 -0
- package/src/common/menu-base.js +99 -38
- package/src/common/v-scroll-model.d.ts +6 -6
- package/src/common/v-scroll.js +19 -19
- package/src/context-menu/context-menu-model.d.ts +33 -18
- package/src/context-menu/context-menu.d.ts +13 -0
- package/src/context-menu/context-menu.js +29 -19
- package/src/menu/menu-model.d.ts +45 -45
- package/src/menu/menu.js +23 -19
- package/src/sidebar/sidebar-model.d.ts +189 -189
- package/src/sidebar/sidebar.js +19 -19
- package/src/stepper/stepper.d.ts +9 -0
- package/src/stepper/stepper.js +281 -256
- package/src/stepper-base/stepper-base.js +34 -30
- package/src/tab/tab-model.d.ts +306 -293
- package/src/tab/tab.d.ts +26 -2
- package/src/tab/tab.js +99 -32
- package/src/toolbar/toolbar-model.d.ts +209 -215
- package/src/toolbar/toolbar.d.ts +0 -6
- package/src/toolbar/toolbar.js +19 -19
- package/src/treeview/treeview-model.d.ts +520 -520
- package/src/treeview/treeview.d.ts +2 -10
- package/src/treeview/treeview.js +37 -36
- package/styles/accordion/_all.scss +2 -2
- package/styles/accordion/_bds-definition.scss +167 -167
- package/styles/accordion/_bigger.scss +121 -121
- package/styles/accordion/_bootstrap-dark-definition.scss +169 -167
- package/styles/accordion/_bootstrap-definition.scss +167 -167
- package/styles/accordion/_bootstrap4-definition.scss +177 -175
- package/styles/accordion/_bootstrap5-definition.scss +168 -168
- package/styles/accordion/_bootstrap5.3-definition.scss +168 -168
- package/styles/accordion/_fabric-dark-definition.scss +171 -171
- package/styles/accordion/_fabric-definition.scss +171 -171
- package/styles/accordion/_fluent-definition.scss +168 -168
- package/styles/accordion/_fluent2-definition.scss +167 -167
- package/styles/accordion/_fusionnew-definition.scss +168 -168
- package/styles/accordion/_highcontrast-definition.scss +193 -193
- package/styles/accordion/_highcontrast-light-definition.scss +193 -193
- package/styles/accordion/_layout.scss +236 -236
- package/styles/accordion/_material-dark-definition.scss +171 -171
- package/styles/accordion/_material-definition.scss +165 -165
- package/styles/accordion/_material3-definition.scss +168 -168
- package/styles/accordion/_tailwind-definition.scss +167 -167
- package/styles/accordion/_tailwind3-definition.scss +168 -0
- package/styles/accordion/_theme.scss +418 -418
- package/styles/accordion/bds.css +544 -0
- package/styles/accordion/bds.scss +5 -0
- package/styles/accordion/icons/_bds.scss +15 -15
- package/styles/accordion/icons/_bootstrap-dark.scss +15 -15
- package/styles/accordion/icons/_bootstrap.scss +15 -15
- package/styles/accordion/icons/_bootstrap4.scss +15 -15
- package/styles/accordion/icons/_bootstrap5.3.scss +15 -15
- package/styles/accordion/icons/_bootstrap5.scss +15 -15
- package/styles/accordion/icons/_fabric-dark.scss +15 -15
- package/styles/accordion/icons/_fabric.scss +15 -15
- package/styles/accordion/icons/_fluent.scss +15 -15
- package/styles/accordion/icons/_fluent2.scss +15 -15
- package/styles/accordion/icons/_fusionnew.scss +15 -15
- package/styles/accordion/icons/_highcontrast-light.scss +15 -15
- package/styles/accordion/icons/_highcontrast.scss +15 -15
- package/styles/accordion/icons/_material-dark.scss +15 -15
- package/styles/accordion/icons/_material.scss +15 -15
- package/styles/accordion/icons/_material3.scss +15 -15
- package/styles/accordion/icons/_tailwind.scss +15 -15
- package/styles/accordion/icons/_tailwind3.scss +15 -0
- package/styles/accordion/material3-dark.scss +1 -1
- package/styles/accordion/material3.scss +1 -1
- package/styles/accordion/tailwind-dark.css +2 -2
- package/styles/accordion/tailwind3.css +552 -0
- package/styles/accordion/tailwind3.scss +5 -0
- package/styles/appbar/_all.scss +2 -2
- package/styles/appbar/_bds-definition.scss +24 -24
- package/styles/appbar/_bigger.scss +15 -15
- package/styles/appbar/_bootstrap-dark-definition.scss +6 -6
- package/styles/appbar/_bootstrap-definition.scss +6 -6
- package/styles/appbar/_bootstrap4-definition.scss +6 -6
- package/styles/appbar/_bootstrap5-definition.scss +6 -6
- package/styles/appbar/_bootstrap5.3-definition.scss +6 -6
- package/styles/appbar/_fabric-dark-definition.scss +6 -6
- package/styles/appbar/_fabric-definition.scss +6 -6
- package/styles/appbar/_fluent-definition.scss +6 -6
- package/styles/appbar/_fluent2-definition.scss +23 -23
- package/styles/appbar/_fusionnew-definition.scss +6 -6
- package/styles/appbar/_highcontrast-definition.scss +6 -6
- package/styles/appbar/_highcontrast-light-definition.scss +6 -6
- package/styles/appbar/_layout.scss +76 -76
- package/styles/appbar/_material-dark-definition.scss +6 -6
- package/styles/appbar/_material-definition.scss +6 -6
- package/styles/appbar/_material3-definition.scss +6 -6
- package/styles/appbar/_tailwind-definition.scss +6 -6
- package/styles/appbar/_tailwind3-definition.scss +6 -0
- package/styles/appbar/_theme.scss +216 -216
- package/styles/appbar/bds.css +302 -0
- package/styles/appbar/bds.scss +4 -0
- package/styles/appbar/material3-dark.scss +1 -1
- package/styles/appbar/material3.scss +1 -1
- package/styles/appbar/tailwind3.css +285 -0
- package/styles/appbar/tailwind3.scss +4 -0
- package/styles/bds-lite.css +9233 -0
- package/styles/bds-lite.scss +47 -0
- package/styles/bds.css +11954 -0
- package/styles/bds.scss +59 -0
- package/styles/bootstrap-dark-lite.css +21 -13
- package/styles/bootstrap-dark.css +35 -14
- package/styles/bootstrap-lite.css +21 -13
- package/styles/bootstrap.css +35 -14
- package/styles/bootstrap4-lite.css +23 -15
- package/styles/bootstrap4.css +37 -16
- package/styles/bootstrap5-dark-lite.css +42 -34
- package/styles/bootstrap5-dark.css +56 -35
- package/styles/bootstrap5-lite.css +29 -21
- package/styles/bootstrap5.3-lite.css +29 -13
- package/styles/bootstrap5.3.css +43 -14
- package/styles/bootstrap5.css +43 -22
- package/styles/breadcrumb/_all.scss +2 -2
- package/styles/breadcrumb/_bds-definition.scss +60 -60
- package/styles/breadcrumb/_bigger.scss +168 -160
- package/styles/breadcrumb/_bootstrap-dark-definition.scss +54 -54
- package/styles/breadcrumb/_bootstrap-definition.scss +54 -54
- package/styles/breadcrumb/_bootstrap4-definition.scss +56 -54
- package/styles/breadcrumb/_bootstrap5-definition.scss +65 -63
- package/styles/breadcrumb/_bootstrap5.3-definition.scss +61 -61
- package/styles/breadcrumb/_fabric-dark-definition.scss +59 -59
- package/styles/breadcrumb/_fabric-definition.scss +59 -59
- package/styles/breadcrumb/_fluent-definition.scss +63 -63
- package/styles/breadcrumb/_fluent2-definition.scss +61 -61
- package/styles/breadcrumb/_fusionnew-definition.scss +65 -59
- package/styles/breadcrumb/_highcontrast-definition.scss +61 -61
- package/styles/breadcrumb/_highcontrast-light-definition.scss +61 -61
- package/styles/breadcrumb/_layout.scss +451 -431
- package/styles/breadcrumb/_material-dark-definition.scss +50 -50
- package/styles/breadcrumb/_material-definition.scss +50 -50
- package/styles/breadcrumb/_material3-definition.scss +60 -60
- package/styles/breadcrumb/_tailwind-definition.scss +60 -60
- package/styles/breadcrumb/_tailwind3-definition.scss +61 -0
- package/styles/breadcrumb/_theme.scss +296 -236
- package/styles/breadcrumb/bds.css +418 -0
- package/styles/breadcrumb/bds.scss +5 -0
- package/styles/breadcrumb/bootstrap4.css +2 -2
- package/styles/breadcrumb/fabric-dark.css +3 -3
- package/styles/breadcrumb/icons/_bds.scss +23 -23
- package/styles/breadcrumb/icons/_bootstrap-dark.scss +12 -12
- package/styles/breadcrumb/icons/_bootstrap.scss +12 -12
- package/styles/breadcrumb/icons/_bootstrap4.scss +12 -12
- package/styles/breadcrumb/icons/_bootstrap5.3.scss +23 -23
- package/styles/breadcrumb/icons/_bootstrap5.scss +23 -23
- package/styles/breadcrumb/icons/_fabric-dark.scss +12 -12
- package/styles/breadcrumb/icons/_fabric.scss +12 -12
- package/styles/breadcrumb/icons/_fluent.scss +23 -23
- package/styles/breadcrumb/icons/_fluent2.scss +23 -23
- package/styles/breadcrumb/icons/_fusionnew.scss +23 -23
- package/styles/breadcrumb/icons/_highcontrast-light.scss +12 -12
- package/styles/breadcrumb/icons/_highcontrast.scss +12 -12
- package/styles/breadcrumb/icons/_material-dark.scss +23 -23
- package/styles/breadcrumb/icons/_material.scss +23 -23
- package/styles/breadcrumb/icons/_material3.scss +12 -12
- package/styles/breadcrumb/icons/_tailwind-dark.scss +23 -23
- package/styles/breadcrumb/icons/_tailwind.scss +23 -23
- package/styles/breadcrumb/icons/_tailwind3.scss +23 -0
- package/styles/breadcrumb/material3-dark.scss +1 -1
- package/styles/breadcrumb/material3.scss +1 -1
- package/styles/breadcrumb/tailwind3.css +441 -0
- package/styles/breadcrumb/tailwind3.scss +5 -0
- package/styles/carousel/_all.scss +2 -2
- package/styles/carousel/_bds-definition.scss +20 -20
- package/styles/carousel/_bootstrap-dark-definition.scss +20 -20
- package/styles/carousel/_bootstrap-definition.scss +20 -20
- package/styles/carousel/_bootstrap4-definition.scss +20 -20
- package/styles/carousel/_bootstrap5-definition.scss +20 -20
- package/styles/carousel/_bootstrap5.3-definition.scss +20 -20
- package/styles/carousel/_fabric-dark-definition.scss +20 -20
- package/styles/carousel/_fabric-definition.scss +20 -20
- package/styles/carousel/_fluent-definition.scss +20 -20
- package/styles/carousel/_fluent2-definition.scss +23 -23
- package/styles/carousel/_fusionnew-definition.scss +20 -20
- package/styles/carousel/_highcontrast-definition.scss +20 -20
- package/styles/carousel/_highcontrast-light-definition.scss +20 -20
- package/styles/carousel/_layout.scss +257 -257
- package/styles/carousel/_material-dark-definition.scss +20 -20
- package/styles/carousel/_material-definition.scss +20 -20
- package/styles/carousel/_material3-definition.scss +21 -21
- package/styles/carousel/_tailwind-definition.scss +20 -20
- package/styles/carousel/_tailwind3-definition.scss +24 -0
- package/styles/carousel/_theme.scss +108 -102
- package/styles/carousel/bds.css +426 -0
- package/styles/carousel/bds.scss +5 -0
- package/styles/carousel/fluent2.css +5 -0
- package/styles/carousel/icons/_bds.scss +30 -30
- package/styles/carousel/icons/_bootstrap-dark.scss +30 -30
- package/styles/carousel/icons/_bootstrap.scss +30 -30
- package/styles/carousel/icons/_bootstrap4.scss +30 -30
- package/styles/carousel/icons/_bootstrap5.3.scss +30 -30
- package/styles/carousel/icons/_bootstrap5.scss +30 -30
- package/styles/carousel/icons/_fabric-dark.scss +30 -30
- package/styles/carousel/icons/_fabric.scss +30 -30
- package/styles/carousel/icons/_fluent.scss +30 -30
- package/styles/carousel/icons/_fluent2.scss +30 -30
- package/styles/carousel/icons/_fusionnew.scss +30 -30
- package/styles/carousel/icons/_highcontrast-light.scss +30 -30
- package/styles/carousel/icons/_highcontrast.scss +30 -30
- package/styles/carousel/icons/_material-dark.scss +30 -30
- package/styles/carousel/icons/_material.scss +30 -30
- package/styles/carousel/icons/_material3.scss +30 -30
- package/styles/carousel/icons/_tailwind.scss +30 -30
- package/styles/carousel/icons/_tailwind3.scss +30 -0
- package/styles/carousel/material3-dark.scss +1 -1
- package/styles/carousel/material3.scss +1 -1
- package/styles/carousel/tailwind3.css +396 -0
- package/styles/carousel/tailwind3.scss +5 -0
- package/styles/context-menu/_all.scss +2 -2
- package/styles/context-menu/_bds-definition.scss +67 -67
- package/styles/context-menu/_bigger.scss +111 -96
- package/styles/context-menu/_bootstrap-dark-definition.scss +50 -50
- package/styles/context-menu/_bootstrap-definition.scss +50 -50
- package/styles/context-menu/_bootstrap4-definition.scss +52 -50
- package/styles/context-menu/_bootstrap5-definition.scss +52 -52
- package/styles/context-menu/_bootstrap5.3-definition.scss +52 -52
- package/styles/context-menu/_fabric-dark-definition.scss +50 -50
- package/styles/context-menu/_fabric-definition.scss +50 -50
- package/styles/context-menu/_fluent-definition.scss +51 -51
- package/styles/context-menu/_fluent2-definition.scss +52 -52
- package/styles/context-menu/_fusionnew-definition.scss +52 -51
- package/styles/context-menu/_highcontrast-definition.scss +50 -50
- package/styles/context-menu/_highcontrast-light-definition.scss +50 -50
- package/styles/context-menu/_layout-mixin.scss +140 -140
- package/styles/context-menu/_layout.scss +174 -150
- package/styles/context-menu/_material-dark-definition.scss +50 -50
- package/styles/context-menu/_material-definition.scss +50 -50
- package/styles/context-menu/_material3-definition.scss +51 -51
- package/styles/context-menu/_tailwind-definition.scss +52 -52
- package/styles/context-menu/_tailwind3-definition.scss +55 -0
- package/styles/context-menu/_theme-mixin.scss +91 -91
- package/styles/context-menu/_theme.scss +69 -69
- package/styles/context-menu/bds.css +421 -0
- package/styles/context-menu/bds.scss +8 -0
- package/styles/context-menu/fluent2.css +1 -1
- package/styles/context-menu/icons/_bds.scss +31 -31
- package/styles/context-menu/icons/_bootstrap-dark.scss +31 -31
- package/styles/context-menu/icons/_bootstrap.scss +31 -31
- package/styles/context-menu/icons/_bootstrap4.scss +31 -31
- package/styles/context-menu/icons/_bootstrap5.3.scss +31 -31
- package/styles/context-menu/icons/_bootstrap5.scss +31 -31
- package/styles/context-menu/icons/_fabric-dark.scss +31 -31
- package/styles/context-menu/icons/_fabric.scss +31 -31
- package/styles/context-menu/icons/_fluent.scss +31 -31
- package/styles/context-menu/icons/_fluent2.scss +31 -31
- package/styles/context-menu/icons/_fusionnew.scss +31 -31
- package/styles/context-menu/icons/_highcontrast-light.scss +31 -31
- package/styles/context-menu/icons/_highcontrast.scss +31 -31
- package/styles/context-menu/icons/_material-dark.scss +31 -31
- package/styles/context-menu/icons/_material.scss +31 -31
- package/styles/context-menu/icons/_material3.scss +31 -31
- package/styles/context-menu/icons/_tailwind-dark.scss +31 -31
- package/styles/context-menu/icons/_tailwind.scss +31 -31
- package/styles/context-menu/icons/_tailwind3.scss +31 -0
- package/styles/context-menu/material3-dark.scss +1 -1
- package/styles/context-menu/material3.scss +1 -1
- package/styles/context-menu/tailwind3.css +449 -0
- package/styles/context-menu/tailwind3.scss +8 -0
- package/styles/fabric-dark-lite.css +25 -17
- package/styles/fabric-dark.css +39 -18
- package/styles/fabric-lite.css +21 -13
- package/styles/fabric.css +35 -14
- package/styles/fluent-dark-lite.css +23 -17
- package/styles/fluent-dark.css +37 -18
- package/styles/fluent-lite.css +23 -17
- package/styles/fluent.css +37 -18
- package/styles/fluent2-lite.css +52 -24
- package/styles/fluent2.css +66 -25
- package/styles/h-scroll/_all.scss +2 -2
- package/styles/h-scroll/_bds-definition.scss +83 -83
- package/styles/h-scroll/_bigger.scss +39 -39
- package/styles/h-scroll/_bootstrap-dark-definition.scss +57 -57
- package/styles/h-scroll/_bootstrap-definition.scss +56 -56
- package/styles/h-scroll/_bootstrap4-definition.scss +58 -56
- package/styles/h-scroll/_bootstrap5-definition.scss +83 -83
- package/styles/h-scroll/_bootstrap5.3-definition.scss +83 -83
- package/styles/h-scroll/_fabric-dark-definition.scss +58 -58
- package/styles/h-scroll/_fabric-definition.scss +55 -55
- package/styles/h-scroll/_fluent-definition.scss +83 -83
- package/styles/h-scroll/_fluent2-definition.scss +83 -83
- package/styles/h-scroll/_fusionnew-definition.scss +83 -83
- package/styles/h-scroll/_highcontrast-definition.scss +56 -56
- package/styles/h-scroll/_highcontrast-light-definition.scss +59 -59
- package/styles/h-scroll/_layout.scss +160 -160
- package/styles/h-scroll/_material-dark-definition.scss +85 -85
- package/styles/h-scroll/_material-definition.scss +82 -82
- package/styles/h-scroll/_material3-definition.scss +83 -83
- package/styles/h-scroll/_tailwind-definition.scss +83 -83
- package/styles/h-scroll/_tailwind3-definition.scss +83 -0
- package/styles/h-scroll/_theme.scss +146 -146
- package/styles/h-scroll/bds.css +311 -0
- package/styles/h-scroll/bds.scss +5 -0
- package/styles/h-scroll/icons/_bds.scss +49 -49
- package/styles/h-scroll/icons/_bootstrap-dark.scss +49 -49
- package/styles/h-scroll/icons/_bootstrap.scss +49 -49
- package/styles/h-scroll/icons/_bootstrap4.scss +49 -49
- package/styles/h-scroll/icons/_bootstrap5.3.scss +49 -49
- package/styles/h-scroll/icons/_bootstrap5.scss +49 -49
- package/styles/h-scroll/icons/_fabric-dark.scss +49 -49
- package/styles/h-scroll/icons/_fabric.scss +49 -49
- package/styles/h-scroll/icons/_fluent.scss +49 -49
- package/styles/h-scroll/icons/_fluent2.scss +49 -49
- package/styles/h-scroll/icons/_fusionnew.scss +49 -49
- package/styles/h-scroll/icons/_highcontrast-light.scss +49 -49
- package/styles/h-scroll/icons/_highcontrast.scss +49 -49
- package/styles/h-scroll/icons/_material-dark.scss +49 -49
- package/styles/h-scroll/icons/_material.scss +49 -49
- package/styles/h-scroll/icons/_material3.scss +49 -49
- package/styles/h-scroll/icons/_tailwind.scss +49 -49
- package/styles/h-scroll/icons/_tailwind3.scss +49 -0
- package/styles/h-scroll/material3-dark.scss +1 -1
- package/styles/h-scroll/material3.scss +1 -1
- package/styles/h-scroll/tailwind3.css +311 -0
- package/styles/h-scroll/tailwind3.scss +5 -0
- package/styles/highcontrast-light-lite.css +21 -13
- package/styles/highcontrast-light.css +35 -14
- package/styles/highcontrast-lite.css +24 -16
- package/styles/highcontrast.css +38 -17
- package/styles/material-dark-lite.css +21 -13
- package/styles/material-dark.css +35 -14
- package/styles/material-lite.css +21 -13
- package/styles/material.css +35 -14
- package/styles/material3-dark-lite.css +21 -13
- package/styles/material3-dark.css +45 -15
- package/styles/material3-dark.scss +1 -1
- package/styles/material3-lite.css +21 -13
- package/styles/material3.css +45 -15
- package/styles/material3.scss +1 -1
- package/styles/menu/_all.scss +2 -2
- package/styles/menu/_bds-definition.scss +65 -65
- package/styles/menu/_bigger.scss +381 -355
- package/styles/menu/_bootstrap-dark-definition.scss +61 -61
- package/styles/menu/_bootstrap-definition.scss +65 -65
- package/styles/menu/_bootstrap4-definition.scss +66 -64
- package/styles/menu/_bootstrap5-definition.scss +66 -66
- package/styles/menu/_bootstrap5.3-definition.scss +66 -66
- package/styles/menu/_fabric-dark-definition.scss +61 -61
- package/styles/menu/_fabric-definition.scss +64 -64
- package/styles/menu/_fluent-definition.scss +66 -66
- package/styles/menu/_fluent2-definition.scss +67 -67
- package/styles/menu/_fusionnew-definition.scss +66 -66
- package/styles/menu/_highcontrast-definition.scss +65 -65
- package/styles/menu/_highcontrast-light-definition.scss +61 -61
- package/styles/menu/_layout.scss +501 -466
- package/styles/menu/_material-dark-definition.scss +61 -61
- package/styles/menu/_material-definition.scss +64 -64
- package/styles/menu/_material3-definition.scss +66 -66
- package/styles/menu/_tailwind-definition.scss +65 -65
- package/styles/menu/_tailwind3-definition.scss +66 -0
- package/styles/menu/_theme.scss +428 -386
- package/styles/menu/bds.css +1155 -0
- package/styles/menu/bds.scss +9 -0
- package/styles/menu/bootstrap5-dark.css +2 -2
- package/styles/menu/fluent2.css +13 -4
- package/styles/menu/icons/_bds.scss +104 -104
- package/styles/menu/icons/_bootstrap-dark.scss +105 -105
- package/styles/menu/icons/_bootstrap.scss +104 -104
- package/styles/menu/icons/_bootstrap4.scss +104 -104
- package/styles/menu/icons/_bootstrap5.3.scss +104 -104
- package/styles/menu/icons/_bootstrap5.scss +104 -104
- package/styles/menu/icons/_fabric-dark.scss +104 -104
- package/styles/menu/icons/_fabric.scss +104 -104
- package/styles/menu/icons/_fluent.scss +104 -104
- package/styles/menu/icons/_fluent2.scss +104 -104
- package/styles/menu/icons/_fusionnew.scss +104 -104
- package/styles/menu/icons/_highcontrast-light.scss +104 -104
- package/styles/menu/icons/_highcontrast.scss +104 -104
- package/styles/menu/icons/_material-dark.scss +104 -104
- package/styles/menu/icons/_material.scss +104 -104
- package/styles/menu/icons/_material3.scss +104 -104
- package/styles/menu/icons/_tailwind-dark.scss +104 -104
- package/styles/menu/icons/_tailwind.scss +104 -104
- package/styles/menu/icons/_tailwind3.scss +104 -0
- package/styles/menu/material3-dark.scss +1 -1
- package/styles/menu/material3.scss +1 -1
- package/styles/menu/tailwind3.css +1238 -0
- package/styles/menu/tailwind3.scss +9 -0
- package/styles/pager/_all.scss +2 -2
- package/styles/pager/_bds-definition.scss +152 -152
- package/styles/pager/_bigger.scss +365 -304
- package/styles/pager/_bootstrap-dark-definition.scss +152 -151
- package/styles/pager/_bootstrap-definition.scss +151 -151
- package/styles/pager/_bootstrap4-definition.scss +152 -151
- package/styles/pager/_bootstrap5-definition.scss +166 -166
- package/styles/pager/_bootstrap5.3-definition.scss +166 -166
- package/styles/pager/_fabric-dark-definition.scss +149 -149
- package/styles/pager/_fabric-definition.scss +149 -149
- package/styles/pager/_fluent-definition.scss +153 -153
- package/styles/pager/_fluent2-definition.scss +152 -152
- package/styles/pager/_fusionnew-definition.scss +166 -166
- package/styles/pager/_highcontrast-definition.scss +149 -149
- package/styles/pager/_highcontrast-light-definition.scss +149 -149
- package/styles/pager/_layout.scss +768 -742
- package/styles/pager/_material-dark-definition.scss +150 -150
- package/styles/pager/_material-definition.scss +150 -150
- package/styles/pager/_material3-definition.scss +166 -166
- package/styles/pager/_tailwind-definition.scss +152 -152
- package/styles/pager/_tailwind3-definition.scss +166 -0
- package/styles/pager/_theme.scss +189 -189
- package/styles/pager/bds.css +915 -0
- package/styles/pager/bds.scss +5 -0
- package/styles/pager/bootstrap-dark.css +7 -0
- package/styles/pager/bootstrap.css +7 -0
- package/styles/pager/bootstrap4.css +7 -0
- package/styles/pager/bootstrap5-dark.css +7 -0
- package/styles/pager/bootstrap5.3.css +7 -0
- package/styles/pager/bootstrap5.css +7 -0
- package/styles/pager/fabric-dark.css +7 -0
- package/styles/pager/fabric.css +7 -0
- package/styles/pager/fluent-dark.css +7 -0
- package/styles/pager/fluent.css +7 -0
- package/styles/pager/fluent2.css +10 -0
- package/styles/pager/highcontrast-light.css +7 -0
- package/styles/pager/highcontrast.css +7 -0
- package/styles/pager/icons/_bds.scss +50 -50
- package/styles/pager/icons/_bootstrap-dark.scss +50 -50
- package/styles/pager/icons/_bootstrap.scss +50 -50
- package/styles/pager/icons/_bootstrap4.scss +50 -50
- package/styles/pager/icons/_bootstrap5.3.scss +50 -50
- package/styles/pager/icons/_bootstrap5.scss +50 -50
- package/styles/pager/icons/_fabric-dark.scss +50 -50
- package/styles/pager/icons/_fabric.scss +50 -50
- package/styles/pager/icons/_fluent.scss +50 -50
- package/styles/pager/icons/_fluent2.scss +50 -50
- package/styles/pager/icons/_fusionnew.scss +50 -50
- package/styles/pager/icons/_highcontrast-light.scss +50 -50
- package/styles/pager/icons/_highcontrast.scss +46 -46
- package/styles/pager/icons/_material-dark.scss +50 -50
- package/styles/pager/icons/_material.scss +46 -46
- package/styles/pager/icons/_material3.scss +50 -50
- package/styles/pager/icons/_tailwind.scss +50 -50
- package/styles/pager/icons/_tailwind3.scss +50 -0
- package/styles/pager/material-dark.css +7 -0
- package/styles/pager/material.css +7 -0
- package/styles/pager/material3-dark.css +15 -1
- package/styles/pager/material3-dark.scss +1 -1
- package/styles/pager/material3.css +15 -1
- package/styles/pager/material3.scss +1 -1
- package/styles/pager/tailwind-dark.css +17 -10
- package/styles/pager/tailwind.css +17 -10
- package/styles/pager/tailwind3.css +875 -0
- package/styles/pager/tailwind3.scss +5 -0
- package/styles/sidebar/_all.scss +3 -3
- package/styles/sidebar/_bds-definition.scss +53 -53
- package/styles/sidebar/_bootstrap-dark-definition.scss +4 -4
- package/styles/sidebar/_bootstrap-definition.scss +4 -4
- package/styles/sidebar/_bootstrap4-definition.scss +4 -4
- package/styles/sidebar/_bootstrap5-definition.scss +6 -6
- package/styles/sidebar/_bootstrap5.3-definition.scss +6 -6
- package/styles/sidebar/_fabric-dark-definition.scss +4 -4
- package/styles/sidebar/_fabric-definition.scss +4 -4
- package/styles/sidebar/_fluent-definition.scss +6 -6
- package/styles/sidebar/_fluent2-definition.scss +8 -8
- package/styles/sidebar/_fusionnew-definition.scss +6 -6
- package/styles/sidebar/_highcontrast-definition.scss +4 -4
- package/styles/sidebar/_highcontrast-light-definition.scss +4 -4
- package/styles/sidebar/_icons.scss +1 -1
- package/styles/sidebar/_layout.scss +1 -1
- package/styles/sidebar/_material-dark-definition.scss +4 -4
- package/styles/sidebar/_material-definition.scss +6 -6
- package/styles/sidebar/_material3-definition.scss +4 -4
- package/styles/sidebar/_tailwind-definition.scss +6 -6
- package/styles/sidebar/_tailwind3-definition.scss +6 -0
- package/styles/sidebar/_theme.scss +251 -251
- package/styles/sidebar/bds.css +263 -0
- package/styles/sidebar/bds.scss +3 -0
- package/styles/sidebar/bootstrap5-dark.css +1 -1
- package/styles/sidebar/material3-dark.scss +1 -1
- package/styles/sidebar/material3.scss +1 -1
- package/styles/sidebar/tailwind3.css +227 -0
- package/styles/sidebar/tailwind3.scss +3 -0
- package/styles/stepper/_bds-definition.scss +72 -72
- package/styles/stepper/_bigger.scss +53 -53
- package/styles/stepper/_bootstrap4-definition.scss +4 -2
- package/styles/stepper/_bootstrap5.3-definition.scss +72 -72
- package/styles/stepper/_fluent2-definition.scss +72 -72
- package/styles/stepper/_layout.scss +2 -0
- package/styles/stepper/_material-dark-definition.scss +4 -2
- package/styles/stepper/_material-definition.scss +7 -5
- package/styles/stepper/_tailwind3-definition.scss +72 -0
- package/styles/stepper/_theme.scss +2 -1
- package/styles/stepper/bds.css +724 -0
- package/styles/stepper/bds.scss +6 -0
- package/styles/stepper/bootstrap-dark.css +4 -1
- package/styles/stepper/bootstrap.css +4 -1
- package/styles/stepper/bootstrap4.css +4 -1
- package/styles/stepper/bootstrap5-dark.css +4 -1
- package/styles/stepper/bootstrap5.3.css +4 -1
- package/styles/stepper/bootstrap5.css +4 -1
- package/styles/stepper/fabric-dark.css +4 -1
- package/styles/stepper/fabric.css +4 -1
- package/styles/stepper/fluent-dark.css +4 -1
- package/styles/stepper/fluent.css +4 -1
- package/styles/stepper/fluent2.css +4 -1
- package/styles/stepper/highcontrast-light.css +4 -1
- package/styles/stepper/highcontrast.css +4 -1
- package/styles/stepper/icons/_bds.scss +5 -5
- package/styles/stepper/icons/_bootstrap5.3.scss +5 -5
- package/styles/stepper/icons/_fluent2.scss +5 -5
- package/styles/stepper/icons/_tailwind3.scss +5 -0
- package/styles/stepper/material-dark.css +4 -1
- package/styles/stepper/material.css +4 -1
- package/styles/stepper/material3-dark.css +4 -1
- package/styles/stepper/material3-dark.scss +1 -1
- package/styles/stepper/material3.css +4 -1
- package/styles/stepper/material3.scss +1 -1
- package/styles/stepper/tailwind-dark.css +4 -1
- package/styles/stepper/tailwind.css +4 -1
- package/styles/stepper/tailwind3.css +724 -0
- package/styles/stepper/tailwind3.scss +6 -0
- package/styles/tab/_all.scss +2 -2
- package/styles/tab/_bds-definition.scss +661 -661
- package/styles/tab/_bigger.scss +1276 -1260
- package/styles/tab/_bootstrap-dark-definition.scss +630 -630
- package/styles/tab/_bootstrap-definition.scss +629 -631
- package/styles/tab/_bootstrap4-definition.scss +637 -637
- package/styles/tab/_bootstrap5-definition.scss +635 -635
- package/styles/tab/_bootstrap5.3-definition.scss +636 -636
- package/styles/tab/_fabric-dark-definition.scss +641 -643
- package/styles/tab/_fabric-definition.scss +643 -645
- package/styles/tab/_fluent-definition.scss +637 -637
- package/styles/tab/_fluent2-definition.scss +664 -666
- package/styles/tab/_fusionnew-definition.scss +632 -634
- package/styles/tab/_highcontrast-definition.scss +667 -669
- package/styles/tab/_highcontrast-light-definition.scss +666 -668
- package/styles/tab/_icons.scss +34 -34
- package/styles/tab/_layout.scss +2187 -2187
- package/styles/tab/_material-dark-definition.scss +646 -648
- package/styles/tab/_material-definition.scss +645 -647
- package/styles/tab/_material3-definition.scss +634 -636
- package/styles/tab/_tailwind-definition.scss +648 -650
- package/styles/tab/_tailwind3-definition.scss +634 -0
- package/styles/tab/_theme.scss +1580 -1592
- package/styles/tab/bds.css +4190 -0
- package/styles/tab/bds.scss +6 -0
- package/styles/tab/bootstrap-dark.css +7 -11
- package/styles/tab/bootstrap.css +7 -11
- package/styles/tab/bootstrap4.css +7 -11
- package/styles/tab/bootstrap5-dark.css +7 -11
- package/styles/tab/bootstrap5.3.css +7 -11
- package/styles/tab/bootstrap5.css +7 -11
- package/styles/tab/fabric-dark.css +7 -11
- package/styles/tab/fabric.css +7 -11
- package/styles/tab/fluent-dark.css +7 -11
- package/styles/tab/fluent.css +7 -11
- package/styles/tab/fluent2.css +10 -14
- package/styles/tab/highcontrast-light.css +7 -11
- package/styles/tab/highcontrast.css +7 -11
- package/styles/tab/icons/_bds.scss +90 -90
- package/styles/tab/icons/_bootstrap-dark.scss +98 -98
- package/styles/tab/icons/_bootstrap.scss +98 -98
- package/styles/tab/icons/_bootstrap4.scss +101 -101
- package/styles/tab/icons/_bootstrap5.3.scss +90 -90
- package/styles/tab/icons/_bootstrap5.scss +90 -90
- package/styles/tab/icons/_fabric-dark.scss +98 -98
- package/styles/tab/icons/_fabric.scss +98 -98
- package/styles/tab/icons/_fluent.scss +98 -98
- package/styles/tab/icons/_fluent2.scss +98 -98
- package/styles/tab/icons/_fusionnew.scss +90 -90
- package/styles/tab/icons/_highcontrast-light.scss +90 -90
- package/styles/tab/icons/_highcontrast.scss +101 -101
- package/styles/tab/icons/_material-dark.scss +90 -90
- package/styles/tab/icons/_material.scss +90 -90
- package/styles/tab/icons/_material3.scss +90 -90
- package/styles/tab/icons/_tailwind.scss +90 -90
- package/styles/tab/icons/_tailwind3.scss +90 -0
- package/styles/tab/material-dark.css +7 -11
- package/styles/tab/material.css +7 -11
- package/styles/tab/material3-dark.css +9 -11
- package/styles/tab/material3-dark.scss +1 -1
- package/styles/tab/material3.css +9 -11
- package/styles/tab/material3.scss +1 -1
- package/styles/tab/tailwind-dark.css +11 -15
- package/styles/tab/tailwind.css +11 -15
- package/styles/tab/tailwind3.css +4125 -0
- package/styles/tab/tailwind3.scss +6 -0
- package/styles/tailwind-dark-lite.css +31 -23
- package/styles/tailwind-dark.css +52 -31
- package/styles/tailwind-lite.css +29 -21
- package/styles/tailwind.css +50 -29
- package/styles/tailwind3-lite.css +9055 -0
- package/styles/tailwind3-lite.scss +47 -0
- package/styles/tailwind3.css +11743 -0
- package/styles/tailwind3.scss +59 -0
- package/styles/toolbar/_all.scss +2 -2
- package/styles/toolbar/_bds-definition.scss +197 -197
- package/styles/toolbar/_bigger.scss +323 -309
- package/styles/toolbar/_bootstrap-dark-definition.scss +193 -193
- package/styles/toolbar/_bootstrap-definition.scss +203 -203
- package/styles/toolbar/_bootstrap4-definition.scss +200 -198
- package/styles/toolbar/_bootstrap5-definition.scss +198 -198
- package/styles/toolbar/_bootstrap5.3-definition.scss +198 -198
- package/styles/toolbar/_fabric-dark-definition.scss +207 -207
- package/styles/toolbar/_fabric-definition.scss +195 -195
- package/styles/toolbar/_fluent-definition.scss +197 -197
- package/styles/toolbar/_fluent2-definition.scss +198 -198
- package/styles/toolbar/_fusionnew-definition.scss +198 -198
- package/styles/toolbar/_highcontrast-definition.scss +204 -204
- package/styles/toolbar/_highcontrast-light-definition.scss +218 -218
- package/styles/toolbar/_layout.scss +748 -742
- package/styles/toolbar/_material-dark-definition.scss +233 -231
- package/styles/toolbar/_material-definition.scss +221 -219
- package/styles/toolbar/_material3-definition.scss +199 -199
- package/styles/toolbar/_tailwind-definition.scss +197 -197
- package/styles/toolbar/_tailwind3-definition.scss +199 -0
- package/styles/toolbar/_theme.scss +449 -436
- package/styles/toolbar/bds.css +1219 -0
- package/styles/toolbar/bds.scss +9 -0
- package/styles/toolbar/bootstrap-dark.css +1 -1
- package/styles/toolbar/bootstrap.css +1 -1
- package/styles/toolbar/bootstrap4.css +1 -1
- package/styles/toolbar/bootstrap5-dark.css +19 -19
- package/styles/toolbar/bootstrap5.3.css +9 -1
- package/styles/toolbar/bootstrap5.css +9 -9
- package/styles/toolbar/fabric-dark.css +1 -1
- package/styles/toolbar/fabric.css +1 -1
- package/styles/toolbar/fluent-dark.css +1 -1
- package/styles/toolbar/fluent.css +1 -1
- package/styles/toolbar/fluent2.css +1 -1
- package/styles/toolbar/highcontrast-light.css +1 -1
- package/styles/toolbar/highcontrast.css +1 -1
- package/styles/toolbar/icons/_bds.scss +14 -14
- package/styles/toolbar/icons/_bootstrap-dark.scss +14 -14
- package/styles/toolbar/icons/_bootstrap.scss +14 -14
- package/styles/toolbar/icons/_bootstrap4.scss +14 -14
- package/styles/toolbar/icons/_bootstrap5.3.scss +14 -14
- package/styles/toolbar/icons/_bootstrap5.scss +14 -14
- package/styles/toolbar/icons/_fabric-dark.scss +14 -14
- package/styles/toolbar/icons/_fabric.scss +14 -14
- package/styles/toolbar/icons/_fluent.scss +14 -14
- package/styles/toolbar/icons/_fluent2.scss +14 -14
- package/styles/toolbar/icons/_fusionnew.scss +14 -14
- package/styles/toolbar/icons/_highcontrast-light.scss +14 -14
- package/styles/toolbar/icons/_highcontrast.scss +14 -14
- package/styles/toolbar/icons/_material-dark.scss +14 -14
- package/styles/toolbar/icons/_material.scss +14 -14
- package/styles/toolbar/icons/_material3.scss +14 -14
- package/styles/toolbar/icons/_tailwind.scss +14 -14
- package/styles/toolbar/icons/_tailwind3.scss +14 -0
- package/styles/toolbar/material-dark.css +1 -1
- package/styles/toolbar/material.css +1 -1
- package/styles/toolbar/material3-dark.css +1 -1
- package/styles/toolbar/material3-dark.scss +1 -1
- package/styles/toolbar/material3.css +1 -1
- package/styles/toolbar/material3.scss +1 -1
- package/styles/toolbar/tailwind-dark.css +1 -1
- package/styles/toolbar/tailwind.css +1 -1
- package/styles/toolbar/tailwind3.css +1211 -0
- package/styles/toolbar/tailwind3.scss +9 -0
- package/styles/treeview/_all.scss +2 -2
- package/styles/treeview/_bds-definition.scss +131 -131
- package/styles/treeview/_bigger.scss +406 -393
- package/styles/treeview/_bootstrap-dark-definition.scss +118 -118
- package/styles/treeview/_bootstrap-definition.scss +113 -113
- package/styles/treeview/_bootstrap4-definition.scss +143 -141
- package/styles/treeview/_bootstrap5-definition.scss +122 -120
- package/styles/treeview/_bootstrap5.3-definition.scss +119 -119
- package/styles/treeview/_fabric-dark-definition.scss +116 -116
- package/styles/treeview/_fabric-definition.scss +112 -112
- package/styles/treeview/_fluent-definition.scss +122 -120
- package/styles/treeview/_fluent2-definition.scss +128 -128
- package/styles/treeview/_fusionnew-definition.scss +120 -120
- package/styles/treeview/_highcontrast-definition.scss +118 -118
- package/styles/treeview/_highcontrast-light-definition.scss +123 -123
- package/styles/treeview/_layout.scss +761 -724
- package/styles/treeview/_material-dark-definition.scss +114 -114
- package/styles/treeview/_material-definition.scss +112 -112
- package/styles/treeview/_material3-definition.scss +110 -110
- package/styles/treeview/_tailwind-definition.scss +126 -124
- package/styles/treeview/_tailwind3-definition.scss +126 -0
- package/styles/treeview/_theme.scss +352 -350
- package/styles/treeview/bds.css +1031 -0
- package/styles/treeview/bds.scss +7 -0
- package/styles/treeview/bootstrap-dark.css +16 -1
- package/styles/treeview/bootstrap.css +16 -1
- package/styles/treeview/bootstrap4.css +16 -1
- package/styles/treeview/bootstrap5-dark.css +16 -1
- package/styles/treeview/bootstrap5.3.css +16 -1
- package/styles/treeview/bootstrap5.css +16 -1
- package/styles/treeview/fabric-dark.css +16 -1
- package/styles/treeview/fabric.css +16 -1
- package/styles/treeview/fluent-dark.css +18 -5
- package/styles/treeview/fluent.css +18 -5
- package/styles/treeview/fluent2.css +22 -4
- package/styles/treeview/highcontrast-light.css +16 -1
- package/styles/treeview/highcontrast.css +19 -4
- package/styles/treeview/icons/_bds.scss +44 -44
- package/styles/treeview/icons/_bootstrap-dark.scss +40 -40
- package/styles/treeview/icons/_bootstrap.scss +40 -40
- package/styles/treeview/icons/_bootstrap4.scss +40 -40
- package/styles/treeview/icons/_bootstrap5.3.scss +44 -44
- package/styles/treeview/icons/_bootstrap5.scss +44 -44
- package/styles/treeview/icons/_fabric-dark.scss +44 -44
- package/styles/treeview/icons/_fabric.scss +44 -44
- package/styles/treeview/icons/_fluent.scss +44 -44
- package/styles/treeview/icons/_fluent2.scss +44 -44
- package/styles/treeview/icons/_fusionnew.scss +44 -44
- package/styles/treeview/icons/_highcontrast-light.scss +44 -44
- package/styles/treeview/icons/_highcontrast.scss +44 -44
- package/styles/treeview/icons/_material-dark.scss +44 -44
- package/styles/treeview/icons/_material.scss +44 -44
- package/styles/treeview/icons/_material3.scss +44 -44
- package/styles/treeview/icons/_tailwind-dark.scss +44 -44
- package/styles/treeview/icons/_tailwind.scss +44 -44
- package/styles/treeview/icons/_tailwind3.scss +44 -0
- package/styles/treeview/material-dark.css +16 -1
- package/styles/treeview/material.css +16 -1
- package/styles/treeview/material3-dark.css +16 -1
- package/styles/treeview/material3-dark.scss +1 -1
- package/styles/treeview/material3.css +16 -1
- package/styles/treeview/material3.scss +1 -1
- package/styles/treeview/tailwind-dark.css +17 -2
- package/styles/treeview/tailwind.css +17 -2
- package/styles/treeview/tailwind3.css +806 -0
- package/styles/treeview/tailwind3.scss +7 -0
- package/styles/v-scroll/_all.scss +2 -2
- package/styles/v-scroll/_bds-definition.scss +49 -49
- package/styles/v-scroll/_bigger.scss +28 -28
- package/styles/v-scroll/_bootstrap-dark-definition.scss +51 -51
- package/styles/v-scroll/_bootstrap-definition.scss +49 -49
- package/styles/v-scroll/_bootstrap4-definition.scss +49 -49
- package/styles/v-scroll/_bootstrap5-definition.scss +49 -49
- package/styles/v-scroll/_bootstrap5.3-definition.scss +49 -49
- package/styles/v-scroll/_fabric-dark-definition.scss +52 -52
- package/styles/v-scroll/_fabric-definition.scss +50 -50
- package/styles/v-scroll/_fluent-definition.scss +49 -49
- package/styles/v-scroll/_fluent2-definition.scss +49 -49
- package/styles/v-scroll/_fusionnew-definition.scss +49 -49
- package/styles/v-scroll/_highcontrast-definition.scss +50 -50
- package/styles/v-scroll/_highcontrast-light-definition.scss +52 -52
- package/styles/v-scroll/_layout.scss +135 -135
- package/styles/v-scroll/_material-dark-definition.scss +79 -79
- package/styles/v-scroll/_material-definition.scss +77 -77
- package/styles/v-scroll/_material3-definition.scss +49 -49
- package/styles/v-scroll/_tailwind-definition.scss +49 -49
- package/styles/v-scroll/_tailwind3-definition.scss +49 -0
- package/styles/v-scroll/_theme.scss +114 -114
- package/styles/v-scroll/bds.css +218 -0
- package/styles/v-scroll/bds.scss +5 -0
- package/styles/v-scroll/fabric-dark.css +1 -1
- package/styles/v-scroll/icons/_bds.scss +27 -27
- package/styles/v-scroll/icons/_bootstrap-dark.scss +27 -27
- package/styles/v-scroll/icons/_bootstrap.scss +27 -27
- package/styles/v-scroll/icons/_bootstrap4.scss +27 -27
- package/styles/v-scroll/icons/_bootstrap5.3.scss +27 -27
- package/styles/v-scroll/icons/_bootstrap5.scss +27 -27
- package/styles/v-scroll/icons/_fabric-dark.scss +27 -27
- package/styles/v-scroll/icons/_fabric.scss +27 -27
- package/styles/v-scroll/icons/_fluent.scss +27 -27
- package/styles/v-scroll/icons/_fluent2.scss +27 -27
- package/styles/v-scroll/icons/_fusionnew.scss +27 -27
- package/styles/v-scroll/icons/_highcontrast-light.scss +27 -27
- package/styles/v-scroll/icons/_highcontrast.scss +27 -27
- package/styles/v-scroll/icons/_material-dark.scss +27 -27
- package/styles/v-scroll/icons/_material.scss +27 -27
- package/styles/v-scroll/icons/_material3.scss +27 -27
- package/styles/v-scroll/icons/_tailwind.scss +27 -27
- package/styles/v-scroll/icons/_tailwind3.scss +27 -0
- package/styles/v-scroll/material3-dark.scss +1 -1
- package/styles/v-scroll/material3.scss +1 -1
- package/styles/v-scroll/tailwind3.css +218 -0
- package/styles/v-scroll/tailwind3.scss +5 -0
- package/tslint.json +111 -111
- package/dist/ej2-navigations.min.js +0 -10
- package/dist/global/ej2-navigations.min.js +0 -11
- package/dist/global/ej2-navigations.min.js.map +0 -1
- package/dist/global/index.d.ts +0 -14
- package/helpers/e2e/accordionHelper.d.ts +0 -56
- package/helpers/e2e/accordionHelper.js +0 -71
- package/helpers/e2e/contextmenuHelper.d.ts +0 -37
- package/helpers/e2e/contextmenuHelper.js +0 -53
- package/helpers/e2e/index.d.ts +0 -7
- package/helpers/e2e/index.js +0 -14
- package/helpers/e2e/menuHelper.d.ts +0 -37
- package/helpers/e2e/menuHelper.js +0 -53
- package/helpers/e2e/sidebarHelper.d.ts +0 -94
- package/helpers/e2e/sidebarHelper.js +0 -110
- package/helpers/e2e/tabHelper.d.ts +0 -60
- package/helpers/e2e/tabHelper.js +0 -74
- package/helpers/e2e/toolbarHelper.d.ts +0 -60
- package/helpers/e2e/toolbarHelper.js +0 -74
- package/helpers/e2e/treeview.d.ts +0 -50
- package/helpers/e2e/treeview.js +0 -80
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-navigations.min.js","sources":["../../src/common/menu-scroll.js","../../src/common/h-scroll.js","../../src/common/v-scroll.js","../../src/common/menu-base.js","../../src/toolbar/toolbar.js","../../src/accordion/accordion.js","../../src/context-menu/context-menu.js","../../src/menu/menu.js","../../src/tab/tab.js","../../src/treeview/treeview.js","../../src/sidebar/sidebar.js","../../src/breadcrumb/breadcrumb.js","../../src/carousel/carousel.js","../../src/appbar/appbar.js","../../src/stepper-base/stepper-base.js","../../src/stepper/stepper.js"],"sourcesContent":["import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new HScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new VScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n _this.isAnimationNone = false;\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n if (!this.isMenu && !this.target) {\n EventHandler.add(document, 'scroll', this.scrollHandler, this);\n }\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else if (action === 'tab' && cli.classList.contains(SEPARATOR)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli && (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE))) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n if (!document.body.contains(this.element) && navIdxLen === 0) {\n return null;\n }\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.isContextMenuClosed = false;\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n trgtliId = new regExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && e.target.classList && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 &&\n !_this.isMenusClosed && !_this.isCmenuHover) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = void 0;\n if (this.portals) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n portals = this.portals.splice(0, this.items.length);\n }\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n // eslint-disable-next-line guard-for-in\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n _this.isContextMenuClosed = true;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n var menuWrapper = closest(e.target, '.e-menu-wrapper');\n if (menuWrapper && menuWrapper.querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n this.isTapHold = this.isTapHold ? false : this.isTapHold;\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!this.isAnimationNone && !cli || (cli && !cli.querySelector('.' + CARET))) {\n if (navigator.platform.toUpperCase().indexOf('MAC') < 0 || (navigator.platform.toUpperCase().indexOf('MAC') >= 0 && !e.ctrlKey)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n if (ul && ul.children) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n if (!this.isMenu && !this.target) {\n EventHandler.remove(document, 'scroll', this.scrollHandler);\n }\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n if (this.hamburgerMode && ul) {\n ul.style.top = '0px';\n }\n this.isAnimationNone = this.animationSettings.effect === 'None';\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n if (pElement) {\n pUlHeight = pElement.offsetHeight;\n }\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n if (pElement) {\n pElement.style.maxHeight = '';\n }\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode && pElement) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n if (pElement) {\n pElement.style.minHeight = '';\n }\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen && (this.isMenu || (!this.isMenu && this.isContextMenuClosed))) {\n if (this.isMenu || !Browser.isDevice) {\n ul.style.display = 'block';\n }\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n this.isAnimationNone = false;\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n menuitem.parentObj = iitems[0].parentObj;\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n if (i === items.length - 1 && !this.isMenu && ul.style.display === 'block') {\n this.setPosition(null, ul, parseFloat(ul.style.top), parseFloat(ul.style.left));\n ul.style.display = 'block';\n }\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n detach(wrapper);\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(true)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n * <div id=\"toolbar\"/>\n * <script>\n * var toolbarObj = new Toolbar();\n * toolbarObj.appendTo(\"#toolbar\");\n * </script>\n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n document.removeEventListener('scroll', this.clickEvent);\n document.removeEventListener('click', this.scrollEvent);\n this.scrollEvent = null;\n this.clickEvent = null;\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n var isClickBinded = itemObj && !isNOU(itemObj.click) && typeof itemObj.click == 'object' ?\n !isNOU(itemObj.click.observers) && itemObj.click.observers.length > 0 :\n !isNOU(itemObj) && !isNOU(itemObj.click);\n if (isClickBinded) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n popObj.width = this.getToolbarPopupWidth(this.element);\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n Toolbar.prototype.getToolbarPopupWidth = function (ele) {\n var eleStyles = window.getComputedStyle(ele);\n return parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.clickEvent = this.docEvent.bind(this);\n this.scrollEvent = this.docEvent.bind(this);\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = this.getToolbarPopupWidth(this.element);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n document.addEventListener('scroll', this.clickEvent);\n document.addEventListener('click', this.scrollEvent);\n if (this.overflowMode !== 'Extended') {\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n }\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else if (this.overflowMode !== 'Extended') {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n else {\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n if (this.overflowMode !== 'Extended') {\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n }\n else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n // eslint-disable-next-line max-len\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = {\n minWidth: el.style.minWidth, height: el.style.height,\n minHeight: el.style.minHeight\n };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT, attrs: { role: 'group' } }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER, attrs: { role: 'group' } }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT, attrs: { role: 'group' } }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n var previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n if (previousEle) {\n previousEle.removeAttribute('tabindex');\n }\n previousEle = this.activeEle;\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNOU(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n var tabindexValue = this.getDataTabindex(previousEle) === '-1' ? '0' : this.getDataTabindex(previousEle);\n previousEle.setAttribute('tabindex', tabindexValue);\n }\n else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle), 10) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n this.popObj.width = this.getToolbarPopupWidth(this.element);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event, KeyboardEvents, rippleEffect, animationMode } from '@syncfusion/ej2-base';\nimport { getUniqueID, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isVisible, closest, attributes, detach, select, addClass, removeClass, append } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Collection, Animation } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, selectAll, SanitizeHtmlHelper, isRippleEnabled } from '@syncfusion/ej2-base';\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT = 'e-accordion';\nvar CLS_ITEM = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nvar AccordionActionSettings = /** @class */ (function (_super) {\n __extends(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\nexport { AccordionActionSettings };\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nvar AccordionAnimationSettings = /** @class */ (function (_super) {\n __extends(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\nexport { AccordionAnimationSettings };\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @class */ (function (_super) {\n __extends(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n __decorate([\n Property(true)\n ], AccordionItem.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], AccordionItem.prototype, \"disabled\", void 0);\n __decorate([\n Property()\n ], AccordionItem.prototype, \"id\", void 0);\n return AccordionItem;\n}(ChildProperty));\nexport { AccordionItem };\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n * <div id='accordion'/>\n * <script>\n * var accordionObj = new Accordion();\n * accordionObj.appendTo('#accordion');\n * </script>\n * ```\n */\nvar Accordion = /** @class */ (function (_super) {\n __extends(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n *\n * @param {AccordionModel} options - Specifies Accordion model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Accordion.prototype.destroy = function () {\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach(function (el) {\n ele.removeChild(el);\n });\n if (this.trgtEle) {\n this.trgtEle = null;\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n this.ctrlTem = null;\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n this.element.removeAttribute('data-ripple');\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (nested && nested.firstElementChild && nested.firstElementChild.firstElementChild) {\n if (nested.firstElementChild.firstElementChild.classList.contains(CLS_ROOT)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Accordion.prototype.render = function () {\n this.initializeHeaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyle(this.element, { 'width': width, 'height': height });\n if (isNOU(this.initExpand)) {\n this.initExpand = [];\n }\n if (!isNOU(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.wireFocusEvents = function () {\n var acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM));\n for (var _i = 0, acrdItem_1 = acrdItem; _i < acrdItem_1.length; _i++) {\n var item = acrdItem_1[_i];\n var headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n };\n Accordion.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n else {\n return templateCompiler(template);\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeHeaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n Accordion.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[parseInt(i.toString(), 10)]);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (!isNOU(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (!isNOU(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNOU(acrdnHdr) || isNOU(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM);\n }\n var index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNOU(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNOU(acrdnCtn) || !isNOU(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.afterContentRender = function (trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n var _this = this;\n var acrdActive = [];\n this.trigger('clicked', eventArgs);\n var cntclkCheck = (acrdnCtn && !isNOU(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT;\n var inlineEleAcrdn = acrdnCtn && !isNOU(select('.' + CLS_ROOT, acrdnCtn)) && isNOU(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNOU(select('.' + CLS_ROOT, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNOU(acrdnItem) && !isNOU(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNOU(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn_1);\n }\n if (!isNOU(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNOU(header) && !trgt.classList.contains(CLS_ROOT) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNOU(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n e.preventDefault();\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n e.preventDefault();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-disabled': 'false', 'aria-expanded': 'false'\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle = this.createElement('div', {\n className: CLS_ITEM, id: item.id || getUniqueID('acrdn_item')\n });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getHeaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n var header = item.header;\n if (this.enableHtmlSanitizer && typeof (item.header) === 'string') {\n header = SanitizeHtmlHelper.sanitize(item.header);\n }\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, header, index));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNOU(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNOU(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNOU(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNOU(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n Accordion.prototype.fetchElement = function (ele, value, index) {\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length && value !== 'Button') {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n catch (e) {\n if (typeof (value) === 'string') {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n }\n else if (value instanceof (HTMLElement)) {\n ele.appendChild(value);\n if (this.trgtEle) {\n ele.firstElementChild.style.display = '';\n }\n }\n else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var templateProps = void 0;\n var templateName = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n templateName = 'header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n templateName = 'content';\n }\n tempArray = templateFn({}, this, templateName, templateProps, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0 && !(isNOU(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n }\n if (!isNOU(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'region');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n if (!isNOU(this.dataSource) && this.dataSource.length > 0) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n append(this.getItemTemplate()(this.dataSource[parseInt(index.toString(), 10)], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n var content = this.items[parseInt(index.toString(), 10)].content;\n if (this.enableHtmlSanitizer && typeof (content) === 'string') {\n content = SanitizeHtmlHelper.sanitize(content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, content, index));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNOU(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None' && animationMode !== 'Enable') || (animationMode === 'Disable')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideDown';\n animate.name = 'SlideDown';\n }\n var height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyle(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'true' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n var temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({ expandedIndices: temp }, true);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n var temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({ expandedIndices: temp }, true);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.remove(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None' && animationMode !== 'Enable') || (animationMode === 'Disable')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideUp';\n animate.name = 'SlideUp';\n }\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyle(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'false' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n *\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns {void}\n */\n Accordion.prototype.addItem = function (item, index) {\n var _this = this;\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNOU(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n var addItems = (item instanceof Array) ? item : [item];\n addItems.forEach(function (addItem, i) {\n var itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n var innerItemEle = _this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[parseInt(itemIndex.toString(), 10)]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n _this.expandedIndices = [];\n _this.expandedItemRefresh();\n if (addItem && addItem.expanded) {\n _this.expandItem(true, itemIndex);\n }\n });\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.expandedItemRefresh = function () {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be removed.\n * @returns {void}.\n */\n Accordion.prototype.removeItem = function (index) {\n if (this.isReact || this.isAngular) {\n var item = selectAll('.' + CLS_ITEM, this.element)[parseInt(index.toString(), 10)];\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n this.clearAccordionTemplate(header, this.dataSource.length > 0 ? 'headerTemplate' : 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, this.dataSource.length > 0 ? 'itemTemplate' : 'content', CLS_CTENT);\n }\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n var items = this.getItems();\n if (isNOU(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.expandedIndices = [];\n this.expandedItemRefresh();\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n *\n * @param {number} index - Number value that determines which item should be focused.\n * @returns {void}.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele) || isNOU(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns {void}.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele)) {\n return;\n }\n if (isNOU(isHidden)) {\n isHidden = true;\n }\n if (isHidden) {\n this.add(ele, CLS_ITEMHIDE);\n }\n else {\n this.remove(ele, CLS_ITEMHIDE);\n }\n };\n /**\n * Enables/Disables the specified Accordion item.\n *\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns {void}.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n *\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns {void}.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else if (!isNOU(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n }\n else {\n this.collapse(ctn);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNOU(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM)[parseInt(index.toString(), 10)];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNOU(item)) {\n var items = this.getItems();\n var itemObj = items[parseInt(index.toString(), 10)];\n items.splice(index, 1);\n this.restoreContent(index);\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n if (this.isReact || this.isAngular) {\n this.clearAccordionTemplate(header, 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, 'content', CLS_CTENT);\n }\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.setTemplate = function (template, toElement, index) {\n this.fetchElement(toElement, template, index);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clearAccordionTemplate = function (templateEle, templateName, className) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + templateName].length; index++) {\n var registeredItem = registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNOU(closestItem) && closestItem === templateEle || isNOU(registeredItem.parentNode)) {\n this.clearTemplate([templateName], [registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {AccordionModel} newProp - It contains the new value of data.\n * @param {AccordionModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(j.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)]);\n for (var k = 0; k < property.length; k++) {\n var item = selectAll('.' + CLS_ITEM, this.element)[parseInt(index.toString(), 10)];\n var oldVal = Object(oldProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var newVal = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var temp = property[parseInt(k.toString(), 10)];\n var content = select('.' + CLS_CTENT, item);\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property[parseInt(k.toString(), 10)] === 'cssClass' && !isNOU(item)) {\n if (oldVal) {\n removeClass([item], oldVal.split(' '));\n }\n if (newVal) {\n addClass([item], newVal.split(' '));\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'visible' && !isNOU(item)) {\n if (Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]] === false) {\n item.classList.add(CLS_ITEMHIDE);\n }\n else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'disabled' && !isNOU(item)) {\n this.enableItem(index, !newVal);\n }\n if (property.indexOf('header') < 0 && property[parseInt(k.toString(), 10)] === 'content'\n && !isNOU(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n if (this.isAngular || this.isReact) {\n this.clearAccordionTemplate(content, property[parseInt(k.toString(), 10)], CLS_CTENT);\n }\n var activeContent = item.querySelector('.' + CLS_CTENT);\n activeContent.innerHTML = '';\n this.setTemplate(newVal, activeContent, index);\n }\n else {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeHeaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(acrdn, CLS_RTL);\n }\n else {\n this.remove(acrdn, CLS_RTL);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyle(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single' && !isNOU(this.expandedIndices) && this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n break;\n }\n }\n if (isRefresh) {\n this.initExpand = [];\n if (!isNOU(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property()\n ], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate([\n Property([])\n ], Accordion.prototype, \"expandedIndices\", void 0);\n __decorate([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate([\n Property(true)\n ], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\nexport { Accordion };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n * <div id = 'target'></div>\n * <ul id = 'contextmenu'></ul>\n * ```\n * ```typescript\n * <script>\n * var contextMenuObj = new ContextMenu({items: [{ text: 'Cut' }, { text: 'Copy' },{ text: 'Paste' }], target: '#target'});\n * </script>\n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, Complex, getUniqueID, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { MenuBase, FieldSettings } from '../common/menu-base';\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * <ul id = 'menu'></ul>\n * ```\n * ```typescript\n * <script>\n * var menuObj = new Menu({ items: [{ text: 'Home' }, { text: 'Contact Us' },{ text: 'Login' }]});\n * menuObj.appendTo(\"#menu\");\n * </script>\n * ```\n */\nvar Menu = /** @class */ (function (_super) {\n __extends(Menu, _super);\n /**\n * Constructor for creating the component.\n *\n * @private\n * @param {MenuModel} options - Specifies the menu model\n * @param {string} element - Specifies the element\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n this.updateMenuItems(this.items);\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuModel} newProp - Specifies the new properties.\n * @param {MenuModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n [].slice.call(this.element.getElementsByClassName('e-blankicon')).forEach(function (li) {\n li.style[_this.enableRtl ? 'paddingRight' : 'paddingLeft'] = '';\n });\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n if (this.orientation === 'Vertical') {\n this.setBlankIconStyle(this.element);\n }\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var idx;\n var i;\n var items = this.items;\n var pIdField = this.getField('parentId');\n if (item[\"\" + pIdField]) {\n idx = this.getIndex(item[\"\" + pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n *\n * @function open\n * @returns {void}\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n *\n * @function close\n * @returns {void}\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate([\n Property(true)\n ], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\nexport { Menu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n * <div id=\"tab\"></div>\n * <script>\n * var tabObj = new Tab();\n * tab.appendTo(\"#tab\");\n * </script>\n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Reorganizes and adjusts the Tab headers to fit the available width without re-rendering the entire Tab component.\n *\n * This method is useful for optimizing the layout when:\n * - A hidden tab item becomes visible.\n * - The number of tab items changes dynamically.\n *\n * @returns {void} This method does not return a value.\n */\n Tab.prototype.refreshOverflow = function () {\n if (!isNOU(this.tbObj)) {\n this.tbObj.refreshOverflow();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n var _this = this;\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n _this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n maxId = this.getMaxIndicesFromItems(tbItems);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? { role: 'tab', 'aria-disabled': 'true' } : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray instanceof Array) {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect === 'None' || this.animation.next.effect === 'None';\n if (this.initRender || value === false || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: (this.animation.previous.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: (this.animation.next.duration === 0 && animationMode === 'Enable') ? 600 : this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.getMaxIndicesFromItems = function (tbItems) {\n var _this = this;\n var idList = [];\n tbItems.forEach(function (item) {\n idList.push(_this.getIndexFromEle(item.id));\n });\n return Math.max.apply(Math, idList);\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val);\n }\n else {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val;\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? '' : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '' || isNOU(cls)) {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0 || !isNOU(trg) && trg.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop && tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left' || this.element.classList.contains(CLS_RTL)) ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n var _this = this;\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshActiveTabBorder();\n });\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabItemDragArgs) {\n if (tabItemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.droppedIndex = isNOU(_this.droppedIndex) ? _this.getEleIndex(_this.dragItem) : _this.droppedIndex;\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n this.droppedIndex = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n item.disabled = item.disabled || false;\n item.visible = item.visible || true;\n }\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var tbItems = Array.from(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var itemsCount = tbItems.length;\n if (itemsCount !== 0) {\n lastEleIndex = this.getMaxIndicesFromItems(tbItems) + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n index = _this.getSelectingTabIndex(index);\n index = !isNaN(index) && index >= 0 && _this.tbItem.length > index ? index : 0;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNOU(this.items[index])) {\n this.items[index].visible = !value;\n this.dataBind();\n }\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup') {\n this.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.getSelectingTabIndex = function (args) {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n return args;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n args = this.getSelectingTabIndex(args);\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var sortedKeys = Object.keys(newProp).sort(function (a, b) {\n if (a === 'items')\n return -1;\n if (b === 'items')\n return 1;\n return 0;\n });\n for (var _i = 0, sortedKeys_1 = sortedKeys; _i < sortedKeys_1.length; _i++) {\n var prop = sortedKeys_1[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-treeview-checkbox';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n * <div id=\"tree\"></div>\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n _this.isDropIn = false;\n _this.OldCheckedData = [];\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n }\n else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[\"\" + col]\n && col !== 'url' && columns.indexOf(mapper[\"\" + col]) === -1) {\n columns.push(mapper[\"\" + col]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(prop, 'tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n }\n else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[parseInt(i.toString(), 10)], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n *\n * @returns {void}\n */\n TreeView.prototype.updateCheckedStateFromDS = function () {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id]\n ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkDisabledState(resultId, resultData[i]);\n }\n if (resultData[parseInt(i.toString(), 10)][this.fields.hasChildren]) {\n var id = resultData[parseInt(i.toString(), 10)][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[parseInt(child.toString(), 10)][this.fields.id]\n ? childData[parseInt(child.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkDisabledState(childId, childData[child]);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[parseInt(index.toString(), 10)][this.fields.id]\n ? checkedData[parseInt(index.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedId, checkedData[index]);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[parseInt(index.toString(), 10)][this.fields.id] ? this.treeData[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (this.treeData[parseInt(index.toString(), 10)][this.fields.isChecked] &&\n !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkDisabledState(fieldId, this.treeData[index]);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(index.toString(), 10)]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[parseInt(index.toString(), 10)]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n *\n * @param {FieldsSettingsModel} mapper - The mapper object containing field settings.\n * @param {Object[]} checkNodes - The array of checked nodes.\n * @returns {void}\n * @private\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n *\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n var data = this.treeData;\n if (this.element.classList.contains('e-filtering')) {\n data = this.DDTTreeData;\n }\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[parseInt(i.toString(), 10)], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n var OldCheckedNodes = void 0;\n if (this.element.classList.contains('e-filtering')) {\n OldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', nodeId, true));\n }\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(data).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(data, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n var _loop_1 = function (j) {\n var childId = childCheckedElement[parseInt(j.toString(), 10)][this_1.fields.id].toString();\n if (this_1.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n else if (this_1.element.classList.contains('e-filtering') && OldCheckedNodes.findIndex(function (e) { return e['id'] === childId; }) !== -1) {\n count++;\n }\n };\n var this_1 = this;\n for (var j = 0; j < childCheckedElement.length; j++) {\n _loop_1(j);\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkDisabledState(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n var parentElement = closest(node, '.' + PARENTITEM);\n if (!isNOU(parentElement)) {\n this.ensureParentCheckState(closest(parentElement, '.' + LISTITEM));\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n *\n * @param {Object} data - The data object to check for indeterminate state.\n * @returns {void}\n * @private\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n *\n * @param {Object[]} childItems - The array of child items to update the checked state.\n * @param {Object} treeData - The tree data object containing field values.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (childItems[parseInt(index.toString(), 10)][this.fields.isChecked] &&\n !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1) {\n this.parentCheckData.push(treeData);\n }\n this.updateChildCheckState(subChildItems, childItems[parseInt(index.toString(), 10)]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[parseInt(len.toString(), 10)]) &&\n (this.parentCheckData[parseInt(len.toString(), 10)])) {\n this.checkIndeterminateState(this.parentCheckData[parseInt(len.toString(), 10)]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.classList.add(CHECKBOXWRAP);\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n e.item.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute('tabindex', '-1');\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) && !isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && (!isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) || (Object.prototype.hasOwnProperty.call(ds[parseInt(i.toString(), 10)], mapper.child)))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)])) ||\n !isNOU(getValue(mapper.hasChildren, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[parseInt(j.toString(), 10)].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element, isFromExpandAll, expandChild) {\n var _this = this;\n if (!isFromExpandAll) {\n this.updateAttributes(element);\n }\n if (!expandChild) {\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] === true; }).length > 0\n ? true\n : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[parseInt(i.toString(), 10)]);\n }\n }\n removeClass(eNodes, EXPANDED);\n }\n if (!isFromExpandAll) {\n this.updateList();\n }\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateAttributes = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[parseInt(k.toString(), 10)].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[parseInt(j.toString(), 10)]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[parseInt(j.toString(), 10)]);\n }\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[parseInt(i.toString(), 10)].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[parseInt(i.toString(), 10)]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n else {\n this.ensureChildCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[parseInt(i.toString(), 10)].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECKBOXWRAP + ' .' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll(this.checkDisabledChildren ? '.' + LISTITEM : '.' + LISTITEM + ':not(.' + DISABLE + ')', ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n var count = nodes.length;\n var checkedCount = checkedNodes.length;\n var matchedChildNodes = [];\n var oldChildCount = [];\n var dataUid_1 = element.getAttribute('data-uid');\n var rootNodeChecked_1 = true;\n var childNodeChecked_1 = false;\n nodes.forEach(function (childNode) {\n if (childNode instanceof HTMLElement) {\n var ariaChecked = childNode.getAttribute('aria-checked');\n if (ariaChecked === 'true') {\n childNodeChecked_1 = true;\n }\n else {\n rootNodeChecked_1 = false;\n }\n }\n });\n var parentNodeChecked = false;\n if (this.element.classList.contains('e-filtering')) {\n var oldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n checkedCount = oldCheckedNodes.length;\n var parentNode = new DataManager(this.OldCheckedData).executeLocal(new Query().where('hasChildren', 'equal', true, true));\n if (parentNode.length > 0\n && (this.OldCheckedData.some(function (oldNode) { return oldNode.id === dataUid_1; }) && childNodeChecked_1)) {\n checkedCount = parentNode.length;\n parentNodeChecked = true;\n }\n var childItems = [];\n if (this.dataType === 1) {\n childItems = new DataManager(this.DDTTreeData).executeLocal(new Query().where(this.fields.parentID, 'equal', dataUid_1, true));\n }\n else {\n childItems = this.getChildNodes(this.DDTTreeData, dataUid_1);\n }\n count = childItems.length;\n }\n if (this.autoCheck && this.showCheckBox && !(this.fields.dataSource instanceof DataManager)) {\n var selectedChildNodeDetails = this.getSelectedChildNodeDetails(dataUid_1);\n matchedChildNodes = selectedChildNodeDetails;\n oldChildCount = new DataManager(this.checkActionNodes)\n .executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n }\n if (count === 0 && checkedCount === 0) {\n return;\n }\n else if (count === checkedCount || ((parentNodeChecked && count > 0) && (oldChildCount.length === matchedChildNodes.length)\n && (oldChildCount.length !== 0 && matchedChildNodes.length !== 0) && rootNodeChecked_1\n && (this.autoCheck && this.showCheckBox))) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if ((checkedCount > 0 && !parentNodeChecked && (this.autoCheck && this.showCheckBox))) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedCount > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedCount === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.getSelectedChildNodeDetails = function (dataUid) {\n var _this = this;\n return this.checkedNodes\n .map(function (checkedNodeId) {\n return new DataManager(_this.DDTTreeData)\n .executeLocal(new Query().where('id', 'equal', checkedNodeId, true))[0];\n })\n .filter(function (childNode) {\n if (childNode && typeof childNode === 'object' && 'pid' in childNode) {\n var childNodePid = childNode.pid;\n if (!isNOU(childNodePid)) {\n return childNodePid.toString() === dataUid;\n }\n }\n return false;\n });\n };\n TreeView.prototype.ensureChildCheckState = function (element, e, isFromExpandAll) {\n var _this = this;\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n var childCheck = Array.from(childElement.querySelectorAll('li'));\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n if (this.isFilter) {\n checkBoxes = Array.from(checkBoxes).filter(function (checkbox) {\n var dataUID = checkbox.closest('li').getAttribute('data-uid');\n return dataUID !== null && _this.checkedNodes.indexOf(dataUID) !== -1;\n });\n childCheck = Array.from(childCheck).filter(function (li) {\n var childIds = li.getAttribute('data-uid');\n return childIds !== null && _this.checkedNodes.indexOf(childIds) !== -1;\n });\n if (checkBoxes.length === 0) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n childCheck = Array.from(childElement.querySelectorAll('li'));\n }\n }\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[parseInt(index.toString(), 10)].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) &&\n !isNOU(getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[parseInt(index.toString(), 10)]\n .getElementsByClassName(CHECKBOXFRAME)[0]\n .classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[parseInt(index.toString(), 10)].classList.contains(CHILD) &&\n (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded && !isFromExpandAll) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n if (!isNOU(nodes)) {\n nodes.reverse();\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[parseInt(len.toString(), 10)]);\n if (isNOU(liEle)) {\n var node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString()\n : nodes[parseInt(len.toString(), 10)]\n ? nodes[parseInt(len.toString(), 10)].toString()\n : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node, nodes);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[parseInt(j.toString(), 10)] ? nodes[parseInt(j.toString(), 10)].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[parseInt(i.toString(), 10)][this.fields.id] ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[parseInt(i.toString(), 10)]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id]\n ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n *\n * @param {Object[]} subChild - Array of child nodes\n * @param {string} parent - Parent identifier\n * @param {string} node - Current node identifier\n * @param {boolean} doCheck - Boolean indicating whether to perform a check\n * @param {string} [child] - Optional child identifier\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[parseInt(j.toString(), 10)][this.fields.id] ? subChild[parseInt(j.toString(), 10)][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkDisabledState(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[parseInt(j.toString(), 10)]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!this.checkDisabledChildren && currLi && (currLi.classList.contains(DISABLE)\n || (this.disableNode && this.disableNode.indexOf(currLi.getAttribute('data-uid')) !== -1))) {\n return;\n }\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? Object.prototype.hasOwnProperty.call(this.rootData[0], this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] === true; }).length > 0\n ? true\n : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[parseInt(i.toString(), 10)] && this.expandChildren.indexOf(eUids[parseInt(i.toString(), 10)]) === -1) {\n this.expandChildren.push(eUids[parseInt(i.toString(), 10)].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var _this = this;\n this.expandCallback(arr[this.index], function () {\n _this.index++;\n if (_this.index < arr.length) {\n _this.expandGivenNodes(arr);\n }\n else {\n _this.afterFinalized();\n }\n });\n if (this.index > 0) {\n this.index = 0;\n }\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n callback();\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[parseInt(i.toString(), 10)]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[parseInt(i.toString(), 10)].classList.contains('e-disable')) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && event.originalEvent.changedTouches && !Browser.isIos\n ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY)\n : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.updateOldCheckedData = function (data) {\n var _this = this;\n var dataManager = new DataManager(data);\n var childItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'true', true));\n var uncheckedItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'false', true));\n if (uncheckedItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) { return e['id'] === uncheckedItems[0]['id']; });\n if (index !== -1) {\n this.OldCheckedData.splice(index, 1);\n var childNodes = this.OldCheckedData.filter(function (e) { return e['parentID'] === uncheckedItems[0]['id']; });\n if (childNodes.length > 0) {\n childNodes.forEach(function (child) {\n var childIndex = _this.OldCheckedData.findIndex(function (e) { return e['id'] === child.id; });\n if (childIndex !== -1) {\n _this.OldCheckedData.splice(childIndex, 1);\n }\n });\n }\n return;\n }\n }\n if (childItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) { return e['id'] === childItems[0]['id']; });\n if (index === -1) {\n this.OldCheckedData.push(childItems[0]);\n return;\n }\n }\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n if (this.isAnimate && !this.isRefreshed) {\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: (this.animation.expand.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function () {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n _this.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: (this.animation.collapse.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function () {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n _this.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded, isFromExpandAll) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n if (eicon.classList.contains(LOAD)) {\n this.hideSpinner(eicon);\n }\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi, isFromExpandAll);\n this.finalizeNode(parentLi, isFromExpandAll, expandChild);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded, isFromExpandAll);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n if (isNOU(this.disableNode) || this.disableNode.length === 0) {\n return;\n }\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n *\n * @param {Object[]} nodes - Array of nodes\n * @returns {void}\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n if (isNOU(this.selectedNodes) || this.selectedNodes.length === 0) {\n return;\n }\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[parseInt(i.toString(), 10)][this.fields.id]\n ? nodes[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element, isFromExpandAll) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element, null, isFromExpandAll);\n if (isFromExpandAll ? (select('.' + CHECK, this.element) || select('.' + INDETERMINATE, this.element)) : true) {\n this.ensureParentCheckState(element);\n }\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n if (typeof this.fields.child === 'string') {\n return this.findChildNodes(obj, this.fields.id, parentId) || this.findNestedChildNodes(obj, parentId, level) || [];\n }\n if (this.isChildObject()) {\n var tempField = !isNOU(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNOU(tempField.child)) {\n tempField = tempField.child;\n }\n else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) {\n return getValue(_this.fields.id, data) &&\n getValue(_this.fields.id, data).toString() === parentId;\n });\n if (index !== -1) {\n return getValue('child', obj[parseInt(index.toString(), 10)]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[parseInt(i_1.toString(), 10)]);\n var childIndex = !isNOU(tempArray)\n ? tempArray.findIndex(function (data) {\n return getValue(_this.fields.child.id, data) &&\n getValue(_this.fields.child.id, data).toString() === parentId;\n })\n : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[parseInt(childIndex.toString(), 10)]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.findChildNodes = function (items, idField, parentId) {\n var index = items.findIndex(function (data) {\n var value = getValue(idField, data);\n return value && value.toString() === parentId;\n });\n if (index !== -1) {\n return getValue(this.fields.child, items[index]);\n }\n return null;\n };\n TreeView.prototype.findNestedChildNodes = function (items, parentId, level) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var tempArray = getValue(this.fields.child, item);\n if (!isNOU(tempArray)) {\n var childNodes = this.findChildNodes(tempArray, this.fields.id, parentId);\n if (childNodes) {\n return childNodes;\n }\n var nestedChildNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (nestedChildNodes && nestedChildNodes.length > 0) {\n return nestedChildNodes;\n }\n }\n }\n return undefined;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[parseInt(i.toString(), 10)][0]) &&\n !isNOU(getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]))) {\n if (getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]).toString() === parentId) {\n return data[parseInt(i.toString(), 10)];\n }\n }\n else if (isRoot) {\n return data[parseInt(i.toString(), 10)];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded, isFromExpandAll) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n if (element.querySelector('.e-icons') !== cIcons[parseInt(i.toString(), 10)]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded, isFromExpandAll);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !(e.ctrlKey || e.metaKey))))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[parseInt(i.toString(), 10)];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute('tabindex', '-1');\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback, isFromExpandAll) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback, isFromExpandAll) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback, null, isFromExpandAll);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[parseInt(i.toString(), 10)]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[parseInt(i.toString(), 10)]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[parseInt(i.toString(), 10)], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName('e-checkbox-disabled').length === 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n if (child !== null) {\n this.allCheckNode(child, this.checkedElement, null, null, false);\n }\n else {\n child = null;\n }\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.updateOldCheckedData([this.getNodeData(li)]);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n *\n * @param {Element} li - The list item element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var _this = this;\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n var childMatchesCheckedNodes = resultData.filter(function (item) {\n return _this.checkedNodes.indexOf(item[mapper.id].toString()) !== -1;\n }, this);\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && childMatchesCheckedNodes.length !== resultData.length && this.isFilter) {\n if (childMatchesCheckedNodes.length > 0) {\n resultData = childMatchesCheckedNodes;\n }\n }\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id]\n ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n var isCheck = resultData[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? resultData[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkDisabledState(resultId, resultData[i]);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[parseInt(i.toString(), 10)][this.fields.id]\n ? checkedData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[parseInt(i.toString(), 10)][this.fields.id]\n ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkDisabledState(checkedId, this.treeData[i]);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n var filteredChildItems = childItems.filter(function (item) {\n var itemValue = String(item[Object.keys(item)[0]]);\n return _this.checkedNodes.indexOf(itemValue) !== -1;\n });\n if (filteredChildItems.length > 0 && childItems.length && this.isFilter) {\n childItems = filteredChildItems;\n }\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.checkDisabledState = function (resultId, currentItem) {\n var requiresUpdate = this.checkDisabledChildren;\n if (!requiresUpdate) {\n var shouldPreventUpdate = true;\n if (this.loadOnDemand && this.fields.htmlAttributes) {\n currentItem = isNOU(currentItem) ? currentItem : this.getNodeObject(resultId);\n if (!isNOU(currentItem)) {\n var htmlAttributes = currentItem[this.fields.htmlAttributes];\n if (htmlAttributes && !isNOU(htmlAttributes.class) && htmlAttributes.class.indexOf(DISABLE) !== -1) {\n shouldPreventUpdate = false;\n }\n }\n }\n var liElement = select(\"[data-uid=\\\"\" + resultId + \"\\\"]\", this.element);\n requiresUpdate = liElement ? !liElement.classList.contains(DISABLE)\n : (this.disableNode.indexOf(resultId) === -1 && shouldPreventUpdate);\n }\n if (requiresUpdate) {\n this.checkedNodes.push(resultId);\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[parseInt(i.toString(), 10)][this.fields.id]\n ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString()\n : null;\n var childIsCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkDisabledState(childId, childItems[i]);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n *\n * @param {Object[]} childItems - Array of child items\n * @param {string} parent - Parent identifier\n * @param {Element} childElement - Child DOM element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n var isCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked]\n ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString()\n : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[parseInt(i.toString(), 10)]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[parseInt(length_1.toString(), 10)][this.fields.isChecked]) &&\n newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n if (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) {\n newCheck.push(childId.toString());\n }\n else {\n childCheck = null;\n }\n childCheck = (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[parseInt(length_1.toString(), 10)]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[parseInt(length_1.toString(), 10)]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n if (isNOU(validateCheck)) {\n this.allCheckNode(childId_1, newCheck, checked, childCheck);\n }\n else {\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n }\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (!isNOU(fNode)) {\n var ariaChecked = fNode.getAttribute('aria-checked');\n if (ariaChecked === 'mixed' || ariaChecked === 'false') {\n this.isFilter = false;\n }\n }\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[parseInt(index.toString(), 10)];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[parseInt(index.toString(), 10)];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute('tabindex', '-1');\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n if (focusedElement.classList.contains('e-disable')) {\n focusedElement.setAttribute('tabindex', '-1');\n this.navigateNode(true);\n }\n else {\n focusedElement.setAttribute('tabindex', '0');\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n }\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target === focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n if (Browser.isDevice) {\n return;\n }\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n TreeView.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle);\n }\n };\n TreeView.prototype.createTextbox = function (liEle) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n Input.destroy({ element: target, properties: this.properties });\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n EventHandler.remove(target, 'blur', this.inputFocusOut);\n this.inputObj = null;\n detach(target);\n target = null;\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n if (this.enableHtmlSanitizer) {\n txtEle.innerText = SanitizeHtmlHelper.sanitize(newText);\n }\n else {\n txtEle.innerHTML = newText;\n }\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeData[parseInt(i.toString(), 10)]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[parseInt(i.toString(), 10)];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && dataId && dataId.toString() === id) {\n return obj[parseInt(i.toString(), 10)];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = _this.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = _this.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = _this.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n if (!e.target.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n // eslint-disable-next-line\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n if (dropTarget.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) &&\n (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function () {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n _this.removeVirtualEle();\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.getOffsetX = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientX - target.getBoundingClientRect().left;\n }\n else {\n return event.offsetX;\n }\n };\n TreeView.prototype.getOffsetY = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientY - target.getBoundingClientRect().top;\n }\n else {\n return event.offsetY;\n }\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.isDropIn = false;\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var offsetX = this.getOffsetX(event, e.target);\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && offsetY < 7 && !checkWrapper) ||\n (((expand && offsetY < 5) || (collapse && offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) &&\n !checkWrapper && templateTarget && offsetY > templateTarget.offsetHeight - 10) ||\n ((expand && offsetY > 19) || (collapse && offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (offsetY < 7) && !checkWrapper) ||\n (((expand && offsetY < 5) || (collapse && offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) &&\n (e.target.offsetHeight > 0 && offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) ||\n (((expand && offsetY > 19) || (collapse && offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.dropAction = function (e) {\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var nodeData = [];\n var liArray = [];\n var dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[parseInt(i.toString(), 10)] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) ||\n this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) ||\n this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[parseInt(i.toString(), 10)]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, null, dropTarget);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true, dropTarget);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck, dropTarget) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && ((pos < 7 && !dropTarget.classList.contains('e-sibling')) || (dropTarget.classList.contains('e-sibling') && !dropLi.lastChild.classList.contains('e-sibling'))) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[parseInt(i.toString(), 10)]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || (args && args.name !== 'nodeExpanding')) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n var collapseIcon = select('div.' + COLLAPSIBLE, dropLi);\n if (!isNOU(dropUl) && collapseIcon && this.preventExpand) {\n removeClass([collapseIcon], COLLAPSIBLE);\n dropLi.setAttribute('aria-expanded', 'false');\n addClass([collapseIcon], EXPANDABLE);\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n if (offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[parseInt(i.toString(), 10)])) {\n iconClass = iconCss[parseInt(i.toString(), 10)];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[parseInt(i.toString(), 10)] === draggedNode && dropLi !== draggedNode)\n ? ++dropTar\n : dropTar;\n if ((drop !== true && index.children[parseInt(i.toString(), 10)].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[parseInt(i.toString(), 10)] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = this.isDropIn ? 'Inside' : ((event.offsetY < 7) ? 'Before' : 'After');\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[parseInt(i.toString(), 10)]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[parseInt(i.toString(), 10)]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes, currentLevel) {\n currentLevel = isNOU(currentLevel) ? 1 : currentLevel;\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (currentLevel >= level && !isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level, excludeHiddenNodes, currentLevel + 1);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var _i = 0, eIcons_1 = eIcons; _i < eIcons_1.length; _i++) {\n var icon = eIcons_1[_i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[parseInt(i.toString(), 10)])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[parseInt(i.toString(), 10)]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n if (toExpand) {\n this.expandAction(liEle, icon, null);\n }\n else {\n this.collapseNode(liEle, icon, null);\n }\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n var refNode = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() > li[parseInt(i.toString(), 10)].innerText.toUpperCase() : cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() < li[parseInt(i.toString(), 10)].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[parseInt(j.toString(), 10)]);\n break;\n }\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[parseInt(j.toString(), 10)]);\n }\n this.treeData.splice(pos, 0, nodes[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = Object.prototype.hasOwnProperty.call(prop, 'navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var data = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var items = getValue('child', obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], mapper.child) && obj[parseInt(i.toString(), 10)][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], 'child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[parseInt(i.toString(), 10)]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[parseInt(i.toString(), 10)][\"\" + key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[parseInt(i.toString(), 10)][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[parseInt(i.toString(), 10)]);\n var id = strNodes[parseInt(i.toString(), 10)];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[parseInt(i.toString(), 10)] == 'string') {\n id = (nodes[parseInt(i.toString(), 10)]) ? nodes[parseInt(i.toString(), 10)].toString() : null;\n }\n else if (typeof nodes[parseInt(i.toString(), 10)] === 'object') {\n id = nodes[parseInt(i.toString(), 10)] ? nodes[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() : null;\n }\n if (validID.indexOf(id) === -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[parseInt(k.toString(), 10)][this.fields.id]\n ? this.treeData[parseInt(k.toString(), 10)][this.fields.id].toString()\n : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[parseInt(k.toString(), 10)][this.fields.id]\n ? treeData[parseInt(k.toString(), 10)][this.fields.id].toString()\n : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[parseInt(l.toString(), 10)], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[parseInt(k.toString(), 10)], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[parseInt(m.toString(), 10)], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[parseInt(j.toString(), 10)]);\n if (!isNOU(obj[parseInt(i.toString(), 10)][\"\" + field])) {\n delete obj[parseInt(i.toString(), 10)][\"\" + field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue(mapper.child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue('child', obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && !isNOU(nodeId) && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[parseInt(i.toString(), 10)]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childItems = getValue('child', obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[parseInt(i.toString(), 10)][this.fields.id])\n ? getValue(this.fields.id, node[parseInt(i.toString(), 10)]).toString()\n : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n _this.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n _this.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n _this.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n if (nodes.length > 1 && typeof this.nodeChecked === 'function' && this.nodeChecked.length > 0) {\n this.isFilter = true;\n }\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setValidCheckedNode = function (node, nodes) {\n if (nodes === void 0) { nodes = []; }\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0], nodes);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[parseInt(len.toString(), 10)][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkDisabledState(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[parseInt(a.toString(), 10)][this.fields.id] ? this.treeData[parseInt(a.toString(), 10)][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(a.toString(), 10)]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[parseInt(a.toString(), 10)], nodes);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n *\n * @param {Object[]} childItems - The child items to check.\n * @param {string} node - The node to set the check state for.\n * @param {Object} [treeData] - The optional tree data.\n * @returns {void}\n * @private\n */\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n *\n * @param {Object[]} childItems - The child items to check.\n * @param {string} node - The node to set the check state for.\n * @param {Object} [treeData] - The optional tree data.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData, nodes) {\n if (nodes === void 0) { nodes = []; }\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[parseInt(index.toString(), 10)][this.fields.id]\n ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString()\n : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkDisabledState(checkNode, childItems[index]);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n var isParentNodeCheck = (nodes.length === 1 && nodes[0] === checkNode);\n if (subChildItems.length === node.length || isParentNodeCheck) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n var isParentNodeCheck = ([node].length === 1 && nodes.length === 0);\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1\n && (checkedChild === node || isParentNodeCheck)) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[parseInt(index.toString(), 10)]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[parseInt(i.toString(), 10)], nodes);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[parseInt(i.toString(), 10)]);\n if (treeData[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === currID) {\n treeData[parseInt(i.toString(), 10)] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == 'string') {\n nodesID[0] = target.toString();\n }\n else if (typeof target === 'object') {\n nodesID[0] = target.getAttribute('data-uid').toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[parseInt(i.toString(), 10)]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length === 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function () { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length === 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[parseInt(i.toString(), 10)]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var _this = this;\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n this.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n _this.addGivenNodes(nodes, dropLi, index, true, dropUl);\n _this.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[parseInt(i.toString(), 10)]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[parseInt(i.toString(), 10)][this.fields.id].toString());\n this.getHierarchicalParentId(data[parseInt(i.toString(), 10)][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeViewModel} newProp - The new property value.\n * @param {TreeViewModel} oldProp - The old property value.\n * @returns {void}\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n if (!this.element.classList.contains('e-filtering')) {\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n }\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[parseInt(i.toString(), 10)].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[parseInt(i.toString(), 10)], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n case 'checkDisabledChildren':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @returns {void}\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n *\n * @param { object } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[parseInt(i.toString(), 10)]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n if (!isNullOrUndefined(pid) && isNullOrUndefined(dropLi)) {\n this.preventExpand = false;\n this.ensureVisible(pid);\n this.preventExpand = preventTargetExpand;\n dropLi = this.getElement(pid.toString());\n }\n this.addGivenNodes([nodes[parseInt(i.toString(), 10)]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {void}\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n * @returns {void}\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType === 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length !== 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType === 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse());\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: 'smooth' }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n * @param {boolean} preventAnimation - Prevent the expand animation when expanding all nodes.\n * @returns {void}\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes, preventAnimation) {\n this.isAnimate = !preventAnimation;\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n if (!this.loadOnDemand) {\n this.updateAttributes(this.element);\n this.updateList();\n }\n }\n }\n this.isAnimate = true;\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} - An array of strings representing the unique identifiers of checked nodes.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} An array of strings representing the unique identifiers of disabled nodes.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {Object} - The data associated with the specified node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n * @returns {Object} - The tree data associated with the specified node or element.\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n *\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index, null, null, null, dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n *\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {Object[]} newData - Specifies the new data of TreeView node.\n * @returns {void}\n * ```typescript\n * var treeObj = document.getElementById(\"treeview\").ej2_instances[0];\n * var data = treeObj.getTreeData(\"01\");\n * var newData = {\n * id: data[0].id,\n * name: \"new Text\",\n * };\n * treeObj.refreshNode(\"01\", [newData]);\n * ```\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var isRefreshChild = false;\n if (this.dataType === 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType === 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n var id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n var newNodeData;\n var parentData;\n if (this.dataType === 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[parseInt(k.toString(), 10)][this.fields.parentID])) {\n parentData = newData[parseInt(k.toString(), 10)];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[parseInt(index.toString(), 10)]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute('title', newNodeData[this.fields.tooltip]);\n }\n if (Object.prototype.hasOwnProperty.call(newNodeData, this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text only when the `allowEditing` property is enabled.\n *\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"checkDisabledChildren\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, formatUnit, EventHandler, Event, isNullOrUndefined, closest, Browser } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, removeClass, Touch } from '@syncfusion/ej2-base';\nvar CONTROL = 'e-control';\nvar ROOT = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar RTL = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar DISPLAY = 'e-sidebar-display';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * <aside id=\"sidebar\">\n * </aside>\n * ```\n * ```typescript\n * <script>\n * let sidebarObject: Sidebar = new Sidebar();\n * sidebarObject.appendTo(\"#sidebar\");\n * </script>\n * ```\n */\nvar Sidebar = /** @class */ (function (_super) {\n __extends(Sidebar, _super);\n function Sidebar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.documentClickContext = _this.documentclickHandler.bind(_this);\n return _this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n this.firstRender = true;\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n Sidebar.prototype.setTarget = function () {\n this.targetEle = this.element.nextElementSibling;\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n this.targetEle = this.getTargetElement();\n }\n };\n Sidebar.prototype.getTargetElement = function () {\n var siblingElement = this.element.nextElementSibling;\n while (!isNOU(siblingElement)) {\n if (!siblingElement.classList.contains(ROOT)) {\n break;\n }\n siblingElement = siblingElement.nextElementSibling;\n }\n return siblingElement;\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n document.addEventListener('mousedown', this.documentClickContext);\n document.addEventListener('touchstart', this.documentClickContext);\n }\n else {\n document.removeEventListener('mousedown', this.documentClickContext);\n document.removeEventListener('touchstart', this.documentClickContext);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.width) });\n }\n };\n Sidebar.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n Sidebar.prototype.setZindex = function () {\n setStyle(this.element, { 'z-index': '' + this.zIndex });\n };\n Sidebar.prototype.addClass = function () {\n if (this.element.tagName === 'EJS-SIDEBAR') {\n addClass([this.element], DISPLAY);\n }\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined(classELement || this.targetEle)) {\n addClass([classELement || this.targetEle], [MAINCONTENTANIMATION]);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : null;\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n if (!isNullOrUndefined(this.tabIndex)) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], [CLOSE, DISABLEANIMATION]);\n }\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e) && !this.firstRender) {\n this.triggerChange();\n }\n this.firstRender = false;\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.target && this.showBackdrop && sibling && !isNullOrUndefined(this.defaultBackdropDiv)) {\n removeClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /**\n * Hide the Sidebar component, if it is in an open state.\n *\n * @param {Event} e - The event triggering the hide action.\n * @returns {void}\n *\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n setStyle(_this.element, { 'width': formatUnit(_this.enableDock ? _this.dockSize : _this.width) });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') || _this.targetEle;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n sibling.style[_this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: false }, true);\n if (_this.enableDock) {\n setTimeout(function () { return _this.setTimeOut(); }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var elementWidth = this.element.getBoundingClientRect().width;\n if (this.element.classList.contains(OPEN) && sibling && !(this.type === 'Over' && this.enableDock)) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n }\n };\n /**\n * Shows the Sidebar component, if it is in closed state.\n *\n * @param {Event} e - The optional event triggering the show action.\n * @returns {void}\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], [VISIBILITY, DISABLEANIMATION]);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyle(_this.element, { 'transform': '' });\n removeClass([_this.element], CLOSE);\n setStyle(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: true }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyle(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyle(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var targetString = this.target;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n this.defaultBackdropDiv = this.createElement('div');\n addClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n setStyle(this.defaultBackdropDiv, { height: targetString.style.height });\n sibling.appendChild(this.defaultBackdropDiv);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns module name.\n * @private\n *\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n *\n * @returns {void}\n */\n Sidebar.prototype.toggle = function () {\n if (this.element.classList.contains(OPEN)) {\n this.hide();\n }\n else {\n this.show();\n }\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.resize = function () {\n if (!isNullOrUndefined(this.width) && this.width !== 'auto' && typeof this.width === 'string' && !this.width.includes('px')) {\n this.setType(this.type);\n }\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL + '' + '.' + ROOT)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (!this.isOpen && this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.isOpen && this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide(args.originalEvent);\n }\n else if (this.isOpen && this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide(args.originalEvent);\n }\n else if (!this.isOpen && this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n EventHandler.add(window, 'resize', this.resize, this);\n };\n Sidebar.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resize);\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SidebarModel} newProp - specifies newProp value.\n * @param {SidebarModel} oldProp - specifies oldProp value.\n * @returns {void}\n * @private\n *\n */\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var isRendered = this.isServerRendered;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n if (this.isOpen) {\n this.show();\n }\n else {\n this.hide();\n }\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginRight' : 'marginLeft'] = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyle(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n this.isServerRendered = false;\n _super.prototype.refresh.call(this);\n this.isServerRendered = isRendered;\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto' && !(this.type === 'Over' && this.enableDock)) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && (this.element.classList.contains(CLOSE) || this.isOpen)) {\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = this.setDimension(this.dockSize);\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.target) {\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n if (this.element) {\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION, DISABLEANIMATION]);\n removeClass([this.element], SIDEBARABSOLUTE);\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n if (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n this.windowWidth = null;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"dockSize\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableDock\", void 0);\n __decorate([\n Property('en-US')\n ], Sidebar.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"isOpen\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate([\n Property(true)\n ], Sidebar.prototype, \"animate\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate([\n Property('Left')\n ], Sidebar.prototype, \"position\", void 0);\n __decorate([\n Property(null)\n ], Sidebar.prototype, \"target\", void 0);\n __decorate([\n Property(false)\n ], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate([\n Property('Auto')\n ], Sidebar.prototype, \"type\", void 0);\n __decorate([\n Property('auto')\n ], Sidebar.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], Sidebar.prototype, \"zIndex\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate([\n NotifyPropertyChanges\n ], Sidebar);\n return Sidebar;\n}(Component));\nexport { Sidebar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, ChildProperty, Property, Collection, append, extend, Event, EventHandler, closest, addClass, removeClass, detach, remove, initializeCSPTemplate, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { Popup } from '@syncfusion/ej2-popups';\nvar ICONRIGHT = 'e-icon-right';\nvar ITEMTEXTCLASS = 'e-breadcrumb-text';\nvar ICONCLASS = 'e-breadcrumb-icon';\nvar MENUCLASS = 'e-breadcrumb-menu';\nvar ITEMCLASS = 'e-breadcrumb-item';\nvar POPUPCLASS = 'e-breadcrumb-popup';\nvar WRAPMODECLASS = 'e-breadcrumb-wrap-mode';\nvar SCROLLMODECLASS = 'e-breadcrumb-scroll-mode';\nvar TABINDEX = 'tabindex';\nvar DISABLEDCLASS = 'e-disabled';\nvar ARIADISABLED = 'aria-disabled';\nvar DOT = '.';\n/**\n * Defines the Breadcrumb overflow modes.\n */\nexport var BreadcrumbOverflowMode;\n(function (BreadcrumbOverflowMode) {\n /**\n * Hidden mode shows the maximum number of items possible in the container space and hides the remaining items.\n * Clicking on a previous item will make the hidden item visible.\n */\n BreadcrumbOverflowMode[\"Hidden\"] = \"Hidden\";\n /**\n * Collapsed mode shows the first and last Breadcrumb items and hides the remaining items with a collapsed icon.\n * When the collapsed icon is clicked, all items become visible and navigable.\n */\n BreadcrumbOverflowMode[\"Collapsed\"] = \"Collapsed\";\n /**\n * Menu mode shows the number of Breadcrumb items that can be accommodated within the container space and creates a submenu with the remaining items.\n */\n BreadcrumbOverflowMode[\"Menu\"] = \"Menu\";\n /**\n * Wrap mode wraps the items to multiple lines when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Wrap\"] = \"Wrap\";\n /**\n * Scroll mode shows an HTML scroll bar when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Scroll\"] = \"Scroll\";\n /**\n * None mode shows all the items in a single line.\n */\n BreadcrumbOverflowMode[\"None\"] = \"None\";\n})(BreadcrumbOverflowMode || (BreadcrumbOverflowMode = {}));\nvar BreadcrumbItem = /** @class */ (function (_super) {\n __extends(BreadcrumbItem, _super);\n function BreadcrumbItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], BreadcrumbItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], BreadcrumbItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], BreadcrumbItem.prototype, \"url\", void 0);\n __decorate([\n Property(null)\n ], BreadcrumbItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], BreadcrumbItem.prototype, \"disabled\", void 0);\n return BreadcrumbItem;\n}(ChildProperty));\nexport { BreadcrumbItem };\n/**\n * Breadcrumb is a graphical user interface that helps to identify or highlight the current location within a hierarchical structure of websites.\n * The aim is to make the user aware of their current position in a hierarchy of website links.\n * ```html\n * <nav id='breadcrumb'></nav>\n * ```\n * ```typescript\n * <script>\n * var breadcrumbObj = new Breadcrumb({ items: [{ text: 'Home', url: '/' }, { text: 'Index', url: './index.html }]});\n * breadcrumbObj.appendTo(\"#breadcrumb\");\n * </script>\n * ```\n */\nvar Breadcrumb = /** @class */ (function (_super) {\n __extends(Breadcrumb, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {BreadcrumbModel} options - Specifies the Breadcrumb model.\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function Breadcrumb(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = false;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.preRender = function () {\n // pre render code\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.render = function () {\n this.initialize();\n this.renderItems(this.items);\n this.wireEvents();\n };\n Breadcrumb.prototype.initialize = function () {\n this._maxItems = this.maxItems;\n if (isNullOrUndefined(this.element.getAttribute('aria-label'))) {\n this.element.setAttribute('aria-label', 'breadcrumb');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n if (this.disabled) {\n this.element.classList.add(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, 'true');\n }\n if (this.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n this.initItems();\n this.initPvtProps();\n };\n Breadcrumb.prototype.initPvtProps = function () {\n if (this.overflowMode === 'Hidden' && this._maxItems > 0) {\n this.endIndex = this.getEndIndex();\n this.startIndex = this.endIndex + 1 - (this._maxItems - 1);\n }\n if (this.overflowMode === 'Menu') {\n if (this._maxItems >= 0) {\n this.startIndex = this._maxItems > 1 ? 1 : 0;\n this.endIndex = this.getEndIndex();\n this.popupUl = this.createElement('ul', { attrs: { TABINDEX: '0', 'role': 'menu' } });\n }\n else {\n this.startIndex = this.endIndex = null;\n }\n }\n };\n Breadcrumb.prototype.getEndIndex = function () {\n var _this = this;\n var endIndex;\n if (this.activeItem) {\n this.items.forEach(function (item, idx) {\n if (item.url === _this.activeItem || item.text === _this.activeItem) {\n endIndex = idx;\n }\n });\n }\n else {\n endIndex = this.items.length - 1;\n }\n return endIndex;\n };\n Breadcrumb.prototype.initItems = function () {\n if (!this.items.length) {\n var baseUri = void 0;\n var uri = void 0;\n var items = [];\n if (this.url) {\n var url = new URL(this.url, window.location.origin);\n baseUri = url.origin + '/';\n uri = url.href.split(baseUri)[1].split('/');\n }\n else {\n baseUri = window.location.origin + '/';\n uri = window.location.href.split(baseUri)[1].split('/');\n }\n items.push({ iconCss: 'e-icons e-home', url: baseUri });\n for (var i = 0; i < uri.length; i++) {\n if (uri[i]) {\n items.push({ text: uri[i], url: baseUri + uri[i] });\n baseUri += uri[i] + '/';\n }\n }\n this.setProperties({ items: items }, true);\n }\n };\n Breadcrumb.prototype.renderItems = function (items) {\n var _this = this;\n var item;\n var isSingleLevel;\n var isIconRight = this.element.classList.contains(ICONRIGHT);\n var itemsLength = items.length;\n if (itemsLength) {\n var isActiveItem = void 0;\n var isLastItem = void 0;\n var isLastItemInPopup_1;\n var j_1 = 0;\n var wrapDiv = void 0;\n var len = (itemsLength * 2) - 1;\n var isItemCancelled_1 = false;\n var ol = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-wrapped-ol' : '' });\n var firstOl = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-first-ol' : '' });\n var showIcon = this.hasField(items, 'iconCss');\n var isCollasped = (this.overflowMode === 'Collapsed' && this._maxItems > 0 && itemsLength > this._maxItems && !this.isExpanded);\n var isDefaultOverflowMode_1 = (this.overflowMode === 'Hidden' && this._maxItems > 0);\n if (this.overflowMode === 'Menu' && this.popupUl) {\n this.popupUl.innerHTML = '';\n }\n var listBaseOptions = {\n moduleName: this.getModuleName(),\n showIcon: showIcon,\n itemNavigable: true,\n itemCreated: function (args) {\n var isLastItem = args.curData.isLastItem;\n if (isLastItem && args.item.children.length && !_this.itemTemplate) {\n delete args.curData.isLastItem;\n if (!isLastItemInPopup_1 && !_this.enableActiveItemNavigation) {\n args.item.innerHTML = _this.createElement('span', { className: ITEMTEXTCLASS, innerHTML: args.item.children[0].innerHTML }).outerHTML;\n }\n }\n if (args.curData.iconCss && !args.curData.text && !_this.itemTemplate) {\n args.item.classList.add('e-icon-item');\n }\n if (isDefaultOverflowMode_1) {\n args.item.setAttribute('item-index', j_1.toString());\n }\n var eventArgs = {\n item: extend({}, args.curData.properties ?\n args.curData.properties : args.curData), element: args.item, cancel: false\n };\n _this.trigger('beforeItemRender', eventArgs);\n isItemCancelled_1 = eventArgs.cancel;\n var containsRightIcon = (isIconRight || eventArgs.element.classList.contains(ICONRIGHT));\n if (containsRightIcon && args.curData.iconCss && !_this.itemTemplate) {\n args.item.querySelector('.e-anchor-wrap').appendChild(args.item.querySelector(DOT + ICONCLASS));\n }\n if (eventArgs.item.disabled) {\n args.item.setAttribute(ARIADISABLED, 'true');\n args.item.classList.add(DISABLEDCLASS);\n }\n if (eventArgs.item.id) {\n args.item.setAttribute('id', eventArgs.item.id);\n }\n if ((eventArgs.item.disabled || _this.disabled) && args.item.children.length && !_this.itemTemplate) {\n args.item.children[0].setAttribute(TABINDEX, '-1');\n }\n if (args.curData.isEmptyUrl) {\n args.item.children[0].removeAttribute('href');\n if ((!isLastItem || (isLastItem && _this.enableActiveItemNavigation)) && !(eventArgs.item.disabled\n || _this.disabled)) {\n args.item.children[0].setAttribute(TABINDEX, '0');\n EventHandler.add(args.item.children[0], 'keydown', _this.keyDownHandler, _this);\n }\n }\n args.item.removeAttribute('role');\n if (isLastItem) {\n args.item.setAttribute('data-active-item', '');\n }\n if (!_this.itemTemplate) {\n _this.beforeItemRenderChanges(args.curData, eventArgs.item, args.item, containsRightIcon);\n }\n }\n };\n for (var i = 0; i < len; (i % 2 && j_1++), i++) {\n isActiveItem = (this.activeItem && (this.activeItem === items[j_1].url ||\n this.activeItem === items[j_1].text));\n if (isCollasped && i > 1 && i < len - 2) {\n continue;\n }\n else if (isDefaultOverflowMode_1 && ((j_1 < this.startIndex || j_1 > this.endIndex)\n && (i % 2 ? j_1 !== this.startIndex - 1 : true)) && j_1 !== 0) {\n continue;\n }\n if (i % 2) {\n // separator item\n wrapDiv = this.createElement('div', { className: 'e-breadcrumb-item-wrapper' });\n if ((this.separatorTemplate && this.separatorTemplate === '/') || isNullOrUndefined(this.separatorTemplate)) {\n listBaseOptions.template = initializeCSPTemplate(function () {\n return '/';\n });\n }\n else {\n listBaseOptions.template = this.separatorTemplate;\n }\n listBaseOptions.itemClass = 'e-breadcrumb-separator';\n isSingleLevel = false;\n item = [{ previousItem: items[j_1], nextItem: items[j_1 + 1] }];\n }\n else {\n // list item\n listBaseOptions.itemClass = '';\n if (this.itemTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listBaseOptions.template = this.itemTemplate;\n isSingleLevel = false;\n }\n else {\n isSingleLevel = true;\n }\n item = [extend({}, items[j_1].properties ?\n items[j_1].properties\n : items[j_1])];\n if (!item[0].url && !this.itemTemplate) {\n item = [extend({}, item[0], { isEmptyUrl: true, url: '#' })];\n }\n isLastItem = (isDefaultOverflowMode_1 || this.overflowMode === 'Menu') && (j_1 === this.endIndex);\n if (((i === len - 1 || isLastItem) && !this.itemTemplate) || isActiveItem) {\n item[0].isLastItem = true;\n }\n }\n var parent_1 = ol;\n var lastPopupItemIdx = this.startIndex + this.endIndex - this._maxItems;\n if (this.overflowMode === 'Menu' && ((j_1 >= this.startIndex && (j_1 <= lastPopupItemIdx && (i % 2 ? !(j_1 === lastPopupItemIdx) : true)) && this.endIndex >= this._maxItems && this._maxItems > 0) || this._maxItems === 0)) {\n if (i % 2) {\n continue;\n }\n else {\n parent_1 = this.popupUl;\n if (isLastItem) {\n isLastItemInPopup_1 = true;\n }\n }\n }\n else if (this.overflowMode === 'Wrap') {\n if (i === 0) {\n parent_1 = firstOl;\n }\n else {\n parent_1 = wrapDiv;\n }\n }\n var li = ListBase.createList(this.createElement, item, listBaseOptions, isSingleLevel, this).childNodes;\n if (!isItemCancelled_1) {\n append(li, parent_1);\n }\n else if (isDefaultOverflowMode_1 || isCollasped || this.overflowMode === 'Menu' || this.overflowMode === 'Wrap') {\n items.splice(j_1, 1);\n this.initPvtProps();\n return this.reRenderItems();\n }\n else if ((i === len - 1 || isLastItem)) {\n remove(parent_1.lastElementChild);\n }\n if (this.overflowMode === 'Wrap' && i !== 0 && i % 2 === 0) {\n ol.appendChild(wrapDiv);\n }\n if (isCollasped && i === 1) {\n var li_1 = this.createElement('li', { className: 'e-icons e-breadcrumb-collapsed', attrs: { TABINDEX: '0' } });\n EventHandler.add(li_1, 'keyup', this.expandHandler, this);\n ol.appendChild(li_1);\n }\n if (this.overflowMode === 'Menu' && this.startIndex === i && this.endIndex >= this._maxItems && this._maxItems >= 0) {\n var menu = this.getMenuElement();\n EventHandler.add(menu, 'keyup', this.keyDownHandler, this);\n ol.appendChild(menu);\n }\n if (isActiveItem || isLastItem) {\n break;\n }\n if (isItemCancelled_1) {\n i++;\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n setTimeout(function () {\n _this.calculateMaxItems();\n }, 5);\n }\n if (this.overflowMode === 'Wrap') {\n this.element.appendChild(firstOl);\n }\n this.element.appendChild(ol);\n if (!this.isReact) {\n this.calculateMaxItems();\n }\n }\n };\n Breadcrumb.prototype.calculateMaxItems = function () {\n if (this.overflowMode === 'Hidden' || this.overflowMode === 'Collapsed' || this.overflowMode === 'Menu') {\n var maxItems = void 0;\n var width = this.element.offsetWidth;\n var liElems = [].slice.call(this.element.children[0].children).reverse();\n var liWidth = this.overflowMode === 'Menu' ? 0 : liElems[liElems.length - 1].offsetWidth + (liElems[liElems.length - 2] ? liElems[liElems.length - 2].offsetWidth : 0);\n if (this.overflowMode === 'Menu') {\n var menuEle = this.getMenuElement();\n this.element.appendChild(menuEle);\n liWidth += menuEle.offsetWidth;\n remove(menuEle);\n }\n for (var i = 0; i < liElems.length - 2; i++) {\n if (liWidth > width) {\n maxItems = Math.ceil((i - 1) / 2) + ((this.overflowMode === 'Menu' && i <= 2) ? 0 : 1);\n if (((this.maxItems > maxItems && !(this.maxItems > -1 && maxItems === -1)) ||\n this.maxItems === -1) && this._maxItems !== maxItems) {\n this._maxItems = maxItems;\n this.initPvtProps();\n return this.reRenderItems();\n }\n else {\n break;\n }\n }\n else {\n if (this.overflowMode === 'Menu' && i === 2) {\n liWidth += liElems[liElems.length - 1].offsetWidth + liElems[liElems.length - 2].offsetWidth;\n if (liWidth > width) {\n this._maxItems = 1;\n this.initPvtProps();\n return this.reRenderItems();\n }\n }\n if (!(this.overflowMode === 'Menu' && liElems[i].classList.contains(MENUCLASS))) {\n liWidth += liElems[i].offsetWidth;\n }\n }\n }\n }\n else if ((this.overflowMode === 'Wrap' || this.overflowMode === 'Scroll') && this._maxItems > 0) {\n var width = 0;\n var liElems = this.element.querySelectorAll(DOT + ITEMCLASS);\n if (liElems.length > this._maxItems + this._maxItems - 1) {\n for (var i = this.overflowMode === 'Wrap' ? 1 : 0; i < this._maxItems + this._maxItems - 1; i++) {\n width += liElems[i].offsetWidth;\n }\n width = width + 5 + (parseInt(getComputedStyle(this.element.children[0]).paddingLeft, 10) * 2);\n if (this.overflowMode === 'Wrap') {\n this.element.querySelector('.e-breadcrumb-wrapped-ol').style.width = width + 'px';\n }\n else {\n this.element.style.width = width + 'px';\n }\n }\n }\n };\n Breadcrumb.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n Breadcrumb.prototype.getMenuElement = function () {\n return this.createElement('li', { className: 'e-icons e-breadcrumb-menu', attrs: { TABINDEX: '0' } });\n };\n Breadcrumb.prototype.beforeItemRenderChanges = function (prevItem, currItem, elem, isRightIcon) {\n var wrapElem = elem.querySelector('.e-anchor-wrap');\n if (wrapElem) {\n wrapElem.parentElement.setAttribute('aria-label', 'home');\n }\n if (currItem.text !== prevItem.text && wrapElem) {\n wrapElem.childNodes.forEach(function (child) {\n if (child.nodeType === Node.TEXT_NODE) {\n child.textContent = currItem.text;\n }\n });\n }\n if (currItem.iconCss !== prevItem.iconCss && wrapElem) { // wrapElem - for checking it is item not a separator\n var iconElem = elem.querySelector(DOT + ICONCLASS);\n if (iconElem) {\n if (currItem.iconCss) {\n removeClass([iconElem], prevItem.iconCss.split(' '));\n addClass([iconElem], currItem.iconCss.split(' '));\n }\n else {\n remove(iconElem);\n }\n }\n else if (currItem.iconCss) {\n var iconElem_1 = this.createElement('span', { className: ICONCLASS + ' ' + currItem.iconCss });\n if (isRightIcon) {\n append([iconElem_1], wrapElem);\n }\n else {\n wrapElem.insertBefore(iconElem_1, wrapElem.childNodes[0]);\n }\n }\n }\n if (currItem.url !== prevItem.url && this.enableNavigation) {\n var anchor = elem.querySelector('a.' + ITEMTEXTCLASS);\n if (anchor) {\n if (currItem.url) {\n anchor.setAttribute('href', currItem.url);\n }\n else {\n anchor.removeAttribute('href');\n }\n }\n }\n };\n Breadcrumb.prototype.reRenderItems = function () {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && this.popupObj.element.querySelector('.e-edit-template')) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n this.element.innerHTML = '';\n this.renderItems(this.items);\n };\n Breadcrumb.prototype.clickHandler = function (e) {\n var li = closest(e.target, DOT + ITEMCLASS + ':not(.e-breadcrumb-separator)');\n if (!this.enableNavigation) {\n e.preventDefault();\n }\n if (li && (closest(e.target, DOT + ITEMTEXTCLASS) || this.itemTemplate)) {\n var idx = void 0;\n if (this.overflowMode === 'Wrap') {\n idx = [].slice.call(this.element.querySelectorAll(DOT + ITEMCLASS)).indexOf(li);\n }\n else {\n idx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (this.overflowMode === 'Menu') {\n if (closest(e.target, DOT + POPUPCLASS)) {\n idx += this.startIndex;\n this.endIndex = idx;\n if (e.type === 'keydown') {\n this.documentClickHandler(e);\n }\n }\n else if (this.element.querySelector(DOT + MENUCLASS)) {\n if (idx > [].slice.call(this.element.children[0].children).indexOf(this.element.querySelector(DOT + MENUCLASS))) {\n idx += (this.popupUl.childElementCount * 2) - 2;\n idx = Math.floor(idx / 2);\n this.endIndex = idx;\n }\n else {\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n }\n if (this.overflowMode === 'Hidden' && this._maxItems > 0 && this.endIndex !== 0) {\n idx = parseInt(li.getAttribute('item-index'), 10);\n if (this.startIndex > 1) {\n this.startIndex -= (this.endIndex - idx);\n }\n this.endIndex = idx;\n }\n var itemClickArgs = { element: li,\n item: this.items[idx], event: e, cancel: false };\n this.trigger('itemClick', itemClickArgs);\n if (itemClickArgs.cancel) {\n return;\n }\n if (this.items[idx]) {\n this.activeItem = this.items[idx].url || this.items[idx].text;\n }\n this.dataBind();\n }\n if (e.target.classList.contains('e-breadcrumb-collapsed')) {\n this.isExpanded = true;\n this.reRenderItems();\n }\n if (e.target.classList.contains(MENUCLASS) && !this.isPopupCreated) {\n this.renderPopup();\n }\n };\n Breadcrumb.prototype.renderPopup = function () {\n var _this = this;\n var wrapper = this.createElement('div', { className: POPUPCLASS + ' ' + this.cssClass + (this.enableRtl ? ' e-rtl' : '') });\n document.body.appendChild(wrapper);\n this.isPopupCreated = true;\n this.popupObj = new Popup(wrapper, {\n content: this.popupUl,\n relateTo: this.element.querySelector(DOT + MENUCLASS),\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n collision: { X: 'fit', Y: 'flip' },\n open: function () {\n if (_this.popupUl) {\n _this.popupUl.focus();\n }\n }\n });\n this.popupWireEvents();\n this.popupObj.show();\n };\n Breadcrumb.prototype.documentClickHandler = function (e) {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && !closest(e.target, DOT + MENUCLASS) && !closest(e.target, DOT + 'e-edit-template')) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n };\n Breadcrumb.prototype.resize = function () {\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n };\n Breadcrumb.prototype.expandHandler = function (e) {\n if (e.key === 'Enter') {\n this.isExpanded = true;\n this.reRenderItems();\n }\n };\n Breadcrumb.prototype.keyDownHandler = function (e) {\n if (e.key === 'Enter') {\n this.clickHandler(e);\n }\n };\n Breadcrumb.prototype.popupKeyDownHandler = function (e) {\n if (e.key === 'Escape') {\n this.documentClickHandler(e);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {BreadcrumbModel} newProp - Specifies the new properties.\n * @param {BreadcrumbModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Breadcrumb.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n case 'enableActiveItemNavigation':\n this.reRenderItems();\n break;\n case 'activeItem':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n break;\n case 'overflowMode':\n case 'maxItems':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n if (oldProp.overflowMode === 'Wrap') {\n this.element.classList.remove(WRAPMODECLASS);\n }\n else if (newProp.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n if (oldProp.overflowMode === 'Scroll') {\n this.element.classList.remove(SCROLLMODECLASS);\n }\n else if (newProp.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n break;\n case 'url':\n this.initItems();\n this.reRenderItems();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if ((oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) && !(newProp.cssClass &&\n newProp.cssClass.indexOf(ICONRIGHT) > -1) || !(oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) &&\n (newProp.cssClass && newProp.cssClass.indexOf(ICONRIGHT) > -1)) {\n this.reRenderItems();\n }\n break;\n case 'enableRtl':\n this.element.classList.toggle('e-rtl');\n break;\n case 'disabled':\n this.element.classList.toggle(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, newProp.disabled + '');\n break;\n }\n }\n };\n Breadcrumb.prototype.wireEvents = function () {\n this.delegateClickHanlder = this.documentClickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHanlder, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resize.bind(this));\n };\n Breadcrumb.prototype.popupWireEvents = function () {\n EventHandler.add(this.popupObj.element, 'click', this.clickHandler, this);\n EventHandler.add(this.popupObj.element, 'keydown', this.popupKeyDownHandler, this);\n };\n Breadcrumb.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'click', this.delegateClickHanlder);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n window.removeEventListener('resize', this.resize.bind(this));\n if (this.popupObj) {\n EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);\n EventHandler.remove(this.popupObj.element, 'keydown', this.popupKeyDownHandler);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Breadcrumb.prototype.getPersistData = function () {\n return this.addOnPersist(['activeItem']);\n };\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Breadcrumb.prototype.getModuleName = function () {\n return 'breadcrumb';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Breadcrumb.prototype.destroy = function () {\n var _this = this;\n if (this.popupObj && this.popupObj.element.classList.contains('e-popup-open')) {\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n var classes = [];\n var attributes = ['aria-label'];\n if (this.cssClass) {\n classes.concat(this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n classes.push('e-rtl');\n }\n if (this.disabled) {\n classes.push(DISABLEDCLASS);\n attributes.push(ARIADISABLED);\n }\n if (this.overflowMode === 'Wrap') {\n classes.push(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n classes.push(SCROLLMODECLASS);\n }\n this.unWireEvents();\n this.element.innerHTML = '';\n removeClass([this.element], classes);\n attributes.forEach(function (attribute) {\n _this.element.removeAttribute(attribute);\n });\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"url\", void 0);\n __decorate([\n Collection([], BreadcrumbItem)\n ], Breadcrumb.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"activeItem\", void 0);\n __decorate([\n Property(-1)\n ], Breadcrumb.prototype, \"maxItems\", void 0);\n __decorate([\n Property('Menu')\n ], Breadcrumb.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], Breadcrumb.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('/')\n ], Breadcrumb.prototype, \"separatorTemplate\", void 0);\n __decorate([\n Property(true)\n ], Breadcrumb.prototype, \"enableNavigation\", void 0);\n __decorate([\n Property(false)\n ], Breadcrumb.prototype, \"enableActiveItemNavigation\", void 0);\n __decorate([\n Property(false)\n ], Breadcrumb.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Breadcrumb.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], Breadcrumb.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], Breadcrumb.prototype, \"itemClick\", void 0);\n __decorate([\n Event()\n ], Breadcrumb.prototype, \"created\", void 0);\n Breadcrumb = __decorate([\n NotifyPropertyChanges\n ], Breadcrumb);\n return Breadcrumb;\n}(Component));\nexport { Breadcrumb };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Collection, Property, Event, formatUnit, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { ChildProperty, addClass, removeClass, setStyleAttribute, attributes, getUniqueID, compile, getInstance, L10n } from '@syncfusion/ej2-base';\nimport { append, closest, isNullOrUndefined, remove, classList, Touch, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\n// Constant variables\nvar CLS_CAROUSEL = 'e-carousel';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_RTL = 'e-rtl';\nvar CLS_PARTIAL = 'e-partial';\nvar CLS_SWIPE = 'e-swipe';\nvar CLS_SLIDE_CONTAINER = 'e-carousel-slide-container';\nvar CLS_ITEMS = 'e-carousel-items';\nvar CLS_CLONED = 'e-cloned';\nvar CLS_ITEM = 'e-carousel-item';\nvar CLS_PREVIOUS = 'e-previous';\nvar CLS_NEXT = 'e-next';\nvar CLS_PREV_ICON = 'e-previous-icon';\nvar CLS_NEXT_ICON = 'e-next-icon';\nvar CLS_NAVIGATORS = 'e-carousel-navigators';\nvar CLS_INDICATORS = 'e-carousel-indicators';\nvar CLS_INDICATOR_BARS = 'e-indicator-bars';\nvar CLS_INDICATOR_BAR = 'e-indicator-bar';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_ICON = 'e-icons';\nvar CLS_PLAY_PAUSE = 'e-play-pause';\nvar CLS_PLAY_ICON = 'e-play-icon';\nvar CLS_PAUSE_ICON = 'e-pause-icon';\nvar CLS_PREV_BUTTON = 'e-previous-button';\nvar CLS_NEXT_BUTTON = 'e-next-button';\nvar CLS_PLAY_BUTTON = 'e-play-button';\nvar CLS_FLAT = 'e-flat';\nvar CLS_ROUND = 'e-round';\nvar CLS_HOVER_ARROWS = 'e-hover-arrows';\nvar CLS_HOVER = 'e-carousel-hover';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_SLIDE_ANIMATION = 'e-carousel-slide-animation';\nvar CLS_FADE_ANIMATION = 'e-carousel-fade-animation';\nvar CLS_CUSTOM_ANIMATION = 'e-carousel-custom-animation';\nvar CLS_ANIMATION_NONE = 'e-carousel-animation-none';\nvar CLS_PREV_SLIDE = 'e-prev';\nvar CLS_NEXT_SLIDE = 'e-next';\nvar CLS_TRANSITION_START = 'e-transition-start';\nvar CLS_TRANSITION_END = 'e-transition-end';\n/**\n * Specifies the action (touch & mouse) which enables the slide swiping action in carousel.\n * * Touch - Enables or disables the swiping action in touch interaction.\n * * Mouse - Enables or disables the swiping action in mouse interaction.\n *\n * @aspNumberEnum\n */\nexport var CarouselSwipeMode;\n(function (CarouselSwipeMode) {\n /** Enables or disables the swiping action in touch interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Touch\"] = 1] = \"Touch\";\n /** Enables or disables the swiping action in mouse interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Mouse\"] = 2] = \"Mouse\";\n})(CarouselSwipeMode || (CarouselSwipeMode = {}));\n/** Specifies the carousel individual item. */\nvar CarouselItem = /** @class */ (function (_super) {\n __extends(CarouselItem, _super);\n function CarouselItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], CarouselItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property()\n ], CarouselItem.prototype, \"interval\", void 0);\n __decorate([\n Property()\n ], CarouselItem.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], CarouselItem.prototype, \"htmlAttributes\", void 0);\n return CarouselItem;\n}(ChildProperty));\nexport { CarouselItem };\nvar Carousel = /** @class */ (function (_super) {\n __extends(Carousel, _super);\n /**\n * Constructor for creating the Carousel widget\n *\n * @param {CarouselModel} options Accepts the carousel model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function Carousel(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isSwipe = false;\n return _this;\n }\n Carousel.prototype.getModuleName = function () {\n return CLS_CAROUSEL.replace('e-', '');\n };\n Carousel.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedIndex']);\n };\n Carousel.prototype.preRender = function () {\n this.keyConfigs = {\n home: 'home',\n end: 'end',\n space: 'space',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n var defaultLocale = {\n nextSlide: 'Next slide',\n of: 'of',\n pauseSlideTransition: 'Pause slide transition',\n playSlideTransition: 'Play slide transition',\n previousSlide: 'Previous slide',\n slide: 'Slide',\n slideShow: 'Slide show'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n Carousel.prototype.render = function () {\n this.initialize();\n this.renderSlides();\n this.renderNavigators();\n this.renderPlayButton();\n this.renderIndicators();\n this.applyAnimation();\n this.wireEvents();\n };\n Carousel.prototype.onPropertyChanged = function (newProp, oldProp) {\n var target;\n var rtlElement;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'animationEffect':\n this.applyAnimation();\n break;\n case 'cssClass':\n classList(this.element, [newProp.cssClass], [oldProp.cssClass]);\n break;\n case 'selectedIndex':\n this.setActiveSlide(this.selectedIndex, oldProp.selectedIndex > this.selectedIndex ? 'Previous' : 'Next');\n this.autoSlide();\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n break;\n case 'enableTouchSwipe':\n if (!this.enableTouchSwipe && this.touchModule) {\n this.touchModule.destroy();\n }\n if (this.element.querySelector(\".\" + CLS_ITEMS)) {\n this.renderTouchActions();\n }\n break;\n case 'loop':\n if (this.loop && isNullOrUndefined(this.autoSlideInterval)) {\n this.applySlideInterval();\n }\n this.handleNavigatorsActions(this.selectedIndex);\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n this.reRenderSlides();\n }\n break;\n case 'enableRtl':\n rtlElement = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREV_BUTTON + \",\\n .\" + CLS_NEXT_BUTTON + \", .\" + CLS_PLAY_BUTTON));\n rtlElement.push(this.element);\n if (this.enableRtl) {\n addClass(rtlElement, CLS_RTL);\n }\n else {\n removeClass(rtlElement, CLS_RTL);\n }\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n var cloneCount = this.loop ? this.getNumOfItems() : 0;\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n }\n break;\n case 'buttonsVisibility':\n target = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n if (target) {\n switch (this.buttonsVisibility) {\n case 'Hidden':\n this.resetTemplates(['previousButtonTemplate', 'nextButtonTemplate']);\n remove(target);\n break;\n case 'VisibleOnHover':\n addClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n case 'Visible':\n removeClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n }\n }\n else {\n this.renderNavigators();\n this.renderPlayButton();\n }\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(this.height) });\n break;\n case 'autoPlay':\n if (this.showPlayButton && isNullOrUndefined(this.playButtonTemplate)) {\n this.playButtonClickHandler(null, true);\n }\n this.autoSlide();\n break;\n case 'interval':\n this.autoSlide();\n break;\n case 'showIndicators':\n case 'indicatorsType':\n target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n break;\n case 'showPlayButton':\n target = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (!this.showPlayButton && target) {\n remove(target);\n this.resetTemplates(['playButtonTemplate']);\n }\n this.renderPlayButton();\n break;\n case 'items':\n case 'dataSource': {\n var selectedData = prop === 'dataSource' ? this.dataSource : this.items;\n if (!isNullOrUndefined(selectedData) && selectedData.length > 0 && this.selectedIndex >= selectedData.length) {\n this.setActiveSlide(selectedData.length - 1, 'Previous');\n this.autoSlide();\n }\n this.reRenderSlides();\n this.reRenderIndicators();\n break;\n }\n case 'partialVisible':\n if (this.partialVisible) {\n addClass([this.element], CLS_PARTIAL);\n }\n else {\n removeClass([this.element], CLS_PARTIAL);\n }\n this.reRenderSlides();\n break;\n case 'swipeMode':\n EventHandler.remove(this.element, 'mousedown touchstart', this.swipeStart);\n EventHandler.remove(this.element, 'mousemove touchmove', this.swiping);\n EventHandler.remove(this.element, 'mouseup touchend', this.swipStop);\n this.swipeModehandlers();\n this.reRenderSlides();\n break;\n }\n }\n };\n Carousel.prototype.reRenderSlides = function () {\n var target = this.element.querySelector(\".\" + CLS_ITEMS);\n if (target) {\n this.resetTemplates(['itemTemplate']);\n remove(target);\n }\n this.renderSlides();\n };\n Carousel.prototype.reRenderIndicators = function () {\n var target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n };\n Carousel.prototype.initialize = function () {\n var carouselClasses = [];\n carouselClasses.push(CLS_CAROUSEL);\n if (this.cssClass) {\n carouselClasses.push(this.cssClass);\n }\n if (this.enableRtl) {\n carouselClasses.push(CLS_RTL);\n }\n if (this.partialVisible) {\n carouselClasses.push(CLS_PARTIAL);\n }\n if (!(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n carouselClasses.push(CLS_SWIPE);\n }\n addClass([this.element], carouselClasses);\n setStyleAttribute(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n attributes(this.element, { 'role': 'group', 'aria-roledescription': 'carousel', 'aria-label': this.localeObj.getConstant('slideShow') });\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n Carousel.prototype.renderSlides = function () {\n var _this = this;\n var slideContainer = this.element.querySelector('.' + CLS_SLIDE_CONTAINER);\n if (!slideContainer) {\n slideContainer = this.createElement('div', { className: CLS_SLIDE_CONTAINER, attrs: { 'tabindex': '0', 'role': 'tabpanel' } });\n this.element.appendChild(slideContainer);\n }\n this.itemsContainer = this.createElement('div', { className: CLS_ITEMS, attrs: { 'aria-live': this.autoPlay ? 'off' : 'polite' } });\n slideContainer.appendChild(this.itemsContainer);\n var numOfItems = this.getNumOfItems();\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n if (this.items.length > 0) {\n this.slideItems = this.items;\n this.items.forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.slideItems = this.dataSource;\n this.dataSource.forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer);\n });\n }\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n this.renderTemplates();\n this.itemsContainer.style.setProperty('--carousel-items-count', \"\" + this.itemsContainer.children.length);\n var slideWidth = isNullOrUndefined(this.itemsContainer.firstElementChild) ? 0 :\n this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transitionProperty = 'none';\n var cloneCount = this.loop ? numOfItems : 0;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n this.autoSlide();\n this.renderTouchActions();\n this.renderKeyboardActions();\n };\n Carousel.prototype.getTranslateX = function (slideWidth, count) {\n if (count === void 0) { count = 1; }\n return this.enableRtl ? \"translateX(\" + (slideWidth) * (count) + \"px)\" :\n \"translateX(\" + -(slideWidth) * (count) + \"px)\";\n };\n Carousel.prototype.renderSlide = function (item, itemTemplate, index, container, isClone) {\n if (isClone === void 0) { isClone = false; }\n var itemEle = this.createElement('div', {\n id: getUniqueID('carousel_item'),\n className: CLS_ITEM + \" \" + (item.cssClass ? item.cssClass : '') + \" \" + (this.selectedIndex === index && !isClone ? CLS_ACTIVE : ''),\n attrs: {\n 'aria-hidden': this.selectedIndex === index && !isClone ? 'false' : 'true', 'data-index': index.toString(),\n 'role': 'group', 'aria-roledescription': 'slide'\n }\n });\n if (isClone) {\n itemEle.classList.add(CLS_CLONED);\n }\n if (!isNullOrUndefined(item.htmlAttributes)) {\n this.setHtmlAttributes(item.htmlAttributes, itemEle);\n }\n var templateId = this.element.id + '_template';\n var template = this.templateParser(itemTemplate)(item, this, 'itemTemplate', templateId, false);\n append(template, itemEle);\n container.appendChild(itemEle);\n };\n Carousel.prototype.renderNavigators = function () {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n var navigators = this.createElement('div', { className: CLS_NAVIGATORS });\n var itemsContainer = this.element.querySelector(\".\" + CLS_SLIDE_CONTAINER);\n itemsContainer.insertAdjacentElement('afterend', navigators);\n if (!isNullOrUndefined(this.slideItems) && this.slideItems.length > 1) {\n this.renderNavigatorButton('Previous');\n this.renderNavigatorButton('Next');\n }\n this.renderTemplates();\n };\n Carousel.prototype.renderNavigatorButton = function (direction) {\n var buttonContainer = this.createElement('div', {\n className: (direction === 'Previous' ? CLS_PREVIOUS : CLS_NEXT) + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (direction === 'Previous' && this.previousButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE);\n var templateId = this.element.id + '_previousButtonTemplate';\n var template = this.templateParser(this.previousButtonTemplate)({ type: 'Previous' }, this, 'previousButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else if (direction === 'Next' && this.nextButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE);\n var templateId = this.element.id + '_nextButtonTemplate';\n var template = this.templateParser(this.nextButtonTemplate)({ type: 'Next' }, this, 'nextButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else {\n var button = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(direction === 'Previous' ? 'previousSlide' : 'nextSlide'), 'type': 'button' }\n });\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + (direction === 'Previous' ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON),\n iconCss: CLS_ICON + ' ' + (direction === 'Previous' ? CLS_PREV_ICON : CLS_NEXT_ICON),\n enableRtl: this.enableRtl,\n disabled: !this.loop && this.selectedIndex === (direction === 'Previous' ? 0 : this.slideItems.length - 1)\n });\n buttonObj.appendTo(button);\n buttonContainer.appendChild(button);\n }\n this.element.querySelector('.' + CLS_NAVIGATORS).appendChild(buttonContainer);\n EventHandler.add(buttonContainer, 'click', this.navigatorClickHandler, this);\n };\n Carousel.prototype.renderPlayButton = function () {\n if (isNullOrUndefined(this.slideItems) || this.buttonsVisibility === 'Hidden' || !this.showPlayButton || this.slideItems.length <= 1) {\n return;\n }\n var playPauseWrap = this.createElement('div', {\n className: CLS_PLAY_PAUSE + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (this.playButtonTemplate) {\n addClass([playPauseWrap], CLS_TEMPLATE);\n var templateId = this.element.id + '_playButtonTemplate';\n var template = this.templateParser(this.playButtonTemplate)({}, this, 'playButtonTemplate', templateId, false);\n append(template, playPauseWrap);\n }\n else {\n var playButton = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'), 'type': 'button' }\n });\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + CLS_PLAY_BUTTON,\n iconCss: CLS_ICON + ' ' + (this.autoPlay && !isLastSlide ? CLS_PAUSE_ICON : CLS_PLAY_ICON),\n isToggle: true,\n enableRtl: this.enableRtl\n });\n if (isLastSlide) {\n this.setProperties({ autoPlay: false }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', 'polite');\n }\n buttonObj.appendTo(playButton);\n playPauseWrap.appendChild(playButton);\n }\n var navigators = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n navigators.insertBefore(playPauseWrap, navigators.lastElementChild);\n this.renderTemplates();\n EventHandler.add(playPauseWrap, 'click', this.playButtonClickHandler, this);\n };\n Carousel.prototype.renderIndicators = function () {\n var _this = this;\n if (!this.showIndicators || isNullOrUndefined(this.indicatorsType)) {\n return;\n }\n var indicatorClass = 'e-default';\n if (!this.indicatorsTemplate) {\n indicatorClass = \"e-\" + this.indicatorsType.toLowerCase();\n }\n var indicatorWrap = this.createElement('div', { className: CLS_INDICATORS + \" \" + indicatorClass });\n var indicatorBars = this.createElement('div', { className: CLS_INDICATOR_BARS });\n indicatorWrap.appendChild(indicatorBars);\n var progress;\n if (this.slideItems) {\n switch (this.indicatorsType) {\n case 'Fraction':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n indicatorBars.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n progress = this.createElement('div', { className: CLS_INDICATOR_BAR });\n progress.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n progress.style.setProperty('--carousel-items-count', \"\" + this.slideItems.length);\n indicatorBars.appendChild(progress);\n }\n break;\n case 'Default':\n case 'Dynamic':\n this.slideItems.forEach(function (item, index) {\n var indicatorBar = _this.createElement('div', {\n className: CLS_INDICATOR_BAR + ' ' + (_this.selectedIndex === index ? CLS_ACTIVE : _this.selectedIndex - 1 === index ? CLS_PREV_SLIDE : _this.selectedIndex + 1 === index ? CLS_NEXT_SLIDE : ''),\n attrs: { 'data-index': index.toString(), 'aria-current': _this.selectedIndex === index ? 'true' : 'false' }\n });\n indicatorBar.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex);\n if (_this.indicatorsTemplate) {\n _this.renderIndicatorTemplate(indicatorBar, index);\n }\n else if (_this.indicatorsType === 'Default') {\n var indicator = _this.createElement('button', { className: CLS_INDICATOR, attrs: { 'type': 'button', 'aria-label': _this.localeObj.getConstant('slide') + ' ' + (index + 1) + ' ' + _this.localeObj.getConstant('of') + ' ' + _this.slideItems.length } });\n indicatorBar.appendChild(indicator);\n indicator.appendChild(_this.createElement('div', {}));\n var buttonObj = new Button({ cssClass: 'e-flat e-small' });\n buttonObj.appendTo(indicator);\n }\n indicatorBars.appendChild(indicatorBar);\n if (_this.indicatorsType === 'Default') {\n EventHandler.add(indicatorBar, 'click', _this.indicatorClickHandler, _this);\n }\n });\n break;\n }\n }\n this.element.appendChild(indicatorWrap);\n };\n Carousel.prototype.renderIndicatorTemplate = function (indicatorBar, index) {\n if (index === void 0) { index = 0; }\n addClass([indicatorBar], CLS_TEMPLATE);\n var templateId = this.element.id + '_indicatorsTemplate';\n var template = this.templateParser(this.indicatorsTemplate)({ index: index, selectedIndex: this.selectedIndex }, this, 'indicatorsTemplate', templateId, false);\n append(template, indicatorBar);\n };\n Carousel.prototype.renderKeyboardActions = function () {\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n };\n Carousel.prototype.renderTouchActions = function () {\n if (!this.enableTouchSwipe) {\n return;\n }\n this.touchModule = new Touch(this.element, { swipe: this.swipeHandler.bind(this) });\n };\n Carousel.prototype.applyAnimation = function () {\n removeClass([this.element], [CLS_CUSTOM_ANIMATION, CLS_FADE_ANIMATION, CLS_SLIDE_ANIMATION, CLS_ANIMATION_NONE]);\n switch (this.animationEffect) {\n case 'Slide':\n addClass([this.element], CLS_SLIDE_ANIMATION);\n break;\n case 'Fade':\n addClass([this.element], CLS_FADE_ANIMATION);\n break;\n case 'None':\n addClass([this.element], CLS_ANIMATION_NONE);\n break;\n case 'Custom':\n addClass([this.element], CLS_CUSTOM_ANIMATION);\n break;\n }\n };\n Carousel.prototype.autoSlide = function () {\n if (isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n this.resetSlideInterval();\n this.applySlideInterval();\n };\n Carousel.prototype.autoSlideChange = function () {\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM + \".\" + CLS_ACTIVE)\n || this.element.querySelector(\".\" + CLS_INDICATORS + \" .\" + CLS_ACTIVE);\n if (isNullOrUndefined(activeSlide)) {\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n if (!this.loop && activeIndex === this.slideItems.length - 1) {\n this.resetSlideInterval();\n }\n else {\n var index = (activeIndex + 1) % this.slideItems.length;\n if (!this.element.classList.contains(CLS_HOVER)) {\n this.setActiveSlide(index, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.applySlideInterval = function () {\n var _this = this;\n if (!this.autoPlay || this.element.classList.contains(CLS_HOVER)) {\n return;\n }\n var itemInterval = this.interval;\n if (this.items.length > 0 && !isNullOrUndefined(this.items[this.selectedIndex || 0].interval)) {\n itemInterval = this.items[this.selectedIndex || 0].interval;\n }\n this.autoSlideInterval = setInterval(function () { return _this.autoSlideChange(); }, itemInterval);\n };\n Carousel.prototype.resetSlideInterval = function () {\n clearInterval(this.autoSlideInterval);\n this.autoSlideInterval = null;\n };\n Carousel.prototype.getSlideIndex = function (direction) {\n var currentIndex = this.selectedIndex || 0;\n if (direction === 'Previous') {\n currentIndex--;\n if (currentIndex < 0) {\n currentIndex = this.slideItems.length - 1;\n }\n }\n else {\n currentIndex++;\n if (currentIndex === this.slideItems.length) {\n currentIndex = 0;\n }\n }\n return currentIndex;\n };\n Carousel.prototype.setActiveSlide = function (currentIndex, direction, isSwiped) {\n var _this = this;\n if (isSwiped === void 0) { isSwiped = false; }\n if (this.element.querySelectorAll(\".\" + CLS_ITEM + \".\" + CLS_PREV_SLIDE + \",.\" + CLS_ITEM + \".\" + CLS_NEXT_SLIDE).length > 0) {\n return;\n }\n currentIndex = isNullOrUndefined(currentIndex) ? 0 : currentIndex;\n var allSlides = [].slice.call(this.element.querySelectorAll(\".\" + CLS_ITEM + \":not(.e-cloned)\"));\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM + \".\" + CLS_ACTIVE);\n if (isNullOrUndefined(activeSlide) && this.showIndicators) {\n var activeIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BAR + \".\" + CLS_ACTIVE);\n var activeIndex_1 = parseInt(activeIndicator.dataset.index, 10);\n addClass([allSlides[parseInt(activeIndex_1.toString(), 10)]], CLS_ACTIVE);\n return;\n }\n else if (isNullOrUndefined(activeSlide)) {\n addClass([allSlides[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE);\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n var currentSlide = allSlides[parseInt(currentIndex.toString(), 10)];\n var eventArgs = {\n currentIndex: activeIndex,\n nextIndex: currentIndex,\n currentSlide: activeSlide,\n nextSlide: currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped,\n cancel: false\n };\n this.trigger('slideChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ selectedIndex: currentIndex }, true);\n attributes(args.currentSlide, { 'aria-hidden': 'true' });\n attributes(args.nextSlide, { 'aria-hidden': 'false' });\n _this.refreshIndicators(activeIndex, currentIndex);\n _this.slideChangedEventArgs = {\n currentIndex: args.nextIndex,\n previousIndex: args.currentIndex,\n currentSlide: args.nextSlide,\n previousSlide: args.currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped\n };\n var slideWidth = allSlides[parseInt(currentIndex.toString(), 10)].clientWidth;\n var numOfItems = _this.getNumOfItems();\n if (!_this.isSwipe) {\n _this.itemsContainer.style.transitionDuration = '0.6s';\n }\n _this.isSwipe = false;\n if ((_this.animationEffect === 'Fade')) {\n _this.itemsContainer.classList.add('e-fade-in-out');\n }\n else {\n _this.itemsContainer.style.transitionProperty = 'transform';\n }\n if (_this.loop) {\n if (_this.slideChangedEventArgs.currentIndex === 0 && _this.slideChangedEventArgs.slideDirection === 'Next') {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, allSlides.length + numOfItems);\n }\n else if (_this.slideChangedEventArgs.currentIndex === _this.slideItems.length - 1 && _this.slideChangedEventArgs.slideDirection === 'Previous') {\n _this.itemsContainer.style.transform = _this.partialVisible ? _this.getTranslateX(slideWidth) : 'translateX(0px)';\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex + numOfItems);\n }\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex);\n }\n if (_this.animationEffect === 'Slide') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_PREV_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_END);\n }\n else {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_START);\n }\n }\n else if (_this.animationEffect === 'Fade') {\n removeClass([args.currentSlide], CLS_ACTIVE);\n addClass([args.nextSlide], CLS_ACTIVE);\n }\n else if (_this.animationEffect === 'Custom') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n }\n else {\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n }\n }\n else {\n _this.onTransitionEnd();\n }\n _this.handleNavigatorsActions(currentIndex);\n });\n };\n Carousel.prototype.onTransitionEnd = function () {\n var _this = this;\n removeClass(this.element.querySelectorAll(\".\" + CLS_ITEMS), 'e-fade-in-out');\n var numOfItems = this.getNumOfItems();\n if (this.slideChangedEventArgs) {\n this.itemsContainer.style.transitionProperty = 'none';\n if (this.loop && (this.slideChangedEventArgs.currentIndex === 0 && this.slideChangedEventArgs.slideDirection === 'Next' ||\n this.slideChangedEventArgs.currentIndex === this.slideItems.length - 1 && this.slideChangedEventArgs.slideDirection === 'Previous')) {\n var slideWidth = this.slideChangedEventArgs.currentSlide.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.slideChangedEventArgs.currentIndex + numOfItems);\n }\n addClass([this.slideChangedEventArgs.currentSlide], CLS_ACTIVE);\n removeClass([this.slideChangedEventArgs.previousSlide], CLS_ACTIVE);\n this.trigger('slideChanged', this.slideChangedEventArgs, function () {\n removeClass(_this.element.querySelectorAll(\".\" + CLS_ITEM), [CLS_PREV_SLIDE, CLS_NEXT_SLIDE, CLS_TRANSITION_START, CLS_TRANSITION_END]);\n _this.slideChangedEventArgs = null;\n });\n }\n };\n Carousel.prototype.refreshIndicators = function (activeIndex, currentIndex) {\n var _this = this;\n var slideIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BARS);\n if (isNullOrUndefined(slideIndicator)) {\n return;\n }\n var indicators = [].slice.call(slideIndicator.childNodes);\n switch (this.indicatorsType) {\n case 'Default':\n case 'Dynamic':\n attributes(indicators[parseInt(activeIndex.toString(), 10)], { 'aria-current': 'false' });\n attributes(indicators[parseInt(currentIndex.toString(), 10)], { 'aria-current': 'true' });\n removeClass(indicators, [CLS_ACTIVE, CLS_PREV_SLIDE, CLS_NEXT_SLIDE]);\n addClass([indicators[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE);\n if (indicators[currentIndex - 1]) {\n addClass([indicators[currentIndex - 1]], CLS_PREV_SLIDE);\n }\n if (indicators[currentIndex + 1]) {\n addClass([indicators[currentIndex + 1]], CLS_NEXT_SLIDE);\n }\n indicators.forEach(function (item) { return item.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex); });\n break;\n case 'Fraction':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.firstElementChild.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n }\n break;\n }\n };\n Carousel.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n Carousel.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n Carousel.prototype.getNavigatorState = function (target, isPrevious) {\n var button = target.querySelector(\".\" + (isPrevious ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON));\n if (button) {\n var buttonObj = getInstance(button, Button);\n return buttonObj.disabled;\n }\n return false;\n };\n Carousel.prototype.navigatorClickHandler = function (e) {\n var target = e.currentTarget;\n var isDisabled = this.getNavigatorState(target, target.classList.contains(CLS_PREVIOUS));\n if (isDisabled) {\n return;\n }\n var direction = target.classList.contains(CLS_PREVIOUS) ? 'Previous' : 'Next';\n this.setActiveSlide(this.getSlideIndex(direction), direction);\n this.autoSlide();\n };\n Carousel.prototype.indicatorClickHandler = function (e) {\n var target = closest(e.target, \".\" + CLS_INDICATOR_BAR);\n var index = parseInt(target.dataset.index, 10);\n if (this.selectedIndex !== index) {\n this.setActiveSlide(index, this.selectedIndex > index ? 'Previous' : 'Next');\n this.autoSlide();\n }\n };\n Carousel.prototype.playButtonClickHandler = function (e, isPropertyChange) {\n if (isPropertyChange === void 0) { isPropertyChange = false; }\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n if (playButton) {\n var buttonObj = getInstance(playButton, Button);\n if (!isPropertyChange) {\n this.setProperties({ autoPlay: !this.autoPlay }, true);\n }\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n buttonObj.iconCss = CLS_ICON + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n if (this.autoPlay && !this.loop && this.selectedIndex === this.slideItems.length - 1) {\n this.setActiveSlide(0, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.keyHandler = function (e) {\n var direction;\n var slideIndex;\n var isSlideTransition = false;\n var target = e.target;\n e.preventDefault();\n switch (e.action) {\n case 'space':\n if (this.showIndicators && target.classList.contains(CLS_INDICATOR)) {\n target.click();\n }\n else if (target.classList.contains(CLS_CAROUSEL) || target.classList.contains(CLS_PLAY_BUTTON)) {\n this.playButtonClickHandler(e);\n }\n else if (target.classList.contains(CLS_NEXT_BUTTON)) {\n this.next();\n }\n else if (target.classList.contains(CLS_PREV_BUTTON)) {\n this.prev();\n }\n break;\n case 'end':\n slideIndex = this.slideItems.length - 1;\n direction = 'Next';\n isSlideTransition = true;\n break;\n case 'home':\n slideIndex = 0;\n direction = 'Previous';\n isSlideTransition = true;\n break;\n case 'moveUp':\n case 'moveLeft':\n case 'moveDown':\n case 'moveRight':\n if (this.showIndicators && isNullOrUndefined(this.indicatorsTemplate)) {\n this.element.focus();\n }\n direction = (e.action === 'moveUp' || e.action === 'moveLeft') ? 'Previous' : 'Next';\n slideIndex = this.getSlideIndex(direction);\n isSlideTransition = !this.isSuspendSlideTransition(slideIndex, direction);\n break;\n }\n if (isSlideTransition) {\n this.setActiveSlide(slideIndex, direction);\n this.autoSlide();\n isSlideTransition = false;\n }\n };\n Carousel.prototype.swipeHandler = function (e) {\n if (this.element.classList.contains(CLS_HOVER) || isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n var direction = (e.swipeDirection === 'Right') ? 'Previous' : 'Next';\n var slideIndex = this.getSlideIndex(direction);\n if (!this.isSuspendSlideTransition(slideIndex, direction)) {\n this.setActiveSlide(slideIndex, direction, true);\n this.autoSlide();\n }\n };\n Carousel.prototype.isSuspendSlideTransition = function (index, direction) {\n return !this.loop && (direction === 'Next' && index === 0 || direction === 'Previous' && index === this.slideItems.length - 1);\n };\n Carousel.prototype.handleNavigatorsActions = function (index) {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n if (this.showPlayButton) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var isButtonUpdate = isNullOrUndefined(this.playButtonTemplate) && playButton && isLastSlide;\n if (isNullOrUndefined(this.playButtonTemplate) && playButton && !isLastSlide) {\n isButtonUpdate = !playButton.classList.contains(CLS_ACTIVE);\n }\n if (isButtonUpdate) {\n this.setProperties({ autoPlay: !isLastSlide }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n var buttonObj = getInstance(playButton, Button);\n buttonObj.iconCss = CLS_ICON + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n }\n }\n var prevButton = this.element.querySelector(\".\" + CLS_PREV_BUTTON);\n if (prevButton && isNullOrUndefined(this.previousButtonTemplate)) {\n var buttonObj = getInstance(prevButton, Button);\n buttonObj.disabled = !this.loop && index === 0;\n buttonObj.dataBind();\n }\n var nextButton = this.element.querySelector(\".\" + CLS_NEXT_BUTTON);\n if (nextButton && isNullOrUndefined(this.nextButtonTemplate)) {\n var buttonObj = getInstance(nextButton, Button);\n buttonObj.disabled = !this.loop && index === this.slideItems.length - 1;\n buttonObj.dataBind();\n }\n };\n Carousel.prototype.onHoverActions = function (e) {\n var navigator = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n switch (e.type) {\n case 'mouseenter':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n removeClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n if (this.pauseOnHover) {\n addClass([this.element], CLS_HOVER);\n }\n break;\n case 'mouseleave':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n addClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.onFocusActions = function (e) {\n switch (e.type) {\n case 'focusin':\n addClass([this.element], CLS_HOVER);\n break;\n case 'focusout':\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.destroyButtons = function () {\n var buttonCollections = [].slice.call(this.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = getInstance(button, Button);\n if (instance) {\n instance.destroy();\n }\n }\n };\n Carousel.prototype.getNumOfItems = function () {\n return this.partialVisible ? 2 : 1;\n };\n Carousel.prototype.getTranslateValue = function (element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m41 : 0;\n };\n Carousel.prototype.swipeStart = function (e) {\n if (!this.timeStampStart) {\n this.timeStampStart = Date.now();\n }\n this.isSwipe = false;\n this.itemsContainer.classList.add('e-swipe-start');\n this.prevPageX = e.touches ? e.touches[0].pageX : e.pageX;\n this.initialTranslate = this.getTranslateValue(this.itemsContainer);\n };\n Carousel.prototype.swiping = function (e) {\n if (!this.itemsContainer.classList.contains('e-swipe-start')) {\n return;\n }\n e.preventDefault();\n var pageX = e.touches ? e.touches[0].pageX : e.pageX;\n var positionDiff = this.prevPageX - (pageX);\n if (!this.loop && ((this.enableRtl && ((this.selectedIndex === 0 && positionDiff > 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff < 0))) ||\n (!this.enableRtl && ((this.selectedIndex === 0 && positionDiff < 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff > 0))))) {\n return;\n }\n this.itemsContainer.style.transform = \"translateX(\" + (this.initialTranslate + (this.enableRtl ? positionDiff : -positionDiff)) + \"px)\";\n };\n Carousel.prototype.swipStop = function () {\n this.isSwipe = true;\n var time = Date.now() - this.timeStampStart;\n var distanceX = this.getTranslateValue(this.itemsContainer) - this.initialTranslate;\n distanceX = distanceX < 0 ? distanceX * -1 : distanceX;\n if (this.isSwipe) {\n var offsetDist = distanceX * (Browser.isDevice ? 6 : 1.66);\n this.itemsContainer.style.transitionDuration = (((Browser.isDevice ? distanceX : offsetDist) / time) / 10) + 's';\n }\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n var threshold = slideWidth / 2;\n this.itemsContainer.classList.remove('e-swipe-start');\n var value = this.getTranslateValue(this.itemsContainer);\n if (value - this.initialTranslate < -threshold) {\n this.swipeNavigation(!this.enableRtl);\n }\n else if (value - this.initialTranslate > threshold) {\n this.swipeNavigation(this.enableRtl);\n }\n else {\n this.itemsContainer.style.transform = \"translateX(\" + this.initialTranslate + \"px)\";\n if (this.animationEffect === 'Fade') {\n this.itemsContainer.classList.add('e-fade-in-out');\n }\n }\n };\n Carousel.prototype.swipeNavigation = function (isRtl) {\n if (isRtl) {\n this.next();\n }\n else {\n this.prev();\n }\n };\n Carousel.prototype.swipeModehandlers = function () {\n if ((this.swipeMode & CarouselSwipeMode.Touch) === CarouselSwipeMode.Touch) {\n EventHandler.add(this.itemsContainer, 'touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'touchend', this.swipStop, this);\n }\n if ((this.swipeMode & CarouselSwipeMode.Mouse) === CarouselSwipeMode.Mouse) {\n EventHandler.add(this.itemsContainer, 'mousedown', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup', this.swipStop, this);\n }\n if ((this.swipeMode === 0) && (this.swipeMode & CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch) ===\n (CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch)) {\n EventHandler.add(this.itemsContainer, 'mousedown touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup touchend', this.swipStop, this);\n }\n };\n Carousel.prototype.resizeHandler = function () {\n if (this.itemsContainer && this.itemsContainer.firstElementChild) {\n var numOfItems = this.getNumOfItems();\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n if (this.loop) {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + numOfItems);\n }\n else {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex);\n }\n }\n };\n Carousel.prototype.wireEvents = function () {\n if (!(this.animationEffect === 'Custom')) {\n this.swipeModehandlers();\n }\n EventHandler.add(this.element, 'focusin focusout', this.onFocusActions, this);\n EventHandler.add(this.element, 'mouseenter mouseleave', this.onHoverActions, this);\n EventHandler.add(this.element.firstElementChild, 'animationend', this.onTransitionEnd, this);\n EventHandler.add(this.element.firstElementChild, 'transitionend', this.onTransitionEnd, this);\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Carousel.prototype.unWireEvents = function () {\n var _this = this;\n var indicators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_INDICATOR_BAR));\n indicators.forEach(function (indicator) {\n EventHandler.remove(indicator, 'click', _this.indicatorClickHandler);\n });\n var navigators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREVIOUS + \",.\" + CLS_NEXT));\n navigators.forEach(function (navigator) {\n EventHandler.remove(navigator, 'click', _this.navigatorClickHandler);\n });\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (playIcon) {\n EventHandler.remove(playIcon, 'click', this.playButtonClickHandler);\n }\n EventHandler.remove(this.element.firstElementChild, 'animationend', this.onTransitionEnd);\n EventHandler.remove(this.element.firstElementChild, 'transitionend', this.onTransitionEnd);\n EventHandler.clearEvents(this.element);\n EventHandler.clearEvents(this.itemsContainer);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n /**\n * Method to transit from the current slide to the previous slide.\n *\n * @returns {void}\n */\n Carousel.prototype.prev = function () {\n if (!this.loop && this.selectedIndex === 0) {\n return;\n }\n var index = (this.selectedIndex === 0) ? this.slideItems.length - 1 : this.selectedIndex - 1;\n this.setActiveSlide(index, 'Previous');\n this.autoSlide();\n };\n /**\n * Method to transit from the current slide to the next slide.\n *\n * @returns {void}\n */\n Carousel.prototype.next = function () {\n if (!this.loop && this.selectedIndex === this.slideItems.length - 1) {\n return;\n }\n var index = (this.selectedIndex === this.slideItems.length - 1) ? 0 : this.selectedIndex + 1;\n this.setActiveSlide(index, 'Next');\n this.autoSlide();\n };\n /**\n * Method to play the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.play = function () {\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_ICON);\n if (this.showPlayButton && playIcon) {\n classList(playIcon, [CLS_PAUSE_ICON], [CLS_PLAY_ICON]);\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('pauseSlideTransition'));\n }\n this.setProperties({ autoPlay: true }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.applySlideInterval();\n };\n /**\n * Method to pause the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.pause = function () {\n var pauseIcon = this.element.querySelector(\".\" + CLS_PAUSE_ICON);\n if (this.showPlayButton && pauseIcon) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n classList(pauseIcon, [CLS_PLAY_ICON], [CLS_PAUSE_ICON]);\n }\n this.setProperties({ autoPlay: false }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.resetSlideInterval();\n };\n /**\n * Method to render react and angular templates\n *\n * @returns {void}\n * @private\n */\n Carousel.prototype.renderTemplates = function () {\n if (this.isAngular || this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Method to reset react and angular templates\n *\n * @param {string[]} templates Accepts the template ID\n * @returns {void}\n * @private\n */\n Carousel.prototype.resetTemplates = function (templates) {\n if (this.isAngular || this.isReact) {\n this.clearTemplate(templates);\n }\n };\n /**\n * Method for destroy the carousel component.\n *\n * @returns {void}\n */\n Carousel.prototype.destroy = function () {\n var _this = this;\n this.resetTemplates();\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n this.keyModule.destroy();\n this.keyModule = null;\n this.resetSlideInterval();\n this.destroyButtons();\n this.unWireEvents();\n [].slice.call(this.element.children).forEach(function (ele) { _this.element.removeChild(ele); });\n removeClass([this.element], [CLS_CAROUSEL, this.cssClass, CLS_RTL, CLS_SWIPE]);\n ['role', 'style'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n this.itemsContainer = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Collection([], CarouselItem)\n ], Carousel.prototype, \"items\", void 0);\n __decorate([\n Property('Slide')\n ], Carousel.prototype, \"animationEffect\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"previousButtonTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"nextButtonTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"indicatorsTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"playButtonTemplate\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], Carousel.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(0)\n ], Carousel.prototype, \"selectedIndex\", void 0);\n __decorate([\n Property('100%')\n ], Carousel.prototype, \"width\", void 0);\n __decorate([\n Property('100%')\n ], Carousel.prototype, \"height\", void 0);\n __decorate([\n Property(5000)\n ], Carousel.prototype, \"interval\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"autoPlay\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"pauseOnHover\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"loop\", void 0);\n __decorate([\n Property(false)\n ], Carousel.prototype, \"showPlayButton\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"enableTouchSwipe\", void 0);\n __decorate([\n Property(true)\n ], Carousel.prototype, \"showIndicators\", void 0);\n __decorate([\n Property('Default')\n ], Carousel.prototype, \"indicatorsType\", void 0);\n __decorate([\n Property('Visible')\n ], Carousel.prototype, \"buttonsVisibility\", void 0);\n __decorate([\n Property(false)\n ], Carousel.prototype, \"partialVisible\", void 0);\n __decorate([\n Property(CarouselSwipeMode.Touch)\n ], Carousel.prototype, \"swipeMode\", void 0);\n __decorate([\n Property()\n ], Carousel.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Carousel.prototype, \"slideChanging\", void 0);\n __decorate([\n Event()\n ], Carousel.prototype, \"slideChanged\", void 0);\n Carousel = __decorate([\n NotifyPropertyChanges\n ], Carousel);\n return Carousel;\n}(Component));\nexport { Carousel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n// Constant variables\nvar CLS_APPBAR = 'e-appbar';\nvar CLS_HORIZONTAL_BOTTOM = 'e-horizontal-bottom';\nvar CLS_STICKY = 'e-sticky';\nvar CLS_PROMINENT = 'e-prominent';\nvar CLS_DENSE = 'e-dense';\nvar CLS_RTL = 'e-rtl';\nvar CLS_LIGHT = 'e-light';\nvar CLS_DARK = 'e-dark';\nvar CLS_PRIMARY = 'e-primary';\nvar CLS_INHERIT = 'e-inherit';\n/**\n * The AppBar displays the information and actions related to the current application screen. It is used to show branding, screen titles, navigation, and actions.\n * Support to inherit colors from AppBar provided to <c>Button</c>, <c>DropDownButton</c>, <c>Menu</c> and <c>TextBox</c>.\n * Set <c>CssClass</c> property with <code>e-inherit</code> CSS class to inherit the background and color from AppBar.\n */\nvar AppBar = /** @class */ (function (_super) {\n __extends(AppBar, _super);\n /**\n * Constructor for creating the AppBar widget\n *\n * @param {AppBarModel} options Accepts the AppBar model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function AppBar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n AppBar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove(CLS_APPBAR);\n this.element.removeAttribute('style');\n this.element.removeAttribute('role');\n };\n AppBar.prototype.getModuleName = function () {\n return 'appbar';\n };\n AppBar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n AppBar.prototype.preRender = function () {\n // pre render code\n };\n AppBar.prototype.render = function () {\n this.element.classList.add(CLS_APPBAR);\n if (this.element.tagName !== 'HEADER') {\n this.element.setAttribute('role', 'banner');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.position === 'Bottom') {\n this.element.classList.add(CLS_HORIZONTAL_BOTTOM);\n }\n if (this.isSticky) {\n this.element.classList.add(CLS_STICKY);\n }\n if (this.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n this.setHeightMode();\n this.setColorMode();\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n AppBar.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'mode':\n removeClass([this.element], [CLS_DENSE, CLS_PROMINENT]);\n this.setHeightMode();\n break;\n case 'position':\n if (this.position === 'Bottom') {\n addClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n else {\n removeClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'isSticky':\n if (this.isSticky) {\n addClass([this.element], CLS_STICKY);\n }\n else {\n removeClass([this.element], CLS_STICKY);\n }\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n if (!isNullOrUndefined(oldProp.htmlAttributes)) {\n var keys = Object.keys(oldProp.htmlAttributes);\n for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {\n var key = keys_1[_b];\n if (key === 'class') {\n removeClass([this.element], oldProp.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.removeAttribute(key);\n }\n }\n }\n this.setHtmlAttributes(newProp.htmlAttributes, this.element);\n }\n break;\n case 'colorMode':\n removeClass([this.element], [CLS_DARK, CLS_PRIMARY, CLS_INHERIT, CLS_LIGHT]);\n this.setColorMode();\n break;\n case 'enableRtl':\n if (this.enableRtl) {\n addClass([this.element], CLS_RTL);\n }\n else {\n removeClass([this.element], CLS_RTL);\n }\n break;\n }\n }\n };\n AppBar.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n AppBar.prototype.setHeightMode = function () {\n if (this.mode === 'Prominent') {\n this.element.classList.add(CLS_PROMINENT);\n }\n else if (this.mode === 'Dense') {\n this.element.classList.add(CLS_DENSE);\n }\n };\n AppBar.prototype.setColorMode = function () {\n switch (this.colorMode) {\n case 'Light':\n this.element.classList.add(CLS_LIGHT);\n break;\n case 'Dark':\n this.element.classList.add(CLS_DARK);\n break;\n case 'Primary':\n this.element.classList.add(CLS_PRIMARY);\n break;\n case 'Inherit':\n this.element.classList.add(CLS_INHERIT);\n break;\n }\n };\n __decorate([\n Property('Regular')\n ], AppBar.prototype, \"mode\", void 0);\n __decorate([\n Property('Top')\n ], AppBar.prototype, \"position\", void 0);\n __decorate([\n Property()\n ], AppBar.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], AppBar.prototype, \"isSticky\", void 0);\n __decorate([\n Property()\n ], AppBar.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Light')\n ], AppBar.prototype, \"colorMode\", void 0);\n __decorate([\n Event()\n ], AppBar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], AppBar.prototype, \"destroyed\", void 0);\n AppBar = __decorate([\n NotifyPropertyChanges\n ], AppBar);\n return AppBar;\n}(Component));\nexport { AppBar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, ChildProperty, Collection, Event, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar PROGRESSVALUE = '--progress-value';\n/**\n * Defines the status of the step.\n */\nexport var StepStatus;\n(function (StepStatus) {\n /**\n * Shows the status of the step is not started.\n */\n StepStatus[\"NotStarted\"] = \"NotStarted\";\n /**\n * Shows the step is in progress.\n */\n StepStatus[\"InProgress\"] = \"InProgress\";\n /**\n * Shows the status of the step is completed.\n */\n StepStatus[\"Completed\"] = \"Completed\";\n})(StepStatus || (StepStatus = {}));\n/**\n * Specifies the steps of the Stepper.\n */\nvar Step = /** @class */ (function (_super) {\n __extends(Step, _super);\n function Step() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Step.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Step.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"iconCss\", void 0);\n __decorate([\n Property(null)\n ], Step.prototype, \"isValid\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"label\", void 0);\n __decorate([\n Property(false)\n ], Step.prototype, \"optional\", void 0);\n __decorate([\n Property(StepStatus.NotStarted)\n ], Step.prototype, \"status\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"text\", void 0);\n return Step;\n}(ChildProperty));\nexport { Step };\n/**\n * Defines the orientation type of the Stepper.\n */\nexport var StepperOrientation;\n(function (StepperOrientation) {\n /**\n * Steps are displayed horizontally.\n */\n StepperOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Steps are displayed vertically.\n */\n StepperOrientation[\"Vertical\"] = \"Vertical\";\n})(StepperOrientation || (StepperOrientation = {}));\n/**\n * StepperBase component act as base class to the stepper component.\n */\nvar StepperBase = /** @class */ (function (_super) {\n __extends(StepperBase, _super);\n /**\n * * Constructor for Base class\n *\n * @param {StepperBaseModel} options - Specifies the Base model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function StepperBase(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.preRender = function () {\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the current module name.\n */\n StepperBase.prototype.getModuleName = function () {\n return 'stepperBase';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n StepperBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.render = function () {\n };\n StepperBase.prototype.updateOrientaion = function (wrapper) {\n if (wrapper.classList.contains('e-horizontal') || wrapper.classList.contains('e-vertical')) {\n wrapper.classList.remove('e-horizontal', 'e-vertical');\n }\n if (!(isNullOrUndefined(this.orientation))) {\n wrapper.classList.add('e-' + this.orientation.toLocaleLowerCase());\n }\n };\n StepperBase.prototype.renderProgressBar = function (wrapper) {\n this.progressStep = this.createElement('div', { className: 'e-stepper-progressbar' });\n this.progressbar = this.createElement('div', { className: 'e-progressbar-value' });\n this.progressStep.appendChild(this.progressbar);\n wrapper.prepend(this.progressStep);\n this.progressbar.style.setProperty(PROGRESSVALUE, (0) + '%');\n var beforeLabel = (wrapper.querySelector('li').querySelector('.e-step-label-container'));\n if (wrapper.classList.contains('e-vertical')) {\n if (wrapper.classList.contains('e-label-bottom') || wrapper.classList.contains('e-label-top')) {\n var stepsContainer = (wrapper.querySelector('.e-stepper-steps'));\n this.progressStep.style.setProperty('--progress-position', (stepsContainer.offsetWidth / 2) + 'px');\n }\n else {\n this.progressStep.style.setProperty('--progress-position', ((this.progressBarPosition / 2) - 1) + 'px');\n }\n }\n if (beforeLabel && (beforeLabel.classList.contains('e-label-before'))) {\n this.progressStep.style.setProperty('--progress-position', (((this.progressBarPosition) - 1)) + 5 + 'px');\n }\n if (wrapper.classList.contains('e-horizontal')) {\n this.setProgressPosition(wrapper);\n }\n };\n StepperBase.prototype.setProgressPosition = function (wrapper, isResize) {\n var stepItemContainer = (wrapper.querySelector('.e-step-container'));\n var stepItemEle = stepItemContainer.firstElementChild;\n if (isResize !== true) {\n var topPos = 0;\n if (wrapper.classList.contains('e-label-before')) {\n topPos = (stepItemContainer.offsetParent.offsetHeight - (stepItemEle.offsetHeight / 2) - 1);\n }\n else {\n topPos = (stepItemEle.offsetHeight / 2);\n }\n this.progressStep.style.setProperty('--progress-top-position', topPos + 'px');\n }\n var lastEle = wrapper.querySelector('.e-stepper-steps').lastChild.firstChild;\n if (wrapper.classList.contains('e-rtl')) {\n var leftPost = ((stepItemEle.offsetLeft + stepItemEle.offsetWidth) - wrapper.querySelector('.e-stepper-steps').offsetWidth);\n this.progressStep.style.setProperty('--progress-left-position', Math.abs(leftPost) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', Math.abs(lastEle.offsetLeft - stepItemEle.offsetLeft) + 'px');\n }\n else {\n this.progressStep.style.setProperty('--progress-left-position', (stepItemEle.offsetLeft + 1) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', ((lastEle.offsetWidth + lastEle.offsetLeft - 2) - (stepItemEle.offsetLeft + 2)) + 'px');\n }\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @param {StepperBaseModel} newProp - Specifies new properties\n * @param {StepperBaseModel} oldProp - Specifies old properties\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n StepperBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n };\n __decorate([\n Collection([], Step)\n ], StepperBase.prototype, \"steps\", void 0);\n __decorate([\n Property('')\n ], StepperBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], StepperBase.prototype, \"readOnly\", void 0);\n __decorate([\n Property(StepperOrientation.Horizontal)\n ], StepperBase.prototype, \"orientation\", void 0);\n __decorate([\n Event()\n ], StepperBase.prototype, \"created\", void 0);\n StepperBase = __decorate([\n NotifyPropertyChanges\n ], StepperBase);\n return StepperBase;\n}(Component));\nexport { StepperBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///<reference path='../stepper-base/stepper-base-model.d.ts'/>\nimport { attributes, NotifyPropertyChanges, L10n, append, isNullOrUndefined, getUniqueID, Complex, KeyboardEvents, ChildProperty, Property, EventHandler, Event, addClass, remove, removeClass, initializeCSPTemplate, select, compile } from '@syncfusion/ej2-base';\nimport { StepperBase, StepStatus } from '../stepper-base/stepper-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nvar ITEMCONTAINER = 'e-step-container';\nvar ITEMLIST = 'e-stepper-steps';\nvar ICONCSS = 'e-indicator';\nvar TEXTCSS = 'e-step-text-container';\nvar STEPLABEL = 'e-step-label-container';\nvar OPTIONAL = 'e-step-label-optional';\nvar SELECTED = 'e-step-selected';\nvar INPROGRESS = 'e-step-inprogress';\nvar NOTSTARTED = 'e-step-notstarted';\nvar FOCUS = 'e-step-focus';\nvar COMPLETED = 'e-step-completed';\nvar DISABLED = 'e-step-disabled';\nvar READONLY = 'e-stepper-readonly';\nvar PROGRESSVALUE = '--progress-value';\nvar RTL = 'e-rtl';\nvar TEMPLATE = 'e-step-template';\nvar LABELAFTER = 'e-label-after';\nvar LABELBEFORE = 'e-label-before';\nvar VERTICALSTEP = 'e-vertical';\nvar HORIZSTEP = 'e-horizontal';\nvar STEPICON = 'e-step-item';\nvar STEPTEXT = 'e-step-text';\nvar TEXT = 'e-text';\nvar STEPSLABEL = 'e-step-label';\nvar LABEL = 'e-label';\nvar STEPINDICATOR = 'e-step-type-indicator';\nvar LABELINDICATOR = 'e-step-type-label';\nvar INDICATORICON = 'e-step-indicator';\nvar STEPPERTOOLTIP = 'e-stepper-tooltip';\nvar STEPPERIPROGRESSTIP = 'e-step-inprogress-tip';\nvar LINEARSTEP = 'e-linear';\nvar PREVSTEP = 'e-previous';\nvar NEXTSTEP = 'e-next';\n/**\n * Defines the step progress animation of the Stepper.\n */\nvar StepperAnimationSettings = /** @class */ (function (_super) {\n __extends(StepperAnimationSettings, _super);\n function StepperAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StepperAnimationSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(2000)\n ], StepperAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], StepperAnimationSettings.prototype, \"delay\", void 0);\n return StepperAnimationSettings;\n}(ChildProperty));\nexport { StepperAnimationSettings };\n/**\n * Defines the label position in the Stepper.\n */\nexport var StepLabelPosition;\n(function (StepLabelPosition) {\n /**\n * Displays the label on top position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Top\"] = \"Top\";\n /**\n * Displays the label on bottom position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * Displays the label on left side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Start\"] = \"Start\";\n /**\n * Displays the label on right side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"End\"] = \"End\";\n})(StepLabelPosition || (StepLabelPosition = {}));\n/**\n * Defines whether steps are display with only indicator, only labels or combination of both.\n */\nexport var StepType;\n(function (StepType) {\n /**\n * Steps are shown indicator with label defined.\n */\n StepType[\"Default\"] = \"Default\";\n /**\n * Steps are shown with only label.\n */\n StepType[\"Label\"] = \"Label\";\n /**\n * Steps are shown with only indicator.\n */\n StepType[\"Indicator\"] = \"Indicator\";\n})(StepType || (StepType = {}));\n/**\n * The Stepper component visualizes several steps and indicates the current progress by highlighting already completed steps.\n *\n * ```html\n * <nav id=\"stepper\"></nav>\n * ```\n * ```typescript\n * <script>\n * let stepperObj: Stepper = new Stepper({steps : [{}, {}, {}, {}, {}]});\n * stepperObj.appendTo('#stepper');\n * </script>\n * ```\n */\nvar Stepper = /** @class */ (function (_super) {\n __extends(Stepper, _super);\n /**\n * * Constructor for creating the Stepper component.\n *\n * @param {StepperModel} options - Specifies the Stepper model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Stepper(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.stepperItemElements = [];\n return _this;\n }\n Stepper.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n var localeText = { optional: 'Optional' };\n this.l10n = new L10n('stepper', localeText, this.locale);\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space',\n enter: 'enter',\n home: 'home',\n end: 'end',\n tab: 'tab',\n shiftTab: 'shift+tab',\n escape: 'escape'\n };\n this.tooltipOpen = false;\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Stepper.prototype.getModuleName = function () {\n return 'stepper';\n };\n Stepper.prototype.render = function () {\n this.initialize();\n this.navigationHandler(this.activeStep, null, false);\n this.updateStepperStatus(true);\n };\n Stepper.prototype.initialize = function () {\n var _this = this;\n this.element.setAttribute('aria-label', this.element.id);\n this.updatePosition();\n this.stepperItemList = this.createElement('ol', { className: ITEMLIST });\n this.updateOrientaion(this.element);\n this.updateStepType();\n this.element.appendChild(this.stepperItemList);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.trim().split(' '));\n }\n if (this.readOnly) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n this.wireEvents();\n this.updateTemplateFunction();\n this.renderItems();\n if (this.steps.length > 0) {\n if (this.steps.length > 1) {\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.renderProgressBar(_this.element);\n });\n }\n else {\n this.renderProgressBar(this.element);\n }\n }\n this.checkValidStep();\n this.updateAnimation();\n this.updateTooltip();\n this.wireKeyboardEvent();\n }\n };\n Stepper.prototype.updatePosition = function () {\n this.progressBarPosition = this.beforeLabelWidth = this.textEleWidth = 0;\n };\n Stepper.prototype.renderDefault = function (index) {\n return (!this.steps[parseInt((index).toString(), 10)].iconCss && !this.steps[parseInt((index).toString(), 10)].text &&\n !this.steps[parseInt((index).toString(), 10)].label) ? true : false;\n };\n Stepper.prototype.updateAnimation = function () {\n var progressEle = this.element.querySelector('.e-progressbar-value');\n if (this.animation.enable) {\n if (this.animation.duration >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--duration', ((this.animation.duration) + 'ms'));\n }\n }\n if (this.animation.delay >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--delay', ((this.animation.delay) + 'ms'));\n }\n }\n }\n else {\n if (progressEle) {\n progressEle.style.setProperty('--delay', (0 + 'ms'));\n progressEle.style.setProperty('--duration', (0 + 'ms'));\n }\n }\n };\n Stepper.prototype.updateStepType = function () {\n if (!(isNullOrUndefined(this.stepType)) && (this.stepType.toLowerCase() === 'indicator' || this.stepType.toLowerCase() === 'label' || this.stepType.toLowerCase() === 'default')) {\n if (this.stepType.toLowerCase() !== 'default') {\n this.element.classList.add('e-step-type-' + this.stepType.toLowerCase());\n }\n if (((this.stepType.toLowerCase() === 'indicator' || 'label') && (this.labelContainer))) {\n this.clearLabelPosition();\n }\n }\n };\n Stepper.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.updateResize, this);\n EventHandler.add(window, 'click', this.updateStepFocus, this);\n };\n Stepper.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.updateResize);\n EventHandler.remove(window, 'click', this.updateStepFocus);\n };\n Stepper.prototype.updateResize = function () {\n if (this.stepperItemList && this.progressbar && this.element.classList.contains(HORIZSTEP)) {\n this.setProgressPosition(this.element, true);\n }\n this.navigateToStep(this.activeStep, null, null, false, false);\n };\n Stepper.prototype.updateStepFocus = function () {\n if (this.isKeyNavFocus) {\n this.isKeyNavFocus = false;\n var isFocus = this.element.querySelector('.' + FOCUS);\n if (isFocus) {\n isFocus.classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n }\n };\n Stepper.prototype.updateStepperStatus = function (isInitial) {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var status_1 = item.status.toLowerCase();\n if (isInitial && this.activeStep === 0 && index === 0) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.status = StepStatus.InProgress;\n this.isProtectedOnChange = prevOnChange;\n }\n if (item && status_1 !== 'notstarted' && index === this.activeStep) {\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (status_1 === 'completed') {\n this.updateStatusClass(i, index, itemElement);\n }\n else {\n this.updateStatusClass(i, index, itemElement, true);\n }\n this.isProtectedOnChange = prevOnChange;\n }\n }\n else if (item && status_1 !== 'notstarted' && index !== this.activeStep) {\n this.navigationHandler(this.activeStep, null, true);\n }\n }\n };\n Stepper.prototype.updateStatusClass = function (currentStep, index, ele, isInprogress) {\n var stepItem = this.steps[parseInt(currentStep.toString(), 10)];\n if (currentStep < index) {\n ele.classList.add(COMPLETED);\n stepItem.status = StepStatus.Completed;\n }\n else if (currentStep === index) {\n ele.classList.add(isInprogress ? INPROGRESS : COMPLETED, SELECTED);\n }\n else {\n ele.classList.add(NOTSTARTED);\n }\n };\n Stepper.prototype.renderItems = function () {\n var _this = this;\n for (var index = 0; index < this.steps.length; index++) {\n this.stepperItemContainer = this.createElement('li', { className: ITEMCONTAINER });\n this.stepperItemContainer.classList[(index === 0) ? 'add' : 'remove'](SELECTED, INPROGRESS);\n this.stepperItemContainer.classList[(index !== 0) ? 'add' : 'remove'](NOTSTARTED);\n if (this.element.classList.contains(HORIZSTEP)) {\n this.stepperItemContainer.style.setProperty('--max-width', 100 / this.steps.length + '%');\n }\n var stepSpan = this.createElement('span', { className: 'e-step' });\n var item = this.steps[parseInt(index.toString(), 10)];\n var isItemLabel = item.label ? true : false;\n var isItemText = item.text ? true : false;\n if (this.renderDefault(index) && (isNullOrUndefined(this.template) || this.template === '')) {\n var isIndicator = (!this.element.classList.contains('e-step-type-default') && this.stepType.toLowerCase() === 'indicator') ? true : false;\n if (isIndicator) {\n stepSpan.classList.add('e-icons', INDICATORICON);\n }\n if (!isIndicator && item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n stepSpan.innerHTML = (index + 1).toString();\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else if (isNullOrUndefined(this.template) || this.template === '') {\n var isRender = true;\n if ((item.iconCss || (!item.iconCss && isItemText && isItemLabel)) && (((!isItemText && !isItemLabel) ||\n !this.element.classList.contains(LABELINDICATOR)))) {\n if (item.iconCss) {\n var itemIcon = item.iconCss.trim().split(' ');\n stepSpan.classList.add(ICONCSS);\n for (var i = 0; i < itemIcon.length; i++) {\n stepSpan.classList.add(itemIcon[parseInt(i.toString(), 10)]);\n }\n this.stepperItemContainer.classList.add(STEPICON);\n }\n else if (!item.iconCss && isItemText && isItemLabel) {\n stepSpan.classList.add(ICONCSS);\n stepSpan.innerHTML = item.text;\n this.stepperItemContainer.classList.add(STEPICON);\n }\n this.stepperItemContainer.appendChild(stepSpan);\n if ((this.element.classList.contains(HORIZSTEP) && (this.labelPosition.toLowerCase() === 'start' || this.labelPosition.toLowerCase() === 'end') && isItemLabel) ||\n (this.element.classList.contains(VERTICALSTEP) && (this.labelPosition.toLowerCase() === 'top' || this.labelPosition.toLowerCase() === 'bottom') && isItemLabel)) {\n this.element.classList.add('e-label-' + this.labelPosition.toLowerCase());\n var textSpan = this.createElement('span', { className: TEXTCSS + ' ' + TEXT });\n textSpan.innerText = item.label;\n this.stepperItemContainer.appendChild(textSpan);\n this.stepperItemContainer.classList.add(STEPTEXT);\n isRender = false;\n }\n }\n if (isItemText && (!item.iconCss || !this.element.classList.contains(STEPINDICATOR)) && isRender &&\n !(item.iconCss && isItemLabel)) {\n if ((!item.iconCss && this.element.classList.contains(STEPINDICATOR)) ||\n ((!item.iconCss || this.element.classList.contains(LABELINDICATOR)) && !isItemLabel)) {\n if (!item.iconCss && !isItemLabel) {\n this.element.classList.add('e-step-type-indicator');\n }\n this.checkValidState(item, stepSpan);\n isItemLabel = null;\n }\n else {\n var textSpan = this.createElement('span', { className: TEXT });\n if (!isItemLabel) {\n textSpan.innerText = item.text;\n textSpan.classList.add(TEXTCSS);\n this.stepperItemContainer.appendChild(textSpan);\n this.stepperItemContainer.classList.add(STEPTEXT);\n }\n if (isItemLabel && this.element.classList.contains(LABELINDICATOR)) {\n textSpan.innerText = item.label;\n }\n isItemText = item.label ? false : true;\n }\n }\n if (isItemLabel && (!item.iconCss || !this.element.classList.contains(STEPINDICATOR)) && isRender) {\n if (!item.iconCss && !isItemText && this.element.classList.contains(STEPINDICATOR)) {\n this.checkValidState(item, stepSpan, true);\n }\n else if ((!((this.element.classList.contains(LABELINDICATOR)) && isItemText)) ||\n (this.element.classList.contains(LABELINDICATOR) && isItemLabel)) {\n this.labelContainer = this.createElement('span', { className: STEPLABEL });\n var labelSpan = this.createElement('span', { className: LABEL });\n labelSpan.innerText = item.label;\n this.labelContainer.appendChild(labelSpan);\n this.stepperItemContainer.classList.add(STEPSLABEL);\n this.updateLabelPosition();\n if ((!item.iconCss && !isItemText && !this.stepperItemContainer.classList.contains(STEPICON)) ||\n this.element.classList.contains(LABELINDICATOR)) {\n this.stepperItemContainer.classList.add('e-step-label-only');\n if (item.isValid !== null) {\n var iconSpan = this.createElement('span', { className: 'e-step-validation-icon e-icons' });\n this.labelContainer.appendChild(iconSpan);\n }\n }\n }\n }\n }\n if (item.optional) {\n var optionalSpan = this.createElement('span', { className: OPTIONAL });\n this.l10n.setLocale(this.locale);\n var optionalContent = this.l10n.getConstant('optional');\n optionalSpan.innerText = optionalContent;\n if (isItemLabel && (this.labelContainer && ((this.element.classList.contains(LABELAFTER) && !this.stepperItemContainer.classList.contains('e-step-label-only'))\n || (this.element.classList.contains(HORIZSTEP) && this.element.classList.contains(LABELBEFORE) && !this.stepperItemContainer.classList.contains('e-step-label-only'))))\n || (this.element.classList.contains(VERTICALSTEP) && this.element.classList.contains(LABELBEFORE))) {\n this.labelContainer.appendChild(optionalSpan);\n }\n else {\n this.stepperItemContainer.appendChild(optionalSpan);\n }\n if (item.isValid !== null) {\n this.stepperItemContainer.classList.add(item.isValid ? 'e-step-valid' : 'e-step-error');\n }\n }\n if (item.cssClass) {\n addClass([this.stepperItemContainer], item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n this.stepperItemContainer.classList[item.disabled ? 'add' : 'remove'](DISABLED);\n attributes(this.stepperItemContainer, { 'tabindex': '-1', 'aria-disabled': 'true' });\n }\n if (item.isValid !== null) {\n if (item.isValid) {\n this.stepperItemContainer.classList.add('e-step-valid');\n }\n else {\n this.stepperItemContainer.classList.add('e-step-error');\n }\n }\n this.renderItemContent(index, false);\n if (this.stepperItemContainer.classList.contains(INPROGRESS)) {\n attributes(this.stepperItemContainer, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(this.stepperItemContainer, { 'tabindex': '-1' });\n }\n this.wireItemsEvents(this.stepperItemContainer, index);\n this.stepperItemElements.push(this.stepperItemContainer);\n var eventArgs = { element: this.stepperItemContainer, index: index };\n this.trigger('beforeStepRender', eventArgs, function (args) {\n _this.stepperItemList.appendChild(args.element);\n });\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.calculateProgressBarPosition();\n });\n }\n else {\n this.calculateProgressBarPosition();\n }\n }\n if (this.element.classList.contains(VERTICALSTEP)) {\n if (this.element.classList.contains(LABELBEFORE)) {\n var listItems = this.stepperItemList.querySelectorAll('.' + LABEL);\n for (var i = 0; i < listItems.length; i++) {\n var labelEle = listItems[parseInt((i).toString(), 10)];\n labelEle.style.setProperty('--label-width', (this.beforeLabelWidth) + 5 + 'px');\n }\n }\n }\n };\n Stepper.prototype.calculateProgressBarPosition = function () {\n var isBeforeLabel = (this.element.classList.contains(LABELBEFORE)) ? true : false;\n var isStepVertical = (this.element.classList.contains(VERTICALSTEP)) ? true : false;\n if (isStepVertical) {\n var iconOnly = (this.stepperItemContainer.classList.contains(STEPICON) &&\n !this.stepperItemContainer.classList.contains(STEPTEXT) &&\n !this.stepperItemContainer.classList.contains(STEPSLABEL)) ? true : false;\n var textEle = (this.stepperItemContainer.querySelector('.' + TEXTCSS));\n if (textEle) {\n this.textEleWidth = this.textEleWidth < textEle.offsetWidth ? textEle.offsetWidth : this.textEleWidth;\n }\n if (isBeforeLabel) {\n var itemWidth = void 0;\n var labelWidth = this.stepperItemContainer.querySelector('.' + LABEL).offsetWidth + 15;\n if (this.beforeLabelWidth < labelWidth) {\n this.beforeLabelWidth = labelWidth;\n }\n if (this.element.querySelector('ol').lastChild.querySelector('.' + ICONCSS)) {\n itemWidth = (this.beforeLabelWidth + (this.stepperItemContainer.querySelector('.' + ICONCSS).offsetWidth / 2));\n }\n else if (this.stepperItemContainer.querySelector('.' + TEXTCSS)) {\n itemWidth = (this.beforeLabelWidth + (this.stepperItemContainer.querySelector('.' + TEXTCSS).offsetWidth / 2));\n }\n if (this.progressBarPosition < itemWidth) {\n this.progressBarPosition = itemWidth;\n }\n }\n else if (this.progressBarPosition < (iconOnly ? this.stepperItemContainer.offsetWidth : this.element.querySelector('ol').lastChild.firstChild.offsetWidth)) {\n this.progressBarPosition = iconOnly ? this.stepperItemContainer.offsetWidth : this.element.querySelector('ol').lastChild.firstChild.offsetWidth;\n }\n }\n };\n Stepper.prototype.checkValidState = function (item, stepSpan, isLabel) {\n if (item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n if (isLabel) {\n stepSpan.innerHTML = item.label;\n }\n else {\n stepSpan.innerHTML = item.label ? item.label : item.text;\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else {\n stepSpan.classList.add(ICONCSS);\n this.stepperItemContainer.appendChild(stepSpan);\n this.stepperItemContainer.classList.add(STEPICON);\n }\n };\n Stepper.prototype.updateCurrentLabel = function () {\n var currentLabelPos;\n if (this.element.classList.contains(HORIZSTEP)) {\n currentLabelPos = this.labelPosition.toLowerCase() === 'top' ? 'before' : this.labelPosition.toLowerCase() === 'bottom' ? 'after' : this.labelPosition.toLowerCase();\n }\n else {\n currentLabelPos = this.labelPosition.toLowerCase() === 'start' ? 'before' : this.labelPosition.toLowerCase() === 'end' ? 'after' : this.labelPosition.toLowerCase();\n }\n return currentLabelPos;\n };\n Stepper.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.labelContainer.classList.add('e-label-' + this.updateCurrentLabel());\n if (this.labelPosition.toLowerCase() === 'start' && this.orientation.toLowerCase() === 'vertical') {\n if (this.stepperItemContainer.firstChild) {\n this.stepperItemContainer.firstChild.before(this.labelContainer);\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n this.element.classList.add('e-label-' + this.updateCurrentLabel());\n };\n Stepper.prototype.clearLabelPosition = function () {\n var removeCss = this.labelContainer.classList.value.match(/(e-label-[after|before]+)/g);\n if (removeCss) {\n removeClass([this.labelContainer], removeCss);\n removeClass([this.element], removeCss);\n }\n };\n Stepper.prototype.checkValidStep = function () {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var itemElement = this.stepperItemElements[parseInt(index.toString(), 10)];\n if (item.isValid !== null) {\n var indicatorEle = void 0;\n var iconEle = void 0;\n if (this.element.classList.contains(STEPINDICATOR) && !item.iconCss) {\n indicatorEle = itemElement.querySelector('.' + ICONCSS);\n }\n else {\n iconEle = itemElement.querySelector('.' + ICONCSS);\n }\n if (!indicatorEle && this.element.classList.contains(STEPINDICATOR) && this.renderDefault(index)) {\n indicatorEle = itemElement.querySelector('.' + INDICATORICON);\n }\n var textLabelIcon = itemElement.querySelector('.e-step-validation-icon');\n var itemIcon = item.iconCss.trim().split(' ');\n var validStep = itemElement.classList.contains('e-step-valid');\n if (indicatorEle) {\n indicatorEle.classList.remove(INDICATORICON);\n if (indicatorEle.innerHTML !== '') {\n indicatorEle.innerHTML = '';\n }\n indicatorEle.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info', ICONCSS);\n }\n if (this.renderDefault(index) && !this.element.classList.contains(STEPINDICATOR)) {\n var stepSpan = itemElement.querySelector('.e-step');\n stepSpan.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info', ICONCSS);\n }\n if (iconEle) {\n if (iconEle.innerHTML !== '') {\n iconEle.innerHTML = '';\n }\n else if (itemIcon.length > 0) {\n for (var i = 0; i < itemIcon.length; i++) {\n iconEle.classList.remove(itemIcon[parseInt(i.toString(), 10)]);\n }\n }\n iconEle.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info');\n }\n if (textLabelIcon) {\n textLabelIcon.classList.add(validStep ? 'e-circle-check' : 'e-circle-info');\n if (this.element.classList.contains(VERTICALSTEP)) {\n var labelEle = itemElement.querySelector('.' + LABEL);\n var textEle = itemElement.querySelector('.' + TEXT);\n var itemWidth = textEle ? textEle.offsetWidth + textEle.getBoundingClientRect().left :\n labelEle.offsetWidth + labelEle.getBoundingClientRect().left;\n var validationIcon = itemElement.querySelector('.e-step-validation-icon');\n validationIcon.style.setProperty('--icon-position', (itemWidth + 20) + 'px');\n }\n }\n }\n }\n };\n Stepper.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-step-container', windowCollision: true,\n opensOn: 'Custom', cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP,\n position: 'TopCenter'\n });\n this.tooltipObj.appendTo(this.stepperItemList);\n }\n else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Stepper.prototype.wireItemsEvents = function (itemElement, index) {\n var _this = this;\n EventHandler.add(itemElement, 'click', function (e) {\n if (_this.linear) {\n var linearModeValue = index - _this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n _this.stepClickHandler(index, e, itemElement);\n }\n }\n else {\n _this.stepClickHandler(index, e, itemElement);\n }\n }, this);\n EventHandler.add(itemElement, 'mouseover', function () { return _this.openStepperTooltip(index); }, this);\n EventHandler.add(itemElement, 'mouseleave', function () { return _this.closeStepperTooltip(); }, this);\n };\n Stepper.prototype.openStepperTooltip = function (index) {\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.showTooltip && (currentStep.label || currentStep.text)) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(index);\n this.tooltipObj.open(this.stepperItemElements[parseInt((index).toString(), 10)]);\n if (this.stepType.toLocaleLowerCase() !== 'label' && ((this.stepType.toLocaleLowerCase() === 'indicator') ||\n (currentStep.label !== '' && currentStep.iconCss !== '') || (currentStep.label === null && currentStep.iconCss === '' && currentStep.text !== ''))) {\n var tooltipPopupClass = currentStep.status.toLowerCase() === 'inprogress' ?\n STEPPERTOOLTIP + \" \" + STEPPERIPROGRESSTIP + \" \" + (this.cssClass ? this.cssClass : '') : STEPPERTOOLTIP + \" \" + (this.cssClass ? this.cssClass : '');\n this.tooltipObj.setProperties({ cssClass: tooltipPopupClass.trim() });\n }\n this.tooltipOpen = true;\n }\n }\n };\n Stepper.prototype.closeStepperTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Stepper.prototype.updateTooltipContent = function (index) {\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['stepperTooltipTemplate']);\n }\n var content = void 0;\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.tooltipTemplate) {\n content = this.createElement('span', { className: 'e-stepper-tooltip-content' });\n var templateFunction = this.getTemplateFunction(this.tooltipTemplate);\n append(templateFunction({ value: currentStep }, this, 'stepperTooltipTemplate', (this.element.id + 'tooltipTemplate'), this.isStringTemplate), content);\n this.tooltipObj.setProperties({ content: content }, true);\n }\n else {\n var content_1 = currentStep.label ? currentStep.label : currentStep.text;\n this.tooltipObj.setProperties({ content: initializeCSPTemplate(function () { return content_1; }) }, true);\n }\n this.renderReactTemplates();\n }\n };\n Stepper.prototype.stepClickHandler = function (index, e, itemElement) {\n var clickEventArgs = {\n element: itemElement, event: e, previousStep: this.activeStep,\n activeStep: index\n };\n this.trigger('stepClick', clickEventArgs);\n this.navigateToStep(index, e, itemElement, true);\n };\n Stepper.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template) : null;\n };\n Stepper.prototype.renderItemContent = function (index, isrerender) {\n var listItems = this.stepperItemList.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n this.stepperItemContainer.classList.add(TEMPLATE);\n }\n var item = this.steps[parseInt(index.toString(), 10)];\n append(this.templateFunction({ step: item, currentStep: index }, this, 'stepperTemplate', (this.element.id + '_stepperTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : this.stepperItemContainer);\n }\n this.renderReactTemplates();\n };\n Stepper.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n Stepper.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['stepperTemplate']);\n }\n for (var i = 0; i < this.steps.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Stepper.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Stepper.prototype.navigateToStep = function (index, e, itemElement, isInteracted, isUpdated) {\n var _this = this;\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: this.activeStep, activeStep: index, cancel: false\n };\n if (isUpdated !== false) {\n var previousStep_1 = this.activeStep;\n this.trigger('stepChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.navigationHandler(index);\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: previousStep_1, activeStep: _this.activeStep\n };\n _this.trigger('stepChanged', eventArgs);\n });\n }\n else {\n this.navigationHandler(index);\n }\n };\n Stepper.prototype.navigationHandler = function (index, stepStatus, isUpdated) {\n index = (index >= this.steps.length - 1) ? this.steps.length - 1 : index;\n var Itemslength = this.stepperItemElements.length;\n if (index >= 0 && index < Itemslength - 1) {\n index = this.stepperItemElements[parseInt(index.toString(), 10)].classList.contains(DISABLED) ? this.activeStep : index;\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.activeStep = parseInt(index.toString(), 10);\n this.isProtectedOnChange = prevOnChange;\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n var item = this.steps[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n if (i === this.activeStep) {\n itemElement.classList.add(SELECTED);\n }\n if (this.activeStep >= 0 && this.progressbar) {\n if (this.element.classList.contains(HORIZSTEP)) {\n if ((this.element.classList.contains(LABELBEFORE) || this.element.classList.contains(LABELAFTER)) &&\n !this.element.classList.contains(STEPINDICATOR) &&\n this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].classList.contains(STEPICON)) {\n var progressPos = this.element.querySelector('.e-stepper-progressbar');\n var selectedEle = this.stepperItemElements[parseInt(this.activeStep.toString(), 10)]\n .firstChild;\n var value = this.activeStep === 0 ? 0 : (selectedEle.offsetLeft - progressPos.offsetLeft +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n if (this.element.classList.contains(RTL)) {\n value = (progressPos.getBoundingClientRect().right - selectedEle.getBoundingClientRect().right +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, (value) + '%');\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE, (value) + '%');\n }\n }\n else {\n var totalLiWidth = 0;\n var activeLiWidth = 0;\n for (var j = 0; j < this.stepperItemElements.length; j++) {\n totalLiWidth = totalLiWidth + this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth;\n if (j <= this.activeStep) {\n if (j < this.activeStep) {\n activeLiWidth = activeLiWidth +\n this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth;\n }\n else if (j === this.activeStep && j !== 0) {\n activeLiWidth = activeLiWidth +\n (this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth / 2);\n }\n }\n }\n var spaceWidth = (this.stepperItemList.offsetWidth - totalLiWidth) /\n (this.stepperItemElements.length - 1);\n var progressValue = ((activeLiWidth + (spaceWidth * this.activeStep)) /\n this.stepperItemList.offsetWidth) * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, (progressValue) + '%');\n }\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE, ((100 / (this.steps.length - 1)) * index) + '%');\n }\n }\n else if (this.activeStep < 0 && this.progressbar) {\n this.progressbar.style.setProperty(PROGRESSVALUE, 0 + '%');\n }\n if (i === this.activeStep) {\n itemElement.classList.add(INPROGRESS);\n }\n else if (this.activeStep > 0 && i < this.activeStep) {\n itemElement.classList.add(COMPLETED);\n }\n else {\n itemElement.classList.add(NOTSTARTED);\n }\n if (itemElement.classList.contains(INPROGRESS)) {\n attributes(itemElement, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(itemElement, { 'tabindex': '-1', 'aria-current': 'false' });\n }\n var prevOnChange_1 = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (isUpdated !== false) {\n if (i < this.activeStep || (this.steps.length - 1 === this.activeStep && item.status.toLowerCase() === 'completed')) {\n item.status = StepStatus.Completed;\n }\n else if (i === this.activeStep) {\n item.status = StepStatus.InProgress;\n }\n else if (i > this.activeStep) {\n item.status = StepStatus.NotStarted;\n }\n if (stepStatus && this.activeStep === i) {\n item.status = stepStatus;\n }\n if (item.status.toLowerCase() === 'completed') {\n itemElement.classList.remove(SELECTED, INPROGRESS, NOTSTARTED);\n itemElement.classList.add(COMPLETED);\n }\n if (item.status.toLowerCase() === 'notstarted') {\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED);\n itemElement.classList.add(NOTSTARTED);\n }\n }\n this.isProtectedOnChange = prevOnChange_1;\n if (this.renderDefault(i) && this.element.classList.contains(STEPINDICATOR) && !itemElement.classList.contains('e-step-valid') && !itemElement.classList.contains('e-step-error')) {\n if (itemElement.classList.contains(COMPLETED)) {\n itemElement.firstChild.classList.remove('e-icons', 'e-step-indicator');\n itemElement.firstChild.classList.add(ICONCSS, 'e-icons', 'e-check');\n }\n else if (itemElement.classList.contains(INPROGRESS) || itemElement.classList.contains(NOTSTARTED)) {\n itemElement.firstChild.classList.remove(ICONCSS, 'e-icons', 'e-check');\n itemElement.firstChild.classList.add('e-icons', 'e-step-indicator');\n }\n }\n }\n this.updateStepInteractions();\n };\n Stepper.prototype.updateStepInteractions = function () {\n var _this = this;\n this.element.classList.toggle(LINEARSTEP, this.linear);\n this.stepperItemElements.forEach(function (step, index) {\n var isPreviousStep = (index === _this.activeStep - 1);\n var isNextStep = (index === _this.activeStep + 1);\n step.classList.toggle(PREVSTEP, isPreviousStep);\n step.classList.toggle(NEXTSTEP, isNextStep);\n });\n };\n Stepper.prototype.removeItemElements = function () {\n for (var i = 0; i < this.stepperItemElements.length; i++) {\n remove(this.stepperItemElements[parseInt(i.toString(), 10)]);\n }\n this.stepperItemElements = [];\n };\n /**\n * Move to next step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.nextStep = function () {\n if (this.activeStep !== this.steps.length - 1) {\n this.navigateToStep(this.activeStep + 1, null, null, false);\n }\n };\n /**\n * Move to previous step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.previousStep = function () {\n if (this.activeStep > 0) {\n this.navigateToStep(this.activeStep - 1, null, null, false);\n }\n };\n /**\n * Reset the state of the Stepper and move to the first step.\n *\n * @returns {void}\n */\n Stepper.prototype.reset = function () {\n if (this.activeStep === 0) {\n this.updateStepInteractions();\n }\n else {\n var isDisabled = this.stepperItemElements[0].classList.contains(DISABLED) ? true : false;\n this.navigateToStep(isDisabled ? -1 : 0, null, null, false);\n }\n };\n /**\n * Refreshes the position of the progress bar programmatically when the dimensions of the parent container are changed.\n *\n * @returns {void}\n */\n Stepper.prototype.refreshProgressbar = function () {\n if (this.stepperItemList && this.progressbar) {\n this.setProgressPosition(this.element);\n }\n this.navigateToStep(this.activeStep, null, null, false, false);\n };\n Stepper.prototype.updateElementClassArray = function () {\n var classArray = [RTL, READONLY, 'e-steps-focus', LABELAFTER, LABELBEFORE, 'e-label-top',\n 'e-label-bottom', 'e-label-start', 'e-label-end', STEPINDICATOR, LABELINDICATOR, VERTICALSTEP, HORIZSTEP, LINEARSTEP];\n removeClass([this.element], classArray);\n };\n /**\n * Destroy the stepper control.\n *\n * @returns {void}\n */\n Stepper.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.clearTemplate();\n if (this.stepperItemList) {\n remove(this.stepperItemList);\n }\n this.stepperItemList = null;\n if (this.progressStep) {\n remove(this.progressStep);\n }\n this.progressStep = null;\n this.progressbar = null;\n this.progressBarPosition = null;\n this.stepperItemContainer = null;\n this.textContainer = null;\n this.labelContainer = null;\n this.updateElementClassArray();\n this.element.removeAttribute('aria-label');\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n if (this.keyboardModuleStepper) {\n this.keyboardModuleStepper.destroy();\n }\n this.keyboardModuleStepper = null;\n };\n Stepper.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleStepper = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Stepper.prototype.keyActionHandler = function (e) {\n if (this.readOnly) {\n return;\n }\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n case 'leftarrow':\n case 'rightarrow':\n case 'tab':\n case 'shiftTab':\n this.handleNavigation(this.enableRtl && this.element.classList.contains(HORIZSTEP) ? (e.action === 'leftarrow' || e.action === 'tab' || e.action === 'uparrow') : (e.action === 'rightarrow' || e.action === 'tab' || e.action === 'downarrow'), e);\n break;\n case 'space':\n case 'enter':\n case 'escape':\n this.handleNavigation(null, e);\n break;\n case 'home':\n case 'end':\n this.handleNavigation(null, e, this.enableRtl);\n break;\n }\n };\n Stepper.prototype.handleNavigation = function (isNextStep, e, isRTL) {\n this.isKeyNavFocus = true;\n this.element.classList.add('e-steps-focus');\n var focusedEle = this.element.querySelector('.' + FOCUS);\n if (!focusedEle) {\n focusedEle = this.element.querySelector('.' + SELECTED);\n }\n var stepItems = Array.prototype.slice.call(this.stepperItemList.children);\n var index = stepItems.indexOf(focusedEle);\n if (e.action === 'tab' || e.action === 'shiftTab' || e.action === 'downarrow' || e.action === 'uparrow' || e.action === 'space' || e.action === 'home' || e.action === 'end') {\n if ((e.action === 'tab' && index === stepItems.length - 1) || (e.action === 'shiftTab' && index === 0)) {\n if (focusedEle.classList.contains(FOCUS)) {\n this.updateStepFocus();\n return;\n }\n }\n else {\n e.preventDefault();\n }\n }\n if (e.action === 'escape') {\n stepItems[parseInt(index.toString(), 10)].classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n if (!(e.action === 'space' || e.action === 'enter')) {\n var prevIndex = index;\n index = isNextStep ? index + 1 : index - 1;\n while ((index >= 0 && index < stepItems.length) && stepItems[parseInt(index.toString(), 10)].classList.contains(DISABLED)) {\n index = isNextStep ? index + 1 : index - 1;\n }\n index = (index < 0) ? 0 : (index > stepItems.length - 1) ? stepItems.length - 1 : index;\n if (stepItems[parseInt(prevIndex.toString(), 10)].classList.contains(FOCUS)) {\n stepItems[parseInt(prevIndex.toString(), 10)].classList.remove(FOCUS);\n }\n if ((e.action === 'home' || e.action === 'end')) {\n if (e.action === 'home') {\n index = isRTL ? stepItems.length - 1 : 0;\n }\n else {\n index = isRTL ? 0 : stepItems.length - 1;\n }\n }\n if (index >= 0 && index < stepItems.length) {\n stepItems[parseInt(index.toString(), 10)].classList.add(FOCUS);\n }\n }\n else if ((e.action === 'space' || e.action === 'enter')) {\n var isupdateFocus = false;\n if (this.linear) {\n var linearModeValue = this.activeStep - index;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n }\n else {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n if (isupdateFocus) {\n this.updateStepFocus();\n this.stepperItemElements[index].focus();\n }\n }\n };\n Stepper.prototype.renderStepperItems = function (isUpdate, isStepType) {\n this.updateElementClassArray();\n this.removeItemElements();\n this.element.querySelector('.e-stepper-progressbar').remove();\n if (isUpdate) {\n this.updatePosition();\n }\n if (isStepType) {\n this.updateStepType();\n }\n if (this.readOnly && !this.element.classList.contains(READONLY)) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl && !this.element.classList.contains(RTL)) {\n this.element.classList.add(RTL);\n }\n this.updateOrientaion(this.element);\n this.renderItems();\n this.renderProgressBar(this.element);\n this.checkValidStep();\n this.updateAnimation();\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {StepperModel} newProp - Specifies new properties\n * @param {StepperModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Stepper.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'steps': {\n if (!(newProp.steps instanceof Array && oldProp.steps instanceof Array)) {\n var stepCounts = Object.keys(newProp.steps);\n for (var i = 0; i < stepCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.steps)[i], 10);\n var changedPropsCount = Object.keys(newProp.steps[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.steps[index])[j];\n if (property === 'status') {\n if (this.activeStep === index) {\n this.navigationHandler(index, newProp.steps[index].status);\n }\n else {\n this.steps[index].status = oldProp.steps[index].status;\n }\n }\n else {\n this.removeItemElements();\n this.renderItems();\n this.updateStepperStatus();\n }\n if (property === 'label' && (this.steps[index].iconCss || this.steps[index].text) &&\n this.stepType.toLowerCase() === 'default') {\n this.refreshProgressbar();\n }\n this.updateStepInteractions();\n this.checkValidStep();\n }\n }\n }\n else {\n this.renderStepperItems(true, true);\n }\n break;\n }\n case 'orientation':\n this.updateOrientaion(this.element);\n this.renderStepperItems(true);\n break;\n case 'activeStep':\n this.activeStep = (newProp.activeStep > this.steps.length - 1 || newProp.activeStep < -1) ?\n oldProp.activeStep : this.activeStep;\n if (this.activeStep >= 0 && this.stepperItemElements[parseInt(this.activeStep.toString(), 10)]\n .classList.contains(DISABLED)) {\n this.activeStep = oldProp.activeStep;\n }\n if (this.linear) {\n var linearModeValue = oldProp.activeStep - this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(this.activeStep, null, null, true);\n }\n }\n else {\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n }\n break;\n case 'enableRtl':\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n break;\n case 'readOnly':\n this.element.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.trim().split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.trim().split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({ cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP });\n }\n break;\n case 'labelPosition':\n this.renderStepperItems(true);\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'stepType':\n this.renderStepperItems(true, true);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'animation':\n this.updateAnimation();\n break;\n case 'linear':\n this.updateStepInteractions();\n break;\n }\n }\n };\n __decorate([\n Property(0)\n ], Stepper.prototype, \"activeStep\", void 0);\n __decorate([\n Complex({}, StepperAnimationSettings)\n ], Stepper.prototype, \"animation\", void 0);\n __decorate([\n Property(false)\n ], Stepper.prototype, \"linear\", void 0);\n __decorate([\n Property(false)\n ], Stepper.prototype, \"showTooltip\", void 0);\n __decorate([\n Property('')\n ], Stepper.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Stepper.prototype, \"tooltipTemplate\", void 0);\n __decorate([\n Property(StepLabelPosition.Bottom)\n ], Stepper.prototype, \"labelPosition\", void 0);\n __decorate([\n Property(StepType.Default)\n ], Stepper.prototype, \"stepType\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepChanged\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepChanging\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepClick\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"beforeStepRender\", void 0);\n Stepper = __decorate([\n NotifyPropertyChanges\n ], Stepper);\n return Stepper;\n}(StepperBase));\nexport { Stepper };\n"],"names":["addScrolling","createElement","container","content","scrollType","enableRtl","offset","containerOffset","contentOffset","parentElem","parentElement","getBoundingClientRect","height","width","createScrollbar","style","maxWidth","scrollEle","className","appendChild","overflow","maxHeight","VScroll","scrollStep","select","offsetHeight","HScroll","offsetWidth","destroyScroll","scrollObj","element","skipEle","menu","destroy","detach","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","_super","options","call","preRender","browser","Browser","info","name","browserCheck","isDevice","customStep","ieCheck","initialize","id","getUniqueID","uniqueId","display","classList","add","render","touchModule","Touch","scroll","touchHandler","bind","swipe","swipeHandler","EventHandler","scrollHandler","createOverlay","createNavIcon","setScrollState","isNullOrUndefined","scrollDiv","setAttribute","ele","_i","innerEle_1","slice","children","ele_1","overflowX","scrollItems","getPersistData","keyEntity","addOnPersist","getModuleName","remove","nav","selectAll","overlay","forEach","_a","elem","removeAttribute","disable","value","navEles","el","concat","rightOverlayEle","CLS_OVERLAY","clsRight","rightEle","navItem","CLS_NAVRIGHTARROW","leftEle","insertBefore","firstChild","eventBinding","rightAttributes","role","aria-label","attrs","clsLeft","leftAttributes","navEle","navLeftItem","CLS_NAVLEFTARROW","onKeyPress","e","_this","timeoutFun_1","keyTimeout","eleScrolling","keyTimer","window","setTimeout","onKeyUp","click","clearTimeout","tapHold","tabHoldHandler","tapHoldThreshold","addEventListener","repeatScroll","preventDefault","clickEventHandler","clearInterval","timeout","trgt","originalEvent","contains","firstElementChild","timeoutFun","setInterval","scrollDis","isContinuous","rootEle","querySelector","frameScrollRequest","distance","swipeEle","velocity","distanceX","start","animate","step","Math","sin","cancelAnimationFrame","swipeDirection","scrollLeft","requestAnimationFrame","scrollUpdating","scrollVal","action","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","scrollWidth","ceil","disEle","onPropertyChanged","newProp","oldProp","keys","Property","NotifyPropertyChanges","Component","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","buildTag","scrollBar","removeClass","navs","overlays","downOverlayEle","clsDown","downEle","CLS_NAVDOWNARROW","upEle","clsUp","navElement","navUpItem","CLS_NAVUPARROW","ev","event","deltaY","swipeElement","distanceY","scrollTop","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","FOCUSED","HEADER","SELECTED","ITEM","HIDE","POPUP","FieldSettings","apply","ChildProperty","MenuItem","Collection","MenuAnimationSettings","MenuBase","navIdx","animation","Animation","isTapHold","tempItem","showSubMenuOn","isAnimationNone","isMenu","ul","tagName","ejInst","getValue","clonedElement","setValue","append","cloneNode","refEle","nextElementSibling","ejInstance","wrapper","idx","len","attributes","nodeName","nodeValue","parentNode","renderItems","wireEvents","renderComplete","getWrapper","template","enableScrolling","isReact","isAngular","document","body","cssClass","addClass","replace","trim","split","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","items","ListBase","createJsonFromElement","fields","child","setProperties","isBlazor","removeChildElement","innerHTML","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","isIos","cmenuHandler","targetElement","getScrollableParent","parent_1","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","delegateClickHandler","clickHandler","wireKeyboardEvent","rippleFn","rippleEffect","selector","keyConfigs","downarrow","uparrow","enter","leftarrow","rightarrow","escape","home","end","tab","KeyboardEvents","keyAction","keyBoardHandler","closest","closeMenu","keyHandler","keyCode","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","childElementCount","fliIdx","fli","getLIByClass","getIdx","cli","isValidLI","focus","index","navIdxLen","popup","popups_1","push","eventArgs","item","getItem","keyType","openMenu","trigger","aEle","url","getAttribute","open","parent","location","href","sli","currentTarget","isCMenu","pageX","changedTouches","pageY","canOpen","ulIndex","isIterated","isMenuVisible","item_1","items_1","wrapper_1","beforeCloseArgs","popups","getPopups","isClose","cnt","ul_1","liElem_1","getLI","parentItem","cancel","isFocused","observedCloseArgs","popupEle","closeArgs","popupObj","popupId","isOpen","minHeight","unWireKeyboardEvent","getInstance","Popup","hide","isContextMenuClosed","toggleAnimation","pop","type","showSubMenu","updateReactTemplate","trgtliId","closedLi","trgtLi","trgtpopUp","RegExp","exec","submenus","querySelectorAll","afterCloseMenu","getIndex","isMenusClosed","isCmenuHover","which","sli_1","cliIdx","item_2","removeStateWrapper","portals","splice","clearTemplate","renderReactTemplates","getMenuItemModel","level","getFields","text","separator","iconCss","isVisible","valueOf","filter","li","top","left","lItem","elemId","uList","getField","lastChild","data","toString","ICONS","hdata","hli","popupWrapper","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","timer","zIndex","getZindexPartial","createEvent","initEvent","targetEvent","copyObject","srcElement","source","destination","prop","liStyle","getComputedStyle","liIndent","parseInt","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","marginRight","actionOnScroll","relateTo","collision","X","Y","position","targetType","triggerOpen","spanElem","tempTitle","SanitizeHtmlHelper","sanitize","title","spanTitle","spanIcon","tabindex","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","x","y","fit","menuType","observedOpenArgs","checkScrollOffset","refreshPosition","indexOf","animationOptions","animationSettings","effect","duration","timingFunction","easing","show","setPosition","eventArgs_1","collide","isCollide","offWidth","calculatePosition","blankIconList","getElementsByClassName","iconLi","icon","cssProp","padding","margin","iconCssProps","iconSize","fontSize","size","offsetEle","offsetLeft","offsetRight","toggleVisiblity","newTop","pageYOffset","documentElement","clientHeight","Number","xCollision","visibility","showIcon","hasField","listBaseOptions","moduleName","itemNavigable","itemCreating","args","curData","htmlAttributes","isIE","assign","itemCreated","span","templateID","createList","liTrgt","hdrWrapper","regex","isDifferentElem","isClosed","propName","fieldName","field","menuWrapper","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","cIdx","navigator","platform","toUpperCase","ctrlKey","isHeader","classname","getItemIndex","isUniqueId","isText","setItem","newItem","getItems","setItems","newItems","skipHdr","updateItemsByNavIdx","count","updateItem","removeChild","this_1","unWireEvents","ul_2","ul_3","getChangedItemIndex","insertAfter","removeItem","lastElementChild","ul1","popStr","uls","targetSelctor","parent_2","keyboardModule","isMenuOpen","pUlHeight","pElement","begin","progress","nIndex","isCallBack","unshift","enableItems","enable","skipItem","disabled","i_1","showItems","showHideItems","hideItems","ishide","validUl","removeItems","iitems","insertItems","isAfter","menuitem","parentObj","parseFloat","removeAttributes","removeProperty","refreshing","getElementById","Event","Complex","itemId","parentId","CLS_ITEMS","CLS_ITEM","CLS_POPUP","Item","Toolbar","resizeContext","resize","orientationChangeContext","orientationChange","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","btnItems","isNOU","ej2_instances","unwireEvents","tempId","destroyItems","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollModule","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","keyModule","keyActionHandler","docKeyDown","updateTabIndex","tabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","removeEventListener","clickEvent","scrollEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","docEvent","popEle","tbarItems","destroyMode","tempEle","popupRefresh","val","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","nodes","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","pos","sib","tbrItems","isPopupElement","clsList","popupNav","popupClickHandler","itemObj","observers","clickedArgs","CLS_RTL","offsetX","getToolbarPopupWidth","dataBind","getElementOffsetY","eleStyles","borderRightWidth","renderControl","refreshOverflow","formatUnit","setStyle","ariaAttr","aria-disabled","aria-orientation","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","toLowerCase","showAlwaysInPopup","notify","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","marginTop","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","aria-haspopup","eleItem","multiVar","extendVar","eleInlineItem","innerEle","innerNav","vertical","createPopupIcon","innerNavDom","direction","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","childNodes","tbarElement","sepItem","extendEle","CLS_POPUPCLASS","popupInit","getPropertyValue","offsetY","close","appendTo","tbarPopupHandler","toolEle","popupElePos","offsetTop","popIcon","scrollY","innerHeight","overflowHeight","tbEleData","bottom","popupOffset","right","clientWidth","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","CLS_POPUPDOWN","tbarPriRef","indx","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","root","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","attr","keyVal","isEnable","elements","a","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","templateFn","regEx","test","tempStr","outerHTML","templateCompiler","tempArray","isStringTemplate","undefined","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","enableHtmlSanitizer","prefixIcon","suffixIcon","btnObj","Button","iconPosition","tempDom","tooltipText","textContent","itemClick","showTextOn","sTxt","visible","curEle","previousEle","tabindexValue","multirowele","updateHideEleTabIndex","isHidden","isElement","eleIndex","nextEle","templateEle","registeredTemplate","registeredTemplates","registeredItem","rootNodes","closestItem","portalItem","containerInfo","tEle","changedProb","property","newProperty","refresh","popupPriCheck","booleanCheck","itemCol","hideItem","CLS_HEADER","CLS_HEADERCTN","CLS_CONTENT","CLS_CTENT","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","space","isVue","isDestroy","restoreContent","isNested","isRippleEnabled","removeRippleEffect","nested","initializeHeaderTemplate","initializeItemTemplate","initExpand","expandedIndices","initItemExpand","wireFocusEvents","acrdItem_1","headerEle","clearEvents","focusIn","focusOut","eventName","templateParser","error","headerTemplate","headerTemplateFn","itemTemplate","itemTemplateFn","getHeaderTemplate","getItemTemplate","innerEles","header","toggleIconGenerate","tglIcon","hdrColIcon","expandMode","expandItem","innerDataSourceItem","dataSource","renderInnerItem","acrdnItem","acrdnHdr","acrdnCtn","acrdnCtnItem","getIndexByItem","afterContentRender","contentRendering","ariaAttrUpdate","acrdActive","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","collapse","expand","eleMoveFocus","clstItem","headerEleGenerate","aria-expanded","ctnEle","hdrEle","angularnativeCondiCheck","fetchElement","hdr","expanded","enablePersistence","hdrIcnEle","hdrIcon","elementRef","nativeElement","parseddata","JSON","parse","temString","eleVal","templateProps","templateName","itemcnt","aria-hidden","ctn","trgtItemEle","isExpanded","expandArgs","expandedItemsPush","animationMode","expandProgress","expandAnimation","ef","icn","lastActiveItemId","temp","getItemElements","itemCollection","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemHeight","remain","addItem","itemIndex","innerItemEle","expandedItemRefresh","clearAccordionTemplate","enableItem","eleHeader","isExpand","itemExpand","expandedItem","ctnElePos","eleStr","setTemplate","toElement","acrdn","isRefresh","changedProp","j","k","oldVal","newVal","activeContent","ContextMenu","VMENU","Menu","tempItems","clearChanges","updateMenuItems","orientation","map","createMenuItems","pIdField","CLS_WRAP","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POPUP","TabActionSettings","TabAnimationSettings","Header","TabItem","Tab","isInteracted","lastIndex","isAdd","isIconAlone","draggableItems","refreshActiveTabBorder","delete","tbObj","expTemplateContent","isTemplate","cntEle","btnCls","tbItems","tbItem","tbPop","prevItem","bdrLine","dragItem","cloneElement","draggingItems","prevIndex","isPopup","initRender","isSwiped","itemIndexArray","allowDragAndDrop","dragArea","css","setCssClass","updatePopAnimationConfig","CLS_ICONS","tabId","getRandomId","renderContainer","refreshActiveBorder","setOrientation","headerPlacement","renderHeader","renderContent","CLS_INDICATOR","scrCnt","scrCntClass","setContentHeight","selectedItem","setRTL","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","txt","cont","wrap","aria-selected","aria-controls","parseObject","clicked","setCloseButton","showCloseButton","toolbarHeader","hdrItem","contents","aria-labelledby","reRenderItems","maxId","isReplace","getMaxIndicesFromItems","txtWrapEle","tItems","spliceArray","tbId","substring","lastIndexOf","hidden","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","data-tabindex","tItem","data-id","spliceItemIndex","removeActiveClass","tabHeader","node","checkPopupOverflow","isOverflow","popupHandler","ripEle","actEleId","prevEle","trg","prevCtnAnimation","prev","current","previous","next","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","prevActiveEle","newCnt","getTrgContent","extIndex","idNo","isPrevent","openEff","clsEff","setActiveBorder","keyPressed","trgParent","trgIndex","getEleIndex","selectTab","headers","idList","getIndexFromEle","max","templateCompile","compileElement","compile","templateFUN","getContent","callType","no","findEle","tbPos","place","activeTab","changeToolbarOrientation","focusItem","curActItem","headerPos","contentPos","list","heightAdjustMode","getHeight","cs","trgHdrEle","reorderActiveTab","bar","top_1","tbWidth","setActive","skipDataBind","isNaN","allowServerDataBinding","serverDataBind","trg_1","enableAnimation","eleTrg","refreshItemVisibility","eventArg","previousItem","previousIndex","selectedIndex","selectedContent","selectingID","preventFocus","selectEventArgs","showPopup","config","tbPopObj","bindDraggable","initializeDrag","hoverHandler","spaceKeyDown","tabKeyModule","openPopup","shiftTab","removeTab","nestedTab","clstHead","actEle","activeElement","nxtSib","nextSibling","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","L10n","closeButtonTitle","locale","getConstant","evalOnPropertyChangeItems","selectElement","properties","cntItem","textVal","clearTabTemplate","arr","isHiddenEle","addTab","hideTab","enableTab","clearTemplates","dragObj","Draggable","dragTarget","clone","helper","dragStart","itemDragStart","drag","dropIndex","dropItem","dragIndex","dragArgs","draggedItem","droppedItem","isEqualNode","cursor","scrollRightNavEle","scrollLeftNavEle","hscrollBar","abs","pointerEvents","scrollContentWidth","isSameNode","dragAction","droppedIndex","dragStop","itemDragStop","tabItemDragArgs","intDestroy","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","from","itemsCount","tabItems_2","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","targetEleIndex","cntTrg","getSelectingTabIndex","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","tabItemId","sortedKeys_1","sort","refreshActiveTab","innerText","detachContent","mainContents","txtString","conte","crElem","txtWrap","tConts","wrapAtt","wraper","ROOT","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","ACTIVE","LOAD","PROCESS","ICON","TEXTWRAP","DROPIN","DROPNEXT","FULLROW","DISABLE","CHECK","CHECKBOXWRAP","FOCUS","treeAriaAttr","treeRole","itemRole","listRole","itemText","wrapperRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isRightClick","mouseDownStatus","isDropIn","OldCheckedData","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","isAnimate","f2","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","shiftSpace","ctrlSpace","listBaseOption","expandCollapse","expandIconClass","ariaAttributes","expandIconPosition","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","DDTTreeData","stringify","selectedNodes","checkedNodes","expandedNodes","initialRender","setDataBinding","setDisabledMode","setExpandOnType","setRipple","wireEditingEvents","allowEditing","setDragAndDrop","setEnableRtl","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","templateComplier","nodeTemplate","rippleModel","ignore","iconModel","isCenterRipple","rippleIconFn","isEnabled","setMultiSelect","DataManager","isOffline","offline","ready","then","treeData","result","isNumberTypeId","getType","setRootData","finalize","catch","executeQuery","getQuery","rootData","mapper","query","columns","Query","getActualProperties","col","tableName","addSorting","sortOrder","parentID","where","dataType","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isChildObject","isSorted","sortedData","getSortedData","ulElement","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultData","executeLocal","isChecked","resultId","checkDisabledState","hasChildren","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","parentEle","changeState","preElement","childCheckedElement","indeterminate","nodeId","OldCheckedNodes","findIndex","nodeCheck","ensureParentCheckState","checkedParent","checkedChild","subChildItems","checkboxEle","createCheckBox","touchClass","checkValue","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","selected","textEle","dataId","renderNodeTemplate","nodeData","selectable","rippleSpan","rippleMouseHandler","actionValue","ds","groupBy","cusQuery","group","getDataSource","grpItem","isFromExpandAll","expandChild","updateAttributes","eNodes","updateList","updateCheckedProp","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","ensureIndeterminate","liElement","ensureChildCheckState","indeterminateNodes","checkDisabledChildren","checkBoxEle","checkedCount","matchedChildNodes","oldChildCount","dataUid_1","rootNodeChecked_1","childNodeChecked_1","childNode","HTMLElement","parentNodeChecked","some","oldNode","getSelectedChildNodeDetails","parentUL","currentParent","dataUid","checkedNodeId","childNodePid","pid","childElement","checkBoxes","childCheck","isFilter","checkbox","dataUID","childIds","parentCheck","checkedState","currentLoadData","isNodeChecked","isUndefined","doCheckBoxAction","doCheck","updateFieldChecked","reverse","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","currLi","getNodeData","updateIndeterminate","check","subChild","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","innerChild","state","nodeCheckAction","getCheckEvent","observedArgs","ariaState","frameSpan","removeCheck","ensureStateChange","checked","firstUl","firstNode","updateIdAttr","allowTextWrap","updateWrap","hasPid","doExpandAction","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","callback","doSelectionAction","sUids","sNode","selectGivenNodes","elementFromPoint","clientX","clientY","preventContextMenu","rippleElement","rippleIcons","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","updateOldCheckedData","dataManager","uncheckedItems","childIndex","expandNode","loaded","hideSpinner","start_1","end_1","liEle_1","setHeight","activeElement_1","animateHeight","expandedNode","addExpand","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","currentHeight","timeStamp","parentLi","eicon","showSpinner","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","nodeLevel","dataLevel","getChildMapper","obj","isRoot","getChildGroup","findChildNodes","findNestedChildNodes","tempField","objlen","idField","nestedChildNodes","cIcons","curLi","multiSelect","isActive","unselectNode","getSelectEvent","nodeSelectAction","metaKey","removeSelectAll","shiftKey","startNode","startIndex","endIndex","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","getId","icon_1","inpEle","blur","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","focusNode","getScrollParent","parentPos","isVisibleInViewport","scrollIntoView","innerWidth","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","childMatchesCheckedNodes","getChildItems","filteredChildItems","itemValue","String","childStateChange","currentItem","requiresUpdate","shouldPreventUpdate","class","childIsCheck","newCheck","validateCheck","length_1","hierChildId","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","fNode","ariaChecked","previousSibling","prevNode","endNode","preNode","focusedElement","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","checkboxElement","nodeFields","tempArr","destroyTemplate","reRenderNodes","oldClass","newClass","editingHandler","oldInpEle","updateOldText","getEditEvent","style_1","renderTextBox","innerHtml","inputObj","Input","createInput","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","crudOperation","appendNewText","isInput","updateText","triggerEvent","getNode","newData","getChildNodeObject","newList","toBind","destroyDrag","virtualEle","enableTailMode","enableAutoScroll","enableTapHold","sender","dragRoot","dragWrap","dragLi","cloneEle","DRAGITEM","nLen","cNode","dragData","listItem","getDragEvent","draggedNode","dragCancelAction","cursorAt","targetTouches","removeVirtualEle","dropTarget","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","Droppable","out","default","over","drop","dropAction","getOffsetX","touchList","getOffsetY","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","liArray","dragInstance","draggable","droppedElement","appendNode","draggedElement","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","collapseIcon","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","iconClass","dropTar","parent_3","hasAttribute","clonedNode","droppedNode","droppedNodeData","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","currentLevel","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons_1","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","dropIcon1","createListItemFromJson","offsetParent","refNode","navigateUrl","updated","childObj","nodeType","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","l","slelen","enodes","nodelen","cnodes","m","names","getMapperProp","touchEditObj","tap","isDoubleTapped","tapCount","wireClickEvent","touchClickObj","wireExpandOnEvent","touchExpandObj","matched","matches","secondTap","firstTap","createSpinner","setCheckedNodes","nodeChecked","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","isParentNodeCheck","updatePosition","isRefreshChild","childValue","updateChildPosition","currID","found","dynamicState","operation","newNode","prevent","crud","matchedArr","changes","addedRecords","deletedRecords","changedRecords","nodesID","fromTable","saveChanges","deleteSuccess","dmFailure","update","editSucess","insert","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","collapseAll","onLoaded","addNodes","ensureVisible","beginEdit","disableNodes","enableNodes","parentsId","expandAll","behavior","preventAnimation","getAllCheckedNodes","getDisabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","refreshData","newNodeData","parentData","extend","newliEle","newTextEle","newIcon","fullEle","tooltip","merge","removeNodes","updateNode","CLOSE","OPEN","RIGHT","LEFT","OVER","PUSH","CONTEXT","Sidebar","documentClickContext","documentclickHandler","setWidth","setTarget","setZindex","enableDock","setDock","firstRender","setMediaQuery","checkType","setType","setCloseOnDocumentClick","setEnableRTL","windowWidth","targetEle","sidebarEleCopy","getTargetElement","siblingElement","closeOnDocumentClick","setDimension","dockSize","match","z-index","classELement","transitionEnd","triggerChange","destroyBackDrop","sibling","showBackdrop","defaultBackdropDiv","modal","closeArguments","model","observedcloseArgs","transform","setAnimation","setTimeOut","elementWidth","openArguments","observedopenArgs","createBackDrop","changeArguments","getState","targetString","toggle","mediaQuery","matchMedia","includes","enableGestureHandler","startX","setEnableGestures","enableGestures","mainContentEle","sidebarEle","isRendered","isServerRendered","margin-left","margin-right","insertAdjacentElement","ICONRIGHT","MENUCLASS","WRAPMODECLASS","SCROLLMODECLASS","BreadcrumbOverflowMode","BreadcrumbItem","Breadcrumb","isPopupCreated","_maxItems","maxItems","initItems","initPvtProps","getEndIndex","popupUl","TABINDEX","activeItem","baseUri","uri","URL","origin","isSingleLevel","isIconRight","itemsLength","isLastItemInPopup_1","isActiveItem","isLastItem","j_1","wrapDiv","isItemCancelled_1","ol","firstOl","isCollasped","isDefaultOverflowMode_1","enableActiveItemNavigation","containsRightIcon","DOT","isEmptyUrl","keyDownHandler","beforeItemRenderChanges","separatorTemplate","initializeCSPTemplate","itemClass","nextItem","lastPopupItemIdx","li_1","getMenuElement","calculateMaxItems","liElems","liWidth","menuEle","paddingLeft","currItem","isRightIcon","wrapElem","Node","TEXT_NODE","iconElem","iconElem_1","ICONCLASS","enableNavigation","anchor","documentClickHandler","floor","itemClickArgs","renderPopup","POPUPCLASS","popupWireEvents","popupKeyDownHandler","delegateClickHanlder","classes","attribute","CLS_NAVIGATORS","CLS_HOVER","CarouselSwipeMode","CarouselItem","Carousel","isSwipe","defaultLocale","nextSlide","of","pauseSlideTransition","playSlideTransition","previousSlide","slide","slideShow","localeObj","renderSlides","renderNavigators","renderPlayButton","renderIndicators","applyAnimation","rtlElement","setActiveSlide","autoSlide","setHtmlAttributes","enableTouchSwipe","renderTouchActions","loop","autoSlideInterval","applySlideInterval","handleNavigatorsActions","partialVisible","swipeMode","Mouse","reRenderSlides","cloneCount","getNumOfItems","slideWidth","itemsContainer","getTranslateX","buttonsVisibility","resetTemplates","setStyleAttribute","showPlayButton","playButtonTemplate","playButtonClickHandler","selectedData","reRenderIndicators","swipeStart","swiping","swipStop","swipeModehandlers","carouselClasses","aria-roledescription","slideContainer","aria-live","autoPlay","numOfItems","renderSlide","slideItems","renderTemplates","setProperty","transitionProperty","renderKeyboardActions","isClone","data-index","templateId","navigators","renderNavigatorButton","buttonContainer","previousButtonTemplate","nextButtonTemplate","button","CLS_FLAT","CLS_ICON","navigatorClickHandler","playPauseWrap","CLS_PLAY_PAUSE","playButton","isLastSlide","buttonObj","isToggle","showIndicators","indicatorsType","indicatorClass","indicatorsTemplate","indicatorWrap","CLS_INDICATORS","indicatorBars","renderIndicatorTemplate","indicatorBar","CLS_INDICATOR_BAR","aria-current","indicator","indicatorClickHandler","animationEffect","resetSlideInterval","autoSlideChange","activeSlide","activeIndex","dataset","itemInterval","interval","getSlideIndex","currentIndex","allSlides","activeIndicator","activeIndex_1","currentSlide","nextIndex","slideDirection","refreshIndicators","slideChangedEventArgs","transitionDuration","onTransitionEnd","slideIndicator","indicators","keys_1","getNavigatorState","isPrevious","isPropertyChange","slideIndex","isSlideTransition","isSuspendSlideTransition","isButtonUpdate","prevButton","nextButton","onHoverActions","pauseOnHover","onFocusActions","destroyButtons","buttonCollections_1","instance","getTranslateValue","WebKitCSSMatrix","webkitTransform","m41","timeStampStart","Date","now","prevPageX","touches","initialTranslate","positionDiff","time","offsetDist","threshold","swipeNavigation","isRtl","resizeHandler","playIcon","play","pause","pauseIcon","templates","AppBar","isSticky","setHeightMode","setColorMode","_b","keys_2","mode","colorMode","StepStatus","Step","NotStarted","StepperOrientation","StepperBase","updateOrientaion","toLocaleLowerCase","renderProgressBar","progressStep","progressbar","prepend","beforeLabel","stepsContainer","progressBarPosition","setProgressPosition","isResize","stepItemContainer","stepItemEle","topPos","leftPost","Horizontal","ICONCSS","TEXTCSS","INPROGRESS","NOTSTARTED","COMPLETED","DISABLED","READONLY","LABELBEFORE","HORIZSTEP","STEPICON","STEPINDICATOR","StepperAnimationSettings","StepLabelPosition","StepType","Stepper","stepperItemElements","localeText","optional","l10n","tooltipOpen","navigationHandler","activeStep","updateStepperStatus","stepperItemList","updateStepType","readOnly","updateTemplateFunction","steps","checkValidStep","updateAnimation","updateTooltip","beforeLabelWidth","textEleWidth","renderDefault","label","progressEle","delay","stepType","clearLabelPosition","updateResize","updateStepFocus","navigateToStep","isKeyNavFocus","isFocus","isInitial","status_1","status","prevOnChange","isProtectedOnChange","InProgress","updateStatusClass","currentStep","isInprogress","stepItem","Completed","stepperItemContainer","stepSpan","isItemLabel","isItemText","isIndicator","isValid","isRender","itemIcon","labelPosition","textSpan","checkValidState","labelContainer","labelSpan","updateLabelPosition","iconSpan","optionalSpan","setLocale","optionalContent","renderItemContent","wireItemsEvents","calculateProgressBarPosition","listItems","isBeforeLabel","iconOnly","labelWidth","isLabel","updateCurrentLabel","before","removeCss","indicatorEle","iconEle","textLabelIcon","validStep","labelEle","showTooltip","tooltipObj","Tooltip","windowCollision","opensOn","STEPPERTOOLTIP","linear","linearModeValue","stepClickHandler","openStepperTooltip","closeStepperTooltip","updateTooltipContent","tooltipPopupClass","tooltipTemplate","templateFunction","getTemplateFunction","content_1","clickEventArgs","previousStep","isrerender","removeItemContent","updateContent","isUpdated","previousStep_1","stepStatus","Itemslength","progressPos","selectedEle","totalLiWidth","activeLiWidth","progressValue","prevOnChange_1","updateStepInteractions","isPreviousStep","isNextStep","removeItemElements","nextStep","reset","isDisabled","refreshProgressbar","updateElementClassArray","classArray","textContainer","keyboardModuleStepper","handleNavigation","isRTL","focusedEle","stepItems","isupdateFocus","renderStepperItems","isUpdate","isStepType","stepCounts","changedPropsCount","Bottom","Default"],"mappings":"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UAAW,aAAU,IACjCE,IACI8J,YAAS,IACV6rC,EAAS71C,UAAW,oBAAiB,IACxCE,IACI8J,YAAS,IACV6rC,EAAS71C,UAAW,mBAAgB,IACvCE,IACI8J,cACD6rC,EAAS71C,UAAW,aAAU,IACjCE,IACI8J,cACD6rC,EAAS71C,UAAW,mBAAgB,IACvCE,IACI8J,cACD6rC,EAAS71C,UAAW,oBAAiB,IACxCE,IACI8J,WAAS,SACV6rC,EAAS71C,UAAW,gBAAa,IACpCE,IACI8J,YAAS,IACV6rC,EAAS71C,UAAW,mBAAgB,IACvCE,IACI8J,YAAS,IACV6rC,EAAS71C,UAAW,gBAAa,IACpCE,IACI8J,YAAS,IACV6rC,EAAS71C,UAAW,uBAAoB,IAC3CE,IACIolB,WACDuwB,EAAS71C,UAAW,oBAAiB,IACxCE,IACIolB,WACDuwB,EAAS71C,UAAW,cAAW,IAClCE,IACIolB,WACDuwB,EAAS71C,UAAW,gBAAa,IACpCE,IACIolB,WACDuwB,EAAS71C,UAAW,wBAAqB,IAC5CE,IACIolB,WACDuwB,EAAS71C,UAAW,eAAY,IACnCE,IACIolB,WACDuwB,EAAS71C,UAAW,gBAAa,IACpCE,IACIolB,WACDuwB,EAAS71C,UAAW,eAAY,IACnCE,IACIolB,WACDuwB,EAAS71C,UAAW,kBAAe,IACtCE,IACIolB,WACDuwB,EAAS71C,UAAW,mBAAgB,IACvCE,IACIolB,WACDuwB,EAAS71C,UAAW,kBAAe,IACtCE,IACIolB,WACDuwB,EAAS71C,UAAW,oBAAiB,IACxCE,IACIolB,WACDuwB,EAAS71C,UAAW,qBAAkB,IACzCE,IACIolB,WACDuwB,EAAS71C,UAAW,mBAAgB,IACvCE,IACIolB,WACDuwB,EAAS71C,UAAW,oBAAiB,IACxCE,IACIolB,WACDuwB,EAAS71C,UAAW,mBAAgB,IACvCE,IACIolB,WACDuwB,EAAS71C,UAAW,kBAAe,IACtCE,IACIolB,WACDuwB,EAAS71C,UAAW,iBAAc,IACrCE,IACIolB,WACDuwB,EAAS71C,UAAW,kBAAe,IACtCE,IACIolB,WACDuwB,EA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"}
|