@syncfusion/ej2-layouts 33.2.3 → 34.1.29
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/dist/ej2-layouts.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js +2 -2
- package/dist/ej2-layouts.umd.min.js.map +1 -1
- package/dist/es6/ej2-layouts.es2015.js +49 -12
- package/dist/es6/ej2-layouts.es2015.js.map +1 -1
- package/dist/es6/ej2-layouts.es5.js +50 -12
- package/dist/es6/ej2-layouts.es5.js.map +1 -1
- package/dist/global/ej2-layouts.min.js +2 -2
- package/dist/global/ej2-layouts.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +2 -2
- package/src/dashboard-layout/dashboard-layout.d.ts +3 -0
- package/src/dashboard-layout/dashboard-layout.js +50 -5
- package/src/splitter/splitter.js +0 -7
- package/styles/avatar/_all.scss +1 -1
- package/styles/avatar/_bds-definition.scss +1 -2
- package/styles/avatar/_bootstrap-dark-definition.scss +1 -2
- package/styles/avatar/_bootstrap-definition.scss +1 -2
- package/styles/avatar/_bootstrap4-definition.scss +1 -2
- package/styles/avatar/_bootstrap5-dark-definition.scss +1 -2
- package/styles/avatar/_bootstrap5-definition.scss +1 -2
- package/styles/avatar/_bootstrap5.3-definition.scss +1 -2
- package/styles/avatar/_fabric-dark-definition.scss +1 -2
- package/styles/avatar/_fabric-definition.scss +1 -2
- package/styles/avatar/_fluent-dark-definition.scss +1 -2
- package/styles/avatar/_fluent-definition.scss +1 -2
- package/styles/avatar/_fluent2-definition.scss +1 -2
- package/styles/avatar/_fusionnew-definition.scss +1 -2
- package/styles/avatar/_highcontrast-definition.scss +1 -2
- package/styles/avatar/_highcontrast-light-definition.scss +1 -2
- package/styles/avatar/_layout.scss +1 -1
- package/styles/avatar/_material-dark-definition.scss +1 -2
- package/styles/avatar/_material-definition.scss +1 -2
- package/styles/avatar/_material3-dark-definition.scss +2 -2
- package/styles/avatar/_material3-definition.scss +2 -2
- package/styles/avatar/_tailwind-dark-definition.scss +1 -2
- package/styles/avatar/_tailwind-definition.scss +1 -2
- package/styles/avatar/_tailwind3-definition.scss +1 -2
- package/styles/avatar/_variables.scss +2 -0
- package/styles/avatar/bds.css +0 -8
- package/styles/avatar/bds.scss +1 -2
- package/styles/avatar/bootstrap-dark.scss +1 -2
- package/styles/avatar/bootstrap.scss +1 -2
- package/styles/avatar/bootstrap4.scss +1 -2
- package/styles/avatar/bootstrap5-dark.scss +1 -2
- package/styles/avatar/bootstrap5.3.css +0 -84
- package/styles/avatar/bootstrap5.3.scss +1 -2
- package/styles/avatar/bootstrap5.scss +1 -2
- package/styles/avatar/fabric-dark.scss +1 -2
- package/styles/avatar/fabric.scss +1 -2
- package/styles/avatar/fluent-dark.scss +1 -2
- package/styles/avatar/fluent.scss +1 -2
- package/styles/avatar/fluent2.css +0 -86
- package/styles/avatar/fluent2.scss +1 -2
- package/styles/avatar/highcontrast-light.scss +1 -2
- package/styles/avatar/highcontrast.scss +1 -2
- package/styles/avatar/material-dark.scss +1 -2
- package/styles/avatar/material.scss +1 -2
- package/styles/avatar/material3-dark.css +0 -82
- package/styles/avatar/material3-dark.scss +1 -2
- package/styles/avatar/material3.css +0 -84
- package/styles/avatar/material3.scss +1 -2
- package/styles/avatar/tailwind-dark.scss +1 -2
- package/styles/avatar/tailwind.scss +1 -2
- package/styles/avatar/tailwind3.css +0 -74
- package/styles/avatar/tailwind3.scss +1 -2
- package/styles/bds-lite.css +7 -46
- package/styles/bds-lite.scss +5 -5
- package/styles/bds.css +7 -64
- package/styles/bds.scss +9 -9
- package/styles/bootstrap-dark-lite.css +7 -10
- package/styles/bootstrap-dark-lite.scss +5 -5
- package/styles/bootstrap-dark.css +7 -14
- package/styles/bootstrap-dark.scss +9 -9
- package/styles/bootstrap-lite.css +7 -8
- package/styles/bootstrap-lite.scss +5 -5
- package/styles/bootstrap.css +7 -11
- package/styles/bootstrap.scss +9 -9
- package/styles/bootstrap4-lite.css +7 -6
- package/styles/bootstrap4-lite.scss +5 -5
- package/styles/bootstrap4.css +7 -8
- package/styles/bootstrap4.scss +9 -9
- package/styles/bootstrap5-dark-lite.css +7 -6
- package/styles/bootstrap5-dark-lite.scss +5 -5
- package/styles/bootstrap5-dark.css +7 -8
- package/styles/bootstrap5-dark.scss +9 -9
- package/styles/bootstrap5-lite.css +7 -6
- package/styles/bootstrap5-lite.scss +5 -6
- package/styles/bootstrap5.3-lite.css +7 -762
- package/styles/bootstrap5.3-lite.scss +5 -6
- package/styles/bootstrap5.3.css +7 -1100
- package/styles/bootstrap5.3.scss +9 -10
- package/styles/bootstrap5.css +7 -8
- package/styles/bootstrap5.scss +9 -10
- package/styles/card/_all.scss +2 -2
- package/styles/card/_bds-definition.scss +1 -2
- package/styles/card/_bigger.scss +1 -1
- package/styles/card/_bootstrap-dark-definition.scss +1 -2
- package/styles/card/_bootstrap-definition.scss +1 -2
- package/styles/card/_bootstrap4-definition.scss +1 -2
- package/styles/card/_bootstrap5-dark-definition.scss +1 -2
- package/styles/card/_bootstrap5-definition.scss +1 -2
- package/styles/card/_bootstrap5.3-definition.scss +1 -2
- package/styles/card/_fabric-dark-definition.scss +1 -2
- package/styles/card/_fabric-definition.scss +1 -2
- package/styles/card/_fluent-dark-definition.scss +1 -2
- package/styles/card/_fluent-definition.scss +1 -2
- package/styles/card/_fluent2-definition.scss +1 -2
- package/styles/card/_fusionnew-definition.scss +1 -2
- package/styles/card/_highcontrast-definition.scss +1 -2
- package/styles/card/_highcontrast-light-definition.scss +1 -2
- package/styles/card/_layout.scss +1 -1
- package/styles/card/_material-dark-definition.scss +1 -2
- package/styles/card/_material-definition.scss +1 -2
- package/styles/card/_material3-dark-definition.scss +1 -2
- package/styles/card/_material3-definition.scss +1 -2
- package/styles/card/_tailwind-dark-definition.scss +1 -2
- package/styles/card/_tailwind-definition.scss +1 -2
- package/styles/card/_tailwind3-definition.scss +1 -2
- package/styles/card/_theme.scss +1 -1
- package/styles/card/_variables.scss +2 -0
- package/styles/card/bds.css +0 -12
- package/styles/card/bds.scss +2 -3
- package/styles/card/bootstrap-dark.css +0 -6
- package/styles/card/bootstrap-dark.scss +2 -3
- package/styles/card/bootstrap.css +0 -3
- package/styles/card/bootstrap.scss +2 -3
- package/styles/card/bootstrap4.scss +2 -3
- package/styles/card/bootstrap5-dark.scss +2 -3
- package/styles/card/bootstrap5.3.css +0 -252
- package/styles/card/bootstrap5.3.scss +2 -3
- package/styles/card/bootstrap5.scss +2 -3
- package/styles/card/fabric-dark.css +0 -6
- package/styles/card/fabric-dark.scss +2 -3
- package/styles/card/fabric.css +0 -3
- package/styles/card/fabric.scss +2 -3
- package/styles/card/fluent-dark.scss +2 -3
- package/styles/card/fluent.scss +2 -3
- package/styles/card/fluent2.css +0 -258
- package/styles/card/fluent2.scss +2 -3
- package/styles/card/highcontrast-light.css +0 -6
- package/styles/card/highcontrast-light.scss +2 -3
- package/styles/card/highcontrast.css +0 -3
- package/styles/card/highcontrast.scss +2 -3
- package/styles/card/material-dark.css +0 -6
- package/styles/card/material-dark.scss +2 -3
- package/styles/card/material.css +0 -3
- package/styles/card/material.scss +2 -3
- package/styles/card/material3-dark.css +0 -246
- package/styles/card/material3-dark.scss +2 -3
- package/styles/card/material3.css +0 -252
- package/styles/card/material3.scss +2 -3
- package/styles/card/tailwind-dark.scss +2 -3
- package/styles/card/tailwind.scss +2 -3
- package/styles/card/tailwind3.css +0 -222
- package/styles/card/tailwind3.scss +2 -3
- package/styles/dashboard-layout/_all.scss +2 -2
- package/styles/dashboard-layout/_bds-definition.scss +1 -2
- package/styles/dashboard-layout/_bigger.scss +1 -1
- package/styles/dashboard-layout/_bootstrap-dark-definition.scss +1 -2
- package/styles/dashboard-layout/_bootstrap-definition.scss +1 -2
- package/styles/dashboard-layout/_bootstrap4-definition.scss +1 -2
- package/styles/dashboard-layout/_bootstrap5-dark-definition.scss +1 -2
- package/styles/dashboard-layout/_bootstrap5-definition.scss +1 -2
- package/styles/dashboard-layout/_bootstrap5.3-definition.scss +1 -2
- package/styles/dashboard-layout/_fabric-dark-definition.scss +1 -2
- package/styles/dashboard-layout/_fabric-definition.scss +1 -2
- package/styles/dashboard-layout/_fluent-dark-definition.scss +1 -2
- package/styles/dashboard-layout/_fluent-definition.scss +1 -2
- package/styles/dashboard-layout/_fluent2-definition.scss +1 -2
- package/styles/dashboard-layout/_fusionnew-definition.scss +1 -2
- package/styles/dashboard-layout/_highcontrast-definition.scss +1 -2
- package/styles/dashboard-layout/_highcontrast-light-definition.scss +1 -2
- package/styles/dashboard-layout/_layout.scss +1 -1
- package/styles/dashboard-layout/_material-dark-definition.scss +1 -2
- package/styles/dashboard-layout/_material-definition.scss +1 -2
- package/styles/dashboard-layout/_material3-dark-definition.scss +2 -2
- package/styles/dashboard-layout/_material3-definition.scss +2 -2
- package/styles/dashboard-layout/_tailwind-dark-definition.scss +1 -2
- package/styles/dashboard-layout/_tailwind-definition.scss +1 -2
- package/styles/dashboard-layout/_tailwind3-definition.scss +1 -2
- package/styles/dashboard-layout/_theme.scss +1 -1
- package/styles/dashboard-layout/_variables.scss +2 -0
- package/styles/dashboard-layout/bds.css +6 -20
- package/styles/dashboard-layout/bds.scss +2 -3
- package/styles/dashboard-layout/bootstrap-dark.css +6 -8
- package/styles/dashboard-layout/bootstrap-dark.scss +2 -3
- package/styles/dashboard-layout/bootstrap.css +6 -8
- package/styles/dashboard-layout/bootstrap.scss +2 -3
- package/styles/dashboard-layout/bootstrap4.css +6 -8
- package/styles/dashboard-layout/bootstrap4.scss +2 -3
- package/styles/dashboard-layout/bootstrap5-dark.css +6 -8
- package/styles/dashboard-layout/bootstrap5-dark.scss +2 -3
- package/styles/dashboard-layout/bootstrap5.3.css +6 -260
- package/styles/dashboard-layout/bootstrap5.3.scss +2 -3
- package/styles/dashboard-layout/bootstrap5.css +6 -8
- package/styles/dashboard-layout/bootstrap5.scss +2 -3
- package/styles/dashboard-layout/fabric-dark.css +6 -8
- package/styles/dashboard-layout/fabric-dark.scss +2 -3
- package/styles/dashboard-layout/fabric.css +6 -8
- package/styles/dashboard-layout/fabric.scss +2 -3
- package/styles/dashboard-layout/fluent-dark.css +6 -8
- package/styles/dashboard-layout/fluent-dark.scss +2 -3
- package/styles/dashboard-layout/fluent.css +6 -8
- package/styles/dashboard-layout/fluent.scss +2 -3
- package/styles/dashboard-layout/fluent2.css +6 -266
- package/styles/dashboard-layout/fluent2.scss +2 -3
- package/styles/dashboard-layout/highcontrast-light.css +6 -8
- package/styles/dashboard-layout/highcontrast-light.scss +2 -3
- package/styles/dashboard-layout/highcontrast.css +0 -6
- package/styles/dashboard-layout/highcontrast.scss +2 -3
- package/styles/dashboard-layout/icons/_bds.scss +1 -1
- package/styles/dashboard-layout/icons/_bootstrap-dark.scss +1 -1
- package/styles/dashboard-layout/icons/_bootstrap.scss +1 -1
- package/styles/dashboard-layout/icons/_bootstrap4.scss +1 -1
- package/styles/dashboard-layout/icons/_bootstrap5.3.scss +1 -1
- package/styles/dashboard-layout/icons/_bootstrap5.scss +1 -1
- package/styles/dashboard-layout/icons/_fabric-dark.scss +1 -1
- package/styles/dashboard-layout/icons/_fabric.scss +1 -1
- package/styles/dashboard-layout/icons/_fluent.scss +1 -1
- package/styles/dashboard-layout/icons/_fluent2.scss +1 -1
- package/styles/dashboard-layout/icons/_fusionnew.scss +1 -1
- package/styles/dashboard-layout/icons/_highcontrast.scss +1 -1
- package/styles/dashboard-layout/icons/_material-dark.scss +1 -1
- package/styles/dashboard-layout/icons/_material.scss +1 -1
- package/styles/dashboard-layout/icons/_material3.scss +1 -1
- package/styles/dashboard-layout/icons/_tailwind-dark.scss +1 -1
- package/styles/dashboard-layout/icons/_tailwind.scss +1 -1
- package/styles/dashboard-layout/icons/_tailwind3.scss +1 -1
- package/styles/dashboard-layout/material-dark.css +6 -8
- package/styles/dashboard-layout/material-dark.scss +2 -3
- package/styles/dashboard-layout/material.css +6 -8
- package/styles/dashboard-layout/material.scss +2 -3
- package/styles/dashboard-layout/material3-dark.css +6 -248
- package/styles/dashboard-layout/material3-dark.scss +2 -3
- package/styles/dashboard-layout/material3.css +6 -254
- package/styles/dashboard-layout/material3.scss +2 -3
- package/styles/dashboard-layout/tailwind-dark.css +6 -8
- package/styles/dashboard-layout/tailwind-dark.scss +2 -3
- package/styles/dashboard-layout/tailwind.css +6 -8
- package/styles/dashboard-layout/tailwind.scss +2 -3
- package/styles/dashboard-layout/tailwind3.css +6 -230
- package/styles/dashboard-layout/tailwind3.scss +2 -3
- package/styles/fabric-dark-lite.css +7 -10
- package/styles/fabric-dark-lite.scss +5 -6
- package/styles/fabric-dark.css +7 -14
- package/styles/fabric-dark.scss +9 -10
- package/styles/fabric-lite.css +7 -8
- package/styles/fabric-lite.scss +5 -6
- package/styles/fabric.css +7 -11
- package/styles/fabric.scss +9 -10
- package/styles/fluent-dark-lite.css +7 -6
- package/styles/fluent-dark-lite.scss +5 -6
- package/styles/fluent-dark.css +7 -8
- package/styles/fluent-dark.scss +9 -10
- package/styles/fluent-lite.css +7 -6
- package/styles/fluent-lite.scss +5 -6
- package/styles/fluent.css +7 -8
- package/styles/fluent.scss +9 -10
- package/styles/fluent2-lite.css +84 -857
- package/styles/fluent2-lite.scss +5 -6
- package/styles/fluent2.css +158 -1277
- package/styles/fluent2.scss +9 -10
- package/styles/highcontrast-light-lite.css +7 -10
- package/styles/highcontrast-light-lite.scss +5 -6
- package/styles/highcontrast-light.css +7 -14
- package/styles/highcontrast-light.scss +9 -10
- package/styles/highcontrast-lite.css +1 -6
- package/styles/highcontrast-lite.scss +5 -6
- package/styles/highcontrast.css +1 -9
- package/styles/highcontrast.scss +9 -10
- package/styles/material-dark-lite.css +7 -10
- package/styles/material-dark-lite.scss +5 -6
- package/styles/material-dark.css +7 -14
- package/styles/material-dark.scss +9 -10
- package/styles/material-lite.css +7 -10
- package/styles/material-lite.scss +5 -5
- package/styles/material.css +7 -14
- package/styles/material.scss +9 -9
- package/styles/material3-dark-lite.css +19 -836
- package/styles/material3-dark-lite.scss +5 -6
- package/styles/material3-dark.css +7 -1152
- package/styles/material3-dark.scss +9 -10
- package/styles/material3-lite.css +7 -758
- package/styles/material3-lite.scss +5 -6
- package/styles/material3.css +7 -1094
- package/styles/material3.scss +9 -10
- package/styles/splitter/_all.scss +2 -2
- package/styles/splitter/_bds-definition.scss +1 -2
- package/styles/splitter/_bigger.scss +1 -1
- package/styles/splitter/_bootstrap-dark-definition.scss +2 -2
- package/styles/splitter/_bootstrap-definition.scss +2 -2
- package/styles/splitter/_bootstrap4-definition.scss +2 -2
- package/styles/splitter/_bootstrap5-dark-definition.scss +1 -2
- package/styles/splitter/_bootstrap5-definition.scss +1 -2
- package/styles/splitter/_bootstrap5.3-definition.scss +1 -2
- package/styles/splitter/_fabric-dark-definition.scss +2 -2
- package/styles/splitter/_fabric-definition.scss +2 -2
- package/styles/splitter/_fluent-dark-definition.scss +1 -2
- package/styles/splitter/_fluent-definition.scss +1 -2
- package/styles/splitter/_fluent2-definition.scss +1 -2
- package/styles/splitter/_fusionnew-definition.scss +1 -2
- package/styles/splitter/_highcontrast-definition.scss +2 -2
- package/styles/splitter/_highcontrast-light-definition.scss +2 -2
- package/styles/splitter/_layout.scss +1 -1
- package/styles/splitter/_material-dark-definition.scss +2 -2
- package/styles/splitter/_material-definition.scss +1 -2
- package/styles/splitter/_material3-dark-definition.scss +2 -2
- package/styles/splitter/_material3-definition.scss +2 -2
- package/styles/splitter/_tailwind-dark-definition.scss +1 -2
- package/styles/splitter/_tailwind-definition.scss +1 -2
- package/styles/splitter/_tailwind3-definition.scss +1 -2
- package/styles/splitter/_theme.scss +1 -1
- package/styles/splitter/_variables.scss +2 -0
- package/styles/splitter/bds.css +1 -12
- package/styles/splitter/bds.scss +2 -3
- package/styles/splitter/bootstrap-dark.css +1 -0
- package/styles/splitter/bootstrap-dark.scss +2 -3
- package/styles/splitter/bootstrap.css +1 -0
- package/styles/splitter/bootstrap.scss +2 -3
- package/styles/splitter/bootstrap4.css +1 -0
- package/styles/splitter/bootstrap4.scss +2 -3
- package/styles/splitter/bootstrap5-dark.css +1 -0
- package/styles/splitter/bootstrap5-dark.scss +2 -3
- package/styles/splitter/bootstrap5.3.css +1 -252
- package/styles/splitter/bootstrap5.3.scss +2 -3
- package/styles/splitter/bootstrap5.css +1 -0
- package/styles/splitter/bootstrap5.scss +2 -3
- package/styles/splitter/fabric-dark.css +1 -0
- package/styles/splitter/fabric-dark.scss +2 -3
- package/styles/splitter/fabric.css +1 -0
- package/styles/splitter/fabric.scss +2 -3
- package/styles/splitter/fluent-dark.css +1 -0
- package/styles/splitter/fluent-dark.scss +2 -3
- package/styles/splitter/fluent.css +1 -0
- package/styles/splitter/fluent.scss +2 -3
- package/styles/splitter/fluent2.css +1 -258
- package/styles/splitter/fluent2.scss +2 -3
- package/styles/splitter/highcontrast-light.css +1 -0
- package/styles/splitter/highcontrast-light.scss +2 -3
- package/styles/splitter/highcontrast.css +1 -0
- package/styles/splitter/highcontrast.scss +2 -3
- package/styles/splitter/icons/_bds.scss +1 -2
- package/styles/splitter/icons/_bootstrap-dark.scss +1 -2
- package/styles/splitter/icons/_bootstrap.scss +1 -2
- package/styles/splitter/icons/_bootstrap4.scss +1 -2
- package/styles/splitter/icons/_bootstrap5.3.scss +1 -2
- package/styles/splitter/icons/_bootstrap5.scss +1 -2
- package/styles/splitter/icons/_fabric-dark.scss +1 -2
- package/styles/splitter/icons/_fabric.scss +1 -2
- package/styles/splitter/icons/_fluent.scss +1 -2
- package/styles/splitter/icons/_fluent2.scss +1 -2
- package/styles/splitter/icons/_fusionnew.scss +1 -2
- package/styles/splitter/icons/_highcontrast-light.scss +1 -2
- package/styles/splitter/icons/_highcontrast.scss +1 -2
- package/styles/splitter/icons/_material-dark.scss +1 -2
- package/styles/splitter/icons/_material.scss +1 -2
- package/styles/splitter/icons/_material3.scss +1 -2
- package/styles/splitter/icons/_tailwind.scss +1 -2
- package/styles/splitter/icons/_tailwind3.scss +1 -2
- package/styles/splitter/material-dark.css +1 -0
- package/styles/splitter/material-dark.scss +2 -3
- package/styles/splitter/material.css +1 -3
- package/styles/splitter/material.scss +2 -3
- package/styles/splitter/material3-dark.css +1 -330
- package/styles/splitter/material3-dark.scss +2 -3
- package/styles/splitter/material3.css +1 -252
- package/styles/splitter/material3.scss +2 -3
- package/styles/splitter/tailwind-dark.css +1 -0
- package/styles/splitter/tailwind-dark.scss +2 -3
- package/styles/splitter/tailwind.css +1 -0
- package/styles/splitter/tailwind.scss +2 -3
- package/styles/splitter/tailwind3.css +1 -222
- package/styles/splitter/tailwind3.scss +2 -3
- package/styles/tailwind-dark-lite.css +7 -6
- package/styles/tailwind-dark-lite.scss +5 -6
- package/styles/tailwind-dark.css +7 -8
- package/styles/tailwind-dark.scss +9 -10
- package/styles/tailwind-lite.css +7 -6
- package/styles/tailwind-lite.scss +5 -6
- package/styles/tailwind.css +7 -8
- package/styles/tailwind.scss +9 -10
- package/styles/tailwind3-lite.css +7 -672
- package/styles/tailwind3-lite.scss +5 -6
- package/styles/tailwind3.css +60 -1023
- package/styles/tailwind3.scss +9 -10
- package/styles/timeline/_all.scss +2 -2
- package/styles/timeline/_bds-definition.scss +2 -2
- package/styles/timeline/_bigger.scss +1 -1
- package/styles/timeline/_bootstrap-dark-definition.scss +2 -2
- package/styles/timeline/_bootstrap-definition.scss +2 -2
- package/styles/timeline/_bootstrap4-definition.scss +2 -2
- package/styles/timeline/_bootstrap5-dark-definition.scss +2 -2
- package/styles/timeline/_bootstrap5-definition.scss +2 -2
- package/styles/timeline/_bootstrap5.3-definition.scss +2 -2
- package/styles/timeline/_fabric-dark-definition.scss +2 -2
- package/styles/timeline/_fabric-definition.scss +2 -2
- package/styles/timeline/_fluent-dark-definition.scss +2 -2
- package/styles/timeline/_fluent-definition.scss +2 -2
- package/styles/timeline/_fluent2-definition.scss +2 -2
- package/styles/timeline/_fusionnew-definition.scss +2 -2
- package/styles/timeline/_highcontrast-definition.scss +2 -2
- package/styles/timeline/_highcontrast-light-definition.scss +2 -2
- package/styles/timeline/_layout.scss +1 -1
- package/styles/timeline/_material-dark-definition.scss +2 -2
- package/styles/timeline/_material-definition.scss +2 -2
- package/styles/timeline/_material3-dark-definition.scss +2 -2
- package/styles/timeline/_material3-definition.scss +2 -2
- package/styles/timeline/_tailwind-dark-definition.scss +2 -2
- package/styles/timeline/_tailwind-definition.scss +2 -2
- package/styles/timeline/_tailwind3-definition.scss +2 -2
- package/styles/timeline/_theme.scss +1 -1
- package/styles/timeline/_variables.scss +2 -0
- package/styles/timeline/bds.css +0 -12
- package/styles/timeline/bds.scss +2 -3
- package/styles/timeline/bootstrap-dark.scss +2 -3
- package/styles/timeline/bootstrap.scss +2 -3
- package/styles/timeline/bootstrap4.scss +2 -3
- package/styles/timeline/bootstrap5-dark.scss +2 -3
- package/styles/timeline/bootstrap5.3.css +0 -252
- package/styles/timeline/bootstrap5.3.scss +2 -3
- package/styles/timeline/bootstrap5.scss +2 -3
- package/styles/timeline/fabric-dark.scss +2 -3
- package/styles/timeline/fabric.scss +2 -3
- package/styles/timeline/fluent-dark.scss +2 -3
- package/styles/timeline/fluent.scss +2 -3
- package/styles/timeline/fluent2.css +0 -258
- package/styles/timeline/fluent2.scss +2 -3
- package/styles/timeline/highcontrast-light.scss +2 -3
- package/styles/timeline/highcontrast.scss +2 -3
- package/styles/timeline/material-dark.scss +2 -3
- package/styles/timeline/material.scss +2 -3
- package/styles/timeline/material3-dark.css +0 -246
- package/styles/timeline/material3-dark.scss +2 -3
- package/styles/timeline/material3.css +0 -252
- package/styles/timeline/material3.scss +2 -3
- package/styles/timeline/tailwind-dark.scss +2 -3
- package/styles/timeline/tailwind.scss +2 -3
- package/styles/timeline/tailwind3.css +0 -222
- package/styles/timeline/tailwind3.scss +2 -3
- package/styles/avatar/_all.bds.scss +0 -1
- package/styles/avatar/_all.bootstrap-dark.scss +0 -1
- package/styles/avatar/_all.bootstrap.scss +0 -1
- package/styles/avatar/_all.bootstrap4.scss +0 -1
- package/styles/avatar/_all.bootstrap5-dark.scss +0 -1
- package/styles/avatar/_all.bootstrap5.3.scss +0 -1
- package/styles/avatar/_all.bootstrap5.scss +0 -1
- package/styles/avatar/_all.fabric-dark.scss +0 -1
- package/styles/avatar/_all.fabric.scss +0 -1
- package/styles/avatar/_all.fluent-dark.scss +0 -1
- package/styles/avatar/_all.fluent.scss +0 -1
- package/styles/avatar/_all.fluent2.scss +0 -1
- package/styles/avatar/_all.highcontrast-light.scss +0 -1
- package/styles/avatar/_all.highcontrast.scss +0 -1
- package/styles/avatar/_all.material-dark.scss +0 -1
- package/styles/avatar/_all.material.scss +0 -1
- package/styles/avatar/_all.material3-dark.scss +0 -1
- package/styles/avatar/_all.material3.scss +0 -1
- package/styles/avatar/_all.tailwind-dark.scss +0 -1
- package/styles/avatar/_all.tailwind.scss +0 -1
- package/styles/avatar/_all.tailwind3.scss +0 -1
- package/styles/avatar/_layout.bds.scss +0 -3
- package/styles/avatar/_layout.bootstrap-dark.scss +0 -3
- package/styles/avatar/_layout.bootstrap.scss +0 -3
- package/styles/avatar/_layout.bootstrap4.scss +0 -3
- package/styles/avatar/_layout.bootstrap5-dark.scss +0 -3
- package/styles/avatar/_layout.bootstrap5.3.scss +0 -3
- package/styles/avatar/_layout.bootstrap5.scss +0 -3
- package/styles/avatar/_layout.fabric-dark.scss +0 -3
- package/styles/avatar/_layout.fabric.scss +0 -3
- package/styles/avatar/_layout.fluent-dark.scss +0 -3
- package/styles/avatar/_layout.fluent.scss +0 -3
- package/styles/avatar/_layout.fluent2.scss +0 -3
- package/styles/avatar/_layout.highcontrast-light.scss +0 -3
- package/styles/avatar/_layout.highcontrast.scss +0 -3
- package/styles/avatar/_layout.material-dark.scss +0 -3
- package/styles/avatar/_layout.material.scss +0 -3
- package/styles/avatar/_layout.material3-dark.scss +0 -3
- package/styles/avatar/_layout.material3.scss +0 -3
- package/styles/avatar/_layout.tailwind-dark.scss +0 -3
- package/styles/avatar/_layout.tailwind.scss +0 -3
- package/styles/avatar/_layout.tailwind3.scss +0 -3
- package/styles/avatar/_theme-variables.bds.scss +0 -1
- package/styles/avatar/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/avatar/_theme-variables.bootstrap.scss +0 -1
- package/styles/avatar/_theme-variables.bootstrap4.scss +0 -1
- package/styles/avatar/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/avatar/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/avatar/_theme-variables.bootstrap5.scss +0 -1
- package/styles/avatar/_theme-variables.fabric-dark.scss +0 -1
- package/styles/avatar/_theme-variables.fabric.scss +0 -1
- package/styles/avatar/_theme-variables.fluent-dark.scss +0 -1
- package/styles/avatar/_theme-variables.fluent.scss +0 -1
- package/styles/avatar/_theme-variables.fluent2.scss +0 -1
- package/styles/avatar/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/avatar/_theme-variables.highcontrast.scss +0 -1
- package/styles/avatar/_theme-variables.material-dark.scss +0 -1
- package/styles/avatar/_theme-variables.material.scss +0 -1
- package/styles/avatar/_theme-variables.material3-dark.scss +0 -1
- package/styles/avatar/_theme-variables.material3.scss +0 -1
- package/styles/avatar/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/avatar/_theme-variables.tailwind.scss +0 -1
- package/styles/avatar/_theme-variables.tailwind3.scss +0 -1
- package/styles/card/_all.bds.scss +0 -2
- package/styles/card/_all.bootstrap-dark.scss +0 -2
- package/styles/card/_all.bootstrap.scss +0 -2
- package/styles/card/_all.bootstrap4.scss +0 -2
- package/styles/card/_all.bootstrap5-dark.scss +0 -2
- package/styles/card/_all.bootstrap5.3.scss +0 -2
- package/styles/card/_all.bootstrap5.scss +0 -2
- package/styles/card/_all.fabric-dark.scss +0 -2
- package/styles/card/_all.fabric.scss +0 -2
- package/styles/card/_all.fluent-dark.scss +0 -2
- package/styles/card/_all.fluent.scss +0 -2
- package/styles/card/_all.fluent2.scss +0 -2
- package/styles/card/_all.highcontrast-light.scss +0 -2
- package/styles/card/_all.highcontrast.scss +0 -2
- package/styles/card/_all.material-dark.scss +0 -2
- package/styles/card/_all.material.scss +0 -2
- package/styles/card/_all.material3-dark.scss +0 -2
- package/styles/card/_all.material3.scss +0 -2
- package/styles/card/_all.tailwind-dark.scss +0 -2
- package/styles/card/_all.tailwind.scss +0 -2
- package/styles/card/_all.tailwind3.scss +0 -2
- package/styles/card/_bigger.bds.scss +0 -3
- package/styles/card/_bigger.bootstrap-dark.scss +0 -3
- package/styles/card/_bigger.bootstrap.scss +0 -3
- package/styles/card/_bigger.bootstrap4.scss +0 -3
- package/styles/card/_bigger.bootstrap5-dark.scss +0 -3
- package/styles/card/_bigger.bootstrap5.3.scss +0 -3
- package/styles/card/_bigger.bootstrap5.scss +0 -3
- package/styles/card/_bigger.fabric-dark.scss +0 -3
- package/styles/card/_bigger.fabric.scss +0 -3
- package/styles/card/_bigger.fluent-dark.scss +0 -3
- package/styles/card/_bigger.fluent.scss +0 -3
- package/styles/card/_bigger.fluent2.scss +0 -3
- package/styles/card/_bigger.highcontrast-light.scss +0 -3
- package/styles/card/_bigger.highcontrast.scss +0 -3
- package/styles/card/_bigger.material-dark.scss +0 -3
- package/styles/card/_bigger.material.scss +0 -3
- package/styles/card/_bigger.material3-dark.scss +0 -3
- package/styles/card/_bigger.material3.scss +0 -3
- package/styles/card/_bigger.tailwind-dark.scss +0 -3
- package/styles/card/_bigger.tailwind.scss +0 -3
- package/styles/card/_bigger.tailwind3.scss +0 -3
- package/styles/card/_layout.bds.scss +0 -3
- package/styles/card/_layout.bootstrap-dark.scss +0 -3
- package/styles/card/_layout.bootstrap.scss +0 -3
- package/styles/card/_layout.bootstrap4.scss +0 -3
- package/styles/card/_layout.bootstrap5-dark.scss +0 -3
- package/styles/card/_layout.bootstrap5.3.scss +0 -3
- package/styles/card/_layout.bootstrap5.scss +0 -3
- package/styles/card/_layout.fabric-dark.scss +0 -3
- package/styles/card/_layout.fabric.scss +0 -3
- package/styles/card/_layout.fluent-dark.scss +0 -3
- package/styles/card/_layout.fluent.scss +0 -3
- package/styles/card/_layout.fluent2.scss +0 -3
- package/styles/card/_layout.highcontrast-light.scss +0 -3
- package/styles/card/_layout.highcontrast.scss +0 -3
- package/styles/card/_layout.material-dark.scss +0 -3
- package/styles/card/_layout.material.scss +0 -3
- package/styles/card/_layout.material3-dark.scss +0 -3
- package/styles/card/_layout.material3.scss +0 -3
- package/styles/card/_layout.tailwind-dark.scss +0 -3
- package/styles/card/_layout.tailwind.scss +0 -3
- package/styles/card/_layout.tailwind3.scss +0 -3
- package/styles/card/_theme-variables.bds.scss +0 -1
- package/styles/card/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/card/_theme-variables.bootstrap.scss +0 -1
- package/styles/card/_theme-variables.bootstrap4.scss +0 -1
- package/styles/card/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/card/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/card/_theme-variables.bootstrap5.scss +0 -1
- package/styles/card/_theme-variables.fabric-dark.scss +0 -1
- package/styles/card/_theme-variables.fabric.scss +0 -1
- package/styles/card/_theme-variables.fluent-dark.scss +0 -1
- package/styles/card/_theme-variables.fluent.scss +0 -1
- package/styles/card/_theme-variables.fluent2.scss +0 -1
- package/styles/card/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/card/_theme-variables.highcontrast.scss +0 -1
- package/styles/card/_theme-variables.material-dark.scss +0 -1
- package/styles/card/_theme-variables.material.scss +0 -1
- package/styles/card/_theme-variables.material3-dark.scss +0 -1
- package/styles/card/_theme-variables.material3.scss +0 -1
- package/styles/card/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/card/_theme-variables.tailwind.scss +0 -1
- package/styles/card/_theme-variables.tailwind3.scss +0 -1
- package/styles/card/_theme.bds.scss +0 -4
- package/styles/card/_theme.bootstrap-dark.scss +0 -4
- package/styles/card/_theme.bootstrap.scss +0 -4
- package/styles/card/_theme.bootstrap4.scss +0 -4
- package/styles/card/_theme.bootstrap5-dark.scss +0 -4
- package/styles/card/_theme.bootstrap5.3.scss +0 -4
- package/styles/card/_theme.bootstrap5.scss +0 -4
- package/styles/card/_theme.fabric-dark.scss +0 -4
- package/styles/card/_theme.fabric.scss +0 -4
- package/styles/card/_theme.fluent-dark.scss +0 -4
- package/styles/card/_theme.fluent.scss +0 -4
- package/styles/card/_theme.fluent2.scss +0 -4
- package/styles/card/_theme.highcontrast-light.scss +0 -4
- package/styles/card/_theme.highcontrast.scss +0 -4
- package/styles/card/_theme.material-dark.scss +0 -4
- package/styles/card/_theme.material.scss +0 -4
- package/styles/card/_theme.material3-dark.scss +0 -4
- package/styles/card/_theme.material3.scss +0 -4
- package/styles/card/_theme.tailwind-dark.scss +0 -4
- package/styles/card/_theme.tailwind.scss +0 -4
- package/styles/card/_theme.tailwind3.scss +0 -4
- package/styles/dashboard-layout/_all.bds.scss +0 -2
- package/styles/dashboard-layout/_all.bootstrap-dark.scss +0 -2
- package/styles/dashboard-layout/_all.bootstrap.scss +0 -2
- package/styles/dashboard-layout/_all.bootstrap4.scss +0 -2
- package/styles/dashboard-layout/_all.bootstrap5-dark.scss +0 -2
- package/styles/dashboard-layout/_all.bootstrap5.3.scss +0 -2
- package/styles/dashboard-layout/_all.bootstrap5.scss +0 -2
- package/styles/dashboard-layout/_all.fabric-dark.scss +0 -2
- package/styles/dashboard-layout/_all.fabric.scss +0 -2
- package/styles/dashboard-layout/_all.fluent-dark.scss +0 -2
- package/styles/dashboard-layout/_all.fluent.scss +0 -2
- package/styles/dashboard-layout/_all.fluent2.scss +0 -2
- package/styles/dashboard-layout/_all.highcontrast-light.scss +0 -2
- package/styles/dashboard-layout/_all.highcontrast.scss +0 -2
- package/styles/dashboard-layout/_all.material-dark.scss +0 -2
- package/styles/dashboard-layout/_all.material.scss +0 -2
- package/styles/dashboard-layout/_all.material3-dark.scss +0 -2
- package/styles/dashboard-layout/_all.material3.scss +0 -2
- package/styles/dashboard-layout/_all.tailwind-dark.scss +0 -2
- package/styles/dashboard-layout/_all.tailwind.scss +0 -2
- package/styles/dashboard-layout/_all.tailwind3.scss +0 -2
- package/styles/dashboard-layout/_bigger.bds.scss +0 -3
- package/styles/dashboard-layout/_bigger.bootstrap-dark.scss +0 -3
- package/styles/dashboard-layout/_bigger.bootstrap.scss +0 -3
- package/styles/dashboard-layout/_bigger.bootstrap4.scss +0 -3
- package/styles/dashboard-layout/_bigger.bootstrap5-dark.scss +0 -3
- package/styles/dashboard-layout/_bigger.bootstrap5.3.scss +0 -3
- package/styles/dashboard-layout/_bigger.bootstrap5.scss +0 -3
- package/styles/dashboard-layout/_bigger.fabric-dark.scss +0 -3
- package/styles/dashboard-layout/_bigger.fabric.scss +0 -3
- package/styles/dashboard-layout/_bigger.fluent-dark.scss +0 -3
- package/styles/dashboard-layout/_bigger.fluent.scss +0 -3
- package/styles/dashboard-layout/_bigger.fluent2.scss +0 -3
- package/styles/dashboard-layout/_bigger.highcontrast-light.scss +0 -3
- package/styles/dashboard-layout/_bigger.highcontrast.scss +0 -3
- package/styles/dashboard-layout/_bigger.material-dark.scss +0 -3
- package/styles/dashboard-layout/_bigger.material.scss +0 -3
- package/styles/dashboard-layout/_bigger.material3-dark.scss +0 -3
- package/styles/dashboard-layout/_bigger.material3.scss +0 -3
- package/styles/dashboard-layout/_bigger.tailwind-dark.scss +0 -3
- package/styles/dashboard-layout/_bigger.tailwind.scss +0 -3
- package/styles/dashboard-layout/_bigger.tailwind3.scss +0 -3
- package/styles/dashboard-layout/_layout.bds.scss +0 -3
- package/styles/dashboard-layout/_layout.bootstrap-dark.scss +0 -3
- package/styles/dashboard-layout/_layout.bootstrap.scss +0 -3
- package/styles/dashboard-layout/_layout.bootstrap4.scss +0 -3
- package/styles/dashboard-layout/_layout.bootstrap5-dark.scss +0 -3
- package/styles/dashboard-layout/_layout.bootstrap5.3.scss +0 -3
- package/styles/dashboard-layout/_layout.bootstrap5.scss +0 -3
- package/styles/dashboard-layout/_layout.fabric-dark.scss +0 -3
- package/styles/dashboard-layout/_layout.fabric.scss +0 -3
- package/styles/dashboard-layout/_layout.fluent-dark.scss +0 -3
- package/styles/dashboard-layout/_layout.fluent.scss +0 -3
- package/styles/dashboard-layout/_layout.fluent2.scss +0 -3
- package/styles/dashboard-layout/_layout.highcontrast-light.scss +0 -3
- package/styles/dashboard-layout/_layout.highcontrast.scss +0 -3
- package/styles/dashboard-layout/_layout.material-dark.scss +0 -3
- package/styles/dashboard-layout/_layout.material.scss +0 -3
- package/styles/dashboard-layout/_layout.material3-dark.scss +0 -3
- package/styles/dashboard-layout/_layout.material3.scss +0 -3
- package/styles/dashboard-layout/_layout.tailwind-dark.scss +0 -3
- package/styles/dashboard-layout/_layout.tailwind.scss +0 -3
- package/styles/dashboard-layout/_layout.tailwind3.scss +0 -3
- package/styles/dashboard-layout/_theme-variables.bds.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.bootstrap.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.bootstrap4.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.bootstrap5.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.fabric-dark.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.fabric.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.fluent-dark.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.fluent.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.fluent2.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.highcontrast.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.material-dark.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.material.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.material3-dark.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.material3.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.tailwind.scss +0 -1
- package/styles/dashboard-layout/_theme-variables.tailwind3.scss +0 -1
- package/styles/dashboard-layout/_theme.bds.scss +0 -4
- package/styles/dashboard-layout/_theme.bootstrap-dark.scss +0 -4
- package/styles/dashboard-layout/_theme.bootstrap.scss +0 -4
- package/styles/dashboard-layout/_theme.bootstrap4.scss +0 -4
- package/styles/dashboard-layout/_theme.bootstrap5-dark.scss +0 -4
- package/styles/dashboard-layout/_theme.bootstrap5.3.scss +0 -4
- package/styles/dashboard-layout/_theme.bootstrap5.scss +0 -4
- package/styles/dashboard-layout/_theme.fabric-dark.scss +0 -4
- package/styles/dashboard-layout/_theme.fabric.scss +0 -4
- package/styles/dashboard-layout/_theme.fluent-dark.scss +0 -4
- package/styles/dashboard-layout/_theme.fluent.scss +0 -4
- package/styles/dashboard-layout/_theme.fluent2.scss +0 -4
- package/styles/dashboard-layout/_theme.highcontrast-light.scss +0 -4
- package/styles/dashboard-layout/_theme.highcontrast.scss +0 -4
- package/styles/dashboard-layout/_theme.material-dark.scss +0 -4
- package/styles/dashboard-layout/_theme.material.scss +0 -4
- package/styles/dashboard-layout/_theme.material3-dark.scss +0 -4
- package/styles/dashboard-layout/_theme.material3.scss +0 -4
- package/styles/dashboard-layout/_theme.tailwind-dark.scss +0 -4
- package/styles/dashboard-layout/_theme.tailwind.scss +0 -4
- package/styles/dashboard-layout/_theme.tailwind3.scss +0 -4
- package/styles/splitter/_all.bds.scss +0 -2
- package/styles/splitter/_all.bootstrap-dark.scss +0 -2
- package/styles/splitter/_all.bootstrap.scss +0 -2
- package/styles/splitter/_all.bootstrap4.scss +0 -2
- package/styles/splitter/_all.bootstrap5-dark.scss +0 -2
- package/styles/splitter/_all.bootstrap5.3.scss +0 -2
- package/styles/splitter/_all.bootstrap5.scss +0 -2
- package/styles/splitter/_all.fabric-dark.scss +0 -2
- package/styles/splitter/_all.fabric.scss +0 -2
- package/styles/splitter/_all.fluent-dark.scss +0 -2
- package/styles/splitter/_all.fluent.scss +0 -2
- package/styles/splitter/_all.fluent2.scss +0 -2
- package/styles/splitter/_all.highcontrast-light.scss +0 -2
- package/styles/splitter/_all.highcontrast.scss +0 -2
- package/styles/splitter/_all.material-dark.scss +0 -2
- package/styles/splitter/_all.material.scss +0 -2
- package/styles/splitter/_all.material3-dark.scss +0 -2
- package/styles/splitter/_all.material3.scss +0 -2
- package/styles/splitter/_all.tailwind-dark.scss +0 -2
- package/styles/splitter/_all.tailwind.scss +0 -2
- package/styles/splitter/_all.tailwind3.scss +0 -2
- package/styles/splitter/_bigger.bds.scss +0 -3
- package/styles/splitter/_bigger.bootstrap-dark.scss +0 -3
- package/styles/splitter/_bigger.bootstrap.scss +0 -3
- package/styles/splitter/_bigger.bootstrap4.scss +0 -3
- package/styles/splitter/_bigger.bootstrap5-dark.scss +0 -3
- package/styles/splitter/_bigger.bootstrap5.3.scss +0 -3
- package/styles/splitter/_bigger.bootstrap5.scss +0 -3
- package/styles/splitter/_bigger.fabric-dark.scss +0 -3
- package/styles/splitter/_bigger.fabric.scss +0 -3
- package/styles/splitter/_bigger.fluent-dark.scss +0 -3
- package/styles/splitter/_bigger.fluent.scss +0 -3
- package/styles/splitter/_bigger.fluent2.scss +0 -3
- package/styles/splitter/_bigger.highcontrast-light.scss +0 -3
- package/styles/splitter/_bigger.highcontrast.scss +0 -3
- package/styles/splitter/_bigger.material-dark.scss +0 -3
- package/styles/splitter/_bigger.material.scss +0 -3
- package/styles/splitter/_bigger.material3-dark.scss +0 -3
- package/styles/splitter/_bigger.material3.scss +0 -3
- package/styles/splitter/_bigger.tailwind-dark.scss +0 -3
- package/styles/splitter/_bigger.tailwind.scss +0 -3
- package/styles/splitter/_bigger.tailwind3.scss +0 -3
- package/styles/splitter/_layout.bds.scss +0 -3
- package/styles/splitter/_layout.bootstrap-dark.scss +0 -3
- package/styles/splitter/_layout.bootstrap.scss +0 -3
- package/styles/splitter/_layout.bootstrap4.scss +0 -3
- package/styles/splitter/_layout.bootstrap5-dark.scss +0 -3
- package/styles/splitter/_layout.bootstrap5.3.scss +0 -3
- package/styles/splitter/_layout.bootstrap5.scss +0 -3
- package/styles/splitter/_layout.fabric-dark.scss +0 -3
- package/styles/splitter/_layout.fabric.scss +0 -3
- package/styles/splitter/_layout.fluent-dark.scss +0 -3
- package/styles/splitter/_layout.fluent.scss +0 -3
- package/styles/splitter/_layout.fluent2.scss +0 -3
- package/styles/splitter/_layout.highcontrast-light.scss +0 -3
- package/styles/splitter/_layout.highcontrast.scss +0 -3
- package/styles/splitter/_layout.material-dark.scss +0 -3
- package/styles/splitter/_layout.material.scss +0 -3
- package/styles/splitter/_layout.material3-dark.scss +0 -3
- package/styles/splitter/_layout.material3.scss +0 -3
- package/styles/splitter/_layout.tailwind-dark.scss +0 -3
- package/styles/splitter/_layout.tailwind.scss +0 -3
- package/styles/splitter/_layout.tailwind3.scss +0 -3
- package/styles/splitter/_theme-variables.bds.scss +0 -1
- package/styles/splitter/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/splitter/_theme-variables.bootstrap.scss +0 -1
- package/styles/splitter/_theme-variables.bootstrap4.scss +0 -1
- package/styles/splitter/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/splitter/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/splitter/_theme-variables.bootstrap5.scss +0 -1
- package/styles/splitter/_theme-variables.fabric-dark.scss +0 -1
- package/styles/splitter/_theme-variables.fabric.scss +0 -1
- package/styles/splitter/_theme-variables.fluent-dark.scss +0 -1
- package/styles/splitter/_theme-variables.fluent.scss +0 -1
- package/styles/splitter/_theme-variables.fluent2.scss +0 -1
- package/styles/splitter/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/splitter/_theme-variables.highcontrast.scss +0 -1
- package/styles/splitter/_theme-variables.material-dark.scss +0 -1
- package/styles/splitter/_theme-variables.material.scss +0 -1
- package/styles/splitter/_theme-variables.material3-dark.scss +0 -1
- package/styles/splitter/_theme-variables.material3.scss +0 -1
- package/styles/splitter/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/splitter/_theme-variables.tailwind.scss +0 -1
- package/styles/splitter/_theme-variables.tailwind3.scss +0 -1
- package/styles/splitter/_theme.bds.scss +0 -4
- package/styles/splitter/_theme.bootstrap-dark.scss +0 -4
- package/styles/splitter/_theme.bootstrap.scss +0 -4
- package/styles/splitter/_theme.bootstrap4.scss +0 -4
- package/styles/splitter/_theme.bootstrap5-dark.scss +0 -4
- package/styles/splitter/_theme.bootstrap5.3.scss +0 -4
- package/styles/splitter/_theme.bootstrap5.scss +0 -4
- package/styles/splitter/_theme.fabric-dark.scss +0 -4
- package/styles/splitter/_theme.fabric.scss +0 -4
- package/styles/splitter/_theme.fluent-dark.scss +0 -4
- package/styles/splitter/_theme.fluent.scss +0 -4
- package/styles/splitter/_theme.fluent2.scss +0 -4
- package/styles/splitter/_theme.highcontrast-light.scss +0 -4
- package/styles/splitter/_theme.highcontrast.scss +0 -4
- package/styles/splitter/_theme.material-dark.scss +0 -4
- package/styles/splitter/_theme.material.scss +0 -4
- package/styles/splitter/_theme.material3-dark.scss +0 -4
- package/styles/splitter/_theme.material3.scss +0 -4
- package/styles/splitter/_theme.tailwind-dark.scss +0 -4
- package/styles/splitter/_theme.tailwind.scss +0 -4
- package/styles/splitter/_theme.tailwind3.scss +0 -4
- package/styles/timeline/_all.bds.scss +0 -2
- package/styles/timeline/_all.bootstrap-dark.scss +0 -2
- package/styles/timeline/_all.bootstrap.scss +0 -2
- package/styles/timeline/_all.bootstrap4.scss +0 -2
- package/styles/timeline/_all.bootstrap5-dark.scss +0 -2
- package/styles/timeline/_all.bootstrap5.3.scss +0 -2
- package/styles/timeline/_all.bootstrap5.scss +0 -2
- package/styles/timeline/_all.fabric-dark.scss +0 -2
- package/styles/timeline/_all.fabric.scss +0 -2
- package/styles/timeline/_all.fluent-dark.scss +0 -2
- package/styles/timeline/_all.fluent.scss +0 -2
- package/styles/timeline/_all.fluent2.scss +0 -2
- package/styles/timeline/_all.highcontrast-light.scss +0 -2
- package/styles/timeline/_all.highcontrast.scss +0 -2
- package/styles/timeline/_all.material-dark.scss +0 -2
- package/styles/timeline/_all.material.scss +0 -2
- package/styles/timeline/_all.material3-dark.scss +0 -2
- package/styles/timeline/_all.material3.scss +0 -2
- package/styles/timeline/_all.tailwind-dark.scss +0 -2
- package/styles/timeline/_all.tailwind.scss +0 -2
- package/styles/timeline/_all.tailwind3.scss +0 -2
- package/styles/timeline/_bigger.bds.scss +0 -3
- package/styles/timeline/_bigger.bootstrap-dark.scss +0 -3
- package/styles/timeline/_bigger.bootstrap.scss +0 -3
- package/styles/timeline/_bigger.bootstrap4.scss +0 -3
- package/styles/timeline/_bigger.bootstrap5-dark.scss +0 -3
- package/styles/timeline/_bigger.bootstrap5.3.scss +0 -3
- package/styles/timeline/_bigger.bootstrap5.scss +0 -3
- package/styles/timeline/_bigger.fabric-dark.scss +0 -3
- package/styles/timeline/_bigger.fabric.scss +0 -3
- package/styles/timeline/_bigger.fluent-dark.scss +0 -3
- package/styles/timeline/_bigger.fluent.scss +0 -3
- package/styles/timeline/_bigger.fluent2.scss +0 -3
- package/styles/timeline/_bigger.highcontrast-light.scss +0 -3
- package/styles/timeline/_bigger.highcontrast.scss +0 -3
- package/styles/timeline/_bigger.material-dark.scss +0 -3
- package/styles/timeline/_bigger.material.scss +0 -3
- package/styles/timeline/_bigger.material3-dark.scss +0 -3
- package/styles/timeline/_bigger.material3.scss +0 -3
- package/styles/timeline/_bigger.tailwind-dark.scss +0 -3
- package/styles/timeline/_bigger.tailwind.scss +0 -3
- package/styles/timeline/_bigger.tailwind3.scss +0 -3
- package/styles/timeline/_layout.bds.scss +0 -3
- package/styles/timeline/_layout.bootstrap-dark.scss +0 -3
- package/styles/timeline/_layout.bootstrap.scss +0 -3
- package/styles/timeline/_layout.bootstrap4.scss +0 -3
- package/styles/timeline/_layout.bootstrap5-dark.scss +0 -3
- package/styles/timeline/_layout.bootstrap5.3.scss +0 -3
- package/styles/timeline/_layout.bootstrap5.scss +0 -3
- package/styles/timeline/_layout.fabric-dark.scss +0 -3
- package/styles/timeline/_layout.fabric.scss +0 -3
- package/styles/timeline/_layout.fluent-dark.scss +0 -3
- package/styles/timeline/_layout.fluent.scss +0 -3
- package/styles/timeline/_layout.fluent2.scss +0 -3
- package/styles/timeline/_layout.highcontrast-light.scss +0 -3
- package/styles/timeline/_layout.highcontrast.scss +0 -3
- package/styles/timeline/_layout.material-dark.scss +0 -3
- package/styles/timeline/_layout.material.scss +0 -3
- package/styles/timeline/_layout.material3-dark.scss +0 -3
- package/styles/timeline/_layout.material3.scss +0 -3
- package/styles/timeline/_layout.tailwind-dark.scss +0 -3
- package/styles/timeline/_layout.tailwind.scss +0 -3
- package/styles/timeline/_layout.tailwind3.scss +0 -3
- package/styles/timeline/_theme-variables.bds.scss +0 -1
- package/styles/timeline/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/timeline/_theme-variables.bootstrap.scss +0 -1
- package/styles/timeline/_theme-variables.bootstrap4.scss +0 -1
- package/styles/timeline/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/timeline/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/timeline/_theme-variables.bootstrap5.scss +0 -1
- package/styles/timeline/_theme-variables.fabric-dark.scss +0 -1
- package/styles/timeline/_theme-variables.fabric.scss +0 -1
- package/styles/timeline/_theme-variables.fluent-dark.scss +0 -1
- package/styles/timeline/_theme-variables.fluent.scss +0 -1
- package/styles/timeline/_theme-variables.fluent2.scss +0 -1
- package/styles/timeline/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/timeline/_theme-variables.highcontrast.scss +0 -1
- package/styles/timeline/_theme-variables.material-dark.scss +0 -1
- package/styles/timeline/_theme-variables.material.scss +0 -1
- package/styles/timeline/_theme-variables.material3-dark.scss +0 -1
- package/styles/timeline/_theme-variables.material3.scss +0 -1
- package/styles/timeline/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/timeline/_theme-variables.tailwind.scss +0 -1
- package/styles/timeline/_theme-variables.tailwind3.scss +0 -1
- package/styles/timeline/_theme.bds.scss +0 -4
- package/styles/timeline/_theme.bootstrap-dark.scss +0 -4
- package/styles/timeline/_theme.bootstrap.scss +0 -4
- package/styles/timeline/_theme.bootstrap4.scss +0 -4
- package/styles/timeline/_theme.bootstrap5-dark.scss +0 -4
- package/styles/timeline/_theme.bootstrap5.3.scss +0 -4
- package/styles/timeline/_theme.bootstrap5.scss +0 -4
- package/styles/timeline/_theme.fabric-dark.scss +0 -4
- package/styles/timeline/_theme.fabric.scss +0 -4
- package/styles/timeline/_theme.fluent-dark.scss +0 -4
- package/styles/timeline/_theme.fluent.scss +0 -4
- package/styles/timeline/_theme.fluent2.scss +0 -4
- package/styles/timeline/_theme.highcontrast-light.scss +0 -4
- package/styles/timeline/_theme.highcontrast.scss +0 -4
- package/styles/timeline/_theme.material-dark.scss +0 -4
- package/styles/timeline/_theme.material.scss +0 -4
- package/styles/timeline/_theme.material3-dark.scss +0 -4
- package/styles/timeline/_theme.material3.scss +0 -4
- package/styles/timeline/_theme.tailwind-dark.scss +0 -4
- package/styles/timeline/_theme.tailwind.scss +0 -4
- package/styles/timeline/_theme.tailwind3.scss +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js","../../src/timeline/timeline.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\nvar splitterDefaultLocale = {\n 'ToggleNavigation': 'Toggle navigation'\n};\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.clearTemplate();\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'locale':\n this.localeSetModelOption(newProp);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, this.locale);\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.documentClickHandler = this.onDocumentClick.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.documentClickHandler);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var _this = this;\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n var toggleLabel = this.getLocaleText('ToggleNavigation');\n arrow1.setAttribute('aria-label', toggleLabel);\n arrow2.setAttribute('aria-label', toggleLabel);\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.delegateFocusHandler = function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n _this.currentSeparator = separator;\n _this.getPaneDetails();\n };\n separator.delegateBlurHandler = function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n };\n separator.addEventListener('focus', separator.delegateFocusHandler);\n separator.addEventListener('blur', separator.delegateBlurHandler);\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.delegateMouseEnterHandler = function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n };\n separator.delegateMouseLeaveHandler = function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n };\n separator.delegateMouseOutHandler = function () {\n clearTimeout(hoverTimeOut);\n };\n separator.delegateMouseOverHandler = function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n };\n separator.addEventListener('mouseenter', separator.delegateMouseEnterHandler);\n separator.addEventListener('mouseleave', separator.delegateMouseLeaveHandler);\n separator.addEventListener('mouseout', separator.delegateMouseOutHandler);\n separator.addEventListener('mouseover', separator.delegateMouseOverHandler);\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n if (draggedPos > nextPaneRange - pane2MinSize) {\n if (isNullOrUndefined(pane1MaxSize) || validatedSize !== prePaneRange + pane1MaxSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n if (isNullOrUndefined(pane2MaxSize) || validatedSize !== nextPaneRange - pane2MaxSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.documentClickHandler);\n this.documentClickHandler = null;\n EventHandler.remove(this.element, 'keydown', this.onMove);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n if (separators[i].delegateFocusHandler) {\n separators[i].removeEventListener('focus', separators[i].delegateFocusHandler);\n separators[i].delegateFocusHandler = null;\n }\n if (separators[i].delegateBlurHandler) {\n separators[i].removeEventListener('blur', separators[i].delegateBlurHandler);\n separators[i].delegateBlurHandler = null;\n }\n if (separators[i].delegateMouseEnterHandler) {\n separators[i].removeEventListener('mouseenter', separators[i].delegateMouseEnterHandler);\n separators[i].delegateMouseEnterHandler = null;\n }\n if (separators[i].delegateMouseLeaveHandler) {\n separators[i].removeEventListener('mouseleave', separators[i].delegateMouseLeaveHandler);\n separators[i].delegateMouseLeaveHandler = null;\n }\n if (separators[i].delegateMouseOutHandler) {\n separators[i].removeEventListener('mouseout', separators[i].delegateMouseOutHandler);\n separators[i].delegateMouseOutHandler = null;\n }\n if (separators[i].delegateMouseOverHandler) {\n separators[i].removeEventListener('mouseover', separators[i].delegateMouseOverHandler);\n separators[i].delegateMouseOverHandler = null;\n }\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n Splitter.prototype.getLocaleText = function (text) {\n var locale = this.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n };\n Splitter.prototype.localeSetModelOption = function (newProp) {\n var newLocale = newProp && newProp.locale && typeof newProp.locale === 'object' ? newProp.locale : this.locale;\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, newLocale);\n this.refresh();\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.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 var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n args.panels = this.getChangingPanels();\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getChangingPanels = function () {\n if (!this.resizeCalled) {\n this.updatePanels();\n }\n return this.getChangedPanels();\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow >= eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = this.getChangedPanels(removed);\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.getChangedPanels = function (removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n return changedPanels;\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n var dragStopArgs = args;\n dragStopArgs.panels = _this.getChangingPanels();\n _this.trigger('dragStop', dragStopArgs);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\n }\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', 'e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n args.panels = this.getChangingPanels();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.onPropertyChanged = function (newProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\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 Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.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 timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.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 /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\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 notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.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 if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\n"],"names":["__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","ROOT","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","splitterDefaultLocale","ToggleNavigation","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","localeSetModelOption","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","localeObj","L10n","getModuleName","locale","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","documentClickHandler","onDocumentClick","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","toggleLabel","getLocaleText","addMouseActions","delegateFocusHandler","getPaneDetails","delegateBlurHandler","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","delegateMouseEnterHandler","setTimeout","delegateMouseLeaveHandler","clearTimeout","delegateMouseOutHandler","delegateMouseOverHandler","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","text","getConstant","newLocale","refresh","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","dragging","drag","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","createSubElement","templateParser","error","sanitizedValue","sanitize","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","panelContent","disablePanel","header","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","closest","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","upTarget","getChangingPanels","undefined","allowFloating","moveItemsUpwards","checkForChanges","getChangedPanels","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","panel","updatedPanel","updatedRows","getElementById","updatedHeight","getRowColumn","setHeightWidth","heightValue","entirePanelsY","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","shadowSize","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan","TimelineOrientation","TimelineAlign","TimelineItem","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","_b","cssClasses","align","haveOneSidecontent","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotContainer","dotEleCss","dotCss","DOTCONTENT","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","classArray","updateContent","updateItems","oldPropItems","_c","_d","oppositeEle","timelineItemElements","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-layouts.min.js","sources":["../../src/splitter/splitter.js","../../src/dashboard-layout/dashboard-layout.js","../../src/timeline/timeline.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, setStyleAttribute, ChildProperty, compile, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, addClass, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, selectAll, removeClass, select, Browser, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nvar ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\nvar splitterDefaultLocale = {\n 'ToggleNavigation': 'Toggle navigation'\n};\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\nexport { PaneProperties };\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n * <div id=\"splitter\">\n * <div> Left Pane </div>\n * <div> Center Pane </div>\n * <div> Right Pane </div>\n * </div>\n * ```\n * ```typescript\n * <script>\n * var splitterObj = new Splitter({ width: '300px', height: '200px'});\n * splitterObj.appendTo('#splitter');\n * </script>\n * ```\n */\nvar Splitter = /** @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n var isPaneContentChanged = paneCounts.some(function (count) {\n return !isNullOrUndefined(newProp.paneSettings[count].content);\n });\n if (this.isReact && isPaneContentChanged) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n if (newProp.paneSettings[index].collapsed) {\n this.isCollapsed(index);\n }\n else {\n this.collapsedOnchange(index);\n }\n break;\n case 'cssClass':\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.clearTemplate();\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'locale':\n this.localeSetModelOption(newProp);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, this.locale);\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.documentClickHandler = this.onDocumentClick.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.documentClickHandler);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.previousPane.style.flexBasis.indexOf('p') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n if (rtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n if (this.orientation === 'Horizontal') {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width);\n }\n else {\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n }\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n if (index === (this.allBars.length)) {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n else {\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n if (enabled) {\n removeClass([this.element], DISABLED);\n }\n else {\n addClass([this.element], DISABLED);\n }\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n resizeHanlder.style.width = sizeValue;\n }\n else {\n resizeHanlder.style.height = sizeValue;\n }\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n if (this.paneSettings[index].collapsible) {\n removeClass([arrow2], [HIDE_ICON]);\n }\n else {\n addClass([arrow2], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n if (this.paneSettings[index + 1].collapsible) {\n removeClass([arrow1], [HIDE_ICON]);\n }\n else {\n addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var _this = this;\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n var toggleLabel = this.getLocaleText('ToggleNavigation');\n arrow1.setAttribute('aria-label', toggleLabel);\n arrow2.setAttribute('aria-label', toggleLabel);\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '-1');\n separator.setAttribute('aria-hidden', 'true');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.delegateFocusHandler = function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n _this.currentSeparator = separator;\n _this.getPaneDetails();\n };\n separator.delegateBlurHandler = function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n };\n separator.addEventListener('focus', separator.delegateFocusHandler);\n separator.addEventListener('blur', separator.delegateBlurHandler);\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n if (this.isResizable()) {\n this.allPanes[index].classList.add(RESIZABLE_PANE);\n }\n else {\n this.allPanes[index].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-valuenow', i.toString());\n if (!isNullOrUndefined(this.orientation)) {\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n }\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.delegateMouseEnterHandler = function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n };\n separator.delegateMouseLeaveHandler = function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n };\n separator.delegateMouseOutHandler = function () {\n clearTimeout(hoverTimeOut);\n };\n separator.delegateMouseOverHandler = function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n });\n };\n separator.addEventListener('mouseenter', separator.delegateMouseEnterHandler);\n separator.addEventListener('mouseleave', separator.delegateMouseLeaveHandler);\n separator.addEventListener('mouseout', separator.delegateMouseOutHandler);\n separator.addEventListener('mouseover', separator.delegateMouseOverHandler);\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n if (this.allPanes[i].style.flexBasis === '') {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) :\n parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, true);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x && pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n if (draggedPos > nextPaneRange - pane2MinSize) {\n if (isNullOrUndefined(pane1MaxSize) || validatedSize !== prePaneRange + pane1MaxSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n if (isNullOrUndefined(pane2MaxSize) || validatedSize !== nextPaneRange - pane2MaxSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.documentClickHandler);\n this.documentClickHandler = null;\n EventHandler.remove(this.element, 'keydown', this.onMove);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n var separators = this.element.querySelectorAll('.e-split-bar');\n if (separators.length > 0) {\n for (var i = 0; i < separators.length; i++) {\n EventHandler.remove(separators[i], 'touchstart', this.clickHandler);\n EventHandler.remove(separators[i], 'touchstart', this.onMouseDown);\n EventHandler.remove(separators[i], 'click', this.clickHandler);\n EventHandler.remove(separators[i], 'mousedown', this.onMouseDown);\n if (separators[i].delegateFocusHandler) {\n separators[i].removeEventListener('focus', separators[i].delegateFocusHandler);\n separators[i].delegateFocusHandler = null;\n }\n if (separators[i].delegateBlurHandler) {\n separators[i].removeEventListener('blur', separators[i].delegateBlurHandler);\n separators[i].delegateBlurHandler = null;\n }\n if (separators[i].delegateMouseEnterHandler) {\n separators[i].removeEventListener('mouseenter', separators[i].delegateMouseEnterHandler);\n separators[i].delegateMouseEnterHandler = null;\n }\n if (separators[i].delegateMouseLeaveHandler) {\n separators[i].removeEventListener('mouseleave', separators[i].delegateMouseLeaveHandler);\n separators[i].delegateMouseLeaveHandler = null;\n }\n if (separators[i].delegateMouseOutHandler) {\n separators[i].removeEventListener('mouseout', separators[i].delegateMouseOutHandler);\n separators[i].delegateMouseOutHandler = null;\n }\n if (separators[i].delegateMouseOverHandler) {\n separators[i].removeEventListener('mouseover', separators[i].delegateMouseOverHandler);\n separators[i].delegateMouseOverHandler = null;\n }\n separators[i].parentNode.removeChild(separators[i]); // Use parentNode for broader compatibility\n }\n }\n var panes = this.element.querySelectorAll('.e-pane');\n if (panes.length > 0) {\n for (var i = 0; i < panes.length; i++) {\n panes[i].classList.remove(SPLIT_H_PANE, SPLIT_V_PANE, STATIC_PANE, SCROLL_PANE, PANE, RESIZABLE_PANE, HIDE_HANDLER, COLLAPSIBLE, EXPAND_PANE, PANE_HIDDEN);\n while (panes[i].attributes.length > 0) {\n panes[i].removeAttribute(panes[i].attributes[0].name);\n }\n }\n }\n this.allBars = [];\n this.allBars = null;\n this.allPanes = [];\n this.allPanes = null;\n this.previousPane = null;\n this.nextPane = null;\n this.currentSeparator = null;\n this.wrapper = null;\n this.prevBar = null;\n this.nextBar = null;\n this.templateElement = null;\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n if (this.orientation === 'Horizontal') {\n addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n }\n else {\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n }\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n Splitter.prototype.getLocaleText = function (text) {\n var locale = this.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n };\n Splitter.prototype.localeSetModelOption = function (newProp) {\n var newLocale = newProp && newProp.locale && typeof newProp.locale === 'object' ? newProp.locale : this.locale;\n this.localeObj = new L10n(this.getModuleName(), splitterDefaultLocale, newLocale);\n this.refresh();\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\nexport { Splitter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, NotifyPropertyChanges, isUndefined } from '@syncfusion/ej2-base';\nimport { Collection, Draggable, isNullOrUndefined, append, setValue } from '@syncfusion/ej2-base';\nimport { Event, formatUnit, ChildProperty, compile, closest, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, detach, removeClass, EventHandler, Browser, extend } from '@syncfusion/ej2-base';\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @class */ (function (_super) {\n __extends(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\nexport { Panel };\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n * <div id=\"default-layout\">\n * ```\n * ```typescript\n * <script>\n * let dashBoardObject : DashboardLayout = new DashboardLayout();\n * dashBoardObject.appendTo('#default-layout');\n * </script>\n * ```\n */\nvar DashboardLayout = /** @class */ (function (_super) {\n __extends(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.element.setAttribute('role', 'list');\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n this.table.setAttribute('role', 'presentation');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col ||\n this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n if (!isNullOrUndefined(this.cellSpacing)) {\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n }\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (this.element.querySelector('[id=\\'' + id + '\\']')) {\n var row = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-row'), 10);\n var col = parseInt(this.element.querySelector('[id=\\'' + id + '\\']').getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template === 'string' && (template.charAt(0) === '.' || template.charAt(0) === '#')) {\n try {\n var elements = document.querySelectorAll(template);\n if (elements.length > 0) {\n return compile(elements[0].innerHTML.trim());\n }\n }\n catch (selectorError) {\n // Not a valid CSS selector, treat as HTML string below\n }\n }\n if (typeof template === 'function') {\n return compile(template);\n }\n if (typeof template === 'string') {\n if (!this.hasTemplateExpressions(template)) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n return compile(template);\n }\n return compile(template);\n }\n catch (error) {\n if (this.isCSPError(error) && typeof template === 'string') {\n return this.createCspSafeTemplate(template);\n }\n else {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.hasTemplateExpressions = function (template) {\n return /\\{\\{[\\s\\S]*?\\}\\}/.test(template) || /\\{\\d+\\}/.test(template);\n };\n DashboardLayout.prototype.createCspSafeTemplate = function (template) {\n var _this = this;\n var sanitized = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(template) : template;\n return function (dataContext) {\n var result = sanitized.replace(/\\{\\{:(\\w+)\\}\\}/g, function (match, prop) {\n return dataContext[prop] !== undefined ? String(dataContext[prop]) : match;\n });\n var wrapper = _this.createElement('div');\n wrapper.innerHTML = result;\n return Array.from(wrapper.children);\n };\n };\n DashboardLayout.prototype.isCSPError = function (error) {\n if (error instanceof EvalError) {\n return true;\n }\n var msg = error.message || '';\n return msg.includes('Content Security Policy') ||\n msg.includes('unsafe-eval') ||\n msg.includes('refused to evaluate');\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n cellElement.setAttribute('role', 'listitem');\n if (this.allowDragging) {\n cellElement.setAttribute('aria-grabbed', 'false');\n }\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n this.oldRowCol[model.id] = { row: model.row, col: model.col };\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n }\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.checkCollision = [];\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n args.panels = this.getChangingPanels();\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getChangingPanels = function () {\n if (!this.resizeCalled) {\n this.updatePanels();\n }\n return this.getChangedPanels();\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n if (!isNullOrUndefined(this.panelCollection)) {\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n }\n this.resizeEvents();\n if (!isNullOrUndefined(this.panelCollection)) {\n this.checkDragging(this.dragCollection);\n }\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n var updatedHeight = void 0;\n if (panelElement) {\n setStyle(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 10);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n if (!isNullOrUndefined(this.panelCollection)) {\n this.setClasses(this.panelCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n if (!isNullOrUndefined(this.dragCollection)) {\n this.checkDragging(this.dragCollection);\n }\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n if (isNullOrUndefined(this.cellSpacing) || (this.panels.length === 0 && this.panelCollection &&\n this.panelCollection.length === 0)) {\n return;\n }\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyle(this.element, { 'height': heightValue });\n var widthValue = window.getComputedStyle(this.element).width;\n setStyle(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setEmptyLayoutHeight = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyle(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyle(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyle(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col ||\n this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) &&\n items.indexOf(this.element.querySelector('[id=\\'' + item.id + '\\']')) === -1) {\n items.push(this.element.querySelector('[id=\\'' + item.id + '\\']'));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = this.element.querySelector('[id=\\'' + this.panels[i].id + '\\']');\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (Object.keys(this.cloneObject).length === 0 || !this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow >= eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] &&\n this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n var _this = this;\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n collisionModels.forEach(function (item1) {\n if (_this.overlapElement.indexOf(item1) === -1) {\n _this.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var _this = this;\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n var rowVal = parseInt(this.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this.collisions(rowVal, colValue_1, sizeX, sizeY, this.overlapSubElementClone);\n if (this.mainElement && collisionModels1.indexOf(this.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this.mainElement), 1);\n }\n collisionModels1.forEach(function (item1) {\n _this.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this.updateRowColumn(rowVal, this.overlapElement, this.overlapSubElementClone[p]);\n }\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector('.e-resize')) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: !isNullOrUndefined(panelModel.sizeX) ? panelModel.sizeX.toString() : undefined,\n sizeY: !isNullOrUndefined(panelModel.sizeY) ? panelModel.sizeY.toString() : undefined,\n minSizeX: !isNullOrUndefined(panelModel.minSizeX) ? panelModel.minSizeX.toString() : undefined,\n minSizeY: !isNullOrUndefined(panelModel.minSizeY) ? panelModel.minSizeY.toString() : undefined,\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: !isNullOrUndefined(panelModel.row) ? panelModel.row.toString() : undefined,\n col: !isNullOrUndefined(panelModel.col) ? panelModel.col.toString() : undefined\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = this.getChangedPanels(removed);\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.getChangedPanels = function (removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row ||\n this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n return changedPanels;\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_5 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_3.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_3.element,\n isDragScroll: true,\n handle: this_3.draggableHandle ? this_3.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_3.onDraggingStart.bind(this_3),\n dragStop: function (args) {\n var dragStopArgs = args;\n dragStopArgs.panels = _this.getChangingPanels();\n _this.trigger('dragStop', dragStopArgs);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_3.dragCollection.indexOf(this_3.dragobj) === -1) {\n this_3.dragCollection.push(this_3.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n dragobj.setDragArea();\n });\n };\n /**\n * Method to update the draggable handle when draggable panel elements are bound dynamically.\n *\n * @returns void\n *\n */\n DashboardLayout.prototype.refreshDraggableHandle = function () {\n if (this.dragCollection && this.dragCollection.length > 0) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n EventHandler.clearEvents(this.dragCollection[i].element);\n }\n this.ensureDrag();\n }\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function () {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder', 'e-holder-transition');\n setStyle(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n var panelValues = this.getCellInstance(args.element.id);\n var shadowSize = this.calculateShadowElementSize(panelValues.sizeX, panelValues.sizeY);\n this.shadowEle.style.height = shadowSize.height;\n this.shadowEle.style.width = shadowSize.width;\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= 0 || panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n var shadowSize = this.calculateShadowElementSize(sizeX, sizeY);\n this.elementRef.height = this.shadowEle.style.height = shadowSize.height;\n this.elementRef.width = this.shadowEle.style.width = shadowSize.width;\n };\n DashboardLayout.prototype.calculateShadowElementSize = function (sizeX, sizeY) {\n return {\n width: (sizeX * this.cellSize[0]) + ((sizeX - 1) * this.cellSpacing[0]) + 'px',\n height: (sizeY * this.cellSize[1]) + ((sizeY - 1) * this.cellSpacing[1]) + 'px'\n };\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.addPanelCalled = false;\n this.updatePanelLayout(cell, panelProp);\n }\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyle(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n this.setEmptyLayoutHeight();\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n if (this.panels.length === 0 && this.panelCollection.length === 0) {\n this.setEmptyLayoutHeight();\n }\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n args.panels = this.getChangingPanels();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n this.panelCollection = null;\n this.checkCollision = null;\n this.mainElement = null;\n this.dragobj = null;\n this.dragStartArgs = null;\n this.dragStopEventArgs = null;\n this.draggedEventArgs = null;\n this.sortedArray = null;\n this.cloneArray = null;\n this.overlapElement = null;\n this.overlapElementClone = null;\n this.dragCollection = [];\n this.allItems = null;\n this.moveTarget = null;\n this.upTarget = null;\n this.downTarget = null;\n this.checkingElement = null;\n this.panelHeaderElement = null;\n this.panelContent = null;\n this.panelBody = null;\n this.table = null;\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.onPropertyChanged = function (newProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n if (!this.checkMediaQuery()) {\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n }\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n this.mergePanels(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_6 = function (i) {\n this_4.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_6(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\nexport { DashboardLayout };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\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, ChildProperty, Collection, Event, NotifyPropertyChanges, Property, getUniqueID, attributes, select, compile, remove, removeClass, append, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar ITEMLISTCONTAINER = 'e-timeline-items';\nvar ITEMCONTAINER = 'e-timeline-item';\nvar OPPOSITECONTENT = 'e-opposite-content';\nvar DOTCONTAINER = 'e-dot-item';\nvar DOTCONTENT = 'e-dot';\nvar CONTENT = 'e-content';\nvar ITEMCONNECTOR = 'e-connector';\nvar VERTICAL = 'e-vertical';\nvar HORIZONTAL = 'e-horizontal';\nvar TIMELINEREVERSE = 'e-timeline-reverse';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-item-disabled';\nvar TEMPLATE = 'e-item-template';\n/**\n * Defines the orientation type of the Timeline.\n */\nexport var TimelineOrientation;\n(function (TimelineOrientation) {\n /**\n * Items are displayed horizontally.\n */\n TimelineOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Items are displayed vertically.\n */\n TimelineOrientation[\"Vertical\"] = \"Vertical\";\n})(TimelineOrientation || (TimelineOrientation = {}));\n/**\n * Specifies the alignment of item content within the Timeline.\n */\nexport var TimelineAlign;\n(function (TimelineAlign) {\n /**\n * Aligns item content to the top and opposite content to the bottom when the Timeline is in a horizontal orientation, or the content to the left and opposite content to the right when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"Before\"] = \"Before\";\n /**\n * Aligns item content to the bottom and opposite content to the top when the Timeline is in a horizontal orientation, or the content to the right and opposite content to the left when the Timeline is in a vertical orientation.\n */\n TimelineAlign[\"After\"] = \"After\";\n /**\n * Aligns item content alternatively, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"Alternate\"] = \"Alternate\";\n /**\n * Aligns item content in alternate reverse, regardless of the Timeline's orientation.\n */\n TimelineAlign[\"AlternateReverse\"] = \"AlternateReverse\";\n})(TimelineAlign || (TimelineAlign = {}));\n/**\n * Specifies the items of the Timeline.\n */\nvar TimelineItem = /** @class */ (function (_super) {\n __extends(TimelineItem, _super);\n function TimelineItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"dotCss\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"oppositeContent\", void 0);\n __decorate([\n Property(false)\n ], TimelineItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], TimelineItem.prototype, \"cssClass\", void 0);\n return TimelineItem;\n}(ChildProperty));\nexport { TimelineItem };\n/**\n * The Timeline component presents a series of events or activities in chronological order, allowing users to track the progression of time.\n *\n * ```html\n * <div id=\"timeline\"></div>\n * ```\n * ```typescript\n * <script>\n * let timelineObj: Timeline = new Timeline({items : [{}, {}, {}, {}, {}]});\n * timelineObj.appendTo('#timeline');\n * </script>\n * ```\n */\nvar Timeline = /** @class */ (function (_super) {\n __extends(Timeline, _super);\n /**\n * * Constructor for creating the Timeline component.\n *\n * @param {TimelineModel} options - Specifies the Timeline model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Timeline(options, element) {\n return _super.call(this, options, element) || this;\n }\n Timeline.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Timeline.prototype.getModuleName = function () {\n return 'timeline';\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 Timeline.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Timeline.prototype.render = function () {\n attributes(this.element, { 'role': 'navigation', 'aria-label': this.element.id });\n this.timelineListEle = this.createElement('ol', { className: ITEMLISTCONTAINER });\n this.updateOrientation();\n this.updateCssClass(this.cssClass);\n this.updateAlign();\n this.updateReverse();\n this.updateRtl();\n this.updateTemplateFunction();\n this.renderItems();\n this.element.appendChild(this.timelineListEle);\n };\n Timeline.prototype.updateOrientation = function () {\n if (!(isNullOrUndefined(this.orientation))) {\n var orientation_1 = this.orientation.toLowerCase();\n if (orientation_1 === 'horizontal' || orientation_1 === 'vertical') {\n this.element.classList.remove(HORIZONTAL, VERTICAL);\n this.element.classList.add('e-' + orientation_1);\n }\n }\n };\n Timeline.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) { removeCss = ''; }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n Timeline.prototype.updateRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n };\n Timeline.prototype.updateAlign = function () {\n if (!(isNullOrUndefined(this.align))) {\n var align = this.align.toLowerCase();\n if (align === 'before' || align === 'after' || align === 'alternate' || align === 'alternatereverse') {\n this.element.classList.remove('e-align-before', 'e-align-after', 'e-align-alternate', 'e-align-alternatereverse');\n this.element.classList.add('e-align-' + align);\n }\n }\n };\n Timeline.prototype.updateReverse = function () {\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n };\n Timeline.prototype.renderItems = function () {\n var _this = this;\n var _a;\n this.haveOneSidecontent();\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n var timelineItem = this.createElement('li', { className: ITEMCONTAINER + ' ' + ITEMCONNECTOR });\n if (!this.template) {\n var oppositeTextEle = this.createElement('div', { className: OPPOSITECONTENT });\n if (item.oppositeContent) {\n this.updateItemContent(false, item, index, oppositeTextEle);\n }\n timelineItem.appendChild(oppositeTextEle);\n var dotContainer = this.createElement('div', { className: DOTCONTAINER });\n var dotEleCss = item.dotCss ? DOTCONTENT + ' ' + item.dotCss.trim() : DOTCONTENT;\n var dotEle = this.createElement('div', { className: dotEleCss });\n dotContainer.appendChild(dotEle);\n timelineItem.appendChild(dotContainer);\n var contentEle = this.createElement('div', { className: CONTENT });\n if (item.content) {\n this.updateItemContent(true, item, index, contentEle);\n }\n timelineItem.appendChild(contentEle);\n if (item.cssClass) {\n (_a = timelineItem.classList).add.apply(_a, item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n timelineItem.classList.add(DISABLED);\n }\n }\n else {\n this.renderItemContent(index, false, timelineItem);\n }\n var eventArgs = { element: timelineItem, index: index };\n this.trigger('beforeItemRender', eventArgs, function (args) { _this.timelineListEle.appendChild(args.element); });\n }\n };\n Timeline.prototype.haveOneSidecontent = function () {\n var haveContent = false;\n var haveOppContent = false;\n for (var index = 0; index < this.items.length; index++) {\n var item = this.items[parseInt(index.toString(), 10)];\n if (!haveContent) {\n (haveContent = item.content.length > 0 || !isNullOrUndefined(item.content));\n }\n if (!haveOppContent) {\n (haveOppContent = item.oppositeContent.length > 0 || !isNullOrUndefined(item.content));\n }\n }\n this.element.classList.remove('e-content-only', 'e-opposite-content-only');\n if (haveContent && !haveOppContent) {\n this.element.classList.add('e-content-only');\n }\n if (haveOppContent && !haveContent) {\n this.element.classList.add('e-opposite-content-only');\n }\n };\n Timeline.prototype.updateItemContent = function (isContent, item, index, contentEle) {\n var notCompile = !(this.isReact || this.isVue);\n var ctn = this.getTemplateFunction(isContent ? item.content : item.oppositeContent, notCompile);\n if (typeof ctn === 'string') {\n contentEle.innerText = ctn;\n }\n else {\n append(ctn({ item: item, itemIndex: index }, this), contentEle);\n }\n };\n Timeline.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template, false) : null;\n };\n Timeline.prototype.renderItemContent = function (index, isrerender, timelineItem) {\n var listItems = this.timelineListEle.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 timelineItem.classList.add(TEMPLATE);\n }\n var item = this.items[parseInt(index.toString(), 10)];\n append(this.templateFunction({ item: item, itemIndex: index }, this, 'timelineTemplate', (this.element.id + '_timelineTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : timelineItem);\n }\n this.renderReactTemplates();\n };\n Timeline.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 /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @param {boolean} notCompile - Compile property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Timeline.prototype.getTemplateFunction = function (template, notCompile) {\n if (notCompile === void 0) { notCompile = true; }\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 notCompile = false;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return notCompile ? content : compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Timeline.prototype.removeItemElements = function () {\n var listItems = this.timelineListEle.querySelectorAll('li');\n for (var i = 0; i < listItems.length; i++) {\n remove(listItems[parseInt(i.toString(), 10)]);\n }\n };\n Timeline.prototype.updateElementClassArray = function () {\n var classArray = [RTL, 'e-align-before', 'e-align-after', 'e-outline', 'e-fill', 'e-align-alternate',\n 'e-align-alternatereverse', TIMELINEREVERSE, HORIZONTAL, VERTICAL];\n removeClass([this.element], classArray);\n };\n Timeline.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['timelineTemplate']);\n }\n for (var i = 0; i < this.items.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n Timeline.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-label');\n this.clearTemplate();\n if (this.timelineListEle) {\n remove(this.timelineListEle);\n }\n this.timelineListEle = null;\n this.updateElementClassArray();\n };\n Timeline.prototype.updateItems = function (newProp, oldPropItems, index, item) {\n var _a, _b, _c, _d;\n var timelineItemElements = this.timelineListEle.querySelectorAll('li');\n var dotEle;\n var contentEle;\n var oppositeEle;\n switch (newProp) {\n case 'dotCss':\n dotEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + DOTCONTENT);\n if (oldPropItems.dotCss !== '') {\n (_a = dotEle.classList).remove.apply(_a, oldPropItems.dotCss.trim().split(' '));\n }\n if (item.dotCss !== '') {\n (_b = dotEle.classList).add.apply(_b, this.items[parseInt(index.toString(), 10)].dotCss.trim().split(' '));\n }\n break;\n case 'content':\n contentEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + CONTENT);\n contentEle.innerText = '';\n this.updateItemContent(true, item, index, contentEle);\n this.haveOneSidecontent();\n break;\n case 'oppositeContent':\n oppositeEle = timelineItemElements[parseInt(index.toString(), 10)].querySelector('.' + OPPOSITECONTENT);\n oppositeEle.innerText = '';\n this.updateItemContent(false, item, index, oppositeEle);\n this.haveOneSidecontent();\n break;\n case 'disabled':\n timelineItemElements[parseInt(index.toString(), 10)].classList[this.items[parseInt(index.toString(), 10)].disabled ? 'add' : 'remove'](DISABLED);\n break;\n case 'cssClass':\n if (oldPropItems.cssClass !== '') {\n (_c = timelineItemElements[parseInt(index.toString(), 10)].classList).remove.apply(_c, oldPropItems.cssClass.trim().split(' '));\n }\n if (item.cssClass !== '') {\n (_d = timelineItemElements[parseInt(index.toString(), 10)].classList).add.apply(_d, item.cssClass.trim().split(' '));\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimelineModel} newProp - Specifies new properties\n * @param {TimelineModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Timeline.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 if (Array.isArray(newProp.items)) {\n this.removeItemElements();\n this.renderItems();\n }\n else {\n var itemLength = Object.keys(newProp.items).length;\n for (var i = 0; i < itemLength; i++) {\n var itemPropLength = parseInt(Object.keys(newProp.items)[i], 10);\n for (var j = 0; j < Object.keys(newProp.items[itemPropLength]).length; j++) {\n var property = Object.keys(newProp.items[itemPropLength])[j];\n this.updateItems(property, oldProp.items[itemPropLength], itemPropLength, newProp.items[itemPropLength]);\n }\n }\n }\n break;\n case 'orientation':\n this.updateOrientation();\n break;\n case 'align':\n this.updateAlign();\n break;\n case 'enableRtl':\n this.updateRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'reverse':\n this.element.classList[this.reverse ? 'add' : 'remove'](TIMELINEREVERSE);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n }\n }\n };\n __decorate([\n Property(TimelineOrientation.Vertical)\n ], Timeline.prototype, \"orientation\", void 0);\n __decorate([\n Property(TimelineAlign.After)\n ], Timeline.prototype, \"align\", void 0);\n __decorate([\n Collection([], TimelineItem)\n ], Timeline.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Timeline.prototype, \"reverse\", void 0);\n __decorate([\n Property('')\n ], Timeline.prototype, \"template\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Timeline.prototype, \"beforeItemRender\", void 0);\n Timeline = __decorate([\n NotifyPropertyChanges\n ], Timeline);\n return Timeline;\n}(Component));\nexport { Timeline };\n"],"names":["__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","ROOT","PANE","SPLIT_H_PANE","SPLIT_V_PANE","SPLIT_BAR","STATIC_PANE","RESIZE_BAR","ARROW_LEFT","ARROW_UP","ARROW_DOWN","HIDE_ICON","splitterDefaultLocale","ToggleNavigation","PaneProperties","_super","apply","Property","ChildProperty","Splitter","options","element","_this","call","needsID","onPropertyChanged","newProp","oldProp","classList","contains","_i","_a","keys","setSplitterSize","height","width","setCssClass","cssClass","isEnabled","enabled","setReversePane","setSeparatorSize","separatorSize","changeOrientation","orientation","paneSettings","clearTemplate","destroyPaneSettings","allBars","allPanes","createSplitPane","addSeparator","getPanesDimensions","setRTL","enableRtl","isCollapsed","paneCounts","isPaneContentChanged","some","count","isNullOrUndefined","content","isReact","cPaneCount","k","index","parseInt","changedPropsCount","j","property","newValue","innerHTML","setTemplate","newVal","resizableModel","collapsibleModelUpdate","collapsed","collapsedOnchange","newValSize","updatePaneSize","localeSetModelOption","style","flexBasis","staticPaneWidth","flexPaneIndexes","flexCount","size","innerText","offsetWidth","offsetHeight","avgDiffWidth","border","add","initializeValues","paneOrder","separatorOrder","previousCoordinates","currentCoordinates","updatePrePaneInPercentage","updateNextPaneInPercentage","panesDimensions","validDataAttributes","validElementAttributes","iconsDelay","templateElement","collapseFlag","expandFlag","preRender","localeObj","L10n","getModuleName","locale","onReportWindowSize","reportWindowSize","bind","onMouseMoveHandler","onMouseMove","onMouseUpHandler","onMouseUp","onTouchMoveHandler","onTouchEndHandler","documentClickHandler","onDocumentClick","wrapper","cloneNode","wrapperParent","parentElement","removeClass","addClass","css","Browser","info","name","isDevice","getPersistData","addOnPersist","render","checkDataAttributes","setDimension","getHeight","getWidth","setPaneSettings","enableReversePanes","EventHandler","document","renderComplete","ownerDocument","defaultView","addEventListener","onMove","e","currentSeparator","remove","checkPaneSize","prePaneSize","previousPane","nextPaneSize","nextPane","splitBarSize","indexOf","previousFlexBasis","updatePaneFlexBasis","nextFlexBasis","totalPercent","totalWidth","convertPercentageToPixel","type","keyCode","getMinInPixel","nextPaneIndex","min","prevPaneIndex","addStaticPaneClass","event","getSeparatorIndex","isPrevpaneCollapsed","isPrevpaneExpanded","isNextpaneCollapsed","activeElement","resizable","preventDefault","triggerResizing","collapsible","expand","collapse","minValue","paneMinRange","convertPixelToNumber","toString","sanitizeHelper","value","enableHtmlSanitizer","item","SanitizeHtmlHelper","beforeSanitize","beforeEvent","cancel","helper","extend","trigger","serializeValue","api","dataIndex","getAttribute","removeDataPrefix","paneIndex","children","dataAttr","max","paneAPI","slice","forEach","el","detach","restoreElem","childCount","paneCollection","paneValue","setProperties","checkArrow","targetArrow","querySelector","attribute","lastIndexOf","rtl","reverse","setAttribute","removeAttribute","formatUnit","setStyleAttribute","push","getBoundingClientRect","className","split","hideResizer","select","showResizer","onMouseDown","isResizable","updateResizablePanes","arrow2","arrow1","paneCollapsible","updateCollapseIcons","collapseArrow","barIndex","arrow","selectAll","updateIsCollapsed","lastBarArrow","lastBarIndex","click","m","targetArrows","targetEle","event_1","eventArgs","beforeAction","beforeCollapseArgs","collapsedindex","sort","collapseEventArgs","afterAction","splitterProperty","sizeValue","separator","splitBar","resizeBar","isVertical","checkSplitPane","currentBar","elementIndex","collectPanes","childNodes","elements","getPrevPane","order","getOrderPane","getNextPane","pane","getOrderIndex","panes","updateSeparatorSize","resizeHanlder","addResizeHandler","createElement","appendChild","updateIconClass","leftArrow","rightArrow","createSeparator","toggleLabel","getLocaleText","addMouseActions","delegateFocusHandler","getPaneDetails","delegateBlurHandler","clonedEle","parentNode","toLowerCase","wireClickEvents","eventName","allBar","querySelectorAll","sepSize","paddingLeft","paddingRight","getPreviousPaneIndex","getNextPaneIndex","sTout","hoverTimeOut","delegateMouseEnterHandler","setTimeout","delegateMouseLeaveHandler","clearTimeout","delegateMouseOutHandler","delegateMouseOverHandler","getEventType","updateCurrentSeparator","isSeparator","isMouseEvent","isMouse","pointerType","updateCursorPosition","changeCoordinates","x","pageX","y","pageY","eventType","touches","coordinates","paneCount","body","removeEventListener","updateSplitterSize","iswindowResize","len","getComputedStyle","marginLeft","marginTop","marginBottom","diff","updatePane","flexPane","sizeDiff","isPercent","updatePaneOffset","convertPixelToPercentage","flexPaneOffset","wireResizeEvents","touchMoveEvent","touchEndEvent","unwireResizeEvents","clickHandler","hoverBars","splitterDetails","icon","expandAction","collapseAction","beforeExpandArgs","expandPane","expandEventArgs","getIcon","filter","removeStaticPanes","collapseCount","flexStatus","nextElementSibling","collapseClass","isLeftOrUp","collapsePane","expandPaneIndex","cCount","updatePaneSettings","updateIconsOnExpand","updateFlexGrow","flexGrow","visiblePane","hideTargetBarIcon","targetBar","showTargetBarIcon","updateIconsOnCollapse","targetIcon","removeIcon","otherBar","currentBarIndex","prevBar","nextBar","otherBarIndex","splitInstance","prevPaneCollapsed","nextPaneCollapsed","otherPrevPaneIndex","otherNextPaneIndex","collapsecount","getCollapseCount","hideBarIcons","collapsePaneIndex","isFlexPaneHidden","paneValues","nextPaneCollapsible","prevPaneCollapsible","prevPaneExpanded","nextPaneExpanded","nextPaneNextEle","prevPanePreEle","previousElementSibling","showCurrentBarIcons","bar","checkResizableProp","showIcon","currentIndex","array","getPrevBar","getNextBar","updateBars","paneSize","prePaneDimenson","nextPaneDimension","pointerEvents","resizeStartArgs","previous","removePercentageUnit","offset","parseFloat","targetElement","convertedValue","percentage","offsetValue","Math","ceil","calcDragPosition","rectValue","getSeparatorPosition","rectBound","left","window","scrollX","top","scrollY","offSet","getMinMax","selection","defaultVal","separatorIndex","prevPane","getPaneHeight","isValidSize","isValid","getPaneDimensions","previousPaneHeightWidth","nextPaneHeightWidth","checkCoordinates","coordinatesChanged","isCursorMoved","getBorder","clientWidth","clientHeight","separatorNewPosition","validateDraggedPosition","prevPaneCurrentWidth","nextPaneCurrentWidth","validateMinMaxValues","difference","calculateCurrentDimensions","flexPaneCount","allFlexiblePanes","middlePaneIndex","isStaticPanes","validateMinRange","paneCurrentWidth","paneMinDimensions","validatedVal","validateMaxRange","paneMaxDimensions","paneMaxRange","equatePaneWidths","round","Number","draggedPos","prevPaneHeightWidth","separatorTopLeft","offsetLeft","offsetTop","prePaneRange","nextPaneRange","pane1MinSize","pane2MinSize","pane1MaxSize","pane2MaxSize","validatedSize","enablePersistence","panesDimension","child","sizeFlag","flex-basis","template","toElement","templateCompile","renderReactTemplates","ele","cnt","tempEle","compileElement","childEle","val","prop","eleVal","display","removeProperty","trim","templateFn","outerHTML","compile","templateFUN","id","childElement","nodeName","destroy","isDestroyed","attributes","refreshing","separators","removeChild","addPaneClass","removePaneOrders","paneClass","setPaneOrder","removeSeparator","updatePanes","text","getConstant","newLocale","refresh","addPane","paneProperties","newPane","paneDetails","splice","insertBefore","removePane","elementClass","Collection","Event","NotifyPropertyChanges","Component","dragging","drag","Panel","DashboardLayout","rows","panelID","movePanelCalled","resizeCalled","mOffX","mOffY","maxTop","maxRows","mouseX","mouseY","minTop","minLeft","isInlineRendering","removeAllCalled","isPanelRemoved","panelsSizeY","resizeHeight","eventVar","setValue","mergePersistPanelData","panelCollection","sortedArray","gridPanelCollection","overlapElement","overlapElementClone","overlapSubElementClone","collisionChecker","dragCollection","elementRef","dimensions","allItems","oldRowCol","availableClasses","setOldRowCol","calculateCellSize","contentTemplateChild","panels","panelPropertyChange","row","col","createPanelElement","idValue","initialize","isRenderComplete","showGridLines","checkMediaQuery","initGridLines","updateDragArea","table","tbody","maxRow","tr","columns","td","setAttributes","sizeX","sizeY","setPanelPosition","setHeightAndWidth","updateRowHeight","childElementCount","panelElements","panelElement","getInlinePanels","maxCol","setMinMaxValues","maxColumnValue","colValue","setXYAttributes","panel_1","renderPanels","tempObject","mediaQuery","matchMedia","matches","mainElement","updatePanelLayout","setClasses","updateOldRowColumn","checkMediaQuerySizing","renderDashBoardCells","allowDragging","enableDraggingContent","sortedPanel","bindEvents","updatePanels","updateCloneArrayObject","checkColumnValue","panelResponsiveUpdate","setEnableRtl","cellSize","cellAspectRatio","cellSpacing","recheck","createSubElement","templateParser","charAt","selectorError","hasTemplateExpressions","sanitizedValue","sanitize","error","isCSPError","createCspSafeTemplate","test","sanitized","dataContext","result","replace","match","undefined","String","from","EvalError","msg","message","includes","renderTemplate","appendElement","isStringTemplate","templateElements","tagName","compilerFn","compilerFn_1","append","cellElement","panelModel","panelId","panelContent","disablePanel","header","headerTemplateElement","cssClass_1","panelBody","contentHeightValue","setStyle","model","hasAttribute","minSizeX","minSizeY","maxSizeX","maxSizeY","zIndex","isUndefined","panelProp","resizeEvents","allowResizing","downResizeHandler","touchDownResizeHandler","refreshListener","closest","downHandler","lastMouseX","lastMouseY","moveEventName","upEventName","isMouseMoveBound","moveResizeHandler","isMouseUpBound","upResizeHandler","panelsInitialModel","cloneModels","args","isInteracted","downTarget","currentTarget","shadowEle","elementX","elementY","elementWidth","elementHeight","originalWidth","getCellInstance","originalHeight","previousRow","changedTouches","touchMoveResizeHandler","getCellSize","updateMaxTopLeft","moveTarget","updateResizeElement","maxLeft","handleArray","handleClass","diffY","diffX","resizingPanel","currentX","currentY","oldSizeX","oldSizeY","dY","dX","getMinHeight","getMaxHeight","getMinWidth","getMaxWidth","initialWidth","newSizeX","pixelsToColumns","getResizeRowColumn","checkCollision","upTarget","getChangingPanels","allowFloating","moveItemsUpwards","checkForChanges","getChangedPanels","isChanged","pixelsToRows","collisions","getPanelBase","allowPushing","pixels","isCeil","floor","l","sortItem","rowIndex","colIndex","moveItemUpwards","updateGridLines","availableRow","availableColumn","rowValue","columnValue","column","oldRow","updateLayout","internalPanels","cellInstance","removeResizeClasses","checkDragging","sortPanels","this_1","panel","updatedPanel","updatedRows","getElementById","updatedHeight","getRowColumn","setHeightWidth","heightValue","entirePanelsY","widthValue","setEmptyLayoutHeight","setXYDimensions","renderCell","dashBoardCell","xValue","checkMinMaxValues","cells","cell","ignore","items","h","w","getPanel","rightWardsSpaceChecking","rowElements","spacedColumns","sizeXValue","occupiedValues","getOccupiedColumns","checkingElement","next","occupiedItems","leftWardsSpaceChecking","prev","adjustmentAvailable","leftAdjustable","rightAdjustable","rightSpacing","isAdjustable","rowElement","topAdjustable","eleSizeX","eleCol","getRowElements","leftSpacing","isLeftAdjustable","spacedColumnValue","isRightAdjustable","endRow","topCheck","startRow","spacedRowValue","isXSpacingAvailable","spacing","isSpaceAvailable","subSpacingColumns","base","spaces","isLeftAdjudtable","xAdjust","replacable","isRightAdjudtable","collisionValue","collision","updatedCollision","exclusions","sortCollisionItems","collisionItems","this_2","updatedModels","removeableElement","adjust","resetLayout","addPanelCalled","cloneObject","cloneArray","swapAvailability","available","eleModel","collideModel","excludeEle","checkForSwapping","direction","eleSwapRow","isSwappable","count1","updatedRow","collideInstance","elementinstance","swapItems","swappedElements","collisionItemsRow","collisionInstance","itemModel","initialModel","collisionModels","item1","updateRowColumn","checkForCompletePushing","isSubValue","srcEle","updateCollisionChecked","eleSizeY","eleRow","shouldRestrict","i_1","collisionY","collisionCol","collisionX","overlapElementModel","ele_1","eleRow_1","excludeElements","collisionPanel","clone","overlapElementRow1","rowVal","colValue_1","collisionModels1","resizerElements","i_2","ensureDrag","dragPanels","containerEle","draggableHandle","setResizingClass","container","resizableHandles","spanEle","addClassValue","heigthValue","cellHeight","cellWidth","getRowColumnDragValues","elementTop","elementLeft","added","removed","changedPanels","changedArgs","addedPanels","removedPanels","collections","out_i_1","this_3","abortArray","dragobj","Draggable","dragArea","isDragScroll","handle","abort","dragStart","onDraggingStart","dragStop","dragStopArgs","currentPanel","setHolderPosition","panelInstance","dragStopEventArgs","draggedEventArgs","onDragStart","setDragArea","refreshDraggableHandle","clearEvents","updateRowsHeight","addRows","dragArgs","JSON","parse","stringify","eleRowValue","startCol","position","panelValues","shadowSize","calculateShadowElementSize","source","endCol","dragCol","intDestroy","excludeItems","currentCellInstance","addPanel","insertAdjacentElement","updatePanel","cssClass_2","serialize","cloneModel","customObject","removeAll","removeAllPanel","clonedPanels","removePanel","removedPanel","movePanel","isNaN","resizePanel","dragStartArgs","panelHeaderElement","firstElementChild","updateCellSizeAndSpacing","updatePanelsDynamically","checkForIDValues","restrictDynamicUpdate","keyEntity","persistedData","data","localStorage","getItem","dataObj","isProtectedOnChange","keys_1","getValue","isArray","mergePanels","sortedPanels","storedColumns","this_4","localPanel","pan","TimelineOrientation","TimelineAlign","TimelineItem","Timeline","getUniqueID","role","aria-label","timelineListEle","updateOrientation","updateCssClass","updateAlign","updateReverse","updateRtl","updateTemplateFunction","renderItems","orientation_1","addCss","removeCss","_b","cssClasses","align","haveOneSidecontent","timelineItem","ITEMCONTAINER","renderItemContent","oppositeTextEle","oppositeContent","updateItemContent","dotContainer","dotEleCss","dotCss","DOTCONTENT","dotEle","contentEle","disabled","haveContent","haveOppContent","isContent","notCompile","isVue","ctn","getTemplateFunction","itemIndex","templateFunction","isrerender","listItems","removeItemContent","firstChild","removeItemElements","updateElementClassArray","classArray","updateContent","updateItems","oldPropItems","_c","_d","oppositeEle","timelineItemElements","itemLength","itemPropLength","Vertical","After"],"mappings":"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"}
|